diff --git a/hack/make-rules/test-cmd.sh b/hack/make-rules/test-cmd.sh index 3197895da58..ef946dc8e1d 100755 --- a/hack/make-rules/test-cmd.sh +++ b/hack/make-rules/test-cmd.sh @@ -331,6 +331,7 @@ runTests() { second_port_field="(index .spec.ports 1).port" second_port_name="(index .spec.ports 1).name" image_field="(index .spec.containers 0).image" + container_name_field="(index .spec.template.spec.containers 0).name" hpa_min_field=".spec.minReplicas" hpa_max_field=".spec.maxReplicas" hpa_cpu_field=".spec.targetCPUUtilizationPercentage" @@ -1219,6 +1220,13 @@ __EOF__ # Clean up kubectl delete deployment nginx "${kube_flags[@]}" + # Test kubectl create deployment + kubectl create deployment test-nginx --image=gcr.io/google-containers/nginx:test-cmd + # Post-Condition: Deployment has 2 replicas defined in its spec. + kube::test::get_object_assert 'deploy test-nginx' "{{$container_name_field}}" 'nginx' + # Clean up + kubectl delete deployment test-nginx "${kube_flags[@]}" + ############### # Kubectl get # ############### diff --git a/pkg/kubectl/deployment.go b/pkg/kubectl/deployment.go index c167702fb3e..7266bdb626b 100644 --- a/pkg/kubectl/deployment.go +++ b/pkg/kubectl/deployment.go @@ -67,8 +67,15 @@ func (s *DeploymentBasicGeneratorV1) StructuredGenerate() (runtime.Object, error podSpec := api.PodSpec{Containers: []api.Container{}} for _, imageString := range s.Images { + // Retain just the image name imageSplit := strings.Split(imageString, "/") name := imageSplit[len(imageSplit)-1] + // Remove any tag or hash + if strings.Contains(name, ":") { + name = strings.Split(name, ":")[0] + } else if strings.Contains(name, "@") { + name = strings.Split(name, "@")[0] + } podSpec.Containers = append(podSpec.Containers, api.Container{Name: name, Image: imageString}) } diff --git a/pkg/kubectl/deployment_test.go b/pkg/kubectl/deployment_test.go index 1d905be9262..713983ab66e 100644 --- a/pkg/kubectl/deployment_test.go +++ b/pkg/kubectl/deployment_test.go @@ -49,7 +49,7 @@ func TestDeploymentGenerate(t *testing.T) { Labels: map[string]string{"app": "foo"}, }, Spec: api.PodSpec{ - Containers: []api.Container{{Name: "app:v4", Image: "abc/app:v4"}}, + Containers: []api.Container{{Name: "app", Image: "abc/app:v4"}}, }, }, }, @@ -74,7 +74,7 @@ func TestDeploymentGenerate(t *testing.T) { Labels: map[string]string{"app": "foo"}, }, Spec: api.PodSpec{ - Containers: []api.Container{{Name: "app:v4", Image: "abc/app:v4"}, + Containers: []api.Container{{Name: "app", Image: "abc/app:v4"}, {Name: "ape", Image: "zyx/ape"}}, }, }, @@ -114,21 +114,22 @@ func TestDeploymentGenerate(t *testing.T) { } generator := DeploymentBasicGeneratorV1{} for index, test := range tests { + t.Logf("running scenario %d", index) obj, err := generator.Generate(test.params) switch { case test.expectErr && err != nil: continue // loop, since there's no output to check case test.expectErr && err == nil: - t.Errorf("%v: expected error and didn't get one", index) + t.Errorf("expected error and didn't get one") continue // loop, no expected output object case !test.expectErr && err != nil: - t.Errorf("%v: unexpected error %v", index, err) + t.Errorf("unexpected error %v", err) continue // loop, no output object case !test.expectErr && err == nil: // do nothing and drop through } if !reflect.DeepEqual(obj.(*extensions.Deployment), test.expected) { - t.Errorf("%v\nexpected:\n%#v\nsaw:\n%#v", index, test.expected, obj.(*extensions.Deployment)) + t.Errorf("expected:\n%#v\nsaw:\n%#v", test.expected, obj.(*extensions.Deployment)) } } }