Merge "Adds Magnum Container Network Model to Swarm"
This commit is contained in:
commit
0839cfeb91
|
@ -37,7 +37,7 @@ baymodel_opts = [
|
||||||
help="Allowed network drivers for docker swarm baymodels. "
|
help="Allowed network drivers for docker swarm baymodels. "
|
||||||
"Use 'all' keyword to allow all drivers supported "
|
"Use 'all' keyword to allow all drivers supported "
|
||||||
"for swarm baymodels. Supported network drivers "
|
"for swarm baymodels. Supported network drivers "
|
||||||
"include docker."),
|
"include docker and flannel."),
|
||||||
cfg.StrOpt('swarm_default_network_driver',
|
cfg.StrOpt('swarm_default_network_driver',
|
||||||
default='docker',
|
default='docker',
|
||||||
help="Default network driver for docker swarm baymodels."),
|
help="Default network driver for docker swarm baymodels."),
|
||||||
|
@ -157,7 +157,7 @@ class K8sValidator(Validator):
|
||||||
|
|
||||||
class SwarmValidator(Validator):
|
class SwarmValidator(Validator):
|
||||||
|
|
||||||
supported_drivers = ['docker']
|
supported_drivers = ['docker', 'flannel']
|
||||||
allowed_drivers = cfg.CONF.baymodel.swarm_allowed_network_drivers
|
allowed_drivers = cfg.CONF.baymodel.swarm_allowed_network_drivers
|
||||||
default_driver = cfg.CONF.baymodel.swarm_default_network_driver
|
default_driver = cfg.CONF.baymodel.swarm_default_network_driver
|
||||||
|
|
||||||
|
|
|
@ -565,6 +565,8 @@ class AtomicSwarmTemplateDefinition(BaseTemplateDefinition):
|
||||||
self.add_parameter('external_network',
|
self.add_parameter('external_network',
|
||||||
baymodel_attr='external_network_id',
|
baymodel_attr='external_network_id',
|
||||||
required=True)
|
required=True)
|
||||||
|
self.add_parameter('network_driver',
|
||||||
|
baymodel_attr='network_driver')
|
||||||
self.add_parameter('tls_disabled',
|
self.add_parameter('tls_disabled',
|
||||||
baymodel_attr='tls_disabled',
|
baymodel_attr='tls_disabled',
|
||||||
required=True)
|
required=True)
|
||||||
|
@ -608,6 +610,12 @@ class AtomicSwarmTemplateDefinition(BaseTemplateDefinition):
|
||||||
extra_params['user_token'] = self._get_user_token(context, osc, bay)
|
extra_params['user_token'] = self._get_user_token(context, osc, bay)
|
||||||
extra_params['magnum_url'] = osc.magnum_url()
|
extra_params['magnum_url'] = osc.magnum_url()
|
||||||
|
|
||||||
|
label_list = ['flannel_network_cidr', 'flannel_use_vxlan',
|
||||||
|
'flannel_network_subnetlen']
|
||||||
|
|
||||||
|
for label in label_list:
|
||||||
|
extra_params[label] = baymodel.labels.get(label)
|
||||||
|
|
||||||
return super(AtomicSwarmTemplateDefinition,
|
return super(AtomicSwarmTemplateDefinition,
|
||||||
self).get_params(context, baymodel, bay,
|
self).get_params(context, baymodel, bay,
|
||||||
extra_params=extra_params,
|
extra_params=extra_params,
|
||||||
|
|
|
@ -49,7 +49,7 @@ def generate_random_coe():
|
||||||
def generate_random_coe_dep_network_driver(coe):
|
def generate_random_coe_dep_network_driver(coe):
|
||||||
allowed_driver_types = {
|
allowed_driver_types = {
|
||||||
'kubernetes': ['flannel', None],
|
'kubernetes': ['flannel', None],
|
||||||
'swarm': ['docker', None],
|
'swarm': ['docker', 'flannel', None],
|
||||||
'mesos': ['docker', None],
|
'mesos': ['docker', None],
|
||||||
}
|
}
|
||||||
driver_types = allowed_driver_types[coe]
|
driver_types = allowed_driver_types[coe]
|
||||||
|
|
|
@ -39,7 +39,11 @@ class TestBayConductorWithSwarm(base.TestCase):
|
||||||
'https_proxy': 'https_proxy',
|
'https_proxy': 'https_proxy',
|
||||||
'no_proxy': 'no_proxy',
|
'no_proxy': 'no_proxy',
|
||||||
'tls_disabled': False,
|
'tls_disabled': False,
|
||||||
'server_type': 'vm'
|
'server_type': 'vm',
|
||||||
|
'network_driver': 'network_driver',
|
||||||
|
'labels': {'flannel_network_cidr': '10.101.0.0/16',
|
||||||
|
'flannel_network_subnetlen': '26',
|
||||||
|
'flannel_use_vxlan': 'yes'}
|
||||||
}
|
}
|
||||||
self.bay_dict = {
|
self.bay_dict = {
|
||||||
'id': 1,
|
'id': 1,
|
||||||
|
@ -89,8 +93,11 @@ class TestBayConductorWithSwarm(base.TestCase):
|
||||||
'user_token': 'fake_token',
|
'user_token': 'fake_token',
|
||||||
'bay_uuid': 'some_uuid',
|
'bay_uuid': 'some_uuid',
|
||||||
'magnum_url': self.mock_osc.magnum_url.return_value,
|
'magnum_url': self.mock_osc.magnum_url.return_value,
|
||||||
'tls_disabled': False
|
'tls_disabled': False,
|
||||||
|
'network_driver': 'network_driver',
|
||||||
|
'flannel_network_cidr': '10.101.0.0/16',
|
||||||
|
'flannel_network_subnetlen': '26',
|
||||||
|
'flannel_use_vxlan': 'yes'
|
||||||
}
|
}
|
||||||
self.assertEqual(expected, definition)
|
self.assertEqual(expected, definition)
|
||||||
|
|
||||||
|
@ -101,7 +108,7 @@ class TestBayConductorWithSwarm(base.TestCase):
|
||||||
|
|
||||||
not_required = ['image_id', 'flavor_id', 'dns_nameserver',
|
not_required = ['image_id', 'flavor_id', 'dns_nameserver',
|
||||||
'docker_volume_size', 'fixed_network', 'http_proxy',
|
'docker_volume_size', 'fixed_network', 'http_proxy',
|
||||||
'https_proxy', 'no_proxy']
|
'https_proxy', 'no_proxy', 'network_driver']
|
||||||
for key in not_required:
|
for key in not_required:
|
||||||
self.baymodel_dict[key] = None
|
self.baymodel_dict[key] = None
|
||||||
self.bay_dict['discovery_url'] = 'https://discovery.etcd.io/test'
|
self.bay_dict['discovery_url'] = 'https://discovery.etcd.io/test'
|
||||||
|
@ -122,7 +129,10 @@ class TestBayConductorWithSwarm(base.TestCase):
|
||||||
'user_token': 'fake_token',
|
'user_token': 'fake_token',
|
||||||
'bay_uuid': 'some_uuid',
|
'bay_uuid': 'some_uuid',
|
||||||
'magnum_url': self.mock_osc.magnum_url.return_value,
|
'magnum_url': self.mock_osc.magnum_url.return_value,
|
||||||
'tls_disabled': False
|
'tls_disabled': False,
|
||||||
|
'flannel_network_cidr': u'10.101.0.0/16',
|
||||||
|
'flannel_network_subnetlen': u'26',
|
||||||
|
'flannel_use_vxlan': u'yes'
|
||||||
}
|
}
|
||||||
self.assertEqual(expected, definition)
|
self.assertEqual(expected, definition)
|
||||||
|
|
||||||
|
|
|
@ -397,6 +397,10 @@ class AtomicSwarmTemplateDefinitionTestCase(base.TestCase):
|
||||||
mock_context.user_name = 'fake_user'
|
mock_context.user_name = 'fake_user'
|
||||||
mock_context.tenant = 'fake_tenant'
|
mock_context.tenant = 'fake_tenant'
|
||||||
|
|
||||||
|
flannel_cidr = mock_baymodel.labels.get('flannel_network_cidr')
|
||||||
|
flannel_subnet = mock_baymodel.labels.get('flannel_network_subnetlen')
|
||||||
|
flannel_vxlan = mock_baymodel.labels.get('flannel_use_vxlan')
|
||||||
|
|
||||||
swarm_def = tdef.AtomicSwarmTemplateDefinition()
|
swarm_def = tdef.AtomicSwarmTemplateDefinition()
|
||||||
|
|
||||||
swarm_def.get_params(mock_context, mock_baymodel, mock_bay)
|
swarm_def.get_params(mock_context, mock_baymodel, mock_bay)
|
||||||
|
@ -404,7 +408,10 @@ class AtomicSwarmTemplateDefinitionTestCase(base.TestCase):
|
||||||
expected_kwargs = {'extra_params': {
|
expected_kwargs = {'extra_params': {
|
||||||
'discovery_url': 'fake_discovery_url',
|
'discovery_url': 'fake_discovery_url',
|
||||||
'user_token': mock_context.auth_token,
|
'user_token': mock_context.auth_token,
|
||||||
'magnum_url': mock_osc.magnum_url.return_value}}
|
'magnum_url': mock_osc.magnum_url.return_value,
|
||||||
|
'flannel_network_cidr': flannel_cidr,
|
||||||
|
'flannel_use_vxlan': flannel_subnet,
|
||||||
|
'flannel_network_subnetlen': flannel_vxlan}}
|
||||||
mock_get_params.assert_called_once_with(mock_context, mock_baymodel,
|
mock_get_params.assert_called_once_with(mock_context, mock_baymodel,
|
||||||
mock_bay, **expected_kwargs)
|
mock_bay, **expected_kwargs)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue