Skip to content

Commit bb340c5

Browse files
Merge pull request #16149 from mfojtik/deploy-clientset-cmd
Automatic merge from submit-queue apps: replace legacy client with generated in pkg/deploy/cmd Ignore first 3 commits, they are part of #16100 @deads2k last bits in apps group
2 parents 0428e54 + 9ff8c20 commit bb340c5

File tree

17 files changed

+168
-77
lines changed

17 files changed

+168
-77
lines changed

pkg/client/deploymentconfigs.go

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"k8s.io/apimachinery/pkg/watch"
88
kapi "k8s.io/kubernetes/pkg/api"
99
extensionsv1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
10-
"k8s.io/kubernetes/pkg/client/retry"
1110

1211
deployapi "github.com/openshift/origin/pkg/deploy/apis/apps"
1312
)
@@ -169,23 +168,3 @@ func (c *deploymentConfigs) Instantiate(request *deployapi.DeploymentRequest) (*
169168
err := resp.Into(result)
170169
return result, err
171170
}
172-
173-
type updateConfigFunc func(d *deployapi.DeploymentConfig)
174-
175-
// UpdateConfigWithRetries will try to update a deployment config and ignore any update conflicts.
176-
func UpdateConfigWithRetries(dn DeploymentConfigsNamespacer, namespace, name string, applyUpdate updateConfigFunc) (*deployapi.DeploymentConfig, error) {
177-
var config *deployapi.DeploymentConfig
178-
179-
resultErr := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
180-
var err error
181-
config, err = dn.DeploymentConfigs(namespace).Get(name, metav1.GetOptions{})
182-
if err != nil {
183-
return err
184-
}
185-
// Apply the update, then attempt to push it to the apiserver.
186-
applyUpdate(config)
187-
config, err = dn.DeploymentConfigs(namespace).Update(config)
188-
return err
189-
})
190-
return config, resultErr
191-
}

pkg/cmd/util/clientcmd/factory_object_mapping.go

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
"github.com/openshift/origin/pkg/client"
3737
deployapi "github.com/openshift/origin/pkg/deploy/apis/apps"
3838
deploycmd "github.com/openshift/origin/pkg/deploy/cmd"
39+
appsclient "github.com/openshift/origin/pkg/deploy/generated/internalclientset"
3940
"github.com/openshift/origin/pkg/oc/cli/describe"
4041
"github.com/openshift/origin/pkg/security/legacyclient"
4142
userapi "github.com/openshift/origin/pkg/user/apis/user"
@@ -221,11 +222,15 @@ func (f *ring1Factory) LogsForObject(object, options runtime.Object, timeout tim
221222

222223
func (f *ring1Factory) Scaler(mapping *meta.RESTMapping) (kubectl.Scaler, error) {
223224
if deployapi.IsKindOrLegacy("DeploymentConfig", mapping.GroupVersionKind.GroupKind()) {
224-
oc, kc, err := f.clientAccessFactory.Clients()
225+
_, kc, err := f.clientAccessFactory.Clients()
226+
if err != nil {
227+
return nil, err
228+
}
229+
config, err := f.clientAccessFactory.OpenShiftClientConfig().ClientConfig()
225230
if err != nil {
226231
return nil, err
227232
}
228-
return deploycmd.NewDeploymentConfigScaler(oc, kc), nil
233+
return deploycmd.NewDeploymentConfigScaler(appsclient.NewForConfigOrDie(config), kc), nil
229234
}
230235
return f.kubeObjectMappingFactory.Scaler(mapping)
231236
}
@@ -234,11 +239,15 @@ func (f *ring1Factory) Reaper(mapping *meta.RESTMapping) (kubectl.Reaper, error)
234239
gk := mapping.GroupVersionKind.GroupKind()
235240
switch {
236241
case deployapi.IsKindOrLegacy("DeploymentConfig", gk):
237-
oc, kc, err := f.clientAccessFactory.Clients()
242+
_, kc, err := f.clientAccessFactory.Clients()
238243
if err != nil {
239244
return nil, err
240245
}
241-
return deploycmd.NewDeploymentConfigReaper(oc, kc), nil
246+
config, err := f.clientAccessFactory.OpenShiftClientConfig().ClientConfig()
247+
if err != nil {
248+
return nil, err
249+
}
250+
return deploycmd.NewDeploymentConfigReaper(appsclient.NewForConfigOrDie(config), kc), nil
242251
case authorizationapi.IsKindOrLegacy("Role", gk):
243252
oc, _, err := f.clientAccessFactory.Clients()
244253
if err != nil {
@@ -287,34 +296,33 @@ func (f *ring1Factory) Reaper(mapping *meta.RESTMapping) (kubectl.Reaper, error)
287296

288297
func (f *ring1Factory) HistoryViewer(mapping *meta.RESTMapping) (kubectl.HistoryViewer, error) {
289298
if deployapi.IsKindOrLegacy("DeploymentConfig", mapping.GroupVersionKind.GroupKind()) {
290-
oc, kc, err := f.clientAccessFactory.Clients()
299+
_, kc, err := f.clientAccessFactory.Clients()
291300
if err != nil {
292301
return nil, err
293302
}
294-
return deploycmd.NewDeploymentConfigHistoryViewer(oc, kc), nil
303+
return deploycmd.NewDeploymentConfigHistoryViewer(kc), nil
295304
}
296305
return f.kubeObjectMappingFactory.HistoryViewer(mapping)
297306
}
298307

299308
func (f *ring1Factory) Rollbacker(mapping *meta.RESTMapping) (kubectl.Rollbacker, error) {
300309
if deployapi.IsKindOrLegacy("DeploymentConfig", mapping.GroupVersionKind.GroupKind()) {
301-
oc, _, err := f.clientAccessFactory.Clients()
310+
config, err := f.clientAccessFactory.OpenShiftClientConfig().ClientConfig()
302311
if err != nil {
303312
return nil, err
304313
}
305-
return deploycmd.NewDeploymentConfigRollbacker(oc), nil
314+
return deploycmd.NewDeploymentConfigRollbacker(appsclient.NewForConfigOrDie(config)), nil
306315
}
307316
return f.kubeObjectMappingFactory.Rollbacker(mapping)
308317
}
309318

310319
func (f *ring1Factory) StatusViewer(mapping *meta.RESTMapping) (kubectl.StatusViewer, error) {
311-
oc, _, err := f.clientAccessFactory.Clients()
320+
config, err := f.clientAccessFactory.OpenShiftClientConfig().ClientConfig()
312321
if err != nil {
313322
return nil, err
314323
}
315-
316324
if deployapi.IsKindOrLegacy("DeploymentConfig", mapping.GroupVersionKind.GroupKind()) {
317-
return deploycmd.NewDeploymentConfigStatusViewer(oc), nil
325+
return deploycmd.NewDeploymentConfigStatusViewer(appsclient.NewForConfigOrDie(config)), nil
318326
}
319327
return f.kubeObjectMappingFactory.StatusViewer(mapping)
320328
}

pkg/deploy/apis/apps/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ const (
124124

125125
// +genclient
126126
// +genclient:method=Instantiate,verb=create,subresource=instantiate,input=DeploymentRequest
127+
// +genclient:method=Rollback,verb=create,subresource=rollback,input=DeploymentConfigRollback
127128
// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/kubernetes/pkg/apis/extensions/v1beta1.Scale
128129
// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/kubernetes/pkg/apis/extensions/v1beta1.Scale,result=k8s.io/kubernetes/pkg/apis/extensions/v1beta1.Scale
129130

pkg/deploy/apis/apps/v1/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
// +genclient
1212
// +genclient:method=Instantiate,verb=create,subresource=instantiate,input=DeploymentRequest
13+
// +genclient:method=Rollback,verb=create,subresource=rollback,input=DeploymentConfigRollback
1314
// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/kubernetes/pkg/apis/extensions/v1beta1.Scale
1415
// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/kubernetes/pkg/apis/extensions/v1beta1.Scale,result=k8s.io/kubernetes/pkg/apis/extensions/v1beta1.Scale
1516

pkg/deploy/cmd/delete.go

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,52 @@ import (
99
"k8s.io/apimachinery/pkg/util/wait"
1010
kapi "k8s.io/kubernetes/pkg/api"
1111
kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
12+
"k8s.io/kubernetes/pkg/client/retry"
1213
"k8s.io/kubernetes/pkg/kubectl"
1314
kutil "k8s.io/kubernetes/pkg/util"
1415

15-
"github.com/openshift/origin/pkg/client"
1616
deployapi "github.com/openshift/origin/pkg/deploy/apis/apps"
17+
appsclient "github.com/openshift/origin/pkg/deploy/generated/internalclientset"
18+
appsinternal "github.com/openshift/origin/pkg/deploy/generated/internalclientset/typed/apps/internalversion"
1719
"github.com/openshift/origin/pkg/deploy/util"
1820
)
1921

2022
// NewDeploymentConfigReaper returns a new reaper for deploymentConfigs
21-
func NewDeploymentConfigReaper(oc client.Interface, kc kclientset.Interface) kubectl.Reaper {
22-
return &DeploymentConfigReaper{oc: oc, kc: kc, pollInterval: kubectl.Interval, timeout: kubectl.Timeout}
23+
func NewDeploymentConfigReaper(appsClient appsclient.Interface, kc kclientset.Interface) kubectl.Reaper {
24+
return &DeploymentConfigReaper{appsClient: appsClient, kc: kc, pollInterval: kubectl.Interval, timeout: kubectl.Timeout}
2325
}
2426

2527
// DeploymentConfigReaper implements the Reaper interface for deploymentConfigs
2628
type DeploymentConfigReaper struct {
27-
oc client.Interface
29+
appsClient appsclient.Interface
2830
kc kclientset.Interface
2931
pollInterval, timeout time.Duration
3032
}
3133

34+
type updateConfigFunc func(d *deployapi.DeploymentConfig)
35+
36+
// updateConfigWithRetries will try to update a deployment config and ignore any update conflicts.
37+
func updateConfigWithRetries(dn appsinternal.DeploymentConfigsGetter, namespace, name string, applyUpdate updateConfigFunc) (*deployapi.DeploymentConfig, error) {
38+
var config *deployapi.DeploymentConfig
39+
40+
resultErr := retry.RetryOnConflict(retry.DefaultBackoff, func() error {
41+
var err error
42+
config, err = dn.DeploymentConfigs(namespace).Get(name, metav1.GetOptions{})
43+
if err != nil {
44+
return err
45+
}
46+
// Apply the update, then attempt to push it to the apiserver.
47+
applyUpdate(config)
48+
config, err = dn.DeploymentConfigs(namespace).Update(config)
49+
return err
50+
})
51+
return config, resultErr
52+
}
53+
3254
// pause marks the deployment configuration as paused to avoid triggering new
3355
// deployments.
3456
func (reaper *DeploymentConfigReaper) pause(namespace, name string) (*deployapi.DeploymentConfig, error) {
35-
return client.UpdateConfigWithRetries(reaper.oc, namespace, name, func(d *deployapi.DeploymentConfig) {
57+
return updateConfigWithRetries(reaper.appsClient.Apps(), namespace, name, func(d *deployapi.DeploymentConfig) {
3658
d.Spec.RevisionHistoryLimit = kutil.Int32Ptr(0)
3759
d.Spec.Replicas = 0
3860
d.Spec.Paused = true
@@ -58,7 +80,7 @@ func (reaper *DeploymentConfigReaper) Stop(namespace, name string, timeout time.
5880
// Determine if the deployment config controller noticed the pause.
5981
if !configNotFound {
6082
if err := wait.Poll(1*time.Second, 1*time.Minute, func() (bool, error) {
61-
dc, err := reaper.oc.DeploymentConfigs(namespace).Get(name, metav1.GetOptions{})
83+
dc, err := reaper.appsClient.Apps().DeploymentConfigs(namespace).Get(name, metav1.GetOptions{})
6284
if err != nil {
6385
return false, err
6486
}
@@ -72,7 +94,7 @@ func (reaper *DeploymentConfigReaper) Stop(namespace, name string, timeout time.
7294
// old API that does not support pausing. In that case, we delete the
7395
// deployment config to stay backward compatible.
7496
if !isPaused {
75-
if err := reaper.oc.DeploymentConfigs(namespace).Delete(name); err != nil {
97+
if err := reaper.appsClient.Apps().DeploymentConfigs(namespace).Delete(name, &metav1.DeleteOptions{}); err != nil {
7698
return err
7799
}
78100
// Setting this to true avoid deleting the config at the end.
@@ -133,5 +155,5 @@ func (reaper *DeploymentConfigReaper) Stop(namespace, name string, timeout time.
133155
return nil
134156
}
135157

136-
return reaper.oc.DeploymentConfigs(namespace).Delete(name)
158+
return reaper.appsClient.Apps().DeploymentConfigs(namespace).Delete(name, &metav1.DeleteOptions{})
137159
}

pkg/deploy/cmd/delete_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ import (
1313
kapi "k8s.io/kubernetes/pkg/api"
1414
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
1515

16-
"github.com/openshift/origin/pkg/client/testclient"
1716
deployapi "github.com/openshift/origin/pkg/deploy/apis/apps"
1817
_ "github.com/openshift/origin/pkg/deploy/apis/apps/install"
1918
deploytest "github.com/openshift/origin/pkg/deploy/apis/apps/test"
19+
appsfake "github.com/openshift/origin/pkg/deploy/generated/internalclientset/fake"
2020
deployutil "github.com/openshift/origin/pkg/deploy/util"
2121
)
2222

@@ -35,7 +35,7 @@ func mkdeploymentlist(versions ...int64) *kapi.ReplicationControllerList {
3535

3636
func TestStop(t *testing.T) {
3737
var (
38-
deploymentConfigsResource = schema.GroupVersionResource{Resource: "deploymentconfigs"}
38+
deploymentConfigsResource = schema.GroupVersionResource{Group: "apps.openshift.io", Resource: "deploymentconfigs"}
3939
replicationControllersResource = schema.GroupVersionResource{Resource: "replicationcontrollers"}
4040
replicationControllerKind = schema.GroupVersionKind{Kind: "ReplicationController"}
4141
)
@@ -58,7 +58,7 @@ func TestStop(t *testing.T) {
5858
testName string
5959
namespace string
6060
name string
61-
oc *testclient.Fake
61+
oc *appsfake.Clientset
6262
kc *fake.Clientset
6363
expected []clientgotesting.Action
6464
kexpected []clientgotesting.Action
@@ -68,7 +68,7 @@ func TestStop(t *testing.T) {
6868
testName: "simple stop",
6969
namespace: "default",
7070
name: "config",
71-
oc: testclient.NewSimpleFake(fakeDC["simple-stop"]),
71+
oc: appsfake.NewSimpleClientset(fakeDC["simple-stop"]),
7272
kc: fake.NewSimpleClientset(mkdeploymentlist(1)),
7373
expected: []clientgotesting.Action{
7474
clientgotesting.NewGetAction(deploymentConfigsResource, "default", "config"),
@@ -91,7 +91,7 @@ func TestStop(t *testing.T) {
9191
testName: "legacy simple stop",
9292
namespace: "default",
9393
name: "config",
94-
oc: testclient.NewSimpleFake(fakeDC["legacy-simple-stop"]),
94+
oc: appsfake.NewSimpleClientset(fakeDC["legacy-simple-stop"]),
9595
kc: fake.NewSimpleClientset(mkdeploymentlist(1)),
9696
expected: []clientgotesting.Action{
9797
clientgotesting.NewGetAction(deploymentConfigsResource, "default", "config"),
@@ -114,7 +114,7 @@ func TestStop(t *testing.T) {
114114
testName: "stop multiple controllers",
115115
namespace: "default",
116116
name: "config",
117-
oc: testclient.NewSimpleFake(fakeDC["multi-stop"]),
117+
oc: appsfake.NewSimpleClientset(fakeDC["multi-stop"]),
118118
kc: fake.NewSimpleClientset(mkdeploymentlist(1, 2, 3, 4, 5)),
119119
expected: []clientgotesting.Action{
120120
clientgotesting.NewGetAction(deploymentConfigsResource, "default", "config"),
@@ -161,7 +161,7 @@ func TestStop(t *testing.T) {
161161
testName: "legacy stop multiple controllers",
162162
namespace: "default",
163163
name: "config",
164-
oc: testclient.NewSimpleFake(fakeDC["legacy-multi-stop"]),
164+
oc: appsfake.NewSimpleClientset(fakeDC["legacy-multi-stop"]),
165165
kc: fake.NewSimpleClientset(mkdeploymentlist(1, 2, 3, 4, 5)),
166166
expected: []clientgotesting.Action{
167167
clientgotesting.NewGetAction(deploymentConfigsResource, "default", "config"),
@@ -208,7 +208,7 @@ func TestStop(t *testing.T) {
208208
testName: "no config, some deployments",
209209
namespace: "default",
210210
name: "config",
211-
oc: testclient.NewSimpleFake(),
211+
oc: appsfake.NewSimpleClientset(),
212212
kc: fake.NewSimpleClientset(mkdeploymentlist(1)),
213213
expected: []clientgotesting.Action{
214214
clientgotesting.NewGetAction(deploymentConfigsResource, "default", "config"),
@@ -228,7 +228,7 @@ func TestStop(t *testing.T) {
228228
testName: "no config, no deployments",
229229
namespace: "default",
230230
name: "config",
231-
oc: testclient.NewSimpleFake(),
231+
oc: appsfake.NewSimpleClientset(),
232232
kc: fake.NewSimpleClientset(&kapi.ReplicationControllerList{}),
233233
expected: []clientgotesting.Action{
234234
clientgotesting.NewGetAction(deploymentConfigsResource, "default", "config"),
@@ -242,7 +242,7 @@ func TestStop(t *testing.T) {
242242
testName: "config, no deployments",
243243
namespace: "default",
244244
name: "config",
245-
oc: testclient.NewSimpleFake(fakeDC["no-deployments"]),
245+
oc: appsfake.NewSimpleClientset(fakeDC["no-deployments"]),
246246
kc: fake.NewSimpleClientset(&kapi.ReplicationControllerList{}),
247247
expected: []clientgotesting.Action{
248248
clientgotesting.NewGetAction(deploymentConfigsResource, "default", "config"),
@@ -259,7 +259,7 @@ func TestStop(t *testing.T) {
259259
testName: "legacy config, no deployments",
260260
namespace: "default",
261261
name: "config",
262-
oc: testclient.NewSimpleFake(fakeDC["legacy-no-deployments"]),
262+
oc: appsfake.NewSimpleClientset(fakeDC["legacy-no-deployments"]),
263263
kc: fake.NewSimpleClientset(&kapi.ReplicationControllerList{}),
264264
expected: []clientgotesting.Action{
265265
clientgotesting.NewGetAction(deploymentConfigsResource, "default", "config"),
@@ -275,7 +275,7 @@ func TestStop(t *testing.T) {
275275
}
276276

277277
for _, test := range tests {
278-
reaper := &DeploymentConfigReaper{oc: test.oc, kc: test.kc, pollInterval: time.Millisecond, timeout: time.Millisecond}
278+
reaper := &DeploymentConfigReaper{appsClient: test.oc, kc: test.kc, pollInterval: time.Millisecond, timeout: time.Millisecond}
279279
err := reaper.Stop(test.namespace, test.name, 1*time.Second, nil)
280280

281281
if !test.err && err != nil {

pkg/deploy/cmd/history.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,18 @@ import (
1313
"k8s.io/kubernetes/pkg/kubectl"
1414
kinternalprinters "k8s.io/kubernetes/pkg/printers/internalversion"
1515

16-
"github.com/openshift/origin/pkg/client"
1716
deployapi "github.com/openshift/origin/pkg/deploy/apis/apps"
1817
deployutil "github.com/openshift/origin/pkg/deploy/util"
1918
)
2019

21-
func NewDeploymentConfigHistoryViewer(oc client.Interface, kc kclientset.Interface) kubectl.HistoryViewer {
22-
return &DeploymentConfigHistoryViewer{dn: oc, rn: kc.Core()}
20+
func NewDeploymentConfigHistoryViewer(kc kclientset.Interface) kubectl.HistoryViewer {
21+
return &DeploymentConfigHistoryViewer{rn: kc.Core()}
2322
}
2423

2524
// DeploymentConfigHistoryViewer is an implementation of the kubectl HistoryViewer interface
2625
// for deployment configs.
2726
type DeploymentConfigHistoryViewer struct {
2827
rn kcoreclient.ReplicationControllersGetter
29-
dn client.DeploymentConfigsNamespacer
3028
}
3129

3230
var _ kubectl.HistoryViewer = &DeploymentConfigHistoryViewer{}

pkg/deploy/cmd/rollback.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,19 @@ import (
88
"k8s.io/kubernetes/pkg/kubectl"
99
kinternalprinters "k8s.io/kubernetes/pkg/printers/internalversion"
1010

11-
"github.com/openshift/origin/pkg/client"
1211
deployapi "github.com/openshift/origin/pkg/deploy/apis/apps"
12+
appsclient "github.com/openshift/origin/pkg/deploy/generated/internalclientset"
13+
appsinternal "github.com/openshift/origin/pkg/deploy/generated/internalclientset/typed/apps/internalversion"
1314
)
1415

15-
func NewDeploymentConfigRollbacker(oc client.Interface) kubectl.Rollbacker {
16-
return &DeploymentConfigRollbacker{dn: oc}
16+
func NewDeploymentConfigRollbacker(appsClient appsclient.Interface) kubectl.Rollbacker {
17+
return &DeploymentConfigRollbacker{dn: appsClient.Apps()}
1718
}
1819

1920
// DeploymentConfigRollbacker is an implementation of the kubectl Rollbacker interface
2021
// for deployment configs.
2122
type DeploymentConfigRollbacker struct {
22-
dn client.DeploymentConfigsNamespacer
23+
dn appsinternal.DeploymentConfigsGetter
2324
}
2425

2526
var _ kubectl.Rollbacker = &DeploymentConfigRollbacker{}
@@ -44,7 +45,7 @@ func (r *DeploymentConfigRollbacker) Rollback(obj runtime.Object, updatedAnnotat
4445
},
4546
}
4647

47-
rolledback, err := r.dn.DeploymentConfigs(config.Namespace).Rollback(rollback)
48+
rolledback, err := r.dn.DeploymentConfigs(config.Namespace).Rollback(config.Name, rollback)
4849
if err != nil {
4950
return "", err
5051
}

0 commit comments

Comments
 (0)