Make private network optional

If a fixed_network and fixed_subnet is specified no private network
is created by the templates and the specified network is
used instead for VMs provisioning, like in the Ironic driver.

Currently missing is the code to handle the use case where you
specify a fixed_network but not a fixed_subnet, this will come
in a following patch.

Partially Implements: blueprint decouple-private-network
Change-Id: I2003eb709b22b905063d846eb71570fc5e033618
This commit is contained in:
Mathieu Velten 2016-11-24 11:13:54 +01:00
parent a60529cb11
commit 22fb89a6e1
18 changed files with 286 additions and 84 deletions

View File

@ -0,0 +1,8 @@
resource_registry:
"Magnum::NetworkSwitcher": ../fragments/network_switcher_existing.yaml
# Cluster template
"Magnum::Optional::Neutron::Subnet": "OS::Heat::None"
"Magnum::Optional::Neutron::Net": "OS::Heat::None"
"Magnum::Optional::Neutron::Router": "OS::Heat::None"
"Magnum::Optional::Neutron::RouterInterface": "OS::Heat::None"

View File

@ -0,0 +1,8 @@
resource_registry:
"Magnum::NetworkSwitcher": ../fragments/network_switcher_private.yaml
# Cluster template
"Magnum::Optional::Neutron::Subnet": "OS::Neutron::Subnet"
"Magnum::Optional::Neutron::Net": "OS::Neutron::Net"
"Magnum::Optional::Neutron::Router": "OS::Neutron::Router"
"Magnum::Optional::Neutron::RouterInterface": "OS::Neutron::RouterInterface"

View File

@ -0,0 +1,27 @@
heat_template_version: 2014-10-16
parameters:
private_network:
type: string
default: ""
existing_network:
type: string
default: ""
private_subnet:
type: string
default: ""
existing_subnet:
type: string
default: ""
outputs:
network:
value: {get_param: existing_network}
subnet:
value: {get_param: existing_subnet}

View File

@ -0,0 +1,27 @@
heat_template_version: 2014-10-16
parameters:
private_network:
type: string
default: ""
existing_network:
type: string
default: ""
private_subnet:
type: string
default: ""
existing_subnet:
type: string
default: ""
outputs:
network:
value: {get_param: private_network}
subnet:
value: {get_param: private_subnet}

View File

@ -5,12 +5,19 @@ description: >
router for our server. router for our server.
parameters: parameters:
existing_network:
type: string
default: ""
fixed_network_cidr: existing_subnet:
type: string
default: ""
private_network_cidr:
type: string type: string
description: network range for fixed ip network description: network range for fixed ip network
fixed_network_name: private_network_name:
type: string type: string
description: fixed network name description: fixed network name
default: "" default: ""
@ -24,37 +31,45 @@ parameters:
description: uuid/name of a network to use for floating ip addresses description: uuid/name of a network to use for floating ip addresses
resources: resources:
fixed_network: private_network:
type: OS::Neutron::Net type: Magnum::Optional::Neutron::Net
properties: properties:
name: {get_param: fixed_network_name} name: {get_param: private_network_name}
fixed_subnet: private_subnet:
type: OS::Neutron::Subnet type: Magnum::Optional::Neutron::Subnet
properties: properties:
cidr: {get_param: fixed_network_cidr} cidr: {get_param: private_network_cidr}
network: {get_resource: fixed_network} network: {get_resource: private_network}
dns_nameservers: dns_nameservers:
- {get_param: dns_nameserver} - {get_param: dns_nameserver}
extrouter: extrouter:
type: OS::Neutron::Router type: Magnum::Optional::Neutron::Router
properties: properties:
external_gateway_info: external_gateway_info:
network: {get_param: external_network} network: {get_param: external_network}
extrouter_inside: extrouter_inside:
type: OS::Neutron::RouterInterface type: Magnum::Optional::Neutron::RouterInterface
properties: properties:
router_id: {get_resource: extrouter} router_id: {get_resource: extrouter}
subnet: {get_resource: fixed_subnet} subnet: {get_resource: private_subnet}
network_switch:
type: Magnum::NetworkSwitcher
properties:
private_network: {get_resource: private_network}
private_subnet: {get_resource: private_subnet}
existing_network: {get_param: existing_network}
existing_subnet: {get_param: existing_subnet}
outputs: outputs:
fixed_network: fixed_network:
description: > description: >
Created fixed network ID Network ID where to provision machines
value: {get_resource: fixed_network} value: {get_attr: [network_switch, network]}
fixed_subnet: fixed_subnet:
description: > description: >
Created fixed subnet ID Subnet ID where to provision machines
value: {get_resource: fixed_subnet} value: {get_attr: [network_switch, subnet]}

View File

@ -81,18 +81,9 @@ class K8sFedoraTemplateDefinition(k8s_template_def.K8sTemplateDefinition):
def get_env_files(self, cluster_template): def get_env_files(self, cluster_template):
env_files = [] env_files = []
if cluster_template.docker_volume_size is None: template_def.add_priv_net_env_file(env_files, cluster_template)
env_files.append('no_volume.yaml') template_def.add_volume_env_file(env_files, cluster_template)
else: template_def.add_lb_env_file(env_files, cluster_template)
env_files.append('with_volume.yaml') template_def.add_fip_env_file(env_files, cluster_template)
if cluster_template.master_lb_enabled: return env_files
env_files.append('with_master_lb.yaml')
else:
env_files.append('no_master_lb.yaml')
if cluster_template.floating_ip_enabled:
env_files.append('enable_floating_ip.yaml')
else:
env_files.append('disable_floating_ip.yaml')
return [template_def.COMMON_ENV_PATH + ef for ef in env_files]

View File

@ -60,6 +60,10 @@ class K8sTemplateDefinition(template_def.BaseTemplateDefinition):
self.add_parameter('external_network', self.add_parameter('external_network',
cluster_template_attr='external_network_id', cluster_template_attr='external_network_id',
required=True) required=True)
self.add_parameter('fixed_network',
cluster_template_attr='fixed_network')
self.add_parameter('fixed_subnet',
cluster_template_attr='fixed_subnet')
self.add_parameter('network_driver', self.add_parameter('network_driver',
cluster_template_attr='network_driver') cluster_template_attr='network_driver')
self.add_parameter('volume_driver', self.add_parameter('volume_driver',

View File

@ -58,6 +58,10 @@ class SwarmFedoraTemplateDefinition(template_def.BaseTemplateDefinition):
self.add_parameter('external_network', self.add_parameter('external_network',
cluster_template_attr='external_network_id', cluster_template_attr='external_network_id',
required=True) required=True)
self.add_parameter('fixed_network',
cluster_template_attr='fixed_network')
self.add_parameter('fixed_subnet',
cluster_template_attr='fixed_subnet')
self.add_parameter('network_driver', self.add_parameter('network_driver',
cluster_template_attr='network_driver') cluster_template_attr='network_driver')
self.add_parameter('tls_disabled', self.add_parameter('tls_disabled',
@ -115,14 +119,8 @@ class SwarmFedoraTemplateDefinition(template_def.BaseTemplateDefinition):
def get_env_files(self, cluster_template): def get_env_files(self, cluster_template):
env_files = [] env_files = []
if cluster_template.docker_volume_size is None: template_def.add_priv_net_env_file(env_files, cluster_template)
env_files.append('no_volume.yaml') template_def.add_volume_env_file(env_files, cluster_template)
else: template_def.add_lb_env_file(env_files, cluster_template)
env_files.append('with_volume.yaml')
if cluster_template.master_lb_enabled: return env_files
env_files.append('with_master_lb.yaml')
else:
env_files.append('no_master_lb.yaml')
return [template_def.COMMON_ENV_PATH + ef for ef in env_files]

View File

@ -313,3 +313,31 @@ class BaseTemplateDefinition(TemplateDefinition):
else: else:
cluster.discovery_url = discovery_url cluster.discovery_url = discovery_url
return discovery_url return discovery_url
def add_lb_env_file(env_files, cluster_template):
if cluster_template.master_lb_enabled:
env_files.append(COMMON_ENV_PATH + 'with_master_lb.yaml')
else:
env_files.append(COMMON_ENV_PATH + 'no_master_lb.yaml')
def add_volume_env_file(env_files, cluster_template):
if cluster_template.docker_volume_size is None:
env_files.append(COMMON_ENV_PATH + 'no_volume.yaml')
else:
env_files.append(COMMON_ENV_PATH + 'with_volume.yaml')
def add_fip_env_file(env_files, cluster_template):
if cluster_template.floating_ip_enabled:
env_files.append(COMMON_ENV_PATH + 'enable_floating_ip.yaml')
else:
env_files.append(COMMON_ENV_PATH + 'disable_floating_ip.yaml')
def add_priv_net_env_file(env_files, cluster_template):
if cluster_template.fixed_network:
env_files.append(COMMON_ENV_PATH + 'no_private_network.yaml')
else:
env_files.append(COMMON_ENV_PATH + 'with_private_network.yaml')

View File

@ -32,18 +32,10 @@ class CoreOSK8sTemplateDefinition(k8s_template_def.K8sTemplateDefinition):
def get_env_files(self, cluster_template): def get_env_files(self, cluster_template):
env_files = [] env_files = []
if cluster_template.master_lb_enabled:
env_files.append( template_def.add_priv_net_env_file(env_files, cluster_template)
template_def.COMMON_ENV_PATH + 'with_master_lb.yaml') template_def.add_lb_env_file(env_files, cluster_template)
else: template_def.add_fip_env_file(env_files, cluster_template)
env_files.append(
template_def.COMMON_ENV_PATH + 'no_master_lb.yaml')
if cluster_template.floating_ip_enabled:
env_files.append(
template_def.COMMON_ENV_PATH + 'enable_floating_ip.yaml')
else:
env_files.append(
template_def.COMMON_ENV_PATH + 'disable_floating_ip.yaml')
return env_files return env_files

View File

@ -16,6 +16,16 @@ parameters:
description: uuid/name of a network to use for floating ip addresses description: uuid/name of a network to use for floating ip addresses
default: public default: public
fixed_network:
type: string
description: uuid/name of an existing network to use to provision machines
default: ""
fixed_subnet:
type: string
description: uuid/name of an existing subnet to use to provision machines
default: ""
server_image: server_image:
type: string type: string
default: CoreOS default: CoreOS
@ -212,10 +222,12 @@ resources:
network: network:
type: ../../common/templates/network.yaml type: ../../common/templates/network.yaml
properties: properties:
fixed_network_cidr: {get_param: fixed_network_cidr} existing_network: {get_param: fixed_network}
existing_subnet: {get_param: fixed_subnet}
private_network_cidr: {get_param: fixed_network_cidr}
dns_nameserver: {get_param: dns_nameserver} dns_nameserver: {get_param: dns_nameserver}
external_network: {get_param: external_network} external_network: {get_param: external_network}
fixed_network_name: private private_network_name: private
api_lb: api_lb:
type: ../../common/templates/lb.yaml type: ../../common/templates/lb.yaml

View File

@ -16,6 +16,16 @@ parameters:
description: uuid/name of a network to use for floating ip addresses description: uuid/name of a network to use for floating ip addresses
default: public default: public
fixed_network:
type: string
description: uuid/name of an existing network to use to provision machines
default: ""
fixed_subnet:
type: string
description: uuid/name of an existing subnet to use to provision machines
default: ""
server_image: server_image:
type: string type: string
description: glance image used to boot the server description: glance image used to boot the server
@ -276,10 +286,12 @@ resources:
network: network:
type: ../../common/templates/network.yaml type: ../../common/templates/network.yaml
properties: properties:
fixed_network_cidr: {get_param: fixed_network_cidr} existing_network: {get_param: fixed_network}
existing_subnet: {get_param: fixed_subnet}
private_network_cidr: {get_param: fixed_network_cidr}
dns_nameserver: {get_param: dns_nameserver} dns_nameserver: {get_param: dns_nameserver}
external_network: {get_param: external_network} external_network: {get_param: external_network}
fixed_network_name: private private_network_name: private
api_lb: api_lb:
type: ../../common/templates/lb.yaml type: ../../common/templates/lb.yaml

View File

@ -24,6 +24,10 @@ class UbuntuMesosTemplateDefinition(template_def.BaseTemplateDefinition):
self.add_parameter('external_network', self.add_parameter('external_network',
cluster_template_attr='external_network_id', cluster_template_attr='external_network_id',
required=True) required=True)
self.add_parameter('fixed_network',
cluster_template_attr='fixed_network')
self.add_parameter('fixed_subnet',
cluster_template_attr='fixed_subnet')
self.add_parameter('number_of_slaves', self.add_parameter('number_of_slaves',
cluster_attr='node_count') cluster_attr='node_count')
self.add_parameter('master_flavor', self.add_parameter('master_flavor',
@ -78,10 +82,12 @@ class UbuntuMesosTemplateDefinition(template_def.BaseTemplateDefinition):
**kwargs) **kwargs)
def get_env_files(self, cluster_template): def get_env_files(self, cluster_template):
if cluster_template.master_lb_enabled: env_files = []
return [template_def.COMMON_ENV_PATH + 'with_master_lb.yaml']
else: template_def.add_priv_net_env_file(env_files, cluster_template)
return [template_def.COMMON_ENV_PATH + 'no_master_lb.yaml'] template_def.add_lb_env_file(env_files, cluster_template)
return env_files
@property @property
def driver_module_path(self): def driver_module_path(self):

View File

@ -17,6 +17,16 @@ parameters:
description: uuid/name of a network to use for floating ip addresses description: uuid/name of a network to use for floating ip addresses
default: public default: public
fixed_network:
type: string
description: uuid/name of an existing network to use to provision machines
default: ""
fixed_subnet:
type: string
description: uuid/name of an existing subnet to use to provision machines
default: ""
server_image: server_image:
type: string type: string
default: ubuntu-mesos default: ubuntu-mesos
@ -207,7 +217,9 @@ resources:
network: network:
type: ../../common/templates/network.yaml type: ../../common/templates/network.yaml
properties: properties:
fixed_network_cidr: {get_param: fixed_network_cidr} existing_network: {get_param: fixed_network}
existing_subnet: {get_param: fixed_subnet}
private_network_cidr: {get_param: fixed_network_cidr}
dns_nameserver: {get_param: dns_nameserver} dns_nameserver: {get_param: dns_nameserver}
external_network: {get_param: external_network} external_network: {get_param: external_network}

View File

@ -21,6 +21,16 @@ parameters:
type: string type: string
description: uuid/name of a network to use for floating ip addresses description: uuid/name of a network to use for floating ip addresses
fixed_network:
type: string
description: uuid/name of an existing network to use to provision machines
default: ""
fixed_subnet:
type: string
description: uuid/name of an existing subnet to use to provision machines
default: ""
discovery_url: discovery_url:
type: string type: string
description: url provided for node discovery description: url provided for node discovery
@ -246,7 +256,9 @@ resources:
network: network:
type: ../../common/templates/network.yaml type: ../../common/templates/network.yaml
properties: properties:
fixed_network_cidr: {get_param: fixed_network_cidr} existing_network: {get_param: fixed_network}
existing_subnet: {get_param: fixed_subnet}
private_network_cidr: {get_param: fixed_network_cidr}
dns_nameserver: {get_param: dns_nameserver} dns_nameserver: {get_param: dns_nameserver}
external_network: {get_param: external_network} external_network: {get_param: external_network}

View File

@ -34,6 +34,8 @@ class TestClusterConductorWithK8s(base.TestCase):
'keypair_id': 'keypair_id', 'keypair_id': 'keypair_id',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'external_network_id': 'external_network_id', 'external_network_id': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'network_driver': 'network_driver', 'network_driver': 'network_driver',
'volume_driver': 'volume_driver', 'volume_driver': 'volume_driver',
'docker_volume_size': 20, 'docker_volume_size': 20,
@ -153,6 +155,8 @@ class TestClusterConductorWithK8s(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'network_driver': 'network_driver', 'network_driver': 'network_driver',
'volume_driver': 'volume_driver', 'volume_driver': 'volume_driver',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
@ -191,9 +195,11 @@ class TestClusterConductorWithK8s(base.TestCase):
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/with_volume.yaml', ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/with_volume.yaml',
'../../common/templates/environments/no_master_lb.yaml', '../../common/templates/environments/no_master_lb.yaml',
'../../common/templates/environments/disable_floating_ip.yaml'], '../../common/templates/environments/disable_floating_ip.yaml',
],
env_files) env_files)
@patch('requests.get') @patch('requests.get')
@ -234,6 +240,8 @@ class TestClusterConductorWithK8s(base.TestCase):
'docker_storage_driver': 'devicemapper', 'docker_storage_driver': 'devicemapper',
'docker_volume_size': 20, 'docker_volume_size': 20,
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'flannel_backend': 'vxlan', 'flannel_backend': 'vxlan',
'flannel_network_cidr': '10.101.0.0/16', 'flannel_network_cidr': '10.101.0.0/16',
'flannel_network_subnetlen': '26', 'flannel_network_subnetlen': '26',
@ -267,9 +275,11 @@ class TestClusterConductorWithK8s(base.TestCase):
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/with_volume.yaml', ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/with_volume.yaml',
'../../common/templates/environments/no_master_lb.yaml', '../../common/templates/environments/no_master_lb.yaml',
'../../common/templates/environments/disable_floating_ip.yaml'], '../../common/templates/environments/disable_floating_ip.yaml',
],
env_files) env_files)
@patch('requests.get') @patch('requests.get')
@ -285,7 +295,7 @@ class TestClusterConductorWithK8s(base.TestCase):
'docker_volume_size', 'fixed_network', 'http_proxy', 'docker_volume_size', 'fixed_network', 'http_proxy',
'https_proxy', 'no_proxy', 'network_driver', 'https_proxy', 'no_proxy', 'network_driver',
'master_flavor_id', 'docker_storage_driver', 'master_flavor_id', 'docker_storage_driver',
'volume_driver'] 'volume_driver', 'fixed_subnet']
for key in not_required: for key in not_required:
self.cluster_template_dict[key] = None self.cluster_template_dict[key] = None
self.cluster_dict['discovery_url'] = 'https://discovery.etcd.io/test' self.cluster_dict['discovery_url'] = 'https://discovery.etcd.io/test'
@ -334,9 +344,11 @@ class TestClusterConductorWithK8s(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/no_volume.yaml', ['../../common/templates/environments/with_private_network.yaml',
'../../common/templates/environments/no_volume.yaml',
'../../common/templates/environments/no_master_lb.yaml', '../../common/templates/environments/no_master_lb.yaml',
'../../common/templates/environments/disable_floating_ip.yaml'], '../../common/templates/environments/disable_floating_ip.yaml',
],
env_files) env_files)
@patch('requests.get') @patch('requests.get')
@ -368,6 +380,8 @@ class TestClusterConductorWithK8s(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id', 'server_image': 'image_id',
'minion_flavor': 'flavor_id', 'minion_flavor': 'flavor_id',
@ -398,7 +412,8 @@ class TestClusterConductorWithK8s(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/no_master_lb.yaml', ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/no_master_lb.yaml',
'../../common/templates/environments/disable_floating_ip.yaml'], '../../common/templates/environments/disable_floating_ip.yaml'],
env_files) env_files)
@ -429,6 +444,8 @@ class TestClusterConductorWithK8s(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id', 'server_image': 'image_id',
'minion_flavor': 'flavor_id', 'minion_flavor': 'flavor_id',
@ -459,7 +476,8 @@ class TestClusterConductorWithK8s(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/no_master_lb.yaml', ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/no_master_lb.yaml',
'../../common/templates/environments/disable_floating_ip.yaml'], '../../common/templates/environments/disable_floating_ip.yaml'],
env_files) env_files)
@ -614,6 +632,8 @@ class TestClusterConductorWithK8s(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id', 'server_image': 'image_id',
'master_flavor': 'master_flavor_id', 'master_flavor': 'master_flavor_id',
@ -649,9 +669,11 @@ class TestClusterConductorWithK8s(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/with_volume.yaml', ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/with_volume.yaml',
'../../common/templates/environments/no_master_lb.yaml', '../../common/templates/environments/no_master_lb.yaml',
'../../common/templates/environments/disable_floating_ip.yaml'], '../../common/templates/environments/disable_floating_ip.yaml',
],
env_files) env_files)
reqget.assert_called_once_with('http://etcd/test?size=1') reqget.assert_called_once_with('http://etcd/test?size=1')

View File

@ -47,6 +47,8 @@ class TestClusterConductorWithMesos(base.TestCase):
'mesos_slave_work_dir': '/tmp/mesos/slave' 'mesos_slave_work_dir': '/tmp/mesos/slave'
}, },
'master_lb_enabled': False, 'master_lb_enabled': False,
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
} }
self.cluster_dict = { self.cluster_dict = {
'id': 1, 'id': 1,
@ -99,6 +101,8 @@ class TestClusterConductorWithMesos(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id', 'server_image': 'image_id',
'master_flavor': 'master_flavor_id', 'master_flavor': 'master_flavor_id',
@ -128,7 +132,8 @@ class TestClusterConductorWithMesos(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/no_master_lb.yaml'], ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/no_master_lb.yaml'],
env_files) env_files)
@patch('magnum.objects.ClusterTemplate.get_by_uuid') @patch('magnum.objects.ClusterTemplate.get_by_uuid')
@ -139,7 +144,8 @@ class TestClusterConductorWithMesos(base.TestCase):
mock_objects_cluster_template_get_by_uuid): mock_objects_cluster_template_get_by_uuid):
not_required = ['image_id', 'master_flavor_id', 'flavor_id', not_required = ['image_id', 'master_flavor_id', 'flavor_id',
'dns_nameserver', 'fixed_network', 'http_proxy', 'dns_nameserver', 'fixed_network', 'http_proxy',
'https_proxy', 'no_proxy', 'volume_driver'] 'https_proxy', 'no_proxy', 'volume_driver',
'fixed_subnet']
for key in not_required: for key in not_required:
self.cluster_template_dict[key] = None self.cluster_template_dict[key] = None
@ -179,7 +185,8 @@ class TestClusterConductorWithMesos(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/no_master_lb.yaml'], ['../../common/templates/environments/with_private_network.yaml',
'../../common/templates/environments/no_master_lb.yaml'],
env_files) env_files)
@patch('magnum.objects.ClusterTemplate.get_by_uuid') @patch('magnum.objects.ClusterTemplate.get_by_uuid')
@ -204,6 +211,8 @@ class TestClusterConductorWithMesos(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id', 'server_image': 'image_id',
'master_flavor': 'master_flavor_id', 'master_flavor': 'master_flavor_id',
@ -233,7 +242,8 @@ class TestClusterConductorWithMesos(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/with_master_lb.yaml'], ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/with_master_lb.yaml'],
env_files) env_files)
@patch('magnum.objects.ClusterTemplate.get_by_uuid') @patch('magnum.objects.ClusterTemplate.get_by_uuid')
@ -259,6 +269,8 @@ class TestClusterConductorWithMesos(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id', 'server_image': 'image_id',
'master_flavor': 'master_flavor_id', 'master_flavor': 'master_flavor_id',
@ -288,7 +300,8 @@ class TestClusterConductorWithMesos(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/with_master_lb.yaml'], ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/with_master_lb.yaml'],
env_files) env_files)
@patch('magnum.conductor.utils.retrieve_cluster_template') @patch('magnum.conductor.utils.retrieve_cluster_template')

View File

@ -37,6 +37,8 @@ class TestClusterConductorWithSwarm(base.TestCase):
'docker_volume_size': 20, 'docker_volume_size': 20,
'docker_storage_driver': 'devicemapper', 'docker_storage_driver': 'devicemapper',
'external_network_id': 'external_network_id', 'external_network_id': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'cluster_distro': 'fedora-atomic', 'cluster_distro': 'fedora-atomic',
'coe': 'swarm', 'coe': 'swarm',
'http_proxy': 'http_proxy', 'http_proxy': 'http_proxy',
@ -111,6 +113,8 @@ class TestClusterConductorWithSwarm(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id', 'server_image': 'image_id',
'master_flavor': 'master_flavor_id', 'master_flavor': 'master_flavor_id',
@ -144,7 +148,8 @@ class TestClusterConductorWithSwarm(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/with_volume.yaml', ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/with_volume.yaml',
'../../common/templates/environments/no_master_lb.yaml'], '../../common/templates/environments/no_master_lb.yaml'],
env_files) env_files)
@ -181,6 +186,8 @@ class TestClusterConductorWithSwarm(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id', 'server_image': 'image_id',
'master_flavor': 'master_flavor_id', 'master_flavor': 'master_flavor_id',
@ -216,7 +223,8 @@ class TestClusterConductorWithSwarm(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/with_volume.yaml', ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/with_volume.yaml',
'../../common/templates/environments/no_master_lb.yaml'], '../../common/templates/environments/no_master_lb.yaml'],
env_files) env_files)
@ -233,7 +241,7 @@ class TestClusterConductorWithSwarm(base.TestCase):
'docker_volume_size', 'fixed_network', 'http_proxy', 'docker_volume_size', 'fixed_network', 'http_proxy',
'https_proxy', 'no_proxy', 'network_driver', 'https_proxy', 'no_proxy', 'network_driver',
'master_flavor_id', 'docker_storage_driver', 'master_flavor_id', 'docker_storage_driver',
'volume_driver', 'rexray_preempt'] 'volume_driver', 'rexray_preempt', 'fixed_subnet']
for key in not_required: for key in not_required:
self.cluster_template_dict[key] = None self.cluster_template_dict[key] = None
self.cluster_dict['discovery_url'] = 'https://discovery.etcd.io/test' self.cluster_dict['discovery_url'] = 'https://discovery.etcd.io/test'
@ -280,7 +288,8 @@ class TestClusterConductorWithSwarm(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/no_volume.yaml', ['../../common/templates/environments/with_private_network.yaml',
'../../common/templates/environments/no_volume.yaml',
'../../common/templates/environments/no_master_lb.yaml'], '../../common/templates/environments/no_master_lb.yaml'],
env_files) env_files)
@ -313,6 +322,8 @@ class TestClusterConductorWithSwarm(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id', 'server_image': 'image_id',
'master_flavor': 'master_flavor_id', 'master_flavor': 'master_flavor_id',
@ -346,7 +357,8 @@ class TestClusterConductorWithSwarm(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/with_volume.yaml', ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/with_volume.yaml',
'../../common/templates/environments/with_master_lb.yaml'], '../../common/templates/environments/with_master_lb.yaml'],
env_files) env_files)
@ -380,6 +392,8 @@ class TestClusterConductorWithSwarm(base.TestCase):
expected = { expected = {
'ssh_key_name': 'keypair_id', 'ssh_key_name': 'keypair_id',
'external_network': 'external_network_id', 'external_network': 'external_network_id',
'fixed_network': 'fixed_network',
'fixed_subnet': 'fixed_subnet',
'dns_nameserver': 'dns_nameserver', 'dns_nameserver': 'dns_nameserver',
'server_image': 'image_id', 'server_image': 'image_id',
'master_flavor': 'master_flavor_id', 'master_flavor': 'master_flavor_id',
@ -413,7 +427,8 @@ class TestClusterConductorWithSwarm(base.TestCase):
} }
self.assertEqual(expected, definition) self.assertEqual(expected, definition)
self.assertEqual( self.assertEqual(
['../../common/templates/environments/with_volume.yaml', ['../../common/templates/environments/no_private_network.yaml',
'../../common/templates/environments/with_volume.yaml',
'../../common/templates/environments/with_master_lb.yaml'], '../../common/templates/environments/with_master_lb.yaml'],
env_files) env_files)