diff --git a/pkg/dns/config/config_test.go b/pkg/dns/config/config_test.go index 8c751bb0458..45a5753b66c 100644 --- a/pkg/dns/config/config_test.go +++ b/pkg/dns/config/config_test.go @@ -17,8 +17,9 @@ limitations under the License. package config import ( - "github.com/stretchr/testify/assert" "testing" + + "github.com/stretchr/testify/assert" ) func TestValidate(t *testing.T) { diff --git a/pkg/dns/config/sync.go b/pkg/dns/config/sync.go index 9022051fd9d..77f9234823e 100644 --- a/pkg/dns/config/sync.go +++ b/pkg/dns/config/sync.go @@ -18,9 +18,9 @@ package config import ( "k8s.io/client-go/pkg/util/wait" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/client/cache" - clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" + clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" fed "k8s.io/kubernetes/pkg/dns/federation" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/runtime" @@ -55,19 +55,19 @@ func NewSync(client clientset.Interface, ns string, name string) Sync { } listWatch := &cache.ListWatch{ - ListFunc: func(options api.ListOptions) (runtime.Object, error) { - options.FieldSelector = fields.Set{"metadata.name": name}.AsSelector() + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + options.FieldSelector = fields.Set{"metadata.name": name}.AsSelector().String() return client.Core().ConfigMaps(ns).List(options) }, - WatchFunc: func(options api.ListOptions) (watch.Interface, error) { - options.FieldSelector = fields.Set{"metadata.name": name}.AsSelector() + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + options.FieldSelector = fields.Set{"metadata.name": name}.AsSelector().String() return client.Core().ConfigMaps(ns).Watch(options) }, } store, controller := cache.NewInformer( listWatch, - &api.ConfigMap{}, + &v1.ConfigMap{}, time.Duration(0), cache.ResourceEventHandlerFuncs{ AddFunc: sync.onAdd, @@ -115,8 +115,8 @@ func (sync *kubeSync) Periodic() <-chan *Config { return sync.channel } -func (sync *kubeSync) toConfigMap(obj interface{}) *api.ConfigMap { - cm, ok := obj.(*api.ConfigMap) +func (sync *kubeSync) toConfigMap(obj interface{}) *v1.ConfigMap { + cm, ok := obj.(*v1.ConfigMap) if !ok { glog.Fatalf("Expected ConfigMap, got %T", obj) } @@ -154,7 +154,7 @@ func (sync *kubeSync) onUpdate(_, obj interface{}) { } } -func (sync *kubeSync) processUpdate(cm *api.ConfigMap) (config *Config, changed bool, err error) { +func (sync *kubeSync) processUpdate(cm *v1.ConfigMap) (config *Config, changed bool, err error) { glog.V(4).Infof("processUpdate ConfigMap %+v", *cm) if cm.ObjectMeta.ResourceVersion != sync.latestVersion { @@ -184,7 +184,7 @@ func (sync *kubeSync) processUpdate(cm *api.ConfigMap) (config *Config, changed return } -func (sync *kubeSync) updateFederations(cm *api.ConfigMap, config *Config) (err error) { +func (sync *kubeSync) updateFederations(cm *v1.ConfigMap, config *Config) (err error) { if flagValue, ok := cm.Data["federations"]; ok { config.Federations = make(map[string]string) if err = fed.ParseFederationsFlag(flagValue, config.Federations); err != nil { diff --git a/pkg/dns/dns.go b/pkg/dns/dns.go index 9d52ec74848..c44ddfc4856 100644 --- a/pkg/dns/dns.go +++ b/pkg/dns/dns.go @@ -27,11 +27,11 @@ import ( etcd "github.com/coreos/etcd/client" "github.com/miekg/dns" skymsg "github.com/skynetservices/skydns/msg" - kapi "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/api/endpoints" "k8s.io/kubernetes/pkg/api/unversioned" + "k8s.io/kubernetes/pkg/api/v1" + "k8s.io/kubernetes/pkg/api/v1/endpoints" kcache "k8s.io/kubernetes/pkg/client/cache" - clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" + clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" "k8s.io/kubernetes/pkg/dns/config" "k8s.io/kubernetes/pkg/dns/treecache" "k8s.io/kubernetes/pkg/dns/util" @@ -94,7 +94,7 @@ type KubeDNS struct { // IP. Access to this is coordinated using cacheLock. We use the // same lock for cache and this map to ensure that they don't get // out of sync. - clusterIPServiceMap map[string]*kapi.Service + clusterIPServiceMap map[string]*v1.Service // cacheLock protecting the cache. caller is responsible for using // the cacheLock before invoking methods on cache the cache is not // thread-safe, and the caller can guarantee thread safety by using @@ -127,7 +127,7 @@ func NewKubeDNS(client clientset.Interface, clusterDomain string, configSync con cacheLock: sync.RWMutex{}, nodesStore: kcache.NewStore(kcache.MetaNamespaceKeyFunc), reverseRecordMap: make(map[string]*skymsg.Service), - clusterIPServiceMap: make(map[string]*kapi.Service), + clusterIPServiceMap: make(map[string]*v1.Service), domainPath: util.ReverseArray(strings.Split(strings.TrimRight(clusterDomain, "."), ".")), configLock: sync.RWMutex{}, @@ -165,11 +165,11 @@ func (kd *KubeDNS) waitForKubernetesService() { const kubernetesSvcName = "kubernetes" const servicePollInterval = 1 * time.Second - name := fmt.Sprintf("%v/%v", kapi.NamespaceDefault, kubernetesSvcName) + name := fmt.Sprintf("%v/%v", v1.NamespaceDefault, kubernetesSvcName) glog.V(2).Infof("Waiting for service: %v", name) for { - svc, err := kd.kubeClient.Core().Services(kapi.NamespaceDefault).Get(kubernetesSvcName) + svc, err := kd.kubeClient.Core().Services(v1.NamespaceDefault).Get(kubernetesSvcName) if err != nil || svc == nil { glog.V(3).Infof( "Ignoring error while waiting for service %v: %v. Sleeping %v before retrying.", @@ -218,14 +218,14 @@ func (kd *KubeDNS) setServicesStore() { // Returns a cache.ListWatch that gets all changes to services. kd.servicesStore, kd.serviceController = kcache.NewInformer( &kcache.ListWatch{ - ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { - return kd.kubeClient.Core().Services(kapi.NamespaceAll).List(options) + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return kd.kubeClient.Core().Services(v1.NamespaceAll).List(options) }, - WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { - return kd.kubeClient.Core().Services(kapi.NamespaceAll).Watch(options) + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return kd.kubeClient.Core().Services(v1.NamespaceAll).Watch(options) }, }, - &kapi.Service{}, + &v1.Service{}, resyncPeriod, kcache.ResourceEventHandlerFuncs{ AddFunc: kd.newService, @@ -239,14 +239,14 @@ func (kd *KubeDNS) setEndpointsStore() { // Returns a cache.ListWatch that gets all changes to endpoints. kd.endpointsStore, kd.endpointsController = kcache.NewInformer( &kcache.ListWatch{ - ListFunc: func(options kapi.ListOptions) (runtime.Object, error) { - return kd.kubeClient.Core().Endpoints(kapi.NamespaceAll).List(options) + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return kd.kubeClient.Core().Endpoints(v1.NamespaceAll).List(options) }, - WatchFunc: func(options kapi.ListOptions) (watch.Interface, error) { - return kd.kubeClient.Core().Endpoints(kapi.NamespaceAll).Watch(options) + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return kd.kubeClient.Core().Endpoints(v1.NamespaceAll).Watch(options) }, }, - &kapi.Endpoints{}, + &v1.Endpoints{}, resyncPeriod, kcache.ResourceEventHandlerFuncs{ AddFunc: kd.handleEndpointAdd, @@ -260,8 +260,8 @@ func (kd *KubeDNS) setEndpointsStore() { ) } -func assertIsService(obj interface{}) (*kapi.Service, bool) { - if service, ok := obj.(*kapi.Service); ok { +func assertIsService(obj interface{}) (*v1.Service, bool) { + if service, ok := obj.(*v1.Service); ok { return service, ok } else { glog.Errorf("Type assertion failed! Expected 'Service', got %T", service) @@ -275,12 +275,12 @@ func (kd *KubeDNS) newService(obj interface{}) { glog.V(4).Infof("Service details: %v", service) // ExternalName services are a special kind that return CNAME records - if service.Spec.Type == kapi.ServiceTypeExternalName { + if service.Spec.Type == v1.ServiceTypeExternalName { kd.newExternalNameService(service) return } // if ClusterIP is not set, a DNS entry should not be created - if !kapi.IsServiceIPSet(service) { + if !v1.IsServiceIPSet(service) { kd.newHeadlessService(service) return } @@ -303,7 +303,7 @@ func (kd *KubeDNS) removeService(obj interface{}) { s.Name, subCachePath, success) // ExternalName services have no IP - if kapi.IsServiceIPSet(s) { + if v1.IsServiceIPSet(s) { delete(kd.reverseRecordMap, s.Spec.ClusterIP) delete(kd.clusterIPServiceMap, s.Spec.ClusterIP) } @@ -315,8 +315,8 @@ func (kd *KubeDNS) updateService(oldObj, newObj interface{}) { if old, ok := assertIsService(oldObj); ok { // Remove old cache path only if changing type to/from ExternalName. // In all other cases, we'll update records in place. - if (new.Spec.Type == kapi.ServiceTypeExternalName) != - (old.Spec.Type == kapi.ServiceTypeExternalName) { + if (new.Spec.Type == v1.ServiceTypeExternalName) != + (old.Spec.Type == v1.ServiceTypeExternalName) { kd.removeService(oldObj) } kd.newService(newObj) @@ -325,24 +325,24 @@ func (kd *KubeDNS) updateService(oldObj, newObj interface{}) { } func (kd *KubeDNS) handleEndpointAdd(obj interface{}) { - if e, ok := obj.(*kapi.Endpoints); ok { + if e, ok := obj.(*v1.Endpoints); ok { kd.addDNSUsingEndpoints(e) } } -func (kd *KubeDNS) addDNSUsingEndpoints(e *kapi.Endpoints) error { +func (kd *KubeDNS) addDNSUsingEndpoints(e *v1.Endpoints) error { svc, err := kd.getServiceFromEndpoints(e) if err != nil { return err } - if svc == nil || kapi.IsServiceIPSet(svc) { + if svc == nil || v1.IsServiceIPSet(svc) { // No headless service found corresponding to endpoints object. return nil } return kd.generateRecordsForHeadlessService(e, svc) } -func (kd *KubeDNS) getServiceFromEndpoints(e *kapi.Endpoints) (*kapi.Service, error) { +func (kd *KubeDNS) getServiceFromEndpoints(e *v1.Endpoints) (*v1.Service, error) { key, err := kcache.MetaNamespaceKeyFunc(e) if err != nil { return nil, err @@ -364,12 +364,12 @@ func (kd *KubeDNS) getServiceFromEndpoints(e *kapi.Endpoints) (*kapi.Service, er // fqdn constructs the fqdn for the given service. subpaths is a list of path // elements rooted at the given service, ending at a service record. -func (kd *KubeDNS) fqdn(service *kapi.Service, subpaths ...string) string { +func (kd *KubeDNS) fqdn(service *v1.Service, subpaths ...string) string { domainLabels := append(append(kd.domainPath, serviceSubdomain, service.Namespace, service.Name), subpaths...) return dns.Fqdn(strings.Join(util.ReverseArray(domainLabels), ".")) } -func (kd *KubeDNS) newPortalService(service *kapi.Service) { +func (kd *KubeDNS) newPortalService(service *v1.Service) { subCache := treecache.NewTreeCache() recordValue, recordLabel := util.GetSkyMsg(service.Spec.ClusterIP, 0) subCache.SetEntry(recordLabel, recordValue, kd.fqdn(service, recordLabel)) @@ -397,7 +397,7 @@ func (kd *KubeDNS) newPortalService(service *kapi.Service) { kd.clusterIPServiceMap[service.Spec.ClusterIP] = service } -func (kd *KubeDNS) generateRecordsForHeadlessService(e *kapi.Endpoints, svc *kapi.Service) error { +func (kd *KubeDNS) generateRecordsForHeadlessService(e *v1.Endpoints, svc *v1.Service) error { // TODO: remove this after v1.4 is released and the old annotations are EOL podHostnames, err := getPodHostnamesFromAnnotation(e.Annotations) if err != nil { @@ -433,7 +433,7 @@ func (kd *KubeDNS) generateRecordsForHeadlessService(e *kapi.Endpoints, svc *kap return nil } -func getHostname(address *kapi.EndpointAddress, podHostnames map[string]endpoints.HostRecord) (string, bool) { +func getHostname(address *v1.EndpointAddress, podHostnames map[string]endpoints.HostRecord) (string, bool) { if len(address.Hostname) > 0 { return address.Hostname, true } @@ -457,7 +457,7 @@ func getPodHostnamesFromAnnotation(annotations map[string]string) (map[string]en return hostnames, nil } -func (kd *KubeDNS) generateSRVRecordValue(svc *kapi.Service, portNumber int, labels ...string) *skymsg.Service { +func (kd *KubeDNS) generateSRVRecordValue(svc *v1.Service, portNumber int, labels ...string) *skymsg.Service { host := strings.Join([]string{svc.Name, svc.Namespace, serviceSubdomain, kd.domain}, ".") for _, cNameLabel := range labels { host = cNameLabel + "." + host @@ -467,7 +467,7 @@ func (kd *KubeDNS) generateSRVRecordValue(svc *kapi.Service, portNumber int, lab } // Generates skydns records for a headless service. -func (kd *KubeDNS) newHeadlessService(service *kapi.Service) error { +func (kd *KubeDNS) newHeadlessService(service *v1.Service) error { // Create an A record for every pod in the service. // This record must be periodically updated. // Format is as follows: @@ -486,14 +486,14 @@ func (kd *KubeDNS) newHeadlessService(service *kapi.Service) error { service.Name, service.Namespace) return nil } - if e, ok := e.(*kapi.Endpoints); ok { + if e, ok := e.(*v1.Endpoints); ok { return kd.generateRecordsForHeadlessService(e, service) } return nil } // Generates skydns records for an ExternalName service. -func (kd *KubeDNS) newExternalNameService(service *kapi.Service) { +func (kd *KubeDNS) newExternalNameService(service *v1.Service) { // Create a CNAME record for the service's ExternalName. // TODO: TTL? recordValue, _ := util.GetSkyMsg(service.Spec.ExternalName, 0) @@ -675,7 +675,7 @@ func (kd *KubeDNS) serviceWithClusterIPHasEndpoints(msg *skymsg.Service) (bool, if !exists { return false, nil } - if e, ok := e.(*kapi.Endpoints); ok { + if e, ok := e.(*v1.Endpoints); ok { return len(e.Subsets) > 0, nil } return false, fmt.Errorf("unexpected: found non-endpoint object in endpoint store: %v", e) @@ -840,12 +840,12 @@ func (kd *KubeDNS) federationRecords(queryPath []string) ([]skymsg.Service, erro // Also note that zone here means the zone in cloud provider terminology, not // the DNS zone. func (kd *KubeDNS) getClusterZoneAndRegion() (string, string, error) { - var node *kapi.Node + var node *v1.Node objs := kd.nodesStore.List() if len(objs) > 0 { var ok bool - if node, ok = objs[0].(*kapi.Node); !ok { + if node, ok = objs[0].(*v1.Node); !ok { return "", "", fmt.Errorf("expected node object, got: %T", objs[0]) } } else { @@ -853,7 +853,7 @@ func (kd *KubeDNS) getClusterZoneAndRegion() (string, string, error) { // wasteful in case of non-federated independent Kubernetes clusters. So carefully // proceeding here. // TODO(madhusudancs): Move this to external/v1 API. - nodeList, err := kd.kubeClient.Core().Nodes().List(kapi.ListOptions{}) + nodeList, err := kd.kubeClient.Core().Nodes().List(v1.ListOptions{}) if err != nil || len(nodeList.Items) == 0 { return "", "", fmt.Errorf("failed to retrieve the cluster nodes: %v", err) } @@ -891,7 +891,7 @@ func (kd *KubeDNS) getClusterZoneAndRegion() (string, string, error) { return zone, region, nil } -func getServiceFQDN(domain string, service *kapi.Service) string { +func getServiceFQDN(domain string, service *v1.Service) string { return strings.Join( []string{service.Name, service.Namespace, serviceSubdomain, domain}, ".") } diff --git a/pkg/dns/dns_test.go b/pkg/dns/dns_test.go index 7849c4d016d..fb5c9328ff2 100644 --- a/pkg/dns/dns_test.go +++ b/pkg/dns/dns_test.go @@ -32,11 +32,11 @@ import ( skyServer "github.com/skynetservices/skydns/server" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - kapi "k8s.io/kubernetes/pkg/api" - endpointsapi "k8s.io/kubernetes/pkg/api/endpoints" "k8s.io/kubernetes/pkg/api/unversioned" + "k8s.io/kubernetes/pkg/api/v1" + endpointsapi "k8s.io/kubernetes/pkg/api/v1/endpoints" "k8s.io/kubernetes/pkg/client/cache" - fake "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake" + fake "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/fake" "k8s.io/kubernetes/pkg/dns/config" "k8s.io/kubernetes/pkg/dns/treecache" "k8s.io/kubernetes/pkg/dns/util" @@ -61,7 +61,7 @@ func newKubeDNS() *KubeDNS { cache: treecache.NewTreeCache(), reverseRecordMap: make(map[string]*skymsg.Service), - clusterIPServiceMap: make(map[string]*kapi.Service), + clusterIPServiceMap: make(map[string]*v1.Service), cacheLock: sync.RWMutex{}, config: config.NewDefaultConfig(), @@ -339,7 +339,7 @@ func TestHeadlessServiceEndpointsUpdate(t *testing.T) { assertDNSForHeadlessService(t, kd, endpoints) // remove all endpoints - endpoints.Subsets = []kapi.EndpointSubset{} + endpoints.Subsets = []v1.EndpointSubset{} kd.handleEndpointAdd(endpoints) assertNoDNSForHeadlessService(t, kd, service) @@ -419,7 +419,7 @@ func TestFederationHeadlessService(t *testing.T) { "testservice.default.svc.cluster.local.", t, kd) // Delete the endpoint. - endpoints.Subsets = []kapi.EndpointSubset{} + endpoints.Subsets = []v1.EndpointSubset{} kd.handleEndpointAdd(endpoints) kd.updateService(s, s) @@ -461,7 +461,7 @@ func TestFederationService(t *testing.T) { "testservice.default.svc.cluster.local.", t, kd) // Remove the endpoint. - endpoints.Subsets = []kapi.EndpointSubset{} + endpoints.Subsets = []v1.EndpointSubset{} kd.handleEndpointAdd(endpoints) kd.updateService(s, s) @@ -590,17 +590,17 @@ func TestConfigSyncInitialMap(t *testing.T) { checkConfigEqual(t, kd, &config.Config{Federations: map[string]string{"name3": "domain3"}}) } -func newNodes() *kapi.NodeList { - return &kapi.NodeList{ - Items: []kapi.Node{ +func newNodes() *v1.NodeList { + return &v1.NodeList{ + Items: []v1.Node{ // Node without annotation. { - ObjectMeta: kapi.ObjectMeta{ + ObjectMeta: v1.ObjectMeta{ Name: "testnode-0", }, }, { - ObjectMeta: kapi.ObjectMeta{ + ObjectMeta: v1.ObjectMeta{ Name: "testnode-1", Labels: map[string]string{ // Note: The zone name here is an arbitrary string and doesn't exactly follow the @@ -615,15 +615,15 @@ func newNodes() *kapi.NodeList { } } -func newService(namespace, serviceName, clusterIP, portName string, portNumber int32) *kapi.Service { - service := kapi.Service{ - ObjectMeta: kapi.ObjectMeta{ +func newService(namespace, serviceName, clusterIP, portName string, portNumber int32) *v1.Service { + service := v1.Service{ + ObjectMeta: v1.ObjectMeta{ Name: serviceName, Namespace: namespace, }, - Spec: kapi.ServiceSpec{ + Spec: v1.ServiceSpec{ ClusterIP: clusterIP, - Ports: []kapi.ServicePort{ + Ports: []v1.ServicePort{ {Port: portNumber, Name: portName, Protocol: "TCP"}, }, }, @@ -631,17 +631,17 @@ func newService(namespace, serviceName, clusterIP, portName string, portNumber i return &service } -func newExternalNameService() *kapi.Service { - service := kapi.Service{ - ObjectMeta: kapi.ObjectMeta{ +func newExternalNameService() *v1.Service { + service := v1.Service{ + ObjectMeta: v1.ObjectMeta{ Name: testService, Namespace: testNamespace, }, - Spec: kapi.ServiceSpec{ + Spec: v1.ServiceSpec{ ClusterIP: "None", - Type: kapi.ServiceTypeExternalName, + Type: v1.ServiceTypeExternalName, ExternalName: testExternalName, - Ports: []kapi.ServicePort{ + Ports: []v1.ServicePort{ {Port: 0}, }, }, @@ -649,15 +649,15 @@ func newExternalNameService() *kapi.Service { return &service } -func newHeadlessService() *kapi.Service { - service := kapi.Service{ - ObjectMeta: kapi.ObjectMeta{ +func newHeadlessService() *v1.Service { + service := v1.Service{ + ObjectMeta: v1.ObjectMeta{ Name: testService, Namespace: testNamespace, }, - Spec: kapi.ServiceSpec{ + Spec: v1.ServiceSpec{ ClusterIP: "None", - Ports: []kapi.ServicePort{ + Ports: []v1.ServicePort{ {Port: 0}, }, }, @@ -665,40 +665,40 @@ func newHeadlessService() *kapi.Service { return &service } -func newEndpoints(service *kapi.Service, subsets ...kapi.EndpointSubset) *kapi.Endpoints { - endpoints := kapi.Endpoints{ +func newEndpoints(service *v1.Service, subsets ...v1.EndpointSubset) *v1.Endpoints { + endpoints := v1.Endpoints{ ObjectMeta: service.ObjectMeta, - Subsets: []kapi.EndpointSubset{}, + Subsets: []v1.EndpointSubset{}, } endpoints.Subsets = append(endpoints.Subsets, subsets...) return &endpoints } -func newSubsetWithOnePort(portName string, port int32, ips ...string) kapi.EndpointSubset { +func newSubsetWithOnePort(portName string, port int32, ips ...string) v1.EndpointSubset { subset := newSubset() - subset.Ports = append(subset.Ports, kapi.EndpointPort{Port: port, Name: portName, Protocol: "TCP"}) + subset.Ports = append(subset.Ports, v1.EndpointPort{Port: port, Name: portName, Protocol: "TCP"}) for _, ip := range ips { - subset.Addresses = append(subset.Addresses, kapi.EndpointAddress{IP: ip}) + subset.Addresses = append(subset.Addresses, v1.EndpointAddress{IP: ip}) } return subset } -func newSubsetWithTwoPorts(portName1 string, portNumber1 int32, portName2 string, portNumber2 int32, ips ...string) kapi.EndpointSubset { +func newSubsetWithTwoPorts(portName1 string, portNumber1 int32, portName2 string, portNumber2 int32, ips ...string) v1.EndpointSubset { subset := newSubsetWithOnePort(portName1, portNumber1, ips...) - subset.Ports = append(subset.Ports, kapi.EndpointPort{Port: portNumber2, Name: portName2, Protocol: "TCP"}) + subset.Ports = append(subset.Ports, v1.EndpointPort{Port: portNumber2, Name: portName2, Protocol: "TCP"}) return subset } -func newSubset() kapi.EndpointSubset { - subset := kapi.EndpointSubset{ - Addresses: []kapi.EndpointAddress{}, - Ports: []kapi.EndpointPort{}, +func newSubset() v1.EndpointSubset { + subset := v1.EndpointSubset{ + Addresses: []v1.EndpointAddress{}, + Ports: []v1.EndpointPort{}, } return subset } -func assertSRVForHeadlessService(t *testing.T, kd *KubeDNS, s *kapi.Service, e *kapi.Endpoints) { +func assertSRVForHeadlessService(t *testing.T, kd *KubeDNS, s *v1.Service, e *v1.Endpoints) { for _, subset := range e.Subsets { for _, port := range subset.Ports { records, err := kd.Records(getSRVFQDN(kd, s, port.Name), false) @@ -709,7 +709,7 @@ func assertSRVForHeadlessService(t *testing.T, kd *KubeDNS, s *kapi.Service, e * } } -func assertDNSForHeadlessService(t *testing.T, kd *KubeDNS, e *kapi.Endpoints) { +func assertDNSForHeadlessService(t *testing.T, kd *KubeDNS, e *v1.Endpoints) { records, err := kd.Records(getEndpointsFQDN(kd, e), false) require.NoError(t, err) endpoints := map[string]bool{} @@ -725,7 +725,7 @@ func assertDNSForHeadlessService(t *testing.T, kd *KubeDNS, e *kapi.Endpoints) { } } -func assertDNSForExternalService(t *testing.T, kd *KubeDNS, s *kapi.Service) { +func assertDNSForExternalService(t *testing.T, kd *KubeDNS, s *v1.Service) { records, err := kd.Records(getServiceFQDN(kd.domain, s), false) require.NoError(t, err) assert.Equal(t, 1, len(records)) @@ -738,7 +738,7 @@ func assertRecordPortsMatchPort(t *testing.T, port int32, records []skymsg.Servi } } -func assertCNameRecordsMatchEndpointIPs(t *testing.T, kd *KubeDNS, e []kapi.EndpointAddress, records []skymsg.Service) { +func assertCNameRecordsMatchEndpointIPs(t *testing.T, kd *KubeDNS, e []v1.EndpointAddress, records []skymsg.Service) { endpoints := map[string]bool{} for _, endpointAddress := range e { endpoints[endpointAddress.IP] = true @@ -758,32 +758,32 @@ func getIPForCName(t *testing.T, kd *KubeDNS, cname string) string { return records[0].Host } -func assertNoDNSForHeadlessService(t *testing.T, kd *KubeDNS, s *kapi.Service) { +func assertNoDNSForHeadlessService(t *testing.T, kd *KubeDNS, s *v1.Service) { records, err := kd.Records(getServiceFQDN(kd.domain, s), false) require.Error(t, err) assert.Equal(t, 0, len(records)) } -func assertNoDNSForExternalService(t *testing.T, kd *KubeDNS, s *kapi.Service) { +func assertNoDNSForExternalService(t *testing.T, kd *KubeDNS, s *v1.Service) { records, err := kd.Records(getServiceFQDN(kd.domain, s), false) require.Error(t, err) assert.Equal(t, 0, len(records)) } -func assertSRVForNamedPort(t *testing.T, kd *KubeDNS, s *kapi.Service, portName string) { +func assertSRVForNamedPort(t *testing.T, kd *KubeDNS, s *v1.Service, portName string) { records, err := kd.Records(getSRVFQDN(kd, s, portName), false) require.NoError(t, err) assert.Equal(t, 1, len(records)) assert.Equal(t, getServiceFQDN(kd.domain, s), records[0].Host) } -func assertNoSRVForNamedPort(t *testing.T, kd *KubeDNS, s *kapi.Service, portName string) { +func assertNoSRVForNamedPort(t *testing.T, kd *KubeDNS, s *v1.Service, portName string) { records, err := kd.Records(getSRVFQDN(kd, s, portName), false) require.Error(t, err) assert.Equal(t, 0, len(records)) } -func assertNoDNSForClusterIP(t *testing.T, kd *KubeDNS, s *kapi.Service) { +func assertNoDNSForClusterIP(t *testing.T, kd *KubeDNS, s *v1.Service) { serviceFQDN := getServiceFQDN(kd.domain, s) queries := getEquivalentQueries(serviceFQDN, s.Namespace) for _, query := range queries { @@ -793,7 +793,7 @@ func assertNoDNSForClusterIP(t *testing.T, kd *KubeDNS, s *kapi.Service) { } } -func assertDNSForClusterIP(t *testing.T, kd *KubeDNS, s *kapi.Service) { +func assertDNSForClusterIP(t *testing.T, kd *KubeDNS, s *v1.Service) { serviceFQDN := getServiceFQDN(kd.domain, s) queries := getEquivalentQueries(serviceFQDN, s.Namespace) for _, query := range queries { @@ -804,7 +804,7 @@ func assertDNSForClusterIP(t *testing.T, kd *KubeDNS, s *kapi.Service) { } } -func assertReverseRecord(t *testing.T, kd *KubeDNS, s *kapi.Service) { +func assertReverseRecord(t *testing.T, kd *KubeDNS, s *v1.Service) { segments := util.ReverseArray(strings.Split(s.Spec.ClusterIP, ".")) reverseLookup := fmt.Sprintf("%s%s", strings.Join(segments, "."), util.ArpaSuffix) reverseRecord, err := kd.ReverseRecord(reverseLookup) @@ -812,7 +812,7 @@ func assertReverseRecord(t *testing.T, kd *KubeDNS, s *kapi.Service) { assert.Equal(t, getServiceFQDN(kd.domain, s), reverseRecord.Host) } -func assertNoReverseRecord(t *testing.T, kd *KubeDNS, s *kapi.Service) { +func assertNoReverseRecord(t *testing.T, kd *KubeDNS, s *v1.Service) { segments := util.ReverseArray(strings.Split(s.Spec.ClusterIP, ".")) reverseLookup := fmt.Sprintf("%s%s", strings.Join(segments, "."), util.ArpaSuffix) reverseRecord, err := kd.ReverseRecord(reverseLookup) @@ -830,14 +830,14 @@ func getEquivalentQueries(serviceFQDN, namespace string) []string { } } -func getFederationServiceFQDN(kd *KubeDNS, s *kapi.Service, federationName string) string { +func getFederationServiceFQDN(kd *KubeDNS, s *v1.Service, federationName string) string { return fmt.Sprintf("%s.%s.%s.svc.%s", s.Name, s.Namespace, federationName, kd.domain) } -func getEndpointsFQDN(kd *KubeDNS, e *kapi.Endpoints) string { +func getEndpointsFQDN(kd *KubeDNS, e *v1.Endpoints) string { return fmt.Sprintf("%s.%s.svc.%s", e.Name, e.Namespace, kd.domain) } -func getSRVFQDN(kd *KubeDNS, s *kapi.Service, portName string) string { +func getSRVFQDN(kd *KubeDNS, s *v1.Service, portName string) string { return fmt.Sprintf("_%s._tcp.%s.%s.svc.%s", portName, s.Name, s.Namespace, kd.domain) } diff --git a/test/e2e/dns_configmap.go b/test/e2e/dns_configmap.go index 192e57a385c..e7162639b51 100644 --- a/test/e2e/dns_configmap.go +++ b/test/e2e/dns_configmap.go @@ -21,9 +21,9 @@ import ( "strings" "time" - "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/unversioned" - clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" + "k8s.io/kubernetes/pkg/api/v1" + clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" fed "k8s.io/kubernetes/pkg/dns/federation" "k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/labels" @@ -42,12 +42,12 @@ type dnsConfigMapTest struct { name string labels []string - cm *api.ConfigMap + cm *v1.ConfigMap isValid bool - dnsPod *api.Pod - utilPod *api.Pod - utilService *api.Service + dnsPod *v1.Pod + utilPod *v1.Pod + utilService *v1.Service } var _ = framework.KubeDescribe("DNS config map", func() { @@ -69,7 +69,7 @@ var _ = framework.KubeDescribe("DNS config map", func() { func (t *dnsConfigMapTest) init() { By("Finding a DNS pod") label := labels.SelectorFromSet(labels.Set(map[string]string{"k8s-app": "kube-dns"})) - options := api.ListOptions{LabelSelector: label} + options := v1.ListOptions{LabelSelector: label.String()} pods, err := t.f.ClientSet.Core().Pods("kube-system").List(options) Expect(err).NotTo(HaveOccurred()) @@ -94,19 +94,19 @@ func (t *dnsConfigMapTest) run() { invalid := map[string]string{"federations": "invalid.map=xyz"} By("empty -> valid1") - t.setConfigMap(&api.ConfigMap{Data: valid1}, true) + t.setConfigMap(&v1.ConfigMap{Data: valid1}, true) t.validate() By("valid1 -> valid2") - t.setConfigMap(&api.ConfigMap{Data: valid2}, true) + t.setConfigMap(&v1.ConfigMap{Data: valid2}, true) t.validate() By("valid2 -> invalid") - t.setConfigMap(&api.ConfigMap{Data: invalid}, false) + t.setConfigMap(&v1.ConfigMap{Data: invalid}, false) t.validate() By("invalid -> valid1") - t.setConfigMap(&api.ConfigMap{Data: valid1}, true) + t.setConfigMap(&v1.ConfigMap{Data: valid1}, true) t.validate() By("valid1 -> deleted") @@ -114,7 +114,7 @@ func (t *dnsConfigMapTest) run() { t.validate() By("deleted -> invalid") - t.setConfigMap(&api.ConfigMap{Data: invalid}, false) + t.setConfigMap(&v1.ConfigMap{Data: invalid}, false) t.validate() } @@ -210,7 +210,7 @@ func (t *dnsConfigMapTest) runDig(dnsName string) []string { } } -func (t *dnsConfigMapTest) setConfigMap(cm *api.ConfigMap, isValid bool) { +func (t *dnsConfigMapTest) setConfigMap(cm *v1.ConfigMap, isValid bool) { if isValid { t.cm = cm } @@ -219,11 +219,11 @@ func (t *dnsConfigMapTest) setConfigMap(cm *api.ConfigMap, isValid bool) { cm.ObjectMeta.Namespace = t.ns cm.ObjectMeta.Name = t.name - options := api.ListOptions{ + options := v1.ListOptions{ FieldSelector: fields.Set{ "metadata.namespace": t.ns, "metadata.name": t.name, - }.AsSelector(), + }.AsSelector().String(), } cmList, err := t.c.Core().ConfigMaps(t.ns).List(options) Expect(err).NotTo(HaveOccurred()) @@ -253,22 +253,22 @@ func (t *dnsConfigMapTest) createUtilPod() { // Actual port # doesn't matter, just need to exist. const servicePort = 10101 - t.utilPod = &api.Pod{ + t.utilPod = &v1.Pod{ TypeMeta: unversioned.TypeMeta{ Kind: "Pod", }, - ObjectMeta: api.ObjectMeta{ + ObjectMeta: v1.ObjectMeta{ Namespace: t.f.Namespace.Name, Labels: map[string]string{"app": "e2e-dns-configmap"}, GenerateName: "e2e-dns-configmap-", }, - Spec: api.PodSpec{ - Containers: []api.Container{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ { Name: "util", Image: "gcr.io/google_containers/dnsutils:e2e", Command: []string{"sleep", "10000"}, - Ports: []api.ContainerPort{ + Ports: []v1.ContainerPort{ {ContainerPort: servicePort, Protocol: "TCP"}, }, }, @@ -282,17 +282,17 @@ func (t *dnsConfigMapTest) createUtilPod() { framework.Logf("Created pod %v", t.utilPod) Expect(t.f.WaitForPodRunning(t.utilPod.Name)).NotTo(HaveOccurred()) - t.utilService = &api.Service{ + t.utilService = &v1.Service{ TypeMeta: unversioned.TypeMeta{ Kind: "Service", }, - ObjectMeta: api.ObjectMeta{ + ObjectMeta: v1.ObjectMeta{ Namespace: t.f.Namespace.Name, Name: "e2e-dns-configmap", }, - Spec: api.ServiceSpec{ + Spec: v1.ServiceSpec{ Selector: map[string]string{"app": "e2e-dns-configmap"}, - Ports: []api.ServicePort{ + Ports: []v1.ServicePort{ { Protocol: "TCP", Port: servicePort, @@ -309,7 +309,7 @@ func (t *dnsConfigMapTest) createUtilPod() { func (t *dnsConfigMapTest) deleteUtilPod() { podClient := t.c.Core().Pods(t.f.Namespace.Name) - if err := podClient.Delete(t.utilPod.Name, api.NewDeleteOptions(0)); err != nil { + if err := podClient.Delete(t.utilPod.Name, v1.NewDeleteOptions(0)); err != nil { framework.Logf("Delete of pod %v:%v failed: %v", t.utilPod.Namespace, t.utilPod.Name, err) }