Commit 34e9c82c authored by Dawn Chen's avatar Dawn Chen

Convert RestartPolicy to string for v1beta3.

Fixed #3607 and spiritually support #5475
parent efcde725
...@@ -625,7 +625,7 @@ func runServiceTest(client *client.Client) { ...@@ -625,7 +625,7 @@ func runServiceTest(client *client.Client) {
ImagePullPolicy: "PullIfNotPresent", ImagePullPolicy: "PullIfNotPresent",
}, },
}, },
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
Status: api.PodStatus{ Status: api.PodStatus{
......
...@@ -162,7 +162,7 @@ func TestEncode_Ptr(t *testing.T) { ...@@ -162,7 +162,7 @@ func TestEncode_Ptr(t *testing.T) {
Labels: map[string]string{"name": "foo"}, Labels: map[string]string{"name": "foo"},
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
} }
......
...@@ -161,8 +161,8 @@ func FuzzerFor(t *testing.T, version string, src rand.Source) *fuzz.Fuzzer { ...@@ -161,8 +161,8 @@ func FuzzerFor(t *testing.T, version string, src rand.Source) *fuzz.Fuzzer {
*p = policies[c.Rand.Intn(len(policies))] *p = policies[c.Rand.Intn(len(policies))]
}, },
func(rp *api.RestartPolicy, c fuzz.Continue) { func(rp *api.RestartPolicy, c fuzz.Continue) {
// Exactly one of the fields should be set. policies := []api.RestartPolicy{api.RestartPolicyAlways, api.RestartPolicyNever, api.RestartPolicyOnFailure}
fuzzOneOf(c, &rp.Always, &rp.OnFailure, &rp.Never) *rp = policies[c.Rand.Intn(len(policies))]
}, },
func(vs *api.VolumeSource, c fuzz.Continue) { func(vs *api.VolumeSource, c fuzz.Continue) {
// Exactly one of the fields should be set. // Exactly one of the fields should be set.
......
...@@ -515,23 +515,17 @@ type PodContainerInfo struct { ...@@ -515,23 +515,17 @@ type PodContainerInfo struct {
ContainerInfo PodInfo `json:"containerInfo"` ContainerInfo PodInfo `json:"containerInfo"`
} }
type RestartPolicyAlways struct{}
// TODO(dchen1107): Define what kinds of failures should restart.
// TODO(dchen1107): Decide whether to support policy knobs, and, if so, which ones.
type RestartPolicyOnFailure struct{}
type RestartPolicyNever struct{}
// RestartPolicy describes how the container should be restarted. // RestartPolicy describes how the container should be restarted.
// Only one of the following restart policies may be specified. // Only one of the following restart policies may be specified.
// If none of the following policies is specified, the default one // If none of the following policies is specified, the default one
// is RestartPolicyAlways. // is RestartPolicyAlways.
type RestartPolicy struct { type RestartPolicy string
Always *RestartPolicyAlways `json:"always,omitempty"`
OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty"` const (
Never *RestartPolicyNever `json:"never,omitempty"` RestartPolicyAlways RestartPolicy = "Always"
} RestartPolicyOnFailure RestartPolicy = "OnFailure"
RestartPolicyNever RestartPolicy = "Never"
)
// PodList is a list of Pods. // PodList is a list of Pods.
type PodList struct { type PodList struct {
......
...@@ -1139,6 +1139,33 @@ func init() { ...@@ -1139,6 +1139,33 @@ func init() {
return nil return nil
}, },
func(in *newer.RestartPolicy, out *RestartPolicy, s conversion.Scope) error {
switch *in {
case newer.RestartPolicyAlways:
*out = RestartPolicy{Always: &RestartPolicyAlways{}}
case newer.RestartPolicyNever:
*out = RestartPolicy{Never: &RestartPolicyNever{}}
case newer.RestartPolicyOnFailure:
*out = RestartPolicy{OnFailure: &RestartPolicyOnFailure{}}
default:
*out = RestartPolicy{}
}
return nil
},
func(in *RestartPolicy, out *newer.RestartPolicy, s conversion.Scope) error {
switch {
case in.Always != nil:
*out = newer.RestartPolicyAlways
case in.Never != nil:
*out = newer.RestartPolicyNever
case in.OnFailure != nil:
*out = newer.RestartPolicyOnFailure
default:
*out = ""
}
return nil
},
func(in *newer.Probe, out *LivenessProbe, s conversion.Scope) error { func(in *newer.Probe, out *LivenessProbe, s conversion.Scope) error {
if err := s.Convert(&in.Exec, &out.Exec, 0); err != nil { if err := s.Convert(&in.Exec, &out.Exec, 0); err != nil {
return err return err
......
...@@ -1055,6 +1055,33 @@ func init() { ...@@ -1055,6 +1055,33 @@ func init() {
return nil return nil
}, },
func(in *newer.RestartPolicy, out *RestartPolicy, s conversion.Scope) error {
switch *in {
case newer.RestartPolicyAlways:
*out = RestartPolicy{Always: &RestartPolicyAlways{}}
case newer.RestartPolicyNever:
*out = RestartPolicy{Never: &RestartPolicyNever{}}
case newer.RestartPolicyOnFailure:
*out = RestartPolicy{OnFailure: &RestartPolicyOnFailure{}}
default:
*out = RestartPolicy{}
}
return nil
},
func(in *RestartPolicy, out *newer.RestartPolicy, s conversion.Scope) error {
switch {
case in.Always != nil:
*out = newer.RestartPolicyAlways
case in.Never != nil:
*out = newer.RestartPolicyNever
case in.OnFailure != nil:
*out = newer.RestartPolicyOnFailure
default:
*out = ""
}
return nil
},
func(in *newer.Probe, out *LivenessProbe, s conversion.Scope) error { func(in *newer.Probe, out *LivenessProbe, s conversion.Scope) error {
if err := s.Convert(&in.Exec, &out.Exec, 0); err != nil { if err := s.Convert(&in.Exec, &out.Exec, 0); err != nil {
return err return err
......
...@@ -52,11 +52,6 @@ func init() { ...@@ -52,11 +52,6 @@ func init() {
obj.TerminationMessagePath = TerminationMessagePathDefault obj.TerminationMessagePath = TerminationMessagePathDefault
} }
}, },
func(obj *RestartPolicy) {
if util.AllPtrFieldsNil(obj) {
obj.Always = &RestartPolicyAlways{}
}
},
func(obj *Service) { func(obj *Service) {
if obj.Spec.Protocol == "" { if obj.Spec.Protocol == "" {
obj.Spec.Protocol = ProtocolTCP obj.Spec.Protocol = ProtocolTCP
...@@ -69,6 +64,9 @@ func init() { ...@@ -69,6 +64,9 @@ func init() {
if obj.DNSPolicy == "" { if obj.DNSPolicy == "" {
obj.DNSPolicy = DNSClusterFirst obj.DNSPolicy = DNSClusterFirst
} }
if obj.RestartPolicy == "" {
obj.RestartPolicy = RestartPolicyAlways
}
}, },
func(obj *Probe) { func(obj *Probe) {
if obj.TimeoutSeconds == 0 { if obj.TimeoutSeconds == 0 {
......
...@@ -62,7 +62,7 @@ func TestSetDefaulPodSpec(t *testing.T) { ...@@ -62,7 +62,7 @@ func TestSetDefaulPodSpec(t *testing.T) {
t.Errorf("Expected default dns policy :%s, got: %s", current.DNSClusterFirst, bp2.Spec.DNSPolicy) t.Errorf("Expected default dns policy :%s, got: %s", current.DNSClusterFirst, bp2.Spec.DNSPolicy)
} }
policy := bp2.Spec.RestartPolicy policy := bp2.Spec.RestartPolicy
if policy.Never != nil || policy.OnFailure != nil || policy.Always == nil { if policy != current.RestartPolicyAlways {
t.Errorf("Expected only policy.Always is set, got: %s", policy) t.Errorf("Expected only policy.Always is set, got: %s", policy)
} }
vsource := bp2.Spec.Volumes[0].VolumeSource vsource := bp2.Spec.Volumes[0].VolumeSource
......
...@@ -522,22 +522,17 @@ type PodCondition struct { ...@@ -522,22 +522,17 @@ type PodCondition struct {
// PodInfo contains one entry for every container with available info. // PodInfo contains one entry for every container with available info.
type PodInfo map[string]ContainerStatus type PodInfo map[string]ContainerStatus
type RestartPolicyAlways struct{} // RestartPolicy describes how the container should be restarted.
// Only one of the following restart policies may be specified.
// If none of the following policies is specified, the default one
// is RestartPolicyAlways.
type RestartPolicy string
// TODO(dchen1107): Define what kinds of failures should restart. const (
// TODO(dchen1107): Decide whether to support policy knobs, and, if so, which ones. RestartPolicyAlways RestartPolicy = "Always"
type RestartPolicyOnFailure struct{} RestartPolicyOnFailure RestartPolicy = "OnFailure"
RestartPolicyNever RestartPolicy = "Never"
type RestartPolicyNever struct{} )
type RestartPolicy struct {
// Only one of the following restart policies may be specified.
// If none of the following policies is specified, the default one
// is RestartPolicyAlways.
Always *RestartPolicyAlways `json:"always,omitempty" description:"always restart the container after termination"`
OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" description:"restart the container if it fails for any reason, but not if it succeeds (exit 0)"`
Never *RestartPolicyNever `json:"never,omitempty" description:"never restart the container"`
}
// DNSPolicy defines how a pod's DNS will be configured. // DNSPolicy defines how a pod's DNS will be configured.
type DNSPolicy string type DNSPolicy string
......
...@@ -600,20 +600,16 @@ func ValidateManifest(manifest *api.ContainerManifest) errs.ValidationErrorList ...@@ -600,20 +600,16 @@ func ValidateManifest(manifest *api.ContainerManifest) errs.ValidationErrorList
} }
func validateRestartPolicy(restartPolicy *api.RestartPolicy) errs.ValidationErrorList { func validateRestartPolicy(restartPolicy *api.RestartPolicy) errs.ValidationErrorList {
numPolicies := 0
allErrors := errs.ValidationErrorList{} allErrors := errs.ValidationErrorList{}
if restartPolicy.Always != nil { switch *restartPolicy {
numPolicies++ case api.RestartPolicyAlways, api.RestartPolicyOnFailure, api.RestartPolicyNever:
} break
if restartPolicy.OnFailure != nil { case "":
numPolicies++ allErrors = append(allErrors, errs.NewFieldRequired("", *restartPolicy))
} default:
if restartPolicy.Never != nil { allErrors = append(allErrors, errs.NewFieldNotSupported("", restartPolicy))
numPolicies++
}
if numPolicies != 1 {
allErrors = append(allErrors, errs.NewFieldInvalid("", restartPolicy, "only 1 policy is allowed"))
} }
return allErrors return allErrors
} }
...@@ -786,10 +782,8 @@ func ValidateReplicationControllerSpec(spec *api.ReplicationControllerSpec) errs ...@@ -786,10 +782,8 @@ func ValidateReplicationControllerSpec(spec *api.ReplicationControllerSpec) errs
} }
allErrs = append(allErrs, ValidatePodTemplateSpec(spec.Template, spec.Replicas).Prefix("template")...) allErrs = append(allErrs, ValidatePodTemplateSpec(spec.Template, spec.Replicas).Prefix("template")...)
// RestartPolicy has already been first-order validated as per ValidatePodTemplateSpec(). // RestartPolicy has already been first-order validated as per ValidatePodTemplateSpec().
if spec.Template.Spec.RestartPolicy.Always == nil { if spec.Template.Spec.RestartPolicy != api.RestartPolicyAlways {
// TODO: should probably be Unsupported allErrs = append(allErrs, errs.NewFieldNotSupported("template.restartPolicy", spec.Template.Spec.RestartPolicy))
// TODO: api.RestartPolicy should have a String() method for nicer printing
allErrs = append(allErrs, errs.NewFieldInvalid("template.restartPolicy", spec.Template.Spec.RestartPolicy, "must be Always"))
} }
} }
return allErrs return allErrs
......
...@@ -85,9 +85,7 @@ func newReplicationController(replicas int) api.ReplicationController { ...@@ -85,9 +85,7 @@ func newReplicationController(replicas int) api.ReplicationController {
ImagePullPolicy: api.PullIfNotPresent, ImagePullPolicy: api.PullIfNotPresent,
}, },
}, },
RestartPolicy: api.RestartPolicy{ RestartPolicy: api.RestartPolicyAlways,
Always: &api.RestartPolicyAlways{},
},
DNSPolicy: api.DNSDefault, DNSPolicy: api.DNSDefault,
NodeSelector: map[string]string{ NodeSelector: map[string]string{
"baz": "blah", "baz": "blah",
......
...@@ -43,14 +43,14 @@ func testData() (*api.PodList, *api.ServiceList, *api.ReplicationControllerList) ...@@ -43,14 +43,14 @@ func testData() (*api.PodList, *api.ServiceList, *api.ReplicationControllerList)
{ {
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "test", ResourceVersion: "10"}, ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "test", ResourceVersion: "10"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
{ {
ObjectMeta: api.ObjectMeta{Name: "bar", Namespace: "test", ResourceVersion: "11"}, ObjectMeta: api.ObjectMeta{Name: "bar", Namespace: "test", ResourceVersion: "11"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -322,7 +322,7 @@ func watchTestData() ([]api.Pod, []watch.Event) { ...@@ -322,7 +322,7 @@ func watchTestData() ([]api.Pod, []watch.Event) {
ResourceVersion: "10", ResourceVersion: "10",
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -337,7 +337,7 @@ func watchTestData() ([]api.Pod, []watch.Event) { ...@@ -337,7 +337,7 @@ func watchTestData() ([]api.Pod, []watch.Event) {
ResourceVersion: "11", ResourceVersion: "11",
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -351,7 +351,7 @@ func watchTestData() ([]api.Pod, []watch.Event) { ...@@ -351,7 +351,7 @@ func watchTestData() ([]api.Pod, []watch.Event) {
ResourceVersion: "12", ResourceVersion: "12",
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
......
...@@ -49,9 +49,7 @@ func TestMerge(t *testing.T) { ...@@ -49,9 +49,7 @@ func TestMerge(t *testing.T) {
Name: "foo", Name: "foo",
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{ RestartPolicy: api.RestartPolicyAlways,
Always: &api.RestartPolicyAlways{},
},
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -70,9 +68,7 @@ func TestMerge(t *testing.T) { ...@@ -70,9 +68,7 @@ func TestMerge(t *testing.T) {
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
Host: "bar", Host: "bar",
RestartPolicy: api.RestartPolicy{ RestartPolicy: api.RestartPolicyAlways,
Always: &api.RestartPolicyAlways{},
},
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -100,9 +96,7 @@ func TestMerge(t *testing.T) { ...@@ -100,9 +96,7 @@ func TestMerge(t *testing.T) {
VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}}, VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{}},
}, },
}, },
RestartPolicy: api.RestartPolicy{ RestartPolicy: api.RestartPolicyAlways,
Always: &api.RestartPolicyAlways{},
},
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -127,9 +121,7 @@ func TestMerge(t *testing.T) { ...@@ -127,9 +121,7 @@ func TestMerge(t *testing.T) {
Name: "", Name: "",
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{ RestartPolicy: api.RestartPolicyAlways,
Always: &api.RestartPolicyAlways{},
},
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
......
...@@ -89,14 +89,14 @@ func testData() (*api.PodList, *api.ServiceList) { ...@@ -89,14 +89,14 @@ func testData() (*api.PodList, *api.ServiceList) {
{ {
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "test", ResourceVersion: "10"}, ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "test", ResourceVersion: "10"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
{ {
ObjectMeta: api.ObjectMeta{Name: "bar", Namespace: "test", ResourceVersion: "11"}, ObjectMeta: api.ObjectMeta{Name: "bar", Namespace: "test", ResourceVersion: "11"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
......
...@@ -172,7 +172,7 @@ func TestHelperCreate(t *testing.T) { ...@@ -172,7 +172,7 @@ func TestHelperCreate(t *testing.T) {
ExpectObject: &api.Pod{ ExpectObject: &api.Pod{
ObjectMeta: api.ObjectMeta{Name: "foo"}, ObjectMeta: api.ObjectMeta{Name: "foo"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -418,7 +418,7 @@ func TestHelperUpdate(t *testing.T) { ...@@ -418,7 +418,7 @@ func TestHelperUpdate(t *testing.T) {
ExpectObject: &api.Pod{ ExpectObject: &api.Pod{
ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "10"}, ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "10"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
......
...@@ -60,7 +60,7 @@ func CreateValidPod(name, namespace, source string) api.BoundPod { ...@@ -60,7 +60,7 @@ func CreateValidPod(name, namespace, source string) api.BoundPod {
Annotations: map[string]string{kubelet.ConfigSourceAnnotationKey: source}, Annotations: map[string]string{kubelet.ConfigSourceAnnotationKey: source},
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
} }
......
...@@ -140,7 +140,7 @@ func TestExtractFromHTTP(t *testing.T) { ...@@ -140,7 +140,7 @@ func TestExtractFromHTTP(t *testing.T) {
SelfLink: "/api/v1beta1/boundPods/foo", SelfLink: "/api/v1beta1/boundPods/foo",
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
Containers: []api.Container{{ Containers: []api.Container{{
Name: "1", Name: "1",
...@@ -162,7 +162,7 @@ func TestExtractFromHTTP(t *testing.T) { ...@@ -162,7 +162,7 @@ func TestExtractFromHTTP(t *testing.T) {
Namespace: "foobar", Namespace: "foobar",
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}), }),
...@@ -181,7 +181,7 @@ func TestExtractFromHTTP(t *testing.T) { ...@@ -181,7 +181,7 @@ func TestExtractFromHTTP(t *testing.T) {
SelfLink: "/api/v1beta1/boundPods/foo", SelfLink: "/api/v1beta1/boundPods/foo",
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
Containers: []api.Container{{ Containers: []api.Container{{
Name: "1", Name: "1",
...@@ -209,7 +209,7 @@ func TestExtractFromHTTP(t *testing.T) { ...@@ -209,7 +209,7 @@ func TestExtractFromHTTP(t *testing.T) {
SelfLink: "/api/v1beta1/boundPods/foo", SelfLink: "/api/v1beta1/boundPods/foo",
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
Containers: []api.Container{{ Containers: []api.Container{{
Name: "1", Name: "1",
...@@ -226,7 +226,7 @@ func TestExtractFromHTTP(t *testing.T) { ...@@ -226,7 +226,7 @@ func TestExtractFromHTTP(t *testing.T) {
SelfLink: "/api/v1beta1/boundPods/bar", SelfLink: "/api/v1beta1/boundPods/bar",
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
Containers: []api.Container{{ Containers: []api.Container{{
Name: "1", Name: "1",
......
...@@ -1120,12 +1120,12 @@ func (kl *Kubelet) shouldContainerBeRestarted(container *api.Container, pod *api ...@@ -1120,12 +1120,12 @@ func (kl *Kubelet) shouldContainerBeRestarted(container *api.Container, pod *api
} }
if len(recentContainers) > 0 { if len(recentContainers) > 0 {
if pod.Spec.RestartPolicy.Never != nil { if pod.Spec.RestartPolicy == api.RestartPolicyNever {
glog.Infof("Already ran container %q of pod %q, do nothing", container.Name, podFullName) glog.Infof("Already ran container %q of pod %q, do nothing", container.Name, podFullName)
return false return false
} }
if pod.Spec.RestartPolicy.OnFailure != nil { if pod.Spec.RestartPolicy == api.RestartPolicyOnFailure {
// Check the exit code of last run // Check the exit code of last run
if recentContainers[0].State.ExitCode == 0 { if recentContainers[0].State.ExitCode == 0 {
glog.Infof("Already successfully ran container %q of pod %q, do nothing", container.Name, podFullName) glog.Infof("Already successfully ran container %q of pod %q, do nothing", container.Name, podFullName)
...@@ -1257,7 +1257,7 @@ func (kl *Kubelet) computePodContainerChanges(pod *api.BoundPod, containersInPod ...@@ -1257,7 +1257,7 @@ func (kl *Kubelet) computePodContainerChanges(pod *api.BoundPod, containersInPod
delete(containersToKeep, podInfraContainerID) delete(containersToKeep, podInfraContainerID)
// If we are to restart Infra Container then we move containersToKeep into containersToStart // If we are to restart Infra Container then we move containersToKeep into containersToStart
// if RestartPolicy allows restarting failed containers. // if RestartPolicy allows restarting failed containers.
if pod.Spec.RestartPolicy.Never == nil { if pod.Spec.RestartPolicy != api.RestartPolicyNever {
for _, v := range containersToKeep { for _, v := range containersToKeep {
containersToStart[v] = empty{} containersToStart[v] = empty{}
} }
...@@ -1269,7 +1269,7 @@ func (kl *Kubelet) computePodContainerChanges(pod *api.BoundPod, containersInPod ...@@ -1269,7 +1269,7 @@ func (kl *Kubelet) computePodContainerChanges(pod *api.BoundPod, containersInPod
// If we're creating infra containere everything will be killed anyway // If we're creating infra containere everything will be killed anyway
// If RestartPolicy is Always or OnFailure we restart containers that were running before we // If RestartPolicy is Always or OnFailure we restart containers that were running before we
// killed them when restarting Infra Container. // killed them when restarting Infra Container.
if pod.Spec.RestartPolicy.Never == nil { if pod.Spec.RestartPolicy != api.RestartPolicyNever {
glog.V(1).Infof("Infra Container is being recreated. %q will be restarted.", container.Name) glog.V(1).Infof("Infra Container is being recreated. %q will be restarted.", container.Name)
containersToStart[index] = empty{} containersToStart[index] = empty{}
} }
...@@ -1854,7 +1854,7 @@ func getPhase(spec *api.PodSpec, info api.PodInfo) api.PodPhase { ...@@ -1854,7 +1854,7 @@ func getPhase(spec *api.PodSpec, info api.PodInfo) api.PodPhase {
return api.PodRunning return api.PodRunning
case running == 0 && stopped > 0 && unknown == 0: case running == 0 && stopped > 0 && unknown == 0:
// All containers are terminated // All containers are terminated
if spec.RestartPolicy.Always != nil { if spec.RestartPolicy == api.RestartPolicyAlways {
// All containers are in the process of restarting // All containers are in the process of restarting
return api.PodRunning return api.PodRunning
} }
...@@ -1863,7 +1863,7 @@ func getPhase(spec *api.PodSpec, info api.PodInfo) api.PodPhase { ...@@ -1863,7 +1863,7 @@ func getPhase(spec *api.PodSpec, info api.PodInfo) api.PodPhase {
// containers are terminated in success // containers are terminated in success
return api.PodSucceeded return api.PodSucceeded
} }
if spec.RestartPolicy.Never != nil { if spec.RestartPolicy == api.RestartPolicyNever {
// RestartPolicy is Never, and all containers are // RestartPolicy is Never, and all containers are
// terminated with at least one in failure // terminated with at least one in failure
return api.PodFailed return api.PodFailed
......
...@@ -2328,7 +2328,7 @@ func TestPodPhaseWithRestartAlways(t *testing.T) { ...@@ -2328,7 +2328,7 @@ func TestPodPhaseWithRestartAlways(t *testing.T) {
{Name: "containerA"}, {Name: "containerA"},
{Name: "containerB"}, {Name: "containerB"},
}, },
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
} }
currentState := api.PodStatus{ currentState := api.PodStatus{
Host: "machine", Host: "machine",
...@@ -2419,7 +2419,7 @@ func TestPodPhaseWithRestartNever(t *testing.T) { ...@@ -2419,7 +2419,7 @@ func TestPodPhaseWithRestartNever(t *testing.T) {
{Name: "containerA"}, {Name: "containerA"},
{Name: "containerB"}, {Name: "containerB"},
}, },
RestartPolicy: api.RestartPolicy{Never: &api.RestartPolicyNever{}}, RestartPolicy: api.RestartPolicyNever,
} }
currentState := api.PodStatus{ currentState := api.PodStatus{
Host: "machine", Host: "machine",
...@@ -2533,7 +2533,7 @@ func TestPodPhaseWithRestartOnFailure(t *testing.T) { ...@@ -2533,7 +2533,7 @@ func TestPodPhaseWithRestartOnFailure(t *testing.T) {
{Name: "containerA"}, {Name: "containerA"},
{Name: "containerB"}, {Name: "containerB"},
}, },
RestartPolicy: api.RestartPolicy{OnFailure: &api.RestartPolicyOnFailure{}}, RestartPolicy: api.RestartPolicyOnFailure,
} }
currentState := api.PodStatus{ currentState := api.PodStatus{
Host: "machine", Host: "machine",
......
...@@ -391,7 +391,7 @@ func TestPodPhaseWithBadNode(t *testing.T) { ...@@ -391,7 +391,7 @@ func TestPodPhaseWithBadNode(t *testing.T) {
{Name: "containerA"}, {Name: "containerA"},
{Name: "containerB"}, {Name: "containerB"},
}, },
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
} }
runningState := api.ContainerStatus{ runningState := api.ContainerStatus{
State: api.ContainerState{ State: api.ContainerState{
......
...@@ -130,7 +130,7 @@ func TestControllerDecode(t *testing.T) { ...@@ -130,7 +130,7 @@ func TestControllerDecode(t *testing.T) {
}, },
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -237,7 +237,7 @@ var validPodTemplate = api.PodTemplate{ ...@@ -237,7 +237,7 @@ var validPodTemplate = api.PodTemplate{
ImagePullPolicy: api.PullIfNotPresent, ImagePullPolicy: api.PullIfNotPresent,
}, },
}, },
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -509,7 +509,7 @@ func TestBeforeCreate(t *testing.T) { ...@@ -509,7 +509,7 @@ func TestBeforeCreate(t *testing.T) {
ImagePullPolicy: api.PullAlways, ImagePullPolicy: api.PullAlways,
}, },
}, },
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSDefault, DNSPolicy: api.DNSDefault,
}, },
}, },
......
...@@ -81,7 +81,7 @@ func validNewPod() *api.Pod { ...@@ -81,7 +81,7 @@ func validNewPod() *api.Pod {
Namespace: api.NamespaceDefault, Namespace: api.NamespaceDefault,
}, },
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
Containers: []api.Container{ Containers: []api.Container{
{ {
...@@ -1116,7 +1116,7 @@ func TestEtcdUpdateScheduled(t *testing.T) { ...@@ -1116,7 +1116,7 @@ func TestEtcdUpdateScheduled(t *testing.T) {
TerminationMessagePath: api.TerminationMessagePathDefault, TerminationMessagePath: api.TerminationMessagePathDefault,
}, },
}, },
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
Status: api.PodStatus{ Status: api.PodStatus{
...@@ -1191,7 +1191,7 @@ func TestEtcdUpdateStatus(t *testing.T) { ...@@ -1191,7 +1191,7 @@ func TestEtcdUpdateStatus(t *testing.T) {
expected := podStart expected := podStart
expected.ResourceVersion = "2" expected.ResourceVersion = "2"
expected.Spec.RestartPolicy.Always = &api.RestartPolicyAlways{} expected.Spec.RestartPolicy = api.RestartPolicyAlways
expected.Spec.DNSPolicy = api.DNSClusterFirst expected.Spec.DNSPolicy = api.DNSClusterFirst
expected.Spec.Containers[0].ImagePullPolicy = api.PullIfNotPresent expected.Spec.Containers[0].ImagePullPolicy = api.PullIfNotPresent
expected.Spec.Containers[0].TerminationMessagePath = api.TerminationMessagePathDefault expected.Spec.Containers[0].TerminationMessagePath = api.TerminationMessagePathDefault
......
...@@ -85,13 +85,13 @@ func FilterQuotaPods(pods []api.Pod) []api.Pod { ...@@ -85,13 +85,13 @@ func FilterQuotaPods(pods []api.Pod) []api.Pod {
var result []api.Pod var result []api.Pod
for _, value := range pods { for _, value := range pods {
// a pod that has a restart policy always no matter its state counts against usage // a pod that has a restart policy always no matter its state counts against usage
if value.Spec.RestartPolicy.Always != nil { if value.Spec.RestartPolicy == api.RestartPolicyAlways {
result = append(result, value) result = append(result, value)
continue continue
} }
// a failed pod with a restart policy of on failure will count against usage // a failed pod with a restart policy of on failure will count against usage
if api.PodFailed == value.Status.Phase && if api.PodFailed == value.Status.Phase &&
value.Spec.RestartPolicy.OnFailure != nil { value.Spec.RestartPolicy == api.RestartPolicyOnFailure {
result = append(result, value) result = append(result, value)
continue continue
} }
......
...@@ -63,27 +63,21 @@ func TestFilterQuotaPods(t *testing.T) { ...@@ -63,27 +63,21 @@ func TestFilterQuotaPods(t *testing.T) {
{ {
ObjectMeta: api.ObjectMeta{Name: "pod-failed-with-restart-always"}, ObjectMeta: api.ObjectMeta{Name: "pod-failed-with-restart-always"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{ RestartPolicy: api.RestartPolicyAlways,
Always: &api.RestartPolicyAlways{},
},
}, },
Status: api.PodStatus{Phase: api.PodFailed}, Status: api.PodStatus{Phase: api.PodFailed},
}, },
{ {
ObjectMeta: api.ObjectMeta{Name: "pod-failed-with-restart-on-failure"}, ObjectMeta: api.ObjectMeta{Name: "pod-failed-with-restart-on-failure"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{ RestartPolicy: api.RestartPolicyOnFailure,
OnFailure: &api.RestartPolicyOnFailure{},
},
}, },
Status: api.PodStatus{Phase: api.PodFailed}, Status: api.PodStatus{Phase: api.PodFailed},
}, },
{ {
ObjectMeta: api.ObjectMeta{Name: "pod-failed-with-restart-never"}, ObjectMeta: api.ObjectMeta{Name: "pod-failed-with-restart-never"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{ RestartPolicy: api.RestartPolicyNever,
Never: &api.RestartPolicyNever{},
},
}, },
Status: api.PodStatus{Phase: api.PodFailed}, Status: api.PodStatus{Phase: api.PodFailed},
}, },
......
...@@ -107,21 +107,21 @@ func TestExtractToList(t *testing.T) { ...@@ -107,21 +107,21 @@ func TestExtractToList(t *testing.T) {
{ {
ObjectMeta: api.ObjectMeta{Name: "bar", ResourceVersion: "2"}, ObjectMeta: api.ObjectMeta{Name: "bar", ResourceVersion: "2"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
{ {
ObjectMeta: api.ObjectMeta{Name: "baz", ResourceVersion: "3"}, ObjectMeta: api.ObjectMeta{Name: "baz", ResourceVersion: "3"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
{ {
ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"}, ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -190,21 +190,21 @@ func TestExtractToListAcrossDirectories(t *testing.T) { ...@@ -190,21 +190,21 @@ func TestExtractToListAcrossDirectories(t *testing.T) {
{ {
ObjectMeta: api.ObjectMeta{Name: "baz", ResourceVersion: "1"}, ObjectMeta: api.ObjectMeta{Name: "baz", ResourceVersion: "1"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
{ {
ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"}, ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
{ {
ObjectMeta: api.ObjectMeta{Name: "bar", ResourceVersion: "2"}, ObjectMeta: api.ObjectMeta{Name: "bar", ResourceVersion: "2"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -260,21 +260,21 @@ func TestExtractToListExcludesDirectories(t *testing.T) { ...@@ -260,21 +260,21 @@ func TestExtractToListExcludesDirectories(t *testing.T) {
{ {
ObjectMeta: api.ObjectMeta{Name: "bar", ResourceVersion: "2"}, ObjectMeta: api.ObjectMeta{Name: "bar", ResourceVersion: "2"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
{ {
ObjectMeta: api.ObjectMeta{Name: "baz", ResourceVersion: "3"}, ObjectMeta: api.ObjectMeta{Name: "baz", ResourceVersion: "3"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
{ {
ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"}, ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
}, },
...@@ -297,7 +297,7 @@ func TestExtractObj(t *testing.T) { ...@@ -297,7 +297,7 @@ func TestExtractObj(t *testing.T) {
expect := api.Pod{ expect := api.Pod{
ObjectMeta: api.ObjectMeta{Name: "foo"}, ObjectMeta: api.ObjectMeta{Name: "foo"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
} }
......
...@@ -352,7 +352,7 @@ func TestDefaultErrorFunc(t *testing.T) { ...@@ -352,7 +352,7 @@ func TestDefaultErrorFunc(t *testing.T) {
testPod := &api.Pod{ testPod := &api.Pod{
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "bar"}, ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "bar"},
Spec: api.PodSpec{ Spec: api.PodSpec{
RestartPolicy: api.RestartPolicy{Always: &api.RestartPolicyAlways{}}, RestartPolicy: api.RestartPolicyAlways,
DNSPolicy: api.DNSClusterFirst, DNSPolicy: api.DNSClusterFirst,
}, },
} }
......
...@@ -336,9 +336,7 @@ var _ = Describe("Pods", func() { ...@@ -336,9 +336,7 @@ var _ = Describe("Pods", func() {
Command: []string{"sh", "-c", "env; sleep 600"}, Command: []string{"sh", "-c", "env; sleep 600"},
}, },
}, },
RestartPolicy: api.RestartPolicy{ RestartPolicy: api.RestartPolicyNever,
Never: &api.RestartPolicyNever{},
},
}, },
} }
defer c.Pods(api.NamespaceDefault).Delete(clientPod.Name) defer c.Pods(api.NamespaceDefault).Delete(clientPod.Name)
......
...@@ -104,9 +104,7 @@ var _ = Describe("Secrets", func() { ...@@ -104,9 +104,7 @@ var _ = Describe("Secrets", func() {
}, },
}, },
}, },
RestartPolicy: api.RestartPolicy{ RestartPolicy: api.RestartPolicyNever,
Never: &api.RestartPolicyNever{},
},
}, },
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment