From 9c42d219bc034c6edb4e702e0374fb023260e520 Mon Sep 17 00:00:00 2001 From: deads2k Date: Fri, 12 Feb 2016 15:11:26 -0500 Subject: [PATCH] allow disambiguation of resouces --- hack/test-cmd.sh | 8 ++++---- pkg/api/unversioned/group_version.go | 11 +++++++++++ pkg/kubectl/cmd/explain.go | 2 +- pkg/kubectl/resource/builder.go | 4 ++-- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/hack/test-cmd.sh b/hack/test-cmd.sh index fd60f03b7ae..d6e69d9d4d3 100755 --- a/hack/test-cmd.sh +++ b/hack/test-cmd.sh @@ -702,7 +702,7 @@ __EOF__ # Command: autoscale rc "frontend" kubectl autoscale -f hack/testdata/frontend-controller.yaml --save-config "${kube_flags[@]}" --max=2 # Post-Condition: hpa "frontend" has configuration annotation - [[ "$(kubectl get hpa frontend -o yaml "${kube_flags[@]}" | grep kubectl.kubernetes.io/last-applied-configuration)" ]] + [[ "$(kubectl get hpa.extensions frontend -o yaml "${kube_flags[@]}" | grep kubectl.kubernetes.io/last-applied-configuration)" ]] # Clean up kubectl delete rc,hpa frontend "${kube_flags[@]}" @@ -1191,10 +1191,10 @@ __EOF__ kube::test::get_object_assert deployment "{{range.items}}{{$id_field}}:{{end}}" 'nginx-deployment:' # autoscale 2~3 pods, default CPU utilization (80%) kubectl-with-retry autoscale deployment nginx-deployment "${kube_flags[@]}" --min=2 --max=3 - kube::test::get_object_assert 'hpa nginx-deployment' "{{$hpa_min_field}} {{$hpa_max_field}} {{$hpa_cpu_field}}" '2 3 80' + kube::test::get_object_assert 'hpa.extensions nginx-deployment' "{{$hpa_min_field}} {{$hpa_max_field}} {{$hpa_cpu_field}}" '2 3 80' # Clean up kubectl delete hpa nginx-deployment "${kube_flags[@]}" - kubectl delete deployment nginx-deployment "${kube_flags[@]}" + kubectl delete deployment.extensions nginx-deployment "${kube_flags[@]}" ### Rollback a deployment # Pre-condition: no deployment exists @@ -1209,7 +1209,7 @@ __EOF__ kube::test::get_object_assert deployment "{{range.items}}{{$deployment_image_field}}:{{end}}" 'nginx:' # Update the deployment (revision 2) kubectl apply -f hack/testdata/deployment-revision2.yaml "${kube_flags[@]}" - kube::test::get_object_assert deployment "{{range.items}}{{$deployment_image_field}}:{{end}}" 'nginx:latest:' + kube::test::get_object_assert deployment.extensions "{{range.items}}{{$deployment_image_field}}:{{end}}" 'nginx:latest:' # Rollback to revision 1 kubectl rollout undo deployment nginx-deployment --to-revision=1 "${kube_flags[@]}" sleep 1 diff --git a/pkg/api/unversioned/group_version.go b/pkg/api/unversioned/group_version.go index dc1dc967232..49155e61fbf 100644 --- a/pkg/api/unversioned/group_version.go +++ b/pkg/api/unversioned/group_version.go @@ -46,6 +46,17 @@ func (gr *GroupResource) String() string { return gr.Resource + "." + gr.Group } +// ParseGroupResource turns "resource.group" string into a GroupResource struct. Empty strings are allowed +// for each field. +func ParseGroupResource(gr string) GroupResource { + s := strings.SplitN(gr, ".", 2) + if len(s) == 1 { + return GroupResource{Resource: s[0]} + } + + return GroupResource{Group: s[1], Resource: s[0]} +} + // GroupVersionResource unambiguously identifies a resource. It doesn't anonymously include GroupVersion // to avoid automatic coersion. It doesn't use a GroupVersion to avoid custom marshalling // diff --git a/pkg/kubectl/cmd/explain.go b/pkg/kubectl/cmd/explain.go index 765091c034a..d3746c15470 100644 --- a/pkg/kubectl/cmd/explain.go +++ b/pkg/kubectl/cmd/explain.go @@ -79,7 +79,7 @@ func RunExplain(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []st } // TODO: We should deduce the group for a resource by discovering the supported resources at server. - gvk, err := mapper.KindFor(unversioned.GroupVersionResource{Resource: inModel}) + gvk, err := mapper.KindFor(unversioned.ParseGroupResource(inModel).WithVersion("")) if err != nil { return err } diff --git a/pkg/kubectl/resource/builder.go b/pkg/kubectl/resource/builder.go index 61b0f113184..3025a4cbbfa 100644 --- a/pkg/kubectl/resource/builder.go +++ b/pkg/kubectl/resource/builder.go @@ -440,7 +440,7 @@ func (b *Builder) resourceMappings() ([]*meta.RESTMapping, error) { } mappings := []*meta.RESTMapping{} for _, r := range b.resources { - gvk, err := b.mapper.KindFor(unversioned.GroupVersionResource{Resource: r}) + gvk, err := b.mapper.KindFor(unversioned.ParseGroupResource(r).WithVersion("")) if err != nil { return nil, err } @@ -460,7 +460,7 @@ func (b *Builder) resourceTupleMappings() (map[string]*meta.RESTMapping, error) if _, ok := mappings[r.Resource]; ok { continue } - gvk, err := b.mapper.KindFor(unversioned.GroupVersionResource{Resource: r.Resource}) + gvk, err := b.mapper.KindFor(unversioned.ParseGroupResource(r.Resource).WithVersion("")) if err != nil { return nil, err }