diff --git a/tripleo_ansible/ansible_plugins/modules/tripleo_overcloud_network_vip_extract.py b/tripleo_ansible/ansible_plugins/modules/tripleo_overcloud_network_vip_extract.py index a95d53f0d..2eca197bb 100644 --- a/tripleo_ansible/ansible_plugins/modules/tripleo_overcloud_network_vip_extract.py +++ b/tripleo_ansible/ansible_plugins/modules/tripleo_overcloud_network_vip_extract.py @@ -96,54 +96,25 @@ EXAMPLES = ''' ''' -def update_vip_data(conn, network, vip_ports, vip_data): - try: - vip = next(vip_ports) - except StopIteration: - return - - if not vip.fixed_ips: - return - - subnet = conn.network.get_subnet(vip.fixed_ips[0]['subnet_id']) - if (vip.dns_name is not None): - vip_data.append(dict(name=vip.name, - network=network.name, - subnet=subnet.name, - ip_address=vip.fixed_ips[0]['ip_address'], - dns_name=vip.dns_name)) - else: - vip_data.append(dict(name=vip.name, - network=network.name, - subnet=subnet.name, - ip_address=vip.fixed_ips[0]['ip_address'])) - - -def find_net_vips(conn, net_resrcs, vip_data): - for net in net_resrcs: - for res in net_resrcs[net]: - if not net_resrcs[net][res]['resource_type'] == n_utils.TYPE_NET: - continue - - network = conn.network.get_network( - net_resrcs[net][res][n_utils.RES_ID]) - vip_ports = conn.network.ports( - network_id=network.id, - tags='tripleo_vip_net={}'.format(network.name)) - - update_vip_data(conn, network, vip_ports, vip_data) - - -def find_ctlplane_vip(conn, vip_data): - network = conn.network.find_network('ctlplane') - vip_ports = conn.network.ports( - network_id=network.id, - name='control{}'.format(n_utils.NET_VIP_SUFFIX)) - - update_vip_data(conn, network, vip_ports, vip_data) +def find_net_vips(conn, stack): + return [ + (dict(name=vip.name, + network=conn.network.get_network(vip['network_id'])['name'], + subnet=conn.network.get_subnet(vip.fixed_ips[0]['subnet_id'])['name'], + ip_address=vip.fixed_ips[0]['ip_address'], + dns_name=vip.dns_name)) + if vip.dns_name is not None else + (dict(name=vip.name, + network=conn.network.get_network(vip['network_id'])['name'], + subnet=conn.network.get_subnet(vip.fixed_ips[0]['subnet_id'])['name'], + ip_address=vip.fixed_ips[0]['ip_address'])) + for vip in conn.network.ports(tags='tripleo_stack_name={}'.format(stack)) + if [x for x in vip['tags'] if x.startswith('tripleo_vip_net=')] + ] def run_module(): + result = dict( success=False, changed=False, @@ -165,10 +136,8 @@ def run_module(): try: _, conn = openstack_cloud_from_module(module) - net_resources = n_utils.get_overcloud_network_resources(conn, stack) - find_net_vips(conn, net_resources, result['vip_data']) - find_ctlplane_vip(conn, result['vip_data']) + result['vip_data'] = find_net_vips(conn, stack) result['changed'] = True if result['vip_data'] else False result['success'] = True if result['vip_data'] else False module.exit_json(**result) diff --git a/tripleo_ansible/tests/modules/test_tripleo_overcloud_network_vip_extract.py b/tripleo_ansible/tests/modules/test_tripleo_overcloud_network_vip_extract.py index e2d3fc342..cd188cc33 100644 --- a/tripleo_ansible/tests/modules/test_tripleo_overcloud_network_vip_extract.py +++ b/tripleo_ansible/tests/modules/test_tripleo_overcloud_network_vip_extract.py @@ -37,16 +37,6 @@ class TestTripleoOvercloudVipExtract(tests_base.TestCase): self.a2g = lambda x: (n for n in x) def test_find_net_vips(self, mock_conn): - fake_net_resources = { - 'StorageNetwork': { - 'InternalApiNetwork': {'physical_resource_id': 'fake-id', - 'resource_type': n_utils.TYPE_NET}, - 'StorageSubnet': {'physical_resource_id': 'fake-id', - 'resource_type': n_utils.TYPE_SUBNET}, - 'StorageSubnet_leaf1': {'physical_resource_id': 'fake-id', - 'resource_type': n_utils.TYPE_SUBNET} - } - } fake_network = stubs.FakeNeutronNetwork( id='internal_api_id', name='internal_api') @@ -55,47 +45,21 @@ class TestTripleoOvercloudVipExtract(tests_base.TestCase): name='internal_api_subnet') fake_vip_port = stubs.FakeNeutronPort( id='internal_api_vip_id', + network_id='internal_api_id', name='internal_api_virtual_ip', fixed_ips=[{'subnet_id': 'internal_api_subnet_id', 'ip_address': '1.2.3.4'}], + tags=['tripleo_stack_name=overcloud', 'tripleo_vip_net=internal_api'], dns_name='internalapi.localdomain' ) mock_conn.network.get_network.return_value = fake_network mock_conn.network.get_subnet.return_value = fake_subnet mock_conn.network.ports.return_value = self.a2g([fake_vip_port]) - vip_data = list() - plugin.find_net_vips(mock_conn, fake_net_resources, vip_data) + vip_data = plugin.find_net_vips(mock_conn, 'overcloud') self.assertEqual([{'name': 'internal_api_virtual_ip', 'network': 'internal_api', 'subnet': 'internal_api_subnet', 'ip_address': '1.2.3.4', 'dns_name': 'internalapi.localdomain'}], vip_data) - - def test_find_ctlplane_vip(self, mock_conn): - fake_network = stubs.FakeNeutronNetwork( - id='ctlplane_id', - name='ctlplane') - fake_subnet = stubs.FakeNeutronSubnet( - id='ctlplane_subnet_id', - name='ctlplane-subnet') - fake_vip_port = stubs.FakeNeutronPort( - id='ctlplane_vip_id', - name='control_virtual_ip', - fixed_ips=[{'subnet_id': 'ctlplane_subnet_id', - 'ip_address': '4.3.2.1'}], - dns_name='ctlplane.localdomain' - ) - mock_conn.network.find_network.return_value = fake_network - mock_conn.network.get_subnet.return_value = fake_subnet - mock_conn.network.ports.return_value = self.a2g([fake_vip_port]) - - vip_data = list() - plugin.find_ctlplane_vip(mock_conn, vip_data) - self.assertEqual([{'name': 'control_virtual_ip', - 'network': 'ctlplane', - 'subnet': 'ctlplane-subnet', - 'ip_address': '4.3.2.1', - 'dns_name': 'ctlplane.localdomain'}], - vip_data)