diff --git a/cluster/aws/templates/create-dynamic-salt-files.sh b/cluster/aws/templates/create-dynamic-salt-files.sh index 5440da9433..85c3153968 100644 --- a/cluster/aws/templates/create-dynamic-salt-files.sh +++ b/cluster/aws/templates/create-dynamic-salt-files.sh @@ -20,6 +20,7 @@ mkdir -p /srv/salt-overlay/pillar cat </srv/salt-overlay/pillar/cluster-params.sls +instance_prefix: '$(echo "$INSTANCE_PREFIX" | sed -e "s/'/''/g")' node_instance_prefix: '$(echo "$NODE_INSTANCE_PREFIX" | sed -e "s/'/''/g")' portal_net: '$(echo "$PORTAL_NET" | sed -e "s/'/''/g")' enable_cluster_monitoring: '$(echo "$ENABLE_CLUSTER_MONITORING" | sed -e "s/'/''/g")' diff --git a/cluster/aws/util.sh b/cluster/aws/util.sh index a05b007400..82efbf3a9f 100644 --- a/cluster/aws/util.sh +++ b/cluster/aws/util.sh @@ -294,6 +294,7 @@ function kube-up { echo "mkdir -p /var/cache/kubernetes-install" echo "cd /var/cache/kubernetes-install" echo "readonly MASTER_NAME='${MASTER_NAME}'" + echo "readonly INSTANCE_PREFIX='${INSTANCE_PREFIX}'" echo "readonly NODE_INSTANCE_PREFIX='${INSTANCE_PREFIX}-minion'" echo "readonly SERVER_BINARY_TAR_URL='https://s3-${ZONE}.amazonaws.com/${SERVER_BINARY_TAR_URL}'" echo "readonly SALT_TAR_URL='https://s3-${ZONE}.amazonaws.com/${SALT_TAR_URL}'" diff --git a/cluster/azure/templates/create-dynamic-salt-files.sh b/cluster/azure/templates/create-dynamic-salt-files.sh index afea82b88c..977738b007 100644 --- a/cluster/azure/templates/create-dynamic-salt-files.sh +++ b/cluster/azure/templates/create-dynamic-salt-files.sh @@ -20,6 +20,7 @@ mkdir -p /srv/salt-overlay/pillar cat </srv/salt-overlay/pillar/cluster-params.sls +instance_prefix: '$(echo "$INSTANCE_PREFIX" | sed -e "s/'/''/g")' node_instance_prefix: $NODE_INSTANCE_PREFIX portal_net: $PORTAL_NET EOF diff --git a/cluster/azure/util.sh b/cluster/azure/util.sh index 3ab63a8de0..40710bd5ab 100644 --- a/cluster/azure/util.sh +++ b/cluster/azure/util.sh @@ -343,6 +343,7 @@ function kube-up { echo "mkdir -p /var/cache/kubernetes-install" echo "cd /var/cache/kubernetes-install" echo "readonly MASTER_NAME='${MASTER_NAME}'" + echo "readonly INSTANCE_PREFIX='${INSTANCE_PREFIX}'" echo "readonly NODE_INSTANCE_PREFIX='${INSTANCE_PREFIX}-minion'" echo "readonly SERVER_BINARY_TAR_URL='${SERVER_BINARY_TAR_URL}'" echo "readonly SALT_TAR_URL='${SALT_TAR_URL}'" diff --git a/cluster/gce/templates/create-dynamic-salt-files.sh b/cluster/gce/templates/create-dynamic-salt-files.sh index 5440da9433..85c3153968 100644 --- a/cluster/gce/templates/create-dynamic-salt-files.sh +++ b/cluster/gce/templates/create-dynamic-salt-files.sh @@ -20,6 +20,7 @@ mkdir -p /srv/salt-overlay/pillar cat </srv/salt-overlay/pillar/cluster-params.sls +instance_prefix: '$(echo "$INSTANCE_PREFIX" | sed -e "s/'/''/g")' node_instance_prefix: '$(echo "$NODE_INSTANCE_PREFIX" | sed -e "s/'/''/g")' portal_net: '$(echo "$PORTAL_NET" | sed -e "s/'/''/g")' enable_cluster_monitoring: '$(echo "$ENABLE_CLUSTER_MONITORING" | sed -e "s/'/''/g")' diff --git a/cluster/gce/util.sh b/cluster/gce/util.sh index d462659f5f..fd80cf9649 100755 --- a/cluster/gce/util.sh +++ b/cluster/gce/util.sh @@ -445,6 +445,7 @@ function kube-up { echo "mkdir -p /var/cache/kubernetes-install" echo "cd /var/cache/kubernetes-install" echo "readonly MASTER_NAME='${MASTER_NAME}'" + echo "readonly INSTANCE_PREFIX='${INSTANCE_PREFIX}'" echo "readonly NODE_INSTANCE_PREFIX='${NODE_INSTANCE_PREFIX}'" echo "readonly SERVER_BINARY_TAR_URL='${SERVER_BINARY_TAR_URL}'" echo "readonly SALT_TAR_URL='${SALT_TAR_URL}'" @@ -912,8 +913,8 @@ function setup-logging-firewall { done local -r region="${ZONE:0:${#ZONE}-2}" - local -r es_ip=$(gcloud compute forwarding-rules --project "${PROJECT}" describe --region "${region}" elasticsearch-logging | grep IPAddress | awk '{print $2}') - local -r kibana_ip=$(gcloud compute forwarding-rules --project "${PROJECT}" describe --region "${region}" kibana-logging | grep IPAddress | awk '{print $2}') + local -r es_ip=$(gcloud compute forwarding-rules --project "${PROJECT}" describe --region "${region}" "${INSTANCE_PREFIX}"-elasticsearch-logging | grep IPAddress | awk '{print $2}') + local -r kibana_ip=$(gcloud compute forwarding-rules --project "${PROJECT}" describe --region "${region}" "${INSTANCE_PREFIX}"-kibana-logging | grep IPAddress | awk '{print $2}') echo echo -e "${color_green}Cluster logs are ingested into Elasticsearch running at ${color_yellow}http://${es_ip}:9200" echo -e "${color_green}Kibana logging dashboard will be available at ${color_yellow}http://${kibana_ip}:5601${color_norm}" diff --git a/cluster/saltbase/salt/kube-apiserver/default b/cluster/saltbase/salt/kube-apiserver/default index ea15ac288e..3391ccb67b 100644 --- a/cluster/saltbase/salt/kube-apiserver/default +++ b/cluster/saltbase/salt/kube-apiserver/default @@ -10,6 +10,10 @@ {% set address = "--address=127.0.0.1" -%} +{% if pillar['instance_prefix'] is defined -%} + {% set cluster_name = "--cluster_name=" + pillar['instance_prefix'] -%} +{% endif -%} + {% set publicAddressOverride = "" -%} {% if grains.publicAddressOverride is defined -%} {% set publicAddressOverride = "--public_address_override=" + grains.publicAddressOverride -%} @@ -61,4 +65,4 @@ {% set runtime_config = "--runtime_config=" + grains.runtime_config -%} {% endif -%} -DAEMON_ARGS="{{daemon_args}} {{address}} {{etcd_servers}} {{ cloud_provider }} {{ cloud_config }} {{ runtime_config }} {{admission_control}} --allow_privileged={{pillar['allow_privileged']}} {{portal_net}} {{cert_file}} {{key_file}} {{secure_port}} {{token_auth_file}} {{publicAddressOverride}} {{pillar['log_level']}}" +DAEMON_ARGS="{{daemon_args}} {{address}} {{etcd_servers}} {{ cloud_provider }} {{ cloud_config }} {{ runtime_config }} {{admission_control}} --allow_privileged={{pillar['allow_privileged']}} {{portal_net}} {{cluster_name}} {{cert_file}} {{key_file}} {{secure_port}} {{token_auth_file}} {{publicAddressOverride}} {{pillar['log_level']}}" diff --git a/cluster/vagrant/util.sh b/cluster/vagrant/util.sh index 17b8aeedb6..37f8d2d0a2 100644 --- a/cluster/vagrant/util.sh +++ b/cluster/vagrant/util.sh @@ -65,6 +65,7 @@ function create-provision-scripts { ( echo "#! /bin/bash" echo "KUBE_ROOT=/vagrant" + echo "INSTANCE_PREFIX='${INSTANCE_PREFIX}'" echo "MASTER_NAME='${INSTANCE_PREFIX}-master'" echo "MASTER_IP='${MASTER_IP}'" echo "MINION_NAMES=(${MINION_NAMES[@]})" diff --git a/cluster/vsphere/templates/create-dynamic-salt-files.sh b/cluster/vsphere/templates/create-dynamic-salt-files.sh index cb483ad134..f32ca36417 100755 --- a/cluster/vsphere/templates/create-dynamic-salt-files.sh +++ b/cluster/vsphere/templates/create-dynamic-salt-files.sh @@ -20,6 +20,7 @@ mkdir -p /srv/salt-overlay/pillar cat </srv/salt-overlay/pillar/cluster-params.sls +instance_prefix: '$(echo "$INSTANCE_PREFIX" | sed -e "s/'/''/g")' node_instance_prefix: $NODE_INSTANCE_PREFIX portal_net: $PORTAL_NET enable_cluster_monitoring: $ENABLE_CLUSTER_MONITORING diff --git a/cluster/vsphere/util.sh b/cluster/vsphere/util.sh index 7469e0ac02..28a6e5a0a9 100755 --- a/cluster/vsphere/util.sh +++ b/cluster/vsphere/util.sh @@ -289,6 +289,7 @@ function kube-up { grep -v "^#" "${KUBE_ROOT}/cluster/vsphere/templates/hostname.sh" echo "cd /home/kube/cache/kubernetes-install" echo "readonly MASTER_NAME='${MASTER_NAME}'" + echo "readonly INSTANCE_PREFIX='${INSTANCE_PREFIX}'" echo "readonly NODE_INSTANCE_PREFIX='${INSTANCE_PREFIX}-minion'" echo "readonly PORTAL_NET='${PORTAL_NET}'" echo "readonly ENABLE_NODE_MONITORING='${ENABLE_NODE_MONITORING:-false}'" @@ -492,4 +493,4 @@ function setup-logging-firewall { function teardown-logging-firewall { echo "TODO: teardown logging" -} \ No newline at end of file +} diff --git a/cmd/kube-apiserver/app/server.go b/cmd/kube-apiserver/app/server.go index 7cf3837f35..585fdfc264 100644 --- a/cmd/kube-apiserver/app/server.go +++ b/cmd/kube-apiserver/app/server.go @@ -72,6 +72,7 @@ type APIServer struct { MasterServiceNamespace string RuntimeConfig util.ConfigurationMap KubeletConfig client.KubeletConfig + ClusterName string } // NewAPIServer creates a new APIServer object with default parameters @@ -90,6 +91,7 @@ func NewAPIServer() *APIServer { AdmissionControl: "AlwaysAdmit", EnableLogsSupport: true, MasterServiceNamespace: api.NamespaceDefault, + ClusterName: "kubernetes", RuntimeConfig: make(util.ConfigurationMap), KubeletConfig: client.KubeletConfig{ @@ -146,6 +148,7 @@ func (s *APIServer) AddFlags(fs *pflag.FlagSet) { fs.StringVar(&s.MasterServiceNamespace, "master_service_namespace", s.MasterServiceNamespace, "The namespace from which the kubernetes master services should be injected into pods") fs.Var(&s.RuntimeConfig, "runtime_config", "A set of key=value pairs that describe runtime configuration that may be passed to the apiserver.") client.BindKubeletClientConfigFlags(fs, &s.KubeletConfig) + fs.StringVar(&s.ClusterName, "cluster_name", s.ClusterName, "The instance prefix for the cluster") } // TODO: Longer term we should read this from some config store, rather than a flag. @@ -241,6 +244,7 @@ func (s *APIServer) Run(_ []string) error { AdmissionControl: admissionController, EnableV1Beta3: v1beta3, MasterServiceNamespace: s.MasterServiceNamespace, + ClusterName: s.ClusterName, } m := master.New(config) diff --git a/pkg/master/master.go b/pkg/master/master.go index 5ea92dc4cd..f998c5997e 100644 --- a/pkg/master/master.go +++ b/pkg/master/master.go @@ -113,6 +113,9 @@ type Config struct { // Control the interval that pod, node IP, and node heath status caches // expire. CacheTimeout time.Duration + + // The name of the cluster. + ClusterName string } // Master contains state for a Kubernetes cluster master/api server. @@ -403,7 +406,7 @@ func (m *Master) init(c *Config) { "bindings": bindingStorage, "replicationControllers": controller.NewREST(registry, podRegistry), - "services": service.NewREST(m.serviceRegistry, c.Cloud, m.nodeRegistry, m.portalNet), + "services": service.NewREST(m.serviceRegistry, c.Cloud, m.nodeRegistry, m.portalNet, c.ClusterName), "endpoints": endpoint.NewREST(m.endpointRegistry), "minions": nodeStorage, "nodes": nodeStorage, diff --git a/pkg/registry/service/rest.go b/pkg/registry/service/rest.go index c3690f6143..7e76fece85 100644 --- a/pkg/registry/service/rest.go +++ b/pkg/registry/service/rest.go @@ -36,14 +36,16 @@ import ( // REST adapts a service registry into apiserver's RESTStorage model. type REST struct { - registry Registry - cloud cloudprovider.Interface - machines minion.Registry - portalMgr *ipAllocator + registry Registry + cloud cloudprovider.Interface + machines minion.Registry + portalMgr *ipAllocator + clusterName string } // NewREST returns a new REST. -func NewREST(registry Registry, cloud cloudprovider.Interface, machines minion.Registry, portalNet *net.IPNet) *REST { +func NewREST(registry Registry, cloud cloudprovider.Interface, machines minion.Registry, portalNet *net.IPNet, + clusterName string) *REST { // TODO: Before we can replicate masters, this has to be synced (e.g. lives in etcd) ipa := newIPAllocator(portalNet) if ipa == nil { @@ -52,10 +54,11 @@ func NewREST(registry Registry, cloud cloudprovider.Interface, machines minion.R reloadIPsFromStorage(ipa, registry) return &REST{ - registry: registry, - cloud: cloud, - machines: machines, - portalMgr: ipa, + registry: registry, + cloud: cloud, + machines: machines, + portalMgr: ipa, + clusterName: clusterName, } } @@ -259,14 +262,14 @@ func (rs *REST) createExternalLoadBalancer(ctx api.Context, service *api.Service var affinityType api.AffinityType = service.Spec.SessionAffinity if len(service.Spec.PublicIPs) > 0 { for _, publicIP := range service.Spec.PublicIPs { - _, err = balancer.CreateTCPLoadBalancer(service.Name, zone.Region, net.ParseIP(publicIP), service.Spec.Port, hostsFromMinionList(hosts), affinityType) + _, err = balancer.CreateTCPLoadBalancer(rs.clusterName+"-"+service.Name, zone.Region, net.ParseIP(publicIP), service.Spec.Port, hostsFromMinionList(hosts), affinityType) if err != nil { // TODO: have to roll-back any successful calls. return err } } } else { - ip, err := balancer.CreateTCPLoadBalancer(service.Name, zone.Region, nil, service.Spec.Port, hostsFromMinionList(hosts), affinityType) + ip, err := balancer.CreateTCPLoadBalancer(rs.clusterName+"-"+service.Name, zone.Region, nil, service.Spec.Port, hostsFromMinionList(hosts), affinityType) if err != nil { return err } @@ -295,7 +298,7 @@ func (rs *REST) deleteExternalLoadBalancer(service *api.Service) error { if err != nil { return err } - if err := balancer.DeleteTCPLoadBalancer(service.Name, zone.Region); err != nil { + if err := balancer.DeleteTCPLoadBalancer(rs.clusterName+"-"+service.Name, zone.Region); err != nil { return err } return nil diff --git a/pkg/registry/service/rest_test.go b/pkg/registry/service/rest_test.go index 8426ef4134..361e626716 100644 --- a/pkg/registry/service/rest_test.go +++ b/pkg/registry/service/rest_test.go @@ -43,7 +43,7 @@ func TestServiceRegistryCreate(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") storage.portalMgr.randomAttempts = 0 svc := &api.Service{ @@ -84,7 +84,7 @@ func TestServiceRegistryCreate(t *testing.T) { func TestServiceStorageValidatesCreate(t *testing.T) { registry := registrytest.NewServiceRegistry() - storage := NewREST(registry, nil, nil, makeIPNet(t)) + storage := NewREST(registry, nil, nil, makeIPNet(t), "kubernetes") failureCases := map[string]api.Service{ "empty ID": { ObjectMeta: api.ObjectMeta{Name: ""}, @@ -127,7 +127,7 @@ func TestServiceRegistryUpdate(t *testing.T) { Selector: map[string]string{"bar": "baz1"}, }, }) - storage := NewREST(registry, nil, nil, makeIPNet(t)) + storage := NewREST(registry, nil, nil, makeIPNet(t), "kubernetes") updated_svc, created, err := storage.Update(ctx, &api.Service{ ObjectMeta: api.ObjectMeta{Name: "foo"}, Spec: api.ServiceSpec{ @@ -165,7 +165,7 @@ func TestServiceStorageValidatesUpdate(t *testing.T) { Selector: map[string]string{"bar": "baz"}, }, }) - storage := NewREST(registry, nil, nil, makeIPNet(t)) + storage := NewREST(registry, nil, nil, makeIPNet(t), "kubernetes") failureCases := map[string]api.Service{ "empty ID": { ObjectMeta: api.ObjectMeta{Name: ""}, @@ -202,7 +202,7 @@ func TestServiceRegistryExternalService(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") svc := &api.Service{ ObjectMeta: api.ObjectMeta{Name: "foo"}, Spec: api.ServiceSpec{ @@ -232,7 +232,7 @@ func TestServiceRegistryExternalServiceError(t *testing.T) { Err: fmt.Errorf("test error"), } machines := []string{"foo", "bar", "baz"} - storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") svc := &api.Service{ ObjectMeta: api.ObjectMeta{Name: "foo"}, Spec: api.ServiceSpec{ @@ -258,7 +258,7 @@ func TestServiceRegistryDelete(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") svc := &api.Service{ ObjectMeta: api.ObjectMeta{Name: "foo"}, Spec: api.ServiceSpec{ @@ -282,7 +282,7 @@ func TestServiceRegistryDeleteExternal(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") svc := &api.Service{ ObjectMeta: api.ObjectMeta{Name: "foo"}, Spec: api.ServiceSpec{ @@ -307,7 +307,7 @@ func TestServiceRegistryUpdateExternalService(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") // Create non-external load balancer. svc1 := &api.Service{ @@ -351,7 +351,7 @@ func TestServiceRegistryGet(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") registry.CreateService(ctx, &api.Service{ ObjectMeta: api.ObjectMeta{Name: "foo"}, Spec: api.ServiceSpec{ @@ -373,7 +373,7 @@ func TestServiceRegistryResourceLocation(t *testing.T) { registry.Endpoints = api.Endpoints{Endpoints: []api.Endpoint{{IP: "foo", Port: 80}}} fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") registry.CreateService(ctx, &api.Service{ ObjectMeta: api.ObjectMeta{Name: "foo"}, Spec: api.ServiceSpec{ @@ -404,7 +404,7 @@ func TestServiceRegistryList(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + storage := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") registry.CreateService(ctx, &api.Service{ ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: api.NamespaceDefault}, Spec: api.ServiceSpec{ @@ -441,7 +441,7 @@ func TestServiceRegistryIPAllocation(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") rest.portalMgr.randomAttempts = 0 svc1 := &api.Service{ @@ -503,7 +503,7 @@ func TestServiceRegistryIPReallocation(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") rest.portalMgr.randomAttempts = 0 svc1 := &api.Service{ @@ -551,7 +551,7 @@ func TestServiceRegistryIPUpdate(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") rest.portalMgr.randomAttempts = 0 svc := &api.Service{ @@ -597,7 +597,7 @@ func TestServiceRegistryIPExternalLoadBalancer(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") rest.portalMgr.randomAttempts = 0 svc := &api.Service{ @@ -633,7 +633,7 @@ func TestServiceRegistryIPReloadFromStorage(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - rest1 := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + rest1 := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") rest1.portalMgr.randomAttempts = 0 svc := &api.Service{ @@ -659,7 +659,7 @@ func TestServiceRegistryIPReloadFromStorage(t *testing.T) { rest1.Create(ctx, svc) // This will reload from storage, finding the previous 2 - rest2 := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + rest2 := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") rest2.portalMgr.randomAttempts = 0 svc = &api.Service{ @@ -719,7 +719,7 @@ func TestCreate(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} - rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t)) + rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") rest.portalMgr.randomAttempts = 0 test := resttest.New(t, rest, registry.SetError)