Get overcloud domain name from ctlplane
The ctlplane networks dns_domain is 'ctlplane.' + overcloud_domain_name from undercloud.conf. Since overcloud_domain_name should match THT parameter CloudDomain we can use this to resolve the proper domain name in case the user did'nt provide a name in network data input. Change-Id: Ia64d68f0f629f0dc708c3dd59c305425627be7be
This commit is contained in:
parent
3ffc7e85a8
commit
2ea8258dfb
|
@ -62,6 +62,11 @@ RETURN = '''
|
|||
|
||||
EXAMPLES = '''
|
||||
- name: Create composable networks
|
||||
default_network:
|
||||
description:
|
||||
- Default control plane network
|
||||
type: string
|
||||
default: ctlplane
|
||||
tripleo_composable_network:
|
||||
net_data:
|
||||
name: Storage
|
||||
|
@ -93,6 +98,7 @@ EXAMPLES = '''
|
|||
vlan: 21
|
||||
'''
|
||||
|
||||
DEFAULT_NETWORK = 'ctlplane'
|
||||
DEFAULT_ADMIN_STATE = False
|
||||
DEFAULT_SHARED = False
|
||||
DEFAULT_DOMAIN = 'localdomain.'
|
||||
|
@ -101,6 +107,14 @@ DEFAULT_MTU = 1500
|
|||
DEFAULT_VLAN_ID = 1
|
||||
|
||||
|
||||
def get_overcloud_domain_name(conn, default_network):
|
||||
network = conn.network.find_network(default_network)
|
||||
if network is not None and network.dns_domain:
|
||||
return network.dns_domain.partition('.')[-1]
|
||||
else:
|
||||
return DEFAULT_DOMAIN
|
||||
|
||||
|
||||
def build_network_tag_field(net_data):
|
||||
tags = []
|
||||
service_net_map_replace = net_data.get('service_net_map_replace')
|
||||
|
@ -123,12 +137,13 @@ def build_subnet_tag_field(subnet_data):
|
|||
return tags
|
||||
|
||||
|
||||
def create_net_spec(net_data):
|
||||
def create_net_spec(net_data, overcloud_domain_name):
|
||||
name_lower = net_data.get('name_lower', net_data['name'].lower())
|
||||
net_spec = {
|
||||
'admin_state_up': net_data.get('admin_state_up', DEFAULT_ADMIN_STATE),
|
||||
'dns_domain': net_data.get(
|
||||
'dns_domain', '.'.join([net_data['name'].lower(), DEFAULT_DOMAIN])
|
||||
'dns_domain', '.'.join([net_data['name'].lower(),
|
||||
overcloud_domain_name])
|
||||
),
|
||||
'mtu': net_data.get('mtu', DEFAULT_MTU),
|
||||
'name': net_data['name'],
|
||||
|
@ -401,6 +416,7 @@ def run_module():
|
|||
**openstack_module_kwargs()
|
||||
)
|
||||
|
||||
default_network = module.params.get('default_network', DEFAULT_NETWORK)
|
||||
net_data = module.params['net_data']
|
||||
error_messages = network_data_v2.validate_json_schema(net_data)
|
||||
if error_messages:
|
||||
|
@ -410,7 +426,8 @@ def run_module():
|
|||
_, conn = openstack_cloud_from_module(module)
|
||||
|
||||
# Create or update the network
|
||||
net_spec = create_net_spec(net_data)
|
||||
net_spec = create_net_spec(
|
||||
net_data, get_overcloud_domain_name(conn, default_network))
|
||||
changed, network = create_or_update_network(conn, module, net_spec)
|
||||
result['changed'] = changed if changed else result['changed']
|
||||
|
||||
|
|
|
@ -52,9 +52,10 @@ class TestTripleoComposableNetwork(tests_base.TestCase):
|
|||
|
||||
def test_create_net_spec(self):
|
||||
net_data = {'name': 'NetName'}
|
||||
overcloud_domain_name = 'example.com.'
|
||||
expected = {
|
||||
'admin_state_up': plugin.DEFAULT_ADMIN_STATE,
|
||||
'dns_domain': '.'.join(['netname', plugin.DEFAULT_DOMAIN]),
|
||||
'dns_domain': '.'.join(['netname', overcloud_domain_name]),
|
||||
'mtu': plugin.DEFAULT_MTU,
|
||||
'name': 'NetName',
|
||||
'shared': plugin.DEFAULT_SHARED,
|
||||
|
@ -62,7 +63,8 @@ class TestTripleoComposableNetwork(tests_base.TestCase):
|
|||
'provider:network_type': plugin.DEFAULT_NETWORK_TYPE,
|
||||
'tags': [],
|
||||
}
|
||||
result = plugin.create_net_spec(net_data)
|
||||
|
||||
result = plugin.create_net_spec(net_data, overcloud_domain_name)
|
||||
self.assertEqual(expected, result)
|
||||
|
||||
def test_validate_network_update(self):
|
||||
|
@ -594,3 +596,28 @@ class TestTripleoComposableNetwork(tests_base.TestCase):
|
|||
msg='Multiple segments with no name attribute exist on '
|
||||
'network {}, unable to reliably adopt the implicit '
|
||||
'segment.'.format(fake_network.id))
|
||||
|
||||
@mock.patch.object(openstack.connection, 'Connection', autospec=True)
|
||||
def test_get_overcloud_domain_name(self, mock_conn):
|
||||
mock_conn.network.find_network.return_value = stubs.FakeNeutronNetwork(
|
||||
dns_domain='ctlplane.example.com.')
|
||||
self.assertEqual(
|
||||
'example.com.',
|
||||
plugin.get_overcloud_domain_name(mock_conn, 'ctlplane'))
|
||||
|
||||
@mock.patch.object(openstack.connection, 'Connection', autospec=True)
|
||||
def test_get_overcloud_domain_name_no_ctlplane_network(self, mock_conn):
|
||||
mock_conn.network.find_network.return_value = None
|
||||
self.assertEqual(
|
||||
plugin.DEFAULT_DOMAIN,
|
||||
plugin.get_overcloud_domain_name(mock_conn, 'ctlplane')
|
||||
)
|
||||
|
||||
@mock.patch.object(openstack.connection, 'Connection', autospec=True)
|
||||
def test_get_overcloud_domain_name_no_ctlplane_dns_domain(self, mock_conn):
|
||||
mock_conn.network.find_network.return_value = stubs.FakeNeutronNetwork(
|
||||
dns_domain='')
|
||||
self.assertEqual(
|
||||
plugin.DEFAULT_DOMAIN,
|
||||
plugin.get_overcloud_domain_name(mock_conn, 'ctlplane')
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue