Merge pull request #8552 from thockin/rc-default-1

Change v1 API to default RC replicas to 1
pull/6/head
Dawn Chen 2015-05-22 11:10:01 -07:00
commit 434a9ff57b
5 changed files with 146 additions and 67 deletions

View File

@ -25,9 +25,12 @@ import (
) )
func addConversionFuncs() { func addConversionFuncs() {
// Add non-generated conversion functions
err := api.Scheme.AddConversionFuncs( err := api.Scheme.AddConversionFuncs(
convert_api_StatusDetails_To_v1_StatusDetails, convert_api_StatusDetails_To_v1_StatusDetails,
convert_v1_StatusDetails_To_api_StatusDetails, convert_v1_StatusDetails_To_api_StatusDetails,
convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec,
convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec,
) )
if err != nil { if err != nil {
// If one of the conversion functions is malformed, detect it immediately. // If one of the conversion functions is malformed, detect it immediately.
@ -175,3 +178,68 @@ func convert_api_StatusCause_To_v1_StatusCause(in *api.StatusCause, out *StatusC
out.Field = in.Field out.Field = in.Field
return nil return nil
} }
func convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *api.ReplicationControllerSpec, out *ReplicationControllerSpec, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.ReplicationControllerSpec))(in)
}
out.Replicas = new(int)
*out.Replicas = in.Replicas
if in.Selector != nil {
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
if in.TemplateRef != nil {
out.TemplateRef = new(ObjectReference)
if err := convert_api_ObjectReference_To_v1_ObjectReference(in.TemplateRef, out.TemplateRef, s); err != nil {
return err
}
} else {
out.TemplateRef = nil
}
if in.Template != nil {
out.Template = new(PodTemplateSpec)
if err := convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in.Template, out.Template, s); err != nil {
return err
}
} else {
out.Template = nil
}
return nil
}
func convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *ReplicationControllerSpec, out *api.ReplicationControllerSpec, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ReplicationControllerSpec))(in)
}
out.Replicas = *in.Replicas
if in.Selector != nil {
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
if in.TemplateRef != nil {
out.TemplateRef = new(api.ObjectReference)
if err := convert_v1_ObjectReference_To_api_ObjectReference(in.TemplateRef, out.TemplateRef, s); err != nil {
return err
}
} else {
out.TemplateRef = nil
}
if in.Template != nil {
out.Template = new(api.PodTemplateSpec)
if err := convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in.Template, out.Template, s); err != nil {
return err
}
} else {
out.Template = nil
}
return nil
}

View File

@ -1700,38 +1700,6 @@ func convert_api_ReplicationControllerList_To_v1_ReplicationControllerList(in *a
return nil return nil
} }
func convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *api.ReplicationControllerSpec, out *ReplicationControllerSpec, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.ReplicationControllerSpec))(in)
}
out.Replicas = in.Replicas
if in.Selector != nil {
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
if in.TemplateRef != nil {
out.TemplateRef = new(ObjectReference)
if err := convert_api_ObjectReference_To_v1_ObjectReference(in.TemplateRef, out.TemplateRef, s); err != nil {
return err
}
} else {
out.TemplateRef = nil
}
if in.Template != nil {
out.Template = new(PodTemplateSpec)
if err := convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in.Template, out.Template, s); err != nil {
return err
}
} else {
out.Template = nil
}
return nil
}
func convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in *api.ReplicationControllerStatus, out *ReplicationControllerStatus, s conversion.Scope) error { func convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in *api.ReplicationControllerStatus, out *ReplicationControllerStatus, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.ReplicationControllerStatus))(in) defaulting.(func(*api.ReplicationControllerStatus))(in)
@ -3958,38 +3926,6 @@ func convert_v1_ReplicationControllerList_To_api_ReplicationControllerList(in *R
return nil return nil
} }
func convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *ReplicationControllerSpec, out *api.ReplicationControllerSpec, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ReplicationControllerSpec))(in)
}
out.Replicas = in.Replicas
if in.Selector != nil {
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
if in.TemplateRef != nil {
out.TemplateRef = new(api.ObjectReference)
if err := convert_v1_ObjectReference_To_api_ObjectReference(in.TemplateRef, out.TemplateRef, s); err != nil {
return err
}
} else {
out.TemplateRef = nil
}
if in.Template != nil {
out.Template = new(api.PodTemplateSpec)
if err := convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in.Template, out.Template, s); err != nil {
return err
}
} else {
out.Template = nil
}
return nil
}
func convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in *ReplicationControllerStatus, out *api.ReplicationControllerStatus, s conversion.Scope) error { func convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in *ReplicationControllerStatus, out *api.ReplicationControllerStatus, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ReplicationControllerStatus))(in) defaulting.(func(*ReplicationControllerStatus))(in)
@ -4626,7 +4562,6 @@ func init() {
convert_api_RBDVolumeSource_To_v1_RBDVolumeSource, convert_api_RBDVolumeSource_To_v1_RBDVolumeSource,
convert_api_RangeAllocation_To_v1_RangeAllocation, convert_api_RangeAllocation_To_v1_RangeAllocation,
convert_api_ReplicationControllerList_To_v1_ReplicationControllerList, convert_api_ReplicationControllerList_To_v1_ReplicationControllerList,
convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec,
convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus, convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus,
convert_api_ReplicationController_To_v1_ReplicationController, convert_api_ReplicationController_To_v1_ReplicationController,
convert_api_ResourceQuotaList_To_v1_ResourceQuotaList, convert_api_ResourceQuotaList_To_v1_ResourceQuotaList,
@ -4736,7 +4671,6 @@ func init() {
convert_v1_RBDVolumeSource_To_api_RBDVolumeSource, convert_v1_RBDVolumeSource_To_api_RBDVolumeSource,
convert_v1_RangeAllocation_To_api_RangeAllocation, convert_v1_RangeAllocation_To_api_RangeAllocation,
convert_v1_ReplicationControllerList_To_api_ReplicationControllerList, convert_v1_ReplicationControllerList_To_api_ReplicationControllerList,
convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec,
convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus, convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus,
convert_v1_ReplicationController_To_api_ReplicationController, convert_v1_ReplicationController_To_api_ReplicationController,
convert_v1_ResourceQuotaList_To_api_ResourceQuotaList, convert_v1_ResourceQuotaList_To_api_ResourceQuotaList,

View File

@ -39,6 +39,10 @@ func addDefaultingFuncs() {
obj.Labels = labels obj.Labels = labels
} }
} }
if obj.Spec.Replicas == nil {
obj.Spec.Replicas = new(int)
*obj.Spec.Replicas = 1
}
}, },
func(obj *Volume) { func(obj *Volume) {
if util.AllPtrFieldsNil(&obj.VolumeSource) { if util.AllPtrFieldsNil(&obj.VolumeSource) {

View File

@ -155,6 +155,79 @@ func TestSetDefaultReplicationController(t *testing.T) {
} }
} }
func newInt(val int) *int {
p := new(int)
*p = val
return p
}
func TestSetDefaultReplicationControllerReplicas(t *testing.T) {
tests := []struct {
rc versioned.ReplicationController
expectReplicas int
}{
{
rc: versioned.ReplicationController{
Spec: versioned.ReplicationControllerSpec{
Template: &versioned.PodTemplateSpec{
ObjectMeta: versioned.ObjectMeta{
Labels: map[string]string{
"foo": "bar",
},
},
},
},
},
expectReplicas: 1,
},
{
rc: versioned.ReplicationController{
Spec: versioned.ReplicationControllerSpec{
Replicas: newInt(0),
Template: &versioned.PodTemplateSpec{
ObjectMeta: versioned.ObjectMeta{
Labels: map[string]string{
"foo": "bar",
},
},
},
},
},
expectReplicas: 0,
},
{
rc: versioned.ReplicationController{
Spec: versioned.ReplicationControllerSpec{
Replicas: newInt(3),
Template: &versioned.PodTemplateSpec{
ObjectMeta: versioned.ObjectMeta{
Labels: map[string]string{
"foo": "bar",
},
},
},
},
},
expectReplicas: 3,
},
}
for _, test := range tests {
rc := &test.rc
obj2 := roundTrip(t, runtime.Object(rc))
rc2, ok := obj2.(*versioned.ReplicationController)
if !ok {
t.Errorf("unexpected object: %v", rc2)
t.FailNow()
}
if rc2.Spec.Replicas == nil {
t.Errorf("unexpected nil Replicas")
} else if test.expectReplicas != *rc2.Spec.Replicas {
t.Errorf("expected: %d replicas, got: %d", test.expectReplicas, *rc2.Spec.Replicas)
}
}
}
func TestSetDefaultService(t *testing.T) { func TestSetDefaultService(t *testing.T) {
svc := &versioned.Service{} svc := &versioned.Service{}
obj2 := roundTrip(t, runtime.Object(svc)) obj2 := roundTrip(t, runtime.Object(svc))

View File

@ -937,7 +937,7 @@ type PodTemplateList struct {
// ReplicationControllerSpec is the specification of a replication controller. // ReplicationControllerSpec is the specification of a replication controller.
type ReplicationControllerSpec struct { type ReplicationControllerSpec struct {
// Replicas is the number of desired replicas. // Replicas is the number of desired replicas.
Replicas int `json:"replicas,omitempty" description:"number of replicas desired"` Replicas *int `json:"replicas,omitempty" description:"number of replicas desired; defaults to 1"`
// Selector is a label query over pods that should match the Replicas count. // Selector is a label query over pods that should match the Replicas count.
// If Selector is empty, it is defaulted to the labels present on the Pod template. // If Selector is empty, it is defaulted to the labels present on the Pod template.