func convert_v1beta3_ServiceSpec_To_api_ServiceSpec(in *ServiceSpec, out *api.ServiceSpec, s conversion.Scope) error { if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { defaulting.(func(*ServiceSpec))(in) } if in.Ports != nil { out.Ports = make([]api.ServicePort, len(in.Ports)) for i := range in.Ports { if err := convert_v1beta3_ServicePort_To_api_ServicePort(&in.Ports[i], &out.Ports[i], s); err != nil { return err } } } else { out.Ports = nil } if in.Selector != nil { out.Selector = make(map[string]string) for key, val := range in.Selector { out.Selector[key] = val } } else { out.Selector = nil } out.ClusterIP = in.PortalIP typeIn := in.Type if typeIn == "" { if in.CreateExternalLoadBalancer { typeIn = ServiceTypeLoadBalancer } else { typeIn = ServiceTypeClusterIP } } if err := s.Convert(&typeIn, &out.Type, 0); err != nil { return err } if in.PublicIPs != nil { out.ExternalIPs = make([]string, len(in.PublicIPs)) for i := range in.PublicIPs { out.ExternalIPs[i] = in.PublicIPs[i] } } else { out.ExternalIPs = nil } out.SessionAffinity = api.ServiceAffinity(in.SessionAffinity) out.LoadBalancerIP = in.LoadBalancerIP return nil }
func ServiceSpec(srvcSpecs []interface{}) api.ServiceSpec { if len(srvcSpecs) == 0 { return api.ServiceSpec{} } userServiceSpec := srvcSpecs[0].(map[string]interface{}) srvcSpec := api.ServiceSpec{ Ports: ServicePorts(userServiceSpec["ports"].([]interface{})), } if _, ok := userServiceSpec["selector"]; ok { srvcSpec.Selector = convertMapTypeToStringMap(userServiceSpec["selector"].(map[string]interface{})) } if _, ok := userServiceSpec["cluster_ip"]; ok { srvcSpec.ClusterIP = userServiceSpec["cluster_ip"].(string) } if _, ok := userServiceSpec["type"]; ok { srvcSpec.Type = api.ServiceType(userServiceSpec["type"].(string)) } if _, ok := userServiceSpec["session_affinity"]; ok { srvcSpec.SessionAffinity = api.ServiceAffinity(userServiceSpec["session_affinity"].(string)) } return srvcSpec }