diff --git a/federation/apis/federation/deep_copy_generated.go b/federation/apis/federation/deep_copy_generated.go index da4596384d2..8d0b9b21ea7 100644 --- a/federation/apis/federation/deep_copy_generated.go +++ b/federation/apis/federation/deep_copy_generated.go @@ -35,6 +35,7 @@ func init() { DeepCopy_federation_ClusterMeta, DeepCopy_federation_ClusterSpec, DeepCopy_federation_ClusterStatus, + DeepCopy_federation_ServerAddressByClientCIDR, ); err != nil { // if one of the deep copy functions is malformed, detect it immediately. panic(err) @@ -100,9 +101,9 @@ func DeepCopy_federation_ClusterMeta(in ClusterMeta, out *ClusterMeta, c *conver func DeepCopy_federation_ClusterSpec(in ClusterSpec, out *ClusterSpec, c *conversion.Cloner) error { if in.ServerAddressByClientCIDRs != nil { in, out := in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs - *out = make([]unversioned.ServerAddressByClientCIDR, len(in)) + *out = make([]ServerAddressByClientCIDR, len(in)) for i := range in { - if err := unversioned.DeepCopy_unversioned_ServerAddressByClientCIDR(in[i], &(*out)[i], c); err != nil { + if err := DeepCopy_federation_ServerAddressByClientCIDR(in[i], &(*out)[i], c); err != nil { return err } } @@ -156,3 +157,9 @@ func DeepCopy_federation_ClusterStatus(in ClusterStatus, out *ClusterStatus, c * } return nil } + +func DeepCopy_federation_ServerAddressByClientCIDR(in ServerAddressByClientCIDR, out *ServerAddressByClientCIDR, c *conversion.Cloner) error { + out.ClientCIDR = in.ClientCIDR + out.ServerAddress = in.ServerAddress + return nil +} diff --git a/federation/apis/federation/types.generated.go b/federation/apis/federation/types.generated.go index 2338cfc2a84..dc3172d12b9 100644 --- a/federation/apis/federation/types.generated.go +++ b/federation/apis/federation/types.generated.go @@ -25,9 +25,9 @@ import ( "errors" "fmt" codec1978 "github.com/ugorji/go/codec" - pkg2_api "k8s.io/kubernetes/pkg/api" + pkg1_api "k8s.io/kubernetes/pkg/api" pkg3_resource "k8s.io/kubernetes/pkg/api/resource" - pkg1_unversioned "k8s.io/kubernetes/pkg/api/unversioned" + pkg2_unversioned "k8s.io/kubernetes/pkg/api/unversioned" pkg5_types "k8s.io/kubernetes/pkg/types" "reflect" "runtime" @@ -65,9 +65,9 @@ func init() { panic(err) } if false { // reference the types, but skip this branch at build/run time - var v0 pkg2_api.ConditionStatus + var v0 pkg1_api.ConditionStatus var v1 pkg3_resource.Quantity - var v2 pkg1_unversioned.ServerAddressByClientCIDR + var v2 pkg2_unversioned.Time var v3 pkg5_types.UID var v4 pkg4_inf.Dec var v5 time.Time @@ -75,6 +75,209 @@ func init() { } } +func (x *ServerAddressByClientCIDR) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClientCIDR)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clientCIDR")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClientCIDR)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServerAddress)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serverAddress")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServerAddress)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServerAddressByClientCIDR) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServerAddressByClientCIDR) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "clientCIDR": + if r.TryDecodeAsNil() { + x.ClientCIDR = "" + } else { + x.ClientCIDR = string(r.DecodeString()) + } + case "serverAddress": + if r.TryDecodeAsNil() { + x.ServerAddress = "" + } else { + x.ServerAddress = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServerAddressByClientCIDR) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClientCIDR = "" + } else { + x.ClientCIDR = string(r.DecodeString()) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServerAddress = "" + } else { + x.ServerAddress = string(r.DecodeString()) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + func (x *ClusterSpec) CodecEncodeSelf(e *codec1978.Encoder) { var h codecSelfer1234 z, r := codec1978.GenHelperEncoder(e) @@ -115,7 +318,7 @@ func (x *ClusterSpec) CodecEncodeSelf(e *codec1978.Encoder) { _ = yym4 if false { } else { - h.encSliceunversioned_ServerAddressByClientCIDR(([]pkg1_unversioned.ServerAddressByClientCIDR)(x.ServerAddressByClientCIDRs), e) + h.encSliceServerAddressByClientCIDR(([]ServerAddressByClientCIDR)(x.ServerAddressByClientCIDRs), e) } } } else { @@ -129,7 +332,7 @@ func (x *ClusterSpec) CodecEncodeSelf(e *codec1978.Encoder) { _ = yym5 if false { } else { - h.encSliceunversioned_ServerAddressByClientCIDR(([]pkg1_unversioned.ServerAddressByClientCIDR)(x.ServerAddressByClientCIDRs), e) + h.encSliceServerAddressByClientCIDR(([]ServerAddressByClientCIDR)(x.ServerAddressByClientCIDRs), e) } } } @@ -228,7 +431,7 @@ func (x *ClusterSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { _ = yym5 if false { } else { - h.decSliceunversioned_ServerAddressByClientCIDR((*[]pkg1_unversioned.ServerAddressByClientCIDR)(yyv4), d) + h.decSliceServerAddressByClientCIDR((*[]ServerAddressByClientCIDR)(yyv4), d) } } case "credential": @@ -270,7 +473,7 @@ func (x *ClusterSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { _ = yym9 if false { } else { - h.decSliceunversioned_ServerAddressByClientCIDR((*[]pkg1_unversioned.ServerAddressByClientCIDR)(yyv8), d) + h.decSliceServerAddressByClientCIDR((*[]ServerAddressByClientCIDR)(yyv8), d) } } yyj7++ @@ -580,11 +783,11 @@ func (x *ClusterCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.Status = "" } else { - x.Status = pkg2_api.ConditionStatus(r.DecodeString()) + x.Status = pkg1_api.ConditionStatus(r.DecodeString()) } case "lastProbeTime": if r.TryDecodeAsNil() { - x.LastProbeTime = pkg1_unversioned.Time{} + x.LastProbeTime = pkg2_unversioned.Time{} } else { yyv6 := &x.LastProbeTime yym7 := z.DecBinary() @@ -601,7 +804,7 @@ func (x *ClusterCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { } case "lastTransitionTime": if r.TryDecodeAsNil() { - x.LastTransitionTime = pkg1_unversioned.Time{} + x.LastTransitionTime = pkg2_unversioned.Time{} } else { yyv8 := &x.LastTransitionTime yym9 := z.DecBinary() @@ -672,7 +875,7 @@ func (x *ClusterCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) if r.TryDecodeAsNil() { x.Status = "" } else { - x.Status = pkg2_api.ConditionStatus(r.DecodeString()) + x.Status = pkg1_api.ConditionStatus(r.DecodeString()) } yyj12++ if yyhl12 { @@ -686,7 +889,7 @@ func (x *ClusterCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) } z.DecSendContainerState(codecSelfer_containerArrayElem1234) if r.TryDecodeAsNil() { - x.LastProbeTime = pkg1_unversioned.Time{} + x.LastProbeTime = pkg2_unversioned.Time{} } else { yyv15 := &x.LastProbeTime yym16 := z.DecBinary() @@ -713,7 +916,7 @@ func (x *ClusterCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) } z.DecSendContainerState(codecSelfer_containerArrayElem1234) if r.TryDecodeAsNil() { - x.LastTransitionTime = pkg1_unversioned.Time{} + x.LastTransitionTime = pkg2_unversioned.Time{} } else { yyv17 := &x.LastTransitionTime yym18 := z.DecBinary() @@ -1481,7 +1684,7 @@ func (x *Cluster) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { switch yys3 { case "metadata": if r.TryDecodeAsNil() { - x.ObjectMeta = pkg2_api.ObjectMeta{} + x.ObjectMeta = pkg1_api.ObjectMeta{} } else { yyv4 := &x.ObjectMeta yyv4.CodecDecodeSelf(d) @@ -1538,7 +1741,7 @@ func (x *Cluster) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { } z.DecSendContainerState(codecSelfer_containerArrayElem1234) if r.TryDecodeAsNil() { - x.ObjectMeta = pkg2_api.ObjectMeta{} + x.ObjectMeta = pkg1_api.ObjectMeta{} } else { yyv10 := &x.ObjectMeta yyv10.CodecDecodeSelf(d) @@ -1827,7 +2030,7 @@ func (x *ClusterList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { switch yys3 { case "metadata": if r.TryDecodeAsNil() { - x.ListMeta = pkg1_unversioned.ListMeta{} + x.ListMeta = pkg2_unversioned.ListMeta{} } else { yyv4 := &x.ListMeta yym5 := z.DecBinary() @@ -1888,7 +2091,7 @@ func (x *ClusterList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { } z.DecSendContainerState(codecSelfer_containerArrayElem1234) if r.TryDecodeAsNil() { - x.ListMeta = pkg1_unversioned.ListMeta{} + x.ListMeta = pkg2_unversioned.ListMeta{} } else { yyv11 := &x.ListMeta yym12 := z.DecBinary() @@ -1969,7 +2172,7 @@ func (x *ClusterList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) } -func (x codecSelfer1234) encSliceunversioned_ServerAddressByClientCIDR(v []pkg1_unversioned.ServerAddressByClientCIDR, e *codec1978.Encoder) { +func (x codecSelfer1234) encSliceServerAddressByClientCIDR(v []ServerAddressByClientCIDR, e *codec1978.Encoder) { var h codecSelfer1234 z, r := codec1978.GenHelperEncoder(e) _, _, _ = h, z, r @@ -1977,18 +2180,12 @@ func (x codecSelfer1234) encSliceunversioned_ServerAddressByClientCIDR(v []pkg1_ for _, yyv1 := range v { z.EncSendContainerState(codecSelfer_containerArrayElem1234) yy2 := &yyv1 - yym3 := z.EncBinary() - _ = yym3 - if false { - } else if z.HasExtensions() && z.EncExt(yy2) { - } else { - z.EncFallback(yy2) - } + yy2.CodecEncodeSelf(e) } z.EncSendContainerState(codecSelfer_containerArrayEnd1234) } -func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1_unversioned.ServerAddressByClientCIDR, d *codec1978.Decoder) { +func (x codecSelfer1234) decSliceServerAddressByClientCIDR(v *[]ServerAddressByClientCIDR, d *codec1978.Decoder) { var h codecSelfer1234 z, r := codec1978.GenHelperDecoder(d) _, _, _ = h, z, r @@ -1999,7 +2196,7 @@ func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1 _ = yyc1 if yyl1 == 0 { if yyv1 == nil { - yyv1 = []pkg1_unversioned.ServerAddressByClientCIDR{} + yyv1 = []ServerAddressByClientCIDR{} yyc1 = true } else if len(yyv1) != 0 { yyv1 = yyv1[:0] @@ -2019,10 +2216,10 @@ func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1 if yyrl1 <= cap(yyv1) { yyv1 = yyv1[:yyrl1] } else { - yyv1 = make([]pkg1_unversioned.ServerAddressByClientCIDR, yyrl1) + yyv1 = make([]ServerAddressByClientCIDR, yyrl1) } } else { - yyv1 = make([]pkg1_unversioned.ServerAddressByClientCIDR, yyrl1) + yyv1 = make([]ServerAddressByClientCIDR, yyrl1) } yyc1 = true yyrr1 = len(yyv1) @@ -2037,34 +2234,22 @@ func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1 for ; yyj1 < yyrr1; yyj1++ { yyh1.ElemContainerState(yyj1) if r.TryDecodeAsNil() { - yyv1[yyj1] = pkg1_unversioned.ServerAddressByClientCIDR{} + yyv1[yyj1] = ServerAddressByClientCIDR{} } else { yyv2 := &yyv1[yyj1] - yym3 := z.DecBinary() - _ = yym3 - if false { - } else if z.HasExtensions() && z.DecExt(yyv2) { - } else { - z.DecFallback(yyv2, false) - } + yyv2.CodecDecodeSelf(d) } } if yyrt1 { for ; yyj1 < yyl1; yyj1++ { - yyv1 = append(yyv1, pkg1_unversioned.ServerAddressByClientCIDR{}) + yyv1 = append(yyv1, ServerAddressByClientCIDR{}) yyh1.ElemContainerState(yyj1) if r.TryDecodeAsNil() { - yyv1[yyj1] = pkg1_unversioned.ServerAddressByClientCIDR{} + yyv1[yyj1] = ServerAddressByClientCIDR{} } else { - yyv4 := &yyv1[yyj1] - yym5 := z.DecBinary() - _ = yym5 - if false { - } else if z.HasExtensions() && z.DecExt(yyv4) { - } else { - z.DecFallback(yyv4, false) - } + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) } } @@ -2075,22 +2260,16 @@ func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1 for ; !r.CheckBreak(); yyj1++ { if yyj1 >= len(yyv1) { - yyv1 = append(yyv1, pkg1_unversioned.ServerAddressByClientCIDR{}) // var yyz1 pkg1_unversioned.ServerAddressByClientCIDR + yyv1 = append(yyv1, ServerAddressByClientCIDR{}) // var yyz1 ServerAddressByClientCIDR yyc1 = true } yyh1.ElemContainerState(yyj1) if yyj1 < len(yyv1) { if r.TryDecodeAsNil() { - yyv1[yyj1] = pkg1_unversioned.ServerAddressByClientCIDR{} + yyv1[yyj1] = ServerAddressByClientCIDR{} } else { - yyv6 := &yyv1[yyj1] - yym7 := z.DecBinary() - _ = yym7 - if false { - } else if z.HasExtensions() && z.DecExt(yyv6) { - } else { - z.DecFallback(yyv6, false) - } + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) } } else { @@ -2102,7 +2281,7 @@ func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1 yyv1 = yyv1[:yyj1] yyc1 = true } else if yyj1 == 0 && yyv1 == nil { - yyv1 = []pkg1_unversioned.ServerAddressByClientCIDR{} + yyv1 = []ServerAddressByClientCIDR{} yyc1 = true } } diff --git a/federation/apis/federation/types.go b/federation/apis/federation/types.go index 4de12969ae0..abc1499b82b 100644 --- a/federation/apis/federation/types.go +++ b/federation/apis/federation/types.go @@ -21,13 +21,22 @@ import ( "k8s.io/kubernetes/pkg/api/unversioned" ) +// ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match. +type ServerAddressByClientCIDR struct { + // The CIDR with which clients can match their IP to figure out the server address that they should use. + ClientCIDR string `json:"clientCIDR" protobuf:"bytes,1,opt,name=clientCIDR"` + // Address of this server, suitable for a client that matches the above CIDR. + // This can be a hostname, hostname:port, IP or IP:port. + ServerAddress string `json:"serverAddress" protobuf:"bytes,2,opt,name=serverAddress"` +} + // ClusterSpec describes the attributes of a kubernetes cluster. type ClusterSpec struct { // A map of client CIDR to server address. // This is to help clients reach servers in the most network-efficient way possible. // Clients can use the appropriate server address as per the CIDR that they match. // In case of multiple matches, clients should use the longest matching CIDR. - ServerAddressByClientCIDRs []unversioned.ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" patchStrategy:"merge" patchMergeKey:"clientCIDR"` + ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" patchStrategy:"merge" patchMergeKey:"clientCIDR"` // the type (e.g. bearer token, client certificate etc) and data of the credential used to access cluster. // It’s used for system routines (not behalf of users) // TODO: string may not enough, https://github.com/kubernetes/kubernetes/pull/23847#discussion_r59301275 diff --git a/federation/apis/federation/v1alpha1/conversion_generated.go b/federation/apis/federation/v1alpha1/conversion_generated.go index 2639ed8455c..e45df4100c9 100644 --- a/federation/apis/federation/v1alpha1/conversion_generated.go +++ b/federation/apis/federation/v1alpha1/conversion_generated.go @@ -24,7 +24,6 @@ import ( federation "k8s.io/kubernetes/federation/apis/federation" api "k8s.io/kubernetes/pkg/api" resource "k8s.io/kubernetes/pkg/api/resource" - unversioned "k8s.io/kubernetes/pkg/api/unversioned" v1 "k8s.io/kubernetes/pkg/api/v1" conversion "k8s.io/kubernetes/pkg/conversion" ) @@ -43,6 +42,8 @@ func init() { Convert_federation_ClusterSpec_To_v1alpha1_ClusterSpec, Convert_v1alpha1_ClusterStatus_To_federation_ClusterStatus, Convert_federation_ClusterStatus_To_v1alpha1_ClusterStatus, + Convert_v1alpha1_ServerAddressByClientCIDR_To_federation_ServerAddressByClientCIDR, + Convert_federation_ServerAddressByClientCIDR_To_v1alpha1_ServerAddressByClientCIDR, ); err != nil { // if one of the conversion functions is malformed, detect it immediately. panic(err) @@ -198,10 +199,9 @@ func Convert_federation_ClusterMeta_To_v1alpha1_ClusterMeta(in *federation.Clust func autoConvert_v1alpha1_ClusterSpec_To_federation_ClusterSpec(in *ClusterSpec, out *federation.ClusterSpec, s conversion.Scope) error { if in.ServerAddressByClientCIDRs != nil { in, out := &in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs - *out = make([]unversioned.ServerAddressByClientCIDR, len(*in)) + *out = make([]federation.ServerAddressByClientCIDR, len(*in)) for i := range *in { - // TODO: Inefficient conversion - can we improve it? - if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + if err := Convert_v1alpha1_ServerAddressByClientCIDR_To_federation_ServerAddressByClientCIDR(&(*in)[i], &(*out)[i], s); err != nil { return err } } @@ -219,10 +219,9 @@ func Convert_v1alpha1_ClusterSpec_To_federation_ClusterSpec(in *ClusterSpec, out func autoConvert_federation_ClusterSpec_To_v1alpha1_ClusterSpec(in *federation.ClusterSpec, out *ClusterSpec, s conversion.Scope) error { if in.ServerAddressByClientCIDRs != nil { in, out := &in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs - *out = make([]unversioned.ServerAddressByClientCIDR, len(*in)) + *out = make([]ServerAddressByClientCIDR, len(*in)) for i := range *in { - // TODO: Inefficient conversion - can we improve it? - if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + if err := Convert_federation_ServerAddressByClientCIDR_To_v1alpha1_ServerAddressByClientCIDR(&(*in)[i], &(*out)[i], s); err != nil { return err } } @@ -312,3 +311,23 @@ func autoConvert_federation_ClusterStatus_To_v1alpha1_ClusterStatus(in *federati func Convert_federation_ClusterStatus_To_v1alpha1_ClusterStatus(in *federation.ClusterStatus, out *ClusterStatus, s conversion.Scope) error { return autoConvert_federation_ClusterStatus_To_v1alpha1_ClusterStatus(in, out, s) } + +func autoConvert_v1alpha1_ServerAddressByClientCIDR_To_federation_ServerAddressByClientCIDR(in *ServerAddressByClientCIDR, out *federation.ServerAddressByClientCIDR, s conversion.Scope) error { + out.ClientCIDR = in.ClientCIDR + out.ServerAddress = in.ServerAddress + return nil +} + +func Convert_v1alpha1_ServerAddressByClientCIDR_To_federation_ServerAddressByClientCIDR(in *ServerAddressByClientCIDR, out *federation.ServerAddressByClientCIDR, s conversion.Scope) error { + return autoConvert_v1alpha1_ServerAddressByClientCIDR_To_federation_ServerAddressByClientCIDR(in, out, s) +} + +func autoConvert_federation_ServerAddressByClientCIDR_To_v1alpha1_ServerAddressByClientCIDR(in *federation.ServerAddressByClientCIDR, out *ServerAddressByClientCIDR, s conversion.Scope) error { + out.ClientCIDR = in.ClientCIDR + out.ServerAddress = in.ServerAddress + return nil +} + +func Convert_federation_ServerAddressByClientCIDR_To_v1alpha1_ServerAddressByClientCIDR(in *federation.ServerAddressByClientCIDR, out *ServerAddressByClientCIDR, s conversion.Scope) error { + return autoConvert_federation_ServerAddressByClientCIDR_To_v1alpha1_ServerAddressByClientCIDR(in, out, s) +} diff --git a/federation/apis/federation/v1alpha1/deep_copy_generated.go b/federation/apis/federation/v1alpha1/deep_copy_generated.go index 7eac37de3c3..b299bb63db9 100644 --- a/federation/apis/federation/v1alpha1/deep_copy_generated.go +++ b/federation/apis/federation/v1alpha1/deep_copy_generated.go @@ -36,6 +36,7 @@ func init() { DeepCopy_v1alpha1_ClusterMeta, DeepCopy_v1alpha1_ClusterSpec, DeepCopy_v1alpha1_ClusterStatus, + DeepCopy_v1alpha1_ServerAddressByClientCIDR, ); err != nil { // if one of the deep copy functions is malformed, detect it immediately. panic(err) @@ -101,9 +102,9 @@ func DeepCopy_v1alpha1_ClusterMeta(in ClusterMeta, out *ClusterMeta, c *conversi func DeepCopy_v1alpha1_ClusterSpec(in ClusterSpec, out *ClusterSpec, c *conversion.Cloner) error { if in.ServerAddressByClientCIDRs != nil { in, out := in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs - *out = make([]unversioned.ServerAddressByClientCIDR, len(in)) + *out = make([]ServerAddressByClientCIDR, len(in)) for i := range in { - if err := unversioned.DeepCopy_unversioned_ServerAddressByClientCIDR(in[i], &(*out)[i], c); err != nil { + if err := DeepCopy_v1alpha1_ServerAddressByClientCIDR(in[i], &(*out)[i], c); err != nil { return err } } @@ -157,3 +158,9 @@ func DeepCopy_v1alpha1_ClusterStatus(in ClusterStatus, out *ClusterStatus, c *co } return nil } + +func DeepCopy_v1alpha1_ServerAddressByClientCIDR(in ServerAddressByClientCIDR, out *ServerAddressByClientCIDR, c *conversion.Cloner) error { + out.ClientCIDR = in.ClientCIDR + out.ServerAddress = in.ServerAddress + return nil +} diff --git a/federation/apis/federation/v1alpha1/generated.pb.go b/federation/apis/federation/v1alpha1/generated.pb.go index faa12e20252..f62bce5f4f7 100644 --- a/federation/apis/federation/v1alpha1/generated.pb.go +++ b/federation/apis/federation/v1alpha1/generated.pb.go @@ -31,6 +31,7 @@ limitations under the License. ClusterMeta ClusterSpec ClusterStatus + ServerAddressByClientCIDR */ package v1alpha1 @@ -39,7 +40,7 @@ import fmt "fmt" import math "math" import k8s_io_kubernetes_pkg_api_resource "k8s.io/kubernetes/pkg/api/resource" -import k8s_io_kubernetes_pkg_api_unversioned "k8s.io/kubernetes/pkg/api/unversioned" + import k8s_io_kubernetes_pkg_api_v1 "k8s.io/kubernetes/pkg/api/v1" import io "io" @@ -73,6 +74,10 @@ func (m *ClusterStatus) Reset() { *m = ClusterStatus{} } func (m *ClusterStatus) String() string { return proto.CompactTextString(m) } func (*ClusterStatus) ProtoMessage() {} +func (m *ServerAddressByClientCIDR) Reset() { *m = ServerAddressByClientCIDR{} } +func (m *ServerAddressByClientCIDR) String() string { return proto.CompactTextString(m) } +func (*ServerAddressByClientCIDR) ProtoMessage() {} + func init() { proto.RegisterType((*Cluster)(nil), "k8s.io.kubernetes.federation.apis.federation.v1alpha1.Cluster") proto.RegisterType((*ClusterCondition)(nil), "k8s.io.kubernetes.federation.apis.federation.v1alpha1.ClusterCondition") @@ -80,6 +85,7 @@ func init() { proto.RegisterType((*ClusterMeta)(nil), "k8s.io.kubernetes.federation.apis.federation.v1alpha1.ClusterMeta") proto.RegisterType((*ClusterSpec)(nil), "k8s.io.kubernetes.federation.apis.federation.v1alpha1.ClusterSpec") proto.RegisterType((*ClusterStatus)(nil), "k8s.io.kubernetes.federation.apis.federation.v1alpha1.ClusterStatus") + proto.RegisterType((*ServerAddressByClientCIDR)(nil), "k8s.io.kubernetes.federation.apis.federation.v1alpha1.ServerAddressByClientCIDR") } func (m *Cluster) Marshal() (data []byte, err error) { size := m.Size() @@ -349,6 +355,32 @@ func (m *ClusterStatus) MarshalTo(data []byte) (int, error) { return i, nil } +func (m *ServerAddressByClientCIDR) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ServerAddressByClientCIDR) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ClientCIDR))) + i += copy(data[i:], m.ClientCIDR) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ServerAddress))) + i += copy(data[i:], m.ServerAddress) + return i, nil +} + func encodeFixed64Generated(data []byte, offset int, v uint64) int { data[offset] = uint8(v) data[offset+1] = uint8(v >> 8) @@ -474,6 +506,16 @@ func (m *ClusterStatus) Size() (n int) { return n } +func (m *ServerAddressByClientCIDR) Size() (n int) { + var l int + _ = l + l = len(m.ClientCIDR) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ServerAddress) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func sovGenerated(x uint64) (n int) { for { n++ @@ -1098,7 +1140,7 @@ func (m *ClusterSpec) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ServerAddressByClientCIDRs = append(m.ServerAddressByClientCIDRs, k8s_io_kubernetes_pkg_api_unversioned.ServerAddressByClientCIDR{}) + m.ServerAddressByClientCIDRs = append(m.ServerAddressByClientCIDRs, ServerAddressByClientCIDR{}) if err := m.ServerAddressByClientCIDRs[len(m.ServerAddressByClientCIDRs)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { return err } @@ -1496,6 +1538,114 @@ func (m *ClusterStatus) Unmarshal(data []byte) error { } return nil } +func (m *ServerAddressByClientCIDR) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServerAddressByClientCIDR: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServerAddressByClientCIDR: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientCIDR", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientCIDR = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerAddress = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipGenerated(data []byte) (n int, err error) { l := len(data) iNdEx := 0 diff --git a/federation/apis/federation/v1alpha1/generated.proto b/federation/apis/federation/v1alpha1/generated.proto index 7e45212b0a2..b686d75b870 100644 --- a/federation/apis/federation/v1alpha1/generated.proto +++ b/federation/apis/federation/v1alpha1/generated.proto @@ -85,7 +85,7 @@ message ClusterSpec { // This is to help clients reach servers in the most network-efficient way possible. // Clients can use the appropriate server address as per the CIDR that they match. // In case of multiple matches, clients should use the longest matching CIDR. - repeated k8s.io.kubernetes.pkg.api.unversioned.ServerAddressByClientCIDR serverAddressByClientCIDRs = 1; + repeated ServerAddressByClientCIDR serverAddressByClientCIDRs = 1; // the type (e.g. bearer token, client certificate etc) and data of the credential used to access cluster. // It’s used for system routines (not behalf of users) @@ -107,3 +107,13 @@ message ClusterStatus { optional ClusterMeta clusterMeta = 4; } +// ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match. +message ServerAddressByClientCIDR { + // The CIDR with which clients can match their IP to figure out the server address that they should use. + optional string clientCIDR = 1; + + // Address of this server, suitable for a client that matches the above CIDR. + // This can be a hostname, hostname:port, IP or IP:port. + optional string serverAddress = 2; +} + diff --git a/federation/apis/federation/v1alpha1/types.generated.go b/federation/apis/federation/v1alpha1/types.generated.go index 9d4931183e5..66b557731fe 100644 --- a/federation/apis/federation/v1alpha1/types.generated.go +++ b/federation/apis/federation/v1alpha1/types.generated.go @@ -26,8 +26,8 @@ import ( "fmt" codec1978 "github.com/ugorji/go/codec" pkg3_resource "k8s.io/kubernetes/pkg/api/resource" - pkg1_unversioned "k8s.io/kubernetes/pkg/api/unversioned" - pkg2_v1 "k8s.io/kubernetes/pkg/api/v1" + pkg2_unversioned "k8s.io/kubernetes/pkg/api/unversioned" + pkg1_v1 "k8s.io/kubernetes/pkg/api/v1" pkg5_types "k8s.io/kubernetes/pkg/types" "reflect" "runtime" @@ -66,8 +66,8 @@ func init() { } if false { // reference the types, but skip this branch at build/run time var v0 pkg3_resource.Quantity - var v1 pkg1_unversioned.ServerAddressByClientCIDR - var v2 pkg2_v1.ConditionStatus + var v1 pkg2_unversioned.Time + var v2 pkg1_v1.ConditionStatus var v3 pkg5_types.UID var v4 pkg4_inf.Dec var v5 time.Time @@ -75,6 +75,209 @@ func init() { } } +func (x *ServerAddressByClientCIDR) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClientCIDR)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clientCIDR")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClientCIDR)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServerAddress)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serverAddress")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServerAddress)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServerAddressByClientCIDR) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServerAddressByClientCIDR) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "clientCIDR": + if r.TryDecodeAsNil() { + x.ClientCIDR = "" + } else { + x.ClientCIDR = string(r.DecodeString()) + } + case "serverAddress": + if r.TryDecodeAsNil() { + x.ServerAddress = "" + } else { + x.ServerAddress = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServerAddressByClientCIDR) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClientCIDR = "" + } else { + x.ClientCIDR = string(r.DecodeString()) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServerAddress = "" + } else { + x.ServerAddress = string(r.DecodeString()) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + func (x *ClusterSpec) CodecEncodeSelf(e *codec1978.Encoder) { var h codecSelfer1234 z, r := codec1978.GenHelperEncoder(e) @@ -115,7 +318,7 @@ func (x *ClusterSpec) CodecEncodeSelf(e *codec1978.Encoder) { _ = yym4 if false { } else { - h.encSliceunversioned_ServerAddressByClientCIDR(([]pkg1_unversioned.ServerAddressByClientCIDR)(x.ServerAddressByClientCIDRs), e) + h.encSliceServerAddressByClientCIDR(([]ServerAddressByClientCIDR)(x.ServerAddressByClientCIDRs), e) } } } else { @@ -129,7 +332,7 @@ func (x *ClusterSpec) CodecEncodeSelf(e *codec1978.Encoder) { _ = yym5 if false { } else { - h.encSliceunversioned_ServerAddressByClientCIDR(([]pkg1_unversioned.ServerAddressByClientCIDR)(x.ServerAddressByClientCIDRs), e) + h.encSliceServerAddressByClientCIDR(([]ServerAddressByClientCIDR)(x.ServerAddressByClientCIDRs), e) } } } @@ -228,7 +431,7 @@ func (x *ClusterSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { _ = yym5 if false { } else { - h.decSliceunversioned_ServerAddressByClientCIDR((*[]pkg1_unversioned.ServerAddressByClientCIDR)(yyv4), d) + h.decSliceServerAddressByClientCIDR((*[]ServerAddressByClientCIDR)(yyv4), d) } } case "credential": @@ -270,7 +473,7 @@ func (x *ClusterSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { _ = yym9 if false { } else { - h.decSliceunversioned_ServerAddressByClientCIDR((*[]pkg1_unversioned.ServerAddressByClientCIDR)(yyv8), d) + h.decSliceServerAddressByClientCIDR((*[]ServerAddressByClientCIDR)(yyv8), d) } } yyj7++ @@ -580,11 +783,11 @@ func (x *ClusterCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { if r.TryDecodeAsNil() { x.Status = "" } else { - x.Status = pkg2_v1.ConditionStatus(r.DecodeString()) + x.Status = pkg1_v1.ConditionStatus(r.DecodeString()) } case "lastProbeTime": if r.TryDecodeAsNil() { - x.LastProbeTime = pkg1_unversioned.Time{} + x.LastProbeTime = pkg2_unversioned.Time{} } else { yyv6 := &x.LastProbeTime yym7 := z.DecBinary() @@ -601,7 +804,7 @@ func (x *ClusterCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { } case "lastTransitionTime": if r.TryDecodeAsNil() { - x.LastTransitionTime = pkg1_unversioned.Time{} + x.LastTransitionTime = pkg2_unversioned.Time{} } else { yyv8 := &x.LastTransitionTime yym9 := z.DecBinary() @@ -672,7 +875,7 @@ func (x *ClusterCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) if r.TryDecodeAsNil() { x.Status = "" } else { - x.Status = pkg2_v1.ConditionStatus(r.DecodeString()) + x.Status = pkg1_v1.ConditionStatus(r.DecodeString()) } yyj12++ if yyhl12 { @@ -686,7 +889,7 @@ func (x *ClusterCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) } z.DecSendContainerState(codecSelfer_containerArrayElem1234) if r.TryDecodeAsNil() { - x.LastProbeTime = pkg1_unversioned.Time{} + x.LastProbeTime = pkg2_unversioned.Time{} } else { yyv15 := &x.LastProbeTime yym16 := z.DecBinary() @@ -713,7 +916,7 @@ func (x *ClusterCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) } z.DecSendContainerState(codecSelfer_containerArrayElem1234) if r.TryDecodeAsNil() { - x.LastTransitionTime = pkg1_unversioned.Time{} + x.LastTransitionTime = pkg2_unversioned.Time{} } else { yyv17 := &x.LastTransitionTime yym18 := z.DecBinary() @@ -1481,7 +1684,7 @@ func (x *Cluster) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { switch yys3 { case "metadata": if r.TryDecodeAsNil() { - x.ObjectMeta = pkg2_v1.ObjectMeta{} + x.ObjectMeta = pkg1_v1.ObjectMeta{} } else { yyv4 := &x.ObjectMeta yyv4.CodecDecodeSelf(d) @@ -1538,7 +1741,7 @@ func (x *Cluster) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { } z.DecSendContainerState(codecSelfer_containerArrayElem1234) if r.TryDecodeAsNil() { - x.ObjectMeta = pkg2_v1.ObjectMeta{} + x.ObjectMeta = pkg1_v1.ObjectMeta{} } else { yyv10 := &x.ObjectMeta yyv10.CodecDecodeSelf(d) @@ -1827,7 +2030,7 @@ func (x *ClusterList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { switch yys3 { case "metadata": if r.TryDecodeAsNil() { - x.ListMeta = pkg1_unversioned.ListMeta{} + x.ListMeta = pkg2_unversioned.ListMeta{} } else { yyv4 := &x.ListMeta yym5 := z.DecBinary() @@ -1888,7 +2091,7 @@ func (x *ClusterList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { } z.DecSendContainerState(codecSelfer_containerArrayElem1234) if r.TryDecodeAsNil() { - x.ListMeta = pkg1_unversioned.ListMeta{} + x.ListMeta = pkg2_unversioned.ListMeta{} } else { yyv11 := &x.ListMeta yym12 := z.DecBinary() @@ -1969,7 +2172,7 @@ func (x *ClusterList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { z.DecSendContainerState(codecSelfer_containerArrayEnd1234) } -func (x codecSelfer1234) encSliceunversioned_ServerAddressByClientCIDR(v []pkg1_unversioned.ServerAddressByClientCIDR, e *codec1978.Encoder) { +func (x codecSelfer1234) encSliceServerAddressByClientCIDR(v []ServerAddressByClientCIDR, e *codec1978.Encoder) { var h codecSelfer1234 z, r := codec1978.GenHelperEncoder(e) _, _, _ = h, z, r @@ -1977,18 +2180,12 @@ func (x codecSelfer1234) encSliceunversioned_ServerAddressByClientCIDR(v []pkg1_ for _, yyv1 := range v { z.EncSendContainerState(codecSelfer_containerArrayElem1234) yy2 := &yyv1 - yym3 := z.EncBinary() - _ = yym3 - if false { - } else if z.HasExtensions() && z.EncExt(yy2) { - } else { - z.EncFallback(yy2) - } + yy2.CodecEncodeSelf(e) } z.EncSendContainerState(codecSelfer_containerArrayEnd1234) } -func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1_unversioned.ServerAddressByClientCIDR, d *codec1978.Decoder) { +func (x codecSelfer1234) decSliceServerAddressByClientCIDR(v *[]ServerAddressByClientCIDR, d *codec1978.Decoder) { var h codecSelfer1234 z, r := codec1978.GenHelperDecoder(d) _, _, _ = h, z, r @@ -1999,7 +2196,7 @@ func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1 _ = yyc1 if yyl1 == 0 { if yyv1 == nil { - yyv1 = []pkg1_unversioned.ServerAddressByClientCIDR{} + yyv1 = []ServerAddressByClientCIDR{} yyc1 = true } else if len(yyv1) != 0 { yyv1 = yyv1[:0] @@ -2019,10 +2216,10 @@ func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1 if yyrl1 <= cap(yyv1) { yyv1 = yyv1[:yyrl1] } else { - yyv1 = make([]pkg1_unversioned.ServerAddressByClientCIDR, yyrl1) + yyv1 = make([]ServerAddressByClientCIDR, yyrl1) } } else { - yyv1 = make([]pkg1_unversioned.ServerAddressByClientCIDR, yyrl1) + yyv1 = make([]ServerAddressByClientCIDR, yyrl1) } yyc1 = true yyrr1 = len(yyv1) @@ -2037,34 +2234,22 @@ func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1 for ; yyj1 < yyrr1; yyj1++ { yyh1.ElemContainerState(yyj1) if r.TryDecodeAsNil() { - yyv1[yyj1] = pkg1_unversioned.ServerAddressByClientCIDR{} + yyv1[yyj1] = ServerAddressByClientCIDR{} } else { yyv2 := &yyv1[yyj1] - yym3 := z.DecBinary() - _ = yym3 - if false { - } else if z.HasExtensions() && z.DecExt(yyv2) { - } else { - z.DecFallback(yyv2, false) - } + yyv2.CodecDecodeSelf(d) } } if yyrt1 { for ; yyj1 < yyl1; yyj1++ { - yyv1 = append(yyv1, pkg1_unversioned.ServerAddressByClientCIDR{}) + yyv1 = append(yyv1, ServerAddressByClientCIDR{}) yyh1.ElemContainerState(yyj1) if r.TryDecodeAsNil() { - yyv1[yyj1] = pkg1_unversioned.ServerAddressByClientCIDR{} + yyv1[yyj1] = ServerAddressByClientCIDR{} } else { - yyv4 := &yyv1[yyj1] - yym5 := z.DecBinary() - _ = yym5 - if false { - } else if z.HasExtensions() && z.DecExt(yyv4) { - } else { - z.DecFallback(yyv4, false) - } + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) } } @@ -2075,22 +2260,16 @@ func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1 for ; !r.CheckBreak(); yyj1++ { if yyj1 >= len(yyv1) { - yyv1 = append(yyv1, pkg1_unversioned.ServerAddressByClientCIDR{}) // var yyz1 pkg1_unversioned.ServerAddressByClientCIDR + yyv1 = append(yyv1, ServerAddressByClientCIDR{}) // var yyz1 ServerAddressByClientCIDR yyc1 = true } yyh1.ElemContainerState(yyj1) if yyj1 < len(yyv1) { if r.TryDecodeAsNil() { - yyv1[yyj1] = pkg1_unversioned.ServerAddressByClientCIDR{} + yyv1[yyj1] = ServerAddressByClientCIDR{} } else { - yyv6 := &yyv1[yyj1] - yym7 := z.DecBinary() - _ = yym7 - if false { - } else if z.HasExtensions() && z.DecExt(yyv6) { - } else { - z.DecFallback(yyv6, false) - } + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) } } else { @@ -2102,7 +2281,7 @@ func (x codecSelfer1234) decSliceunversioned_ServerAddressByClientCIDR(v *[]pkg1 yyv1 = yyv1[:yyj1] yyc1 = true } else if yyj1 == 0 && yyv1 == nil { - yyv1 = []pkg1_unversioned.ServerAddressByClientCIDR{} + yyv1 = []ServerAddressByClientCIDR{} yyc1 = true } } diff --git a/federation/apis/federation/v1alpha1/types.go b/federation/apis/federation/v1alpha1/types.go index 2f3ea9ac7be..83aca2d0c71 100644 --- a/federation/apis/federation/v1alpha1/types.go +++ b/federation/apis/federation/v1alpha1/types.go @@ -21,13 +21,22 @@ import ( "k8s.io/kubernetes/pkg/api/v1" ) +// ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match. +type ServerAddressByClientCIDR struct { + // The CIDR with which clients can match their IP to figure out the server address that they should use. + ClientCIDR string `json:"clientCIDR" protobuf:"bytes,1,opt,name=clientCIDR"` + // Address of this server, suitable for a client that matches the above CIDR. + // This can be a hostname, hostname:port, IP or IP:port. + ServerAddress string `json:"serverAddress" protobuf:"bytes,2,opt,name=serverAddress"` +} + // ClusterSpec describes the attributes of a kubernetes cluster. type ClusterSpec struct { // A map of client CIDR to server address. // This is to help clients reach servers in the most network-efficient way possible. // Clients can use the appropriate server address as per the CIDR that they match. // In case of multiple matches, clients should use the longest matching CIDR. - ServerAddressByClientCIDRs []unversioned.ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" patchStrategy:"merge" patchMergeKey:"clientCIDR" protobuf:"bytes,1,rep,name=serverAddressByClientCIDRs"` + ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" patchStrategy:"merge" patchMergeKey:"clientCIDR" protobuf:"bytes,1,rep,name=serverAddressByClientCIDRs"` // the type (e.g. bearer token, client certificate etc) and data of the credential used to access cluster. // It’s used for system routines (not behalf of users) // TODO: string may not enough, https://github.com/kubernetes/kubernetes/pull/23847#discussion_r59301275 diff --git a/federation/apis/federation/validation/validation_test.go b/federation/apis/federation/validation/validation_test.go index d68883675cd..87a6b92e479 100644 --- a/federation/apis/federation/validation/validation_test.go +++ b/federation/apis/federation/validation/validation_test.go @@ -21,7 +21,6 @@ import ( "k8s.io/kubernetes/federation/apis/federation" "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/api/unversioned" ) func TestValidateCluster(t *testing.T) { @@ -29,7 +28,7 @@ func TestValidateCluster(t *testing.T) { { ObjectMeta: api.ObjectMeta{Name: "cluster-s"}, Spec: federation.ClusterSpec{ - ServerAddressByClientCIDRs: []unversioned.ServerAddressByClientCIDR{ + ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{ { ClientCIDR: "0.0.0.0/0", ServerAddress: "localhost:8888", @@ -52,7 +51,7 @@ func TestValidateCluster(t *testing.T) { "empty cluster addresses": { ObjectMeta: api.ObjectMeta{Name: "cluster-f"}, Spec: federation.ClusterSpec{ - ServerAddressByClientCIDRs: []unversioned.ServerAddressByClientCIDR{}, + ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{}, }}, "invalid_label": { ObjectMeta: api.ObjectMeta{ @@ -81,7 +80,7 @@ func TestValidateClusterUpdate(t *testing.T) { old: federation.Cluster{ ObjectMeta: api.ObjectMeta{Name: "cluster-s"}, Spec: federation.ClusterSpec{ - ServerAddressByClientCIDRs: []unversioned.ServerAddressByClientCIDR{ + ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{ { ClientCIDR: "0.0.0.0/0", ServerAddress: "localhost:8888", @@ -92,7 +91,7 @@ func TestValidateClusterUpdate(t *testing.T) { update: federation.Cluster{ ObjectMeta: api.ObjectMeta{Name: "cluster-s"}, Spec: federation.ClusterSpec{ - ServerAddressByClientCIDRs: []unversioned.ServerAddressByClientCIDR{ + ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{ { ClientCIDR: "0.0.0.0/0", ServerAddress: "localhost:8888", @@ -116,7 +115,7 @@ func TestValidateClusterUpdate(t *testing.T) { old: federation.Cluster{ ObjectMeta: api.ObjectMeta{Name: "cluster-s"}, Spec: federation.ClusterSpec{ - ServerAddressByClientCIDRs: []unversioned.ServerAddressByClientCIDR{ + ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{ { ClientCIDR: "0.0.0.0/0", ServerAddress: "localhost:8888", @@ -127,7 +126,7 @@ func TestValidateClusterUpdate(t *testing.T) { update: federation.Cluster{ ObjectMeta: api.ObjectMeta{Name: "cluster-newname"}, Spec: federation.ClusterSpec{ - ServerAddressByClientCIDRs: []unversioned.ServerAddressByClientCIDR{ + ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{ { ClientCIDR: "0.0.0.0/0", ServerAddress: "localhost:8888", @@ -155,7 +154,7 @@ func TestValidateClusterStatusUpdate(t *testing.T) { old: federation.Cluster{ ObjectMeta: api.ObjectMeta{Name: "cluster-s"}, Spec: federation.ClusterSpec{ - ServerAddressByClientCIDRs: []unversioned.ServerAddressByClientCIDR{ + ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{ { ClientCIDR: "0.0.0.0/0", ServerAddress: "localhost:8888", @@ -171,7 +170,7 @@ func TestValidateClusterStatusUpdate(t *testing.T) { update: federation.Cluster{ ObjectMeta: api.ObjectMeta{Name: "cluster-s"}, Spec: federation.ClusterSpec{ - ServerAddressByClientCIDRs: []unversioned.ServerAddressByClientCIDR{ + ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{ { ClientCIDR: "0.0.0.0/0", ServerAddress: "localhost:8888", diff --git a/federation/registry/cluster/etcd/etcd_test.go b/federation/registry/cluster/etcd/etcd_test.go index 41496db3646..b709c6ded56 100644 --- a/federation/registry/cluster/etcd/etcd_test.go +++ b/federation/registry/cluster/etcd/etcd_test.go @@ -21,7 +21,6 @@ import ( "k8s.io/kubernetes/federation/apis/federation" "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/registry/generic" @@ -49,7 +48,7 @@ func validNewCluster() *federation.Cluster { }, }, Spec: federation.ClusterSpec{ - ServerAddressByClientCIDRs: []unversioned.ServerAddressByClientCIDR{ + ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{ { ClientCIDR: "0.0.0.0/0", ServerAddress: "localhost:8888", diff --git a/federation/registry/cluster/strategy_test.go b/federation/registry/cluster/strategy_test.go index 77721ffb93b..954acd89622 100644 --- a/federation/registry/cluster/strategy_test.go +++ b/federation/registry/cluster/strategy_test.go @@ -23,7 +23,6 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/testapi" apitesting "k8s.io/kubernetes/pkg/api/testing" - "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" "reflect" @@ -39,7 +38,7 @@ func validNewCluster() *federation.Cluster { }, }, Spec: federation.ClusterSpec{ - ServerAddressByClientCIDRs: []unversioned.ServerAddressByClientCIDR{ + ServerAddressByClientCIDRs: []federation.ServerAddressByClientCIDR{ { ClientCIDR: "0.0.0.0/0", ServerAddress: "localhost:8888", diff --git a/pkg/api/unversioned/deep_copy_generated.go b/pkg/api/unversioned/deep_copy_generated.go index 37b918bcd47..6a7cd5c5333 100644 --- a/pkg/api/unversioned/deep_copy_generated.go +++ b/pkg/api/unversioned/deep_copy_generated.go @@ -105,12 +105,6 @@ func DeepCopy_unversioned_ListMeta(in ListMeta, out *ListMeta, c *conversion.Clo return nil } -func DeepCopy_unversioned_ServerAddressByClientCIDR(in ServerAddressByClientCIDR, out *ServerAddressByClientCIDR, c *conversion.Cloner) error { - out.ClientCIDR = in.ClientCIDR - out.ServerAddress = in.ServerAddress - return nil -} - func DeepCopy_unversioned_Time(in Time, out *Time, c *conversion.Cloner) error { if newVal, err := c.DeepCopy(in.Time); err != nil { return err