Skip to content

Commit c5e3dc8

Browse files
committed
Fix scale subresource type for apps.openshift.io/deploymentconfigs/scale
1 parent 7ed6862 commit c5e3dc8

File tree

3 files changed

+49
-6
lines changed

3 files changed

+49
-6
lines changed

api/swagger-spec/openshift-openapi-spec.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -19461,8 +19461,8 @@
1946119461
},
1946219462
"x-kubernetes-action": "get",
1946319463
"x-kubernetes-group-version-kind": {
19464-
"group": "apps.openshift.io",
19465-
"version": "v1",
19464+
"group": "extensions",
19465+
"version": "v1beta1",
1946619466
"kind": "Scale"
1946719467
}
1946819468
},
@@ -19506,8 +19506,8 @@
1950619506
},
1950719507
"x-kubernetes-action": "put",
1950819508
"x-kubernetes-group-version-kind": {
19509-
"group": "apps.openshift.io",
19510-
"version": "v1",
19509+
"group": "extensions",
19510+
"version": "v1beta1",
1951119511
"kind": "Scale"
1951219512
}
1951319513
},
@@ -19553,8 +19553,8 @@
1955319553
},
1955419554
"x-kubernetes-action": "patch",
1955519555
"x-kubernetes-group-version-kind": {
19556-
"group": "apps.openshift.io",
19557-
"version": "v1",
19556+
"group": "extensions",
19557+
"version": "v1beta1",
1955819558
"kind": "Scale"
1955919559
}
1956019560
},

pkg/apps/apiserver/apiserver.go

+7
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
genericapiserver "k8s.io/apiserver/pkg/server"
1313
restclient "k8s.io/client-go/rest"
1414
kapi "k8s.io/kubernetes/pkg/api"
15+
v1beta1extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
1516
kclientsetexternal "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
1617
kclientsetinternal "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
1718
kubeletclient "k8s.io/kubernetes/pkg/kubelet/client"
@@ -84,6 +85,12 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget)
8485
apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(appsapiv1.GroupName, c.Registry, c.Scheme, parameterCodec, c.Codecs)
8586
apiGroupInfo.GroupMeta.GroupVersion = appsapiv1.SchemeGroupVersion
8687
apiGroupInfo.VersionedResourcesStorageMap[appsapiv1.SchemeGroupVersion.Version] = v1Storage
88+
89+
if apiGroupInfo.SubresourceGroupVersionKind == nil {
90+
apiGroupInfo.SubresourceGroupVersionKind = map[string]schema.GroupVersionKind{}
91+
}
92+
apiGroupInfo.SubresourceGroupVersionKind["deploymentconfigs/scale"] = v1beta1extensions.SchemeGroupVersion.WithKind("Scale")
93+
8794
if err := s.GenericAPIServer.InstallAPIGroup(&apiGroupInfo); err != nil {
8895
return nil, err
8996
}

test/integration/deploy_scale_test.go

+36
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package integration
22

33
import (
4+
"fmt"
45
"testing"
56
"time"
67

78
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
810
"k8s.io/apimachinery/pkg/util/wait"
911
extensionsv1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
1012

@@ -49,6 +51,40 @@ func TestDeployScale(t *testing.T) {
4951
}
5052
generation := dc.Generation
5153

54+
{
55+
// Get scale subresource
56+
legacyPath := fmt.Sprintf("/oapi/v1/namespaces/%s/deploymentconfigs/%s/scale", dc.Namespace, dc.Name)
57+
legacyScale := &unstructured.Unstructured{}
58+
if err := adminAppsClient.AppsClient.RESTClient().Get().AbsPath(legacyPath).Do().Into(legacyScale); err != nil {
59+
t.Fatal(err)
60+
}
61+
// Ensure correct type
62+
if legacyScale.GetAPIVersion() != "extensions/v1beta1" {
63+
t.Fatalf("Expected extensions/v1beta1, got %v", legacyScale.GetAPIVersion())
64+
}
65+
// Ensure we can submit the same type back
66+
if err := adminAppsClient.AppsClient.RESTClient().Put().AbsPath(legacyPath).Body(legacyScale).Do().Error(); err != nil {
67+
t.Fatal(err)
68+
}
69+
}
70+
71+
{
72+
// Get scale subresource
73+
scalePath := fmt.Sprintf("/apis/apps.openshift.io/v1/namespaces/%s/deploymentconfigs/%s/scale", dc.Namespace, dc.Name)
74+
scale := &unstructured.Unstructured{}
75+
if err := adminAppsClient.AppsClient.RESTClient().Get().AbsPath(scalePath).Do().Into(scale); err != nil {
76+
t.Fatal(err)
77+
}
78+
// Ensure correct type
79+
if scale.GetAPIVersion() != "extensions/v1beta1" {
80+
t.Fatalf("Expected extensions/v1beta1, got %v", scale.GetAPIVersion())
81+
}
82+
// Ensure we can submit the same type back
83+
if err := adminAppsClient.AppsClient.RESTClient().Put().AbsPath(scalePath).Body(scale).Do().Error(); err != nil {
84+
t.Fatal(err)
85+
}
86+
}
87+
5288
condition := func() (bool, error) {
5389
config, err := adminAppsClient.DeploymentConfigs(namespace).Get(dc.Name, metav1.GetOptions{})
5490
if err != nil {

0 commit comments

Comments
 (0)