diff --git a/examples/walkthrough/podtemplate.json b/examples/walkthrough/podtemplate.json index 0fbdeb37de..5732a11358 100644 --- a/examples/walkthrough/podtemplate.json +++ b/examples/walkthrough/podtemplate.json @@ -4,7 +4,7 @@ "metadata": { "name": "nginx" }, - "spec": { + "template": { "metadata": { "labels": { "name": "nginx" diff --git a/pkg/api/types.go b/pkg/api/types.go index 6dc455f7bb..1aeb63f9f4 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -848,8 +848,8 @@ type PodTemplate struct { TypeMeta `json:",inline"` ObjectMeta `json:"metadata,omitempty"` - // Spec defines the pods that will be created from this template - Spec PodTemplateSpec `json:"spec,omitempty"` + // Template defines the pods that will be created from this pod template + Template PodTemplateSpec `json:"template,omitempty"` } // PodTemplateList is a list of PodTemplates. diff --git a/pkg/api/v1beta3/types.go b/pkg/api/v1beta3/types.go index f9ecda5758..065fe3bb37 100644 --- a/pkg/api/v1beta3/types.go +++ b/pkg/api/v1beta3/types.go @@ -854,8 +854,8 @@ type PodTemplate struct { TypeMeta `json:",inline"` ObjectMeta `json:"metadata,omitempty" description:"standard object metadata; see https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/api-conventions.md#metadata"` - // Spec defines the behavior of a pod. - Spec PodTemplateSpec `json:"spec,omitempty" description:"specification of the desired behavior of the pod; https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/api-conventions.md#spec-and-status"` + // Template defines the pods that will be created from this pod template + Template PodTemplateSpec `json:"template,omitempty" description:"the template of the desired behavior of the pod; https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/api-conventions.md#spec-and-status"` } // PodTemplateList is a list of PodTemplates. diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index 1758375ddc..d2535dc167 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -892,7 +892,7 @@ func ValidatePodStatusUpdate(newPod, oldPod *api.Pod) errs.ValidationErrorList { func ValidatePodTemplate(pod *api.PodTemplate) errs.ValidationErrorList { allErrs := errs.ValidationErrorList{} allErrs = append(allErrs, ValidateObjectMeta(&pod.ObjectMeta, true, ValidatePodName).Prefix("metadata")...) - allErrs = append(allErrs, ValidatePodTemplateSpec(&pod.Spec, 0).Prefix("spec")...) + allErrs = append(allErrs, ValidatePodTemplateSpec(&pod.Template, 0).Prefix("template")...) return allErrs } @@ -902,7 +902,7 @@ func ValidatePodTemplateUpdate(newPod, oldPod *api.PodTemplate) errs.ValidationE allErrs := errs.ValidationErrorList{} allErrs = append(allErrs, ValidateObjectMetaUpdate(&oldPod.ObjectMeta, &newPod.ObjectMeta).Prefix("metadata")...) - allErrs = append(allErrs, ValidatePodTemplateSpec(&newPod.Spec, 0).Prefix("spec")...) + allErrs = append(allErrs, ValidatePodTemplateSpec(&newPod.Template, 0).Prefix("template")...) return allErrs } diff --git a/pkg/api/validation/validation_test.go b/pkg/api/validation/validation_test.go index 3b74009567..ca10ea7b83 100644 --- a/pkg/api/validation/validation_test.go +++ b/pkg/api/validation/validation_test.go @@ -1676,7 +1676,7 @@ func TestValidateService(t *testing.T) { func TestValidateReplicationControllerUpdate(t *testing.T) { validSelector := map[string]string{"a": "b"} validPodTemplate := api.PodTemplate{ - Spec: api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: validSelector, }, @@ -1688,7 +1688,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { }, } readWriteVolumePodTemplate := api.PodTemplate{ - Spec: api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: validSelector, }, @@ -1702,7 +1702,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { } invalidSelector := map[string]string{"NoUppercaseOrSpecialCharsLike=Equals": "b"} invalidPodTemplate := api.PodTemplate{ - Spec: api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ Spec: api.PodSpec{ RestartPolicy: api.RestartPolicyAlways, DNSPolicy: api.DNSClusterFirst, @@ -1722,7 +1722,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, update: api.ReplicationController{ @@ -1730,7 +1730,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: 3, Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, }, @@ -1739,7 +1739,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, update: api.ReplicationController{ @@ -1747,7 +1747,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: 1, Selector: validSelector, - Template: &readWriteVolumePodTemplate.Spec, + Template: &readWriteVolumePodTemplate.Template, }, }, }, @@ -1765,7 +1765,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, update: api.ReplicationController{ @@ -1773,7 +1773,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: validSelector, - Template: &readWriteVolumePodTemplate.Spec, + Template: &readWriteVolumePodTemplate.Template, }, }, }, @@ -1782,7 +1782,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, update: api.ReplicationController{ @@ -1790,7 +1790,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: invalidSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, }, @@ -1799,7 +1799,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, update: api.ReplicationController{ @@ -1807,7 +1807,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: validSelector, - Template: &invalidPodTemplate.Spec, + Template: &invalidPodTemplate.Template, }, }, }, @@ -1816,7 +1816,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, update: api.ReplicationController{ @@ -1824,7 +1824,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: -1, Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, }, @@ -1840,7 +1840,7 @@ func TestValidateReplicationControllerUpdate(t *testing.T) { func TestValidateReplicationController(t *testing.T) { validSelector := map[string]string{"a": "b"} validPodTemplate := api.PodTemplate{ - Spec: api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: validSelector, }, @@ -1852,7 +1852,7 @@ func TestValidateReplicationController(t *testing.T) { }, } readWriteVolumePodTemplate := api.PodTemplate{ - Spec: api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: validSelector, }, @@ -1866,7 +1866,7 @@ func TestValidateReplicationController(t *testing.T) { } invalidSelector := map[string]string{"NoUppercaseOrSpecialCharsLike=Equals": "b"} invalidPodTemplate := api.PodTemplate{ - Spec: api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ Spec: api.PodSpec{ RestartPolicy: api.RestartPolicyAlways, DNSPolicy: api.DNSClusterFirst, @@ -1881,14 +1881,14 @@ func TestValidateReplicationController(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, { ObjectMeta: api.ObjectMeta{Name: "abc-123", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, { @@ -1896,7 +1896,7 @@ func TestValidateReplicationController(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: 1, Selector: validSelector, - Template: &readWriteVolumePodTemplate.Spec, + Template: &readWriteVolumePodTemplate.Template, }, }, } @@ -1911,27 +1911,27 @@ func TestValidateReplicationController(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, "missing-namespace": { ObjectMeta: api.ObjectMeta{Name: "abc-123"}, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, "empty selector": { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, "selector_doesnt_match": { ObjectMeta: api.ObjectMeta{Name: "abc", Namespace: api.NamespaceDefault}, Spec: api.ReplicationControllerSpec{ Selector: map[string]string{"foo": "bar"}, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, "invalid manifest": { @@ -1945,7 +1945,7 @@ func TestValidateReplicationController(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: validSelector, - Template: &readWriteVolumePodTemplate.Spec, + Template: &readWriteVolumePodTemplate.Template, }, }, "negative_replicas": { @@ -1965,7 +1965,7 @@ func TestValidateReplicationController(t *testing.T) { }, Spec: api.ReplicationControllerSpec{ Selector: validSelector, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, "invalid_label 2": { @@ -1977,7 +1977,20 @@ func TestValidateReplicationController(t *testing.T) { }, }, Spec: api.ReplicationControllerSpec{ - Template: &invalidPodTemplate.Spec, + Template: &invalidPodTemplate.Template, + }, + }, + "invalid_annotation": { + ObjectMeta: api.ObjectMeta{ + Name: "abc-123", + Namespace: api.NamespaceDefault, + Annotations: map[string]string{ + "NoUppercaseOrSpecialCharsLike=Equals": "bar", + }, + }, + Spec: api.ReplicationControllerSpec{ + Selector: validSelector, + Template: &validPodTemplate.Template, }, }, "invalid restart policy 1": { diff --git a/pkg/kubectl/resource_printer.go b/pkg/kubectl/resource_printer.go index 2b10dd93aa..d760ac8625 100644 --- a/pkg/kubectl/resource_printer.go +++ b/pkg/kubectl/resource_printer.go @@ -446,7 +446,7 @@ func printPodList(podList *api.PodList, w io.Writer) error { } func printPodTemplate(pod *api.PodTemplate, w io.Writer) error { - containers := pod.Spec.Spec.Containers + containers := pod.Template.Spec.Containers var firstContainer api.Container if len(containers) > 0 { firstContainer, containers = containers[0], containers[1:] @@ -455,7 +455,7 @@ func printPodTemplate(pod *api.PodTemplate, w io.Writer) error { pod.Name, firstContainer.Name, firstContainer.Image, - formatLabels(pod.Spec.Labels), + formatLabels(pod.Template.Labels), ) if err != nil { return err diff --git a/pkg/registry/controller/etcd/etcd_test.go b/pkg/registry/controller/etcd/etcd_test.go index f1f3b48bd3..c6c0d63029 100644 --- a/pkg/registry/controller/etcd/etcd_test.go +++ b/pkg/registry/controller/etcd/etcd_test.go @@ -60,7 +60,7 @@ func createController(storage *REST, rc api.ReplicationController, t *testing.T) } var validPodTemplate = api.PodTemplate{ - Spec: api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: map[string]string{"a": "b"}, }, @@ -79,8 +79,8 @@ var validPodTemplate = api.PodTemplate{ } var validControllerSpec = api.ReplicationControllerSpec{ - Selector: validPodTemplate.Spec.Labels, - Template: &validPodTemplate.Spec, + Selector: validPodTemplate.Template.Labels, + Template: &validPodTemplate.Template, } var validController = api.ReplicationController{ @@ -161,7 +161,7 @@ func TestCreateControllerWithGeneratedName(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: map[string]string{"a": "b"}, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, } @@ -663,7 +663,7 @@ func TestCreate(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: map[string]string{"a": "b"}, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, // invalid @@ -671,7 +671,7 @@ func TestCreate(t *testing.T) { Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: map[string]string{}, - Template: &validPodTemplate.Spec, + Template: &validPodTemplate.Template, }, }, ) diff --git a/pkg/registry/podtemplate/etcd/etcd_test.go b/pkg/registry/podtemplate/etcd/etcd_test.go index b3b01c8b71..9400032331 100644 --- a/pkg/registry/podtemplate/etcd/etcd_test.go +++ b/pkg/registry/podtemplate/etcd/etcd_test.go @@ -38,7 +38,7 @@ func validNewPodTemplate(name string) *api.PodTemplate { Name: name, Namespace: api.NamespaceDefault, }, - Spec: api.PodTemplateSpec{ + Template: api.PodTemplateSpec{ ObjectMeta: api.ObjectMeta{ Labels: map[string]string{"test": "foo"}, }, @@ -70,7 +70,7 @@ func TestCreate(t *testing.T) { pod, // invalid &api.PodTemplate{ - Spec: api.PodTemplateSpec{}, + Template: api.PodTemplateSpec{}, }, ) }