Adds Magnum Container Network Model to Swarm
1. Updates network-driver API validation. 2. Updates AtomicSwarm template definition for swarm, flannel and labels. 3. Adds initial unit test. Partially-Implements: blueprint extend-baymodel-net-attributes Partially-Implements: blueprint conductor-template-net-update Change-Id: Ia80f239bcbd29ae14de25ae3e915a49d9b9bafd1
This commit is contained in:
parent
de1edaec40
commit
00b6cd9953
|
@ -36,7 +36,7 @@ baymodel_opts = [
|
|||
help="Allowed network drivers for docker swarm baymodels. "
|
||||
"Use 'all' keyword to allow all drivers supported "
|
||||
"for swarm baymodels. Supported network drivers "
|
||||
"include docker."),
|
||||
"include docker and flannel."),
|
||||
cfg.StrOpt('swarm_default_network_driver',
|
||||
default='docker',
|
||||
help="Default network driver for docker swarm baymodels."),
|
||||
|
@ -156,7 +156,7 @@ class K8sValidator(Validator):
|
|||
|
||||
class SwarmValidator(Validator):
|
||||
|
||||
supported_drivers = ['docker']
|
||||
supported_drivers = ['docker', 'flannel']
|
||||
allowed_drivers = cfg.CONF.baymodel.swarm_allowed_network_drivers
|
||||
default_driver = cfg.CONF.baymodel.swarm_default_network_driver
|
||||
|
||||
|
|
|
@ -565,6 +565,8 @@ class AtomicSwarmTemplateDefinition(BaseTemplateDefinition):
|
|||
self.add_parameter('external_network',
|
||||
baymodel_attr='external_network_id',
|
||||
required=True)
|
||||
self.add_parameter('network_driver',
|
||||
baymodel_attr='network_driver')
|
||||
self.add_parameter('tls_disabled',
|
||||
baymodel_attr='tls_disabled',
|
||||
required=True)
|
||||
|
@ -608,6 +610,12 @@ class AtomicSwarmTemplateDefinition(BaseTemplateDefinition):
|
|||
extra_params['user_token'] = self._get_user_token(context, osc, bay)
|
||||
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,
|
||||
self).get_params(context, baymodel, bay,
|
||||
extra_params=extra_params,
|
||||
|
|
|
@ -49,7 +49,7 @@ def generate_random_coe():
|
|||
def generate_random_coe_dep_network_driver(coe):
|
||||
allowed_driver_types = {
|
||||
'kubernetes': ['flannel', None],
|
||||
'swarm': ['docker', None],
|
||||
'swarm': ['docker', 'flannel', None],
|
||||
'mesos': ['docker', None],
|
||||
}
|
||||
driver_types = allowed_driver_types[coe]
|
||||
|
|
|
@ -39,7 +39,11 @@ class TestBayConductorWithSwarm(base.TestCase):
|
|||
'https_proxy': 'https_proxy',
|
||||
'no_proxy': 'no_proxy',
|
||||
'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 = {
|
||||
'id': 1,
|
||||
|
@ -89,8 +93,11 @@ class TestBayConductorWithSwarm(base.TestCase):
|
|||
'user_token': 'fake_token',
|
||||
'bay_uuid': 'some_uuid',
|
||||
'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)
|
||||
|
||||
|
@ -101,7 +108,7 @@ class TestBayConductorWithSwarm(base.TestCase):
|
|||
|
||||
not_required = ['image_id', 'flavor_id', 'dns_nameserver',
|
||||
'docker_volume_size', 'fixed_network', 'http_proxy',
|
||||
'https_proxy', 'no_proxy']
|
||||
'https_proxy', 'no_proxy', 'network_driver']
|
||||
for key in not_required:
|
||||
self.baymodel_dict[key] = None
|
||||
self.bay_dict['discovery_url'] = 'https://discovery.etcd.io/test'
|
||||
|
@ -122,7 +129,10 @@ class TestBayConductorWithSwarm(base.TestCase):
|
|||
'user_token': 'fake_token',
|
||||
'bay_uuid': 'some_uuid',
|
||||
'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)
|
||||
|
||||
|
|
|
@ -397,6 +397,10 @@ class AtomicSwarmTemplateDefinitionTestCase(base.TestCase):
|
|||
mock_context.user_name = 'fake_user'
|
||||
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.get_params(mock_context, mock_baymodel, mock_bay)
|
||||
|
@ -404,7 +408,10 @@ class AtomicSwarmTemplateDefinitionTestCase(base.TestCase):
|
|||
expected_kwargs = {'extra_params': {
|
||||
'discovery_url': 'fake_discovery_url',
|
||||
'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_bay, **expected_kwargs)
|
||||
|
||||
|
|
Loading…
Reference in New Issue