From db48dcf58339d59e9152804bd7c9e2bae7df32f4 Mon Sep 17 00:00:00 2001 From: "Madhusudan.C.S" Date: Wed, 9 Mar 2016 13:11:13 -0800 Subject: [PATCH] ReplicaSetSpec.Template shouldn't be a pointer. PodTemplateSpec should be consistent for all the types in extensions/v1beta1. See PR #19510. --- pkg/apis/extensions/types.go | 2 +- pkg/apis/extensions/v1beta1/conversion.go | 19 ++---- pkg/apis/extensions/v1beta1/defaults.go | 6 +- pkg/apis/extensions/v1beta1/defaults_test.go | 16 ++--- pkg/apis/extensions/v1beta1/types.go | 2 +- pkg/apis/extensions/validation/validation.go | 2 +- .../extensions/validation/validation_test.go | 58 +++++++++---------- pkg/client/unversioned/replica_sets_test.go | 10 ++-- .../deployment/deployment_controller.go | 6 +- .../deployment/deployment_controller_test.go | 4 +- pkg/controller/replicaset/replica_set.go | 2 +- pkg/controller/replicaset/replica_set_test.go | 2 +- pkg/kubectl/describe.go | 10 +--- pkg/kubectl/history.go | 2 +- pkg/kubectl/stop_test.go | 2 +- pkg/registry/replicaset/etcd/etcd_test.go | 2 +- pkg/registry/replicaset/strategy_test.go | 6 +- pkg/util/deployment/deployment.go | 4 +- pkg/util/deployment/deployment_test.go | 4 +- test/e2e/deployment.go | 2 +- test/e2e/replica_set.go | 2 +- test/e2e/util.go | 4 +- 22 files changed, 75 insertions(+), 92 deletions(-) diff --git a/pkg/apis/extensions/types.go b/pkg/apis/extensions/types.go index ce09e26c4e..ffaa979597 100644 --- a/pkg/apis/extensions/types.go +++ b/pkg/apis/extensions/types.go @@ -807,7 +807,7 @@ type ReplicaSetSpec struct { // Template is the object that describes the pod that will be created if // insufficient replicas are detected. - Template *api.PodTemplateSpec `json:"template,omitempty"` + Template api.PodTemplateSpec `json:"template,omitempty"` } // ReplicaSetStatus represents the current status of a ReplicaSet. diff --git a/pkg/apis/extensions/v1beta1/conversion.go b/pkg/apis/extensions/v1beta1/conversion.go index 40108025f6..5f4841cb43 100644 --- a/pkg/apis/extensions/v1beta1/conversion.go +++ b/pkg/apis/extensions/v1beta1/conversion.go @@ -297,13 +297,9 @@ func Convert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec(in *extensions. } else { out.Selector = nil } - if in.Template != nil { - out.Template = new(v1.PodTemplateSpec) - if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in.Template, out.Template, s); err != nil { - return err - } - } else { - out.Template = nil + + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err } return nil } @@ -323,13 +319,8 @@ func Convert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *ReplicaSetS } else { out.Selector = nil } - if in.Template != nil { - out.Template = new(api.PodTemplateSpec) - if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in.Template, out.Template, s); err != nil { - return err - } - } else { - out.Template = nil + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err } return nil } diff --git a/pkg/apis/extensions/v1beta1/defaults.go b/pkg/apis/extensions/v1beta1/defaults.go index cb197a9652..5373c23d81 100644 --- a/pkg/apis/extensions/v1beta1/defaults.go +++ b/pkg/apis/extensions/v1beta1/defaults.go @@ -118,10 +118,8 @@ func addDefaultingFuncs(scheme *runtime.Scheme) { } }, func(obj *ReplicaSet) { - var labels map[string]string - if obj.Spec.Template != nil { - labels = obj.Spec.Template.Labels - } + labels := obj.Spec.Template.Labels + // TODO: support templates defined elsewhere when we support them in the API if labels != nil { if obj.Spec.Selector == nil { diff --git a/pkg/apis/extensions/v1beta1/defaults_test.go b/pkg/apis/extensions/v1beta1/defaults_test.go index 85b991980a..760df33605 100644 --- a/pkg/apis/extensions/v1beta1/defaults_test.go +++ b/pkg/apis/extensions/v1beta1/defaults_test.go @@ -426,7 +426,7 @@ func TestSetDefaultReplicaSet(t *testing.T) { { rs: &ReplicaSet{ Spec: ReplicaSetSpec{ - Template: &v1.PodTemplateSpec{ + Template: v1.PodTemplateSpec{ ObjectMeta: v1.ObjectMeta{ Labels: map[string]string{ "foo": "bar", @@ -446,7 +446,7 @@ func TestSetDefaultReplicaSet(t *testing.T) { }, }, Spec: ReplicaSetSpec{ - Template: &v1.PodTemplateSpec{ + Template: v1.PodTemplateSpec{ ObjectMeta: v1.ObjectMeta{ Labels: map[string]string{ "foo": "bar", @@ -471,7 +471,7 @@ func TestSetDefaultReplicaSet(t *testing.T) { "some": "other", }, }, - Template: &v1.PodTemplateSpec{ + Template: v1.PodTemplateSpec{ ObjectMeta: v1.ObjectMeta{ Labels: map[string]string{ "foo": "bar", @@ -491,7 +491,7 @@ func TestSetDefaultReplicaSet(t *testing.T) { "some": "other", }, }, - Template: &v1.PodTemplateSpec{ + Template: v1.PodTemplateSpec{ ObjectMeta: v1.ObjectMeta{ Labels: map[string]string{ "foo": "bar", @@ -538,7 +538,7 @@ func TestSetDefaultReplicaSetReplicas(t *testing.T) { { rs: ReplicaSet{ Spec: ReplicaSetSpec{ - Template: &v1.PodTemplateSpec{ + Template: v1.PodTemplateSpec{ ObjectMeta: v1.ObjectMeta{ Labels: map[string]string{ "foo": "bar", @@ -553,7 +553,7 @@ func TestSetDefaultReplicaSetReplicas(t *testing.T) { rs: ReplicaSet{ Spec: ReplicaSetSpec{ Replicas: newInt32(0), - Template: &v1.PodTemplateSpec{ + Template: v1.PodTemplateSpec{ ObjectMeta: v1.ObjectMeta{ Labels: map[string]string{ "foo": "bar", @@ -568,7 +568,7 @@ func TestSetDefaultReplicaSetReplicas(t *testing.T) { rs: ReplicaSet{ Spec: ReplicaSetSpec{ Replicas: newInt32(3), - Template: &v1.PodTemplateSpec{ + Template: v1.PodTemplateSpec{ ObjectMeta: v1.ObjectMeta{ Labels: map[string]string{ "foo": "bar", @@ -611,7 +611,7 @@ func TestDefaultRequestIsNotSetForReplicaSet(t *testing.T) { rs := &ReplicaSet{ Spec: ReplicaSetSpec{ Replicas: newInt32(3), - Template: &v1.PodTemplateSpec{ + Template: v1.PodTemplateSpec{ ObjectMeta: v1.ObjectMeta{ Labels: map[string]string{ "foo": "bar", diff --git a/pkg/apis/extensions/v1beta1/types.go b/pkg/apis/extensions/v1beta1/types.go index 5cc05a9e28..9c1455c40e 100644 --- a/pkg/apis/extensions/v1beta1/types.go +++ b/pkg/apis/extensions/v1beta1/types.go @@ -898,7 +898,7 @@ type ReplicaSetSpec struct { // Template is the object that describes the pod that will be created if // insufficient replicas are detected. // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template - Template *v1.PodTemplateSpec `json:"template,omitempty"` + Template v1.PodTemplateSpec `json:"template,omitempty"` } // ReplicaSetStatus represents the current status of a ReplicaSet. diff --git a/pkg/apis/extensions/validation/validation.go b/pkg/apis/extensions/validation/validation.go index e249ab965b..bf5cbbcd30 100644 --- a/pkg/apis/extensions/validation/validation.go +++ b/pkg/apis/extensions/validation/validation.go @@ -710,7 +710,7 @@ func ValidateReplicaSetSpec(spec *extensions.ReplicaSetSpec, fldPath *field.Path if err != nil { allErrs = append(allErrs, field.Invalid(fldPath.Child("selector"), spec.Selector, "invalid label selector.")) } else { - allErrs = append(allErrs, ValidatePodTemplateSpecForReplicaSet(spec.Template, selector, spec.Replicas, fldPath.Child("template"))...) + allErrs = append(allErrs, ValidatePodTemplateSpecForReplicaSet(&spec.Template, selector, spec.Replicas, fldPath.Child("template"))...) } return allErrs } diff --git a/pkg/apis/extensions/validation/validation_test.go b/pkg/apis/extensions/validation/validation_test.go index e93f8f3f2a..818a696617 100644 --- a/pkg/apis/extensions/validation/validation_test.go +++ b/pkg/apis/extensions/validation/validation_test.go @@ -1446,7 +1446,7 @@ func TestValidateReplicaSetStatusUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, Status: extensions.ReplicaSetStatus{ Replicas: 2, @@ -1457,7 +1457,7 @@ func TestValidateReplicaSetStatusUpdate(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 3, Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, Status: extensions.ReplicaSetStatus{ Replicas: 4, @@ -1478,7 +1478,7 @@ func TestValidateReplicaSetStatusUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, Status: extensions.ReplicaSetStatus{ Replicas: 3, @@ -1489,7 +1489,7 @@ func TestValidateReplicaSetStatusUpdate(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 2, Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, Status: extensions.ReplicaSetStatus{ Replicas: -3, @@ -1554,7 +1554,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, update: extensions.ReplicaSet{ @@ -1562,7 +1562,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 3, Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, }, @@ -1571,7 +1571,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, update: extensions.ReplicaSet{ @@ -1579,7 +1579,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 1, Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &readWriteVolumePodTemplate.Template, + Template: readWriteVolumePodTemplate.Template, }, }, }, @@ -1597,7 +1597,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, update: extensions.ReplicaSet{ @@ -1605,7 +1605,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 2, Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &readWriteVolumePodTemplate.Template, + Template: readWriteVolumePodTemplate.Template, }, }, }, @@ -1614,7 +1614,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, update: extensions.ReplicaSet{ @@ -1622,7 +1622,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 2, Selector: &unversioned.LabelSelector{MatchLabels: invalidLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, }, @@ -1631,7 +1631,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, update: extensions.ReplicaSet{ @@ -1639,7 +1639,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 2, Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &invalidPodTemplate.Template, + Template: invalidPodTemplate.Template, }, }, }, @@ -1648,7 +1648,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, update: extensions.ReplicaSet{ @@ -1656,7 +1656,7 @@ func TestValidateReplicaSetUpdate(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: -1, Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, }, @@ -1712,14 +1712,14 @@ func TestValidateReplicaSet(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, { ObjectMeta: api.ObjectMeta{Name: "abc-123", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, { @@ -1727,7 +1727,7 @@ func TestValidateReplicaSet(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 1, Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &readWriteVolumePodTemplate.Template, + Template: readWriteVolumePodTemplate.Template, }, }, } @@ -1742,27 +1742,27 @@ func TestValidateReplicaSet(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, "missing-namespace": { ObjectMeta: api.ObjectMeta{Name: "abc-123"}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, "empty selector": { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, "selector_doesnt_match": { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"foo": "bar"}}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, "invalid manifest": { @@ -1776,7 +1776,7 @@ func TestValidateReplicaSet(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 2, Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &readWriteVolumePodTemplate.Template, + Template: readWriteVolumePodTemplate.Template, }, }, "negative_replicas": { @@ -1796,7 +1796,7 @@ func TestValidateReplicaSet(t *testing.T) { }, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, "invalid_label 2": { @@ -1808,7 +1808,7 @@ func TestValidateReplicaSet(t *testing.T) { }, }, Spec: extensions.ReplicaSetSpec{ - Template: &invalidPodTemplate.Template, + Template: invalidPodTemplate.Template, }, }, "invalid_annotation": { @@ -1821,7 +1821,7 @@ func TestValidateReplicaSet(t *testing.T) { }, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, }, "invalid restart policy 1": { @@ -1831,7 +1831,7 @@ func TestValidateReplicaSet(t *testing.T) { }, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ Spec: api.PodSpec{ RestartPolicy: api.RestartPolicyOnFailure, DNSPolicy: api.DNSClusterFirst, @@ -1850,7 +1850,7 @@ func TestValidateReplicaSet(t *testing.T) { }, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validLabels}, - Template: &api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ Spec: api.PodSpec{ RestartPolicy: api.RestartPolicyNever, DNSPolicy: api.DNSClusterFirst, diff --git a/pkg/client/unversioned/replica_sets_test.go b/pkg/client/unversioned/replica_sets_test.go index 097fdd1275..2a0e8142cf 100644 --- a/pkg/client/unversioned/replica_sets_test.go +++ b/pkg/client/unversioned/replica_sets_test.go @@ -49,7 +49,7 @@ func TestListReplicaSets(t *testing.T) { }, Spec: extensions.ReplicaSetSpec{ Replicas: 2, - Template: &api.PodTemplateSpec{}, + Template: api.PodTemplateSpec{}, }, }, }, @@ -76,7 +76,7 @@ func TestGetReplicaSet(t *testing.T) { }, Spec: extensions.ReplicaSetSpec{ Replicas: 2, - Template: &api.PodTemplateSpec{}, + Template: api.PodTemplateSpec{}, }, }, }, @@ -115,7 +115,7 @@ func TestUpdateReplicaSet(t *testing.T) { }, Spec: extensions.ReplicaSetSpec{ Replicas: 2, - Template: &api.PodTemplateSpec{}, + Template: api.PodTemplateSpec{}, }, }, }, @@ -143,7 +143,7 @@ func TestUpdateStatusReplicaSet(t *testing.T) { }, Spec: extensions.ReplicaSetSpec{ Replicas: 2, - Template: &api.PodTemplateSpec{}, + Template: api.PodTemplateSpec{}, }, Status: extensions.ReplicaSetStatus{ Replicas: 2, @@ -183,7 +183,7 @@ func TestCreateReplicaSet(t *testing.T) { }, Spec: extensions.ReplicaSetSpec{ Replicas: 2, - Template: &api.PodTemplateSpec{}, + Template: api.PodTemplateSpec{}, }, }, }, diff --git a/pkg/controller/deployment/deployment_controller.go b/pkg/controller/deployment/deployment_controller.go index 108c254249..d9b996c2ee 100644 --- a/pkg/controller/deployment/deployment_controller.go +++ b/pkg/controller/deployment/deployment_controller.go @@ -730,7 +730,7 @@ func (dc *DeploymentController) getNewReplicaSet(deployment *extensions.Deployme Spec: extensions.ReplicaSetSpec{ Replicas: 0, Selector: newRSSelector, - Template: &newRSTemplate, + Template: newRSTemplate, }, } // Set new replica set's annotation @@ -1100,9 +1100,9 @@ func (dc *DeploymentController) updateDeployment(deployment *extensions.Deployme } func (dc *DeploymentController) rollbackToTemplate(deployment *extensions.Deployment, rs *extensions.ReplicaSet) (d *extensions.Deployment, performedRollback bool, err error) { - if !reflect.DeepEqual(deploymentutil.GetNewReplicaSetTemplate(deployment), *rs.Spec.Template) { + if !reflect.DeepEqual(deploymentutil.GetNewReplicaSetTemplate(deployment), rs.Spec.Template) { glog.Infof("Rolling back deployment %s to template spec %+v", deployment.Name, rs.Spec.Template.Spec) - deploymentutil.SetFromReplicaSetTemplate(deployment, *rs.Spec.Template) + deploymentutil.SetFromReplicaSetTemplate(deployment, rs.Spec.Template) performedRollback = true } else { glog.V(4).Infof("Rolling back to a revision that contains the same template as current deployment %s, skipping rollback...", deployment.Name) diff --git a/pkg/controller/deployment/deployment_controller_test.go b/pkg/controller/deployment/deployment_controller_test.go index 6a8d711529..31cb70061c 100644 --- a/pkg/controller/deployment/deployment_controller_test.go +++ b/pkg/controller/deployment/deployment_controller_test.go @@ -42,7 +42,7 @@ func rs(name string, replicas int, selector map[string]string) *exp.ReplicaSet { Spec: exp.ReplicaSetSpec{ Replicas: replicas, Selector: &unversioned.LabelSelector{MatchLabels: selector}, - Template: &api.PodTemplateSpec{}, + Template: api.PodTemplateSpec{}, }, } } @@ -120,7 +120,7 @@ func newReplicaSet(d *exp.Deployment, name string, replicas int) *exp.ReplicaSet }, Spec: exp.ReplicaSetSpec{ Replicas: replicas, - Template: &d.Spec.Template, + Template: d.Spec.Template, }, } diff --git a/pkg/controller/replicaset/replica_set.go b/pkg/controller/replicaset/replica_set.go index 28b5374d3f..0c990f2975 100644 --- a/pkg/controller/replicaset/replica_set.go +++ b/pkg/controller/replicaset/replica_set.go @@ -439,7 +439,7 @@ func (rsc *ReplicaSetController) manageReplicas(filteredPods []*api.Pod, rs *ext for i := 0; i < diff; i++ { go func() { defer wait.Done() - if err := rsc.podControl.CreatePods(rs.Namespace, rs.Spec.Template, rs); err != nil { + if err := rsc.podControl.CreatePods(rs.Namespace, &rs.Spec.Template, rs); err != nil { // Decrement the expected number of creates because the informer won't observe this pod glog.V(2).Infof("Failed creation, decrementing expectations for replica set %q/%q", rs.Namespace, rs.Name) rsc.expectations.CreationObserved(rsKey) diff --git a/pkg/controller/replicaset/replica_set_test.go b/pkg/controller/replicaset/replica_set_test.go index 657304e28a..50b808bb48 100644 --- a/pkg/controller/replicaset/replica_set_test.go +++ b/pkg/controller/replicaset/replica_set_test.go @@ -69,7 +69,7 @@ func newReplicaSet(replicas int, selectorMap map[string]string) *extensions.Repl Spec: extensions.ReplicaSetSpec{ Replicas: replicas, Selector: &unversioned.LabelSelector{MatchLabels: selectorMap}, - Template: &api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: map[string]string{ "name": "foo", diff --git a/pkg/kubectl/describe.go b/pkg/kubectl/describe.go index e377133a7c..0a09b3a069 100644 --- a/pkg/kubectl/describe.go +++ b/pkg/kubectl/describe.go @@ -1038,18 +1038,12 @@ func describeReplicaSet(rs *extensions.ReplicaSet, events *api.EventList, runnin return tabbedString(func(out io.Writer) error { fmt.Fprintf(out, "Name:\t%s\n", rs.Name) fmt.Fprintf(out, "Namespace:\t%s\n", rs.Namespace) - if rs.Spec.Template != nil { - fmt.Fprintf(out, "Image(s):\t%s\n", makeImageList(&rs.Spec.Template.Spec)) - } else { - fmt.Fprintf(out, "Image(s):\t%s\n", "") - } + fmt.Fprintf(out, "Image(s):\t%s\n", makeImageList(&rs.Spec.Template.Spec)) fmt.Fprintf(out, "Selector:\t%s\n", unversioned.FormatLabelSelector(rs.Spec.Selector)) fmt.Fprintf(out, "Labels:\t%s\n", labels.FormatLabels(rs.Labels)) fmt.Fprintf(out, "Replicas:\t%d current / %d desired\n", rs.Status.Replicas, rs.Spec.Replicas) fmt.Fprintf(out, "Pods Status:\t%d Running / %d Waiting / %d Succeeded / %d Failed\n", running, waiting, succeeded, failed) - if rs.Spec.Template != nil { - describeVolumes(rs.Spec.Template.Spec.Volumes, out) - } + describeVolumes(rs.Spec.Template.Spec.Volumes, out) if events != nil { DescribeEvents(events, out) } diff --git a/pkg/kubectl/history.go b/pkg/kubectl/history.go index 4ee41fa158..37cb9e0b29 100644 --- a/pkg/kubectl/history.go +++ b/pkg/kubectl/history.go @@ -81,7 +81,7 @@ func (h *DeploymentHistoryViewer) History(namespace, name string) (HistoryInfo, if err != nil { continue } - historyInfo.RevisionToTemplate[v] = rs.Spec.Template + historyInfo.RevisionToTemplate[v] = &rs.Spec.Template changeCause := getChangeCause(rs) if historyInfo.RevisionToTemplate[v].Annotations == nil { historyInfo.RevisionToTemplate[v].Annotations = make(map[string]string) diff --git a/pkg/kubectl/stop_test.go b/pkg/kubectl/stop_test.go index 75729e8257..9274ab4086 100644 --- a/pkg/kubectl/stop_test.go +++ b/pkg/kubectl/stop_test.go @@ -552,7 +552,7 @@ func TestDeploymentStop(t *testing.T) { Namespace: ns, }, Spec: extensions.ReplicaSetSpec{ - Template: &template, + Template: template, }, }, }, diff --git a/pkg/registry/replicaset/etcd/etcd_test.go b/pkg/registry/replicaset/etcd/etcd_test.go index 64c7c6a70c..18cecd0111 100644 --- a/pkg/registry/replicaset/etcd/etcd_test.go +++ b/pkg/registry/replicaset/etcd/etcd_test.go @@ -61,7 +61,7 @@ func validNewReplicaSet() *extensions.ReplicaSet { }, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"a": "b"}}, - Template: &api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: map[string]string{"a": "b"}, }, diff --git a/pkg/registry/replicaset/strategy_test.go b/pkg/registry/replicaset/strategy_test.go index 1fe9b9f348..e4fea3c39f 100644 --- a/pkg/registry/replicaset/strategy_test.go +++ b/pkg/registry/replicaset/strategy_test.go @@ -50,7 +50,7 @@ func TestReplicaSetStrategy(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: validSelector}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, Status: extensions.ReplicaSetStatus{ Replicas: 1, @@ -109,7 +109,7 @@ func TestReplicaSetStatusStrategy(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 3, Selector: &unversioned.LabelSelector{MatchLabels: validSelector}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, Status: extensions.ReplicaSetStatus{ Replicas: 1, @@ -121,7 +121,7 @@ func TestReplicaSetStatusStrategy(t *testing.T) { Spec: extensions.ReplicaSetSpec{ Replicas: 1, Selector: &unversioned.LabelSelector{MatchLabels: validSelector}, - Template: &validPodTemplate.Template, + Template: validPodTemplate.Template, }, Status: extensions.ReplicaSetStatus{ Replicas: 3, diff --git a/pkg/util/deployment/deployment.go b/pkg/util/deployment/deployment.go index 869936109c..6ff60c3419 100644 --- a/pkg/util/deployment/deployment.go +++ b/pkg/util/deployment/deployment.go @@ -86,7 +86,7 @@ func GetOldReplicaSetsFromLists(deployment *extensions.Deployment, c clientset.I return nil, nil, fmt.Errorf("invalid label selector: %v", err) } // Filter out replica set that has the same pod template spec as the deployment - that is the new replica set. - if api.Semantic.DeepEqual(rs.Spec.Template, &newRSTemplate) { + if api.Semantic.DeepEqual(rs.Spec.Template, newRSTemplate) { continue } allOldRSs[rs.ObjectMeta.Name] = rs @@ -131,7 +131,7 @@ func GetNewReplicaSetFromList(deployment *extensions.Deployment, c clientset.Int newRSTemplate := GetNewReplicaSetTemplate(deployment) for i := range rsList { - if api.Semantic.DeepEqual(rsList[i].Spec.Template, &newRSTemplate) { + if api.Semantic.DeepEqual(rsList[i].Spec.Template, newRSTemplate) { // This is the new ReplicaSet. return &rsList[i], nil } diff --git a/pkg/util/deployment/deployment_test.go b/pkg/util/deployment/deployment_test.go index b556dd56cb..018a7017de 100644 --- a/pkg/util/deployment/deployment_test.go +++ b/pkg/util/deployment/deployment_test.go @@ -167,7 +167,7 @@ func generateRSWithLabel(labels map[string]string, image string) extensions.Repl Spec: extensions.ReplicaSetSpec{ Replicas: 1, Selector: &unversioned.LabelSelector{MatchLabels: labels}, - Template: &api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ Spec: api.PodSpec{ Containers: []api.Container{ { @@ -192,7 +192,7 @@ func generateRS(deployment extensions.Deployment) extensions.ReplicaSet { Labels: template.Labels, }, Spec: extensions.ReplicaSetSpec{ - Template: &template, + Template: template, Selector: &unversioned.LabelSelector{MatchLabels: template.Labels}, }, } diff --git a/test/e2e/deployment.go b/test/e2e/deployment.go index f843662e46..8cc7430d86 100644 --- a/test/e2e/deployment.go +++ b/test/e2e/deployment.go @@ -80,7 +80,7 @@ func newRS(rsName string, replicas int, rsPodLabels map[string]string, imageName Spec: extensions.ReplicaSetSpec{ Replicas: replicas, Selector: &unversioned.LabelSelector{MatchLabels: rsPodLabels}, - Template: &api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: rsPodLabels, }, diff --git a/test/e2e/replica_set.go b/test/e2e/replica_set.go index f7d9e8b58c..611abade9a 100644 --- a/test/e2e/replica_set.go +++ b/test/e2e/replica_set.go @@ -65,7 +65,7 @@ func ReplicaSetServeImageOrFail(f *Framework, test string, image string) { Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{ "name": name, }}, - Template: &api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: map[string]string{"name": name}, }, diff --git a/test/e2e/util.go b/test/e2e/util.go index d2326b4f4c..0db97b6069 100644 --- a/test/e2e/util.go +++ b/test/e2e/util.go @@ -1817,7 +1817,7 @@ func (config *ReplicaSetConfig) create() error { "name": config.Name, }, }, - Template: &api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: map[string]string{"name": config.Name}, }, @@ -1835,7 +1835,7 @@ func (config *ReplicaSetConfig) create() error { }, } - config.applyTo(rs.Spec.Template) + config.applyTo(&rs.Spec.Template) _, err := config.Client.ReplicaSets(config.Namespace).Create(rs) if err != nil {