Merge "Add option to set template paths in env population"

This commit is contained in:
Zuul 2021-07-01 19:24:36 +00:00 committed by Gerrit Code Review
commit b30c748732
10 changed files with 73 additions and 46 deletions

View File

@ -15,6 +15,8 @@
# under the License.
from copy import deepcopy as dcopy
import os
import jsonschema
import metalsmith
@ -491,14 +493,13 @@ def check_existing(instances, provisioner, baremetal):
def populate_environment(instance_uuids, provisioner, environment,
ctlplane_network):
ctlplane_network, templates):
resource_registry = environment.setdefault(
'resource_registry', {})
resource_registry.setdefault(
'OS::TripleO::DeployedServer::ControlPlanePort',
'/usr/share/openstack-tripleo-heat-templates'
'/deployed-server/deployed-neutron-port.yaml')
os.path.join(templates, 'deployed-server/deployed-neutron-port.yaml'))
port_map = (environment.setdefault('parameter_defaults', {})
.setdefault('DeployedServerPortMap', {}))
for uuid in instance_uuids:

View File

@ -64,6 +64,11 @@ options:
description:
- Name of control plane network
default: ctlplane
templates:
description:
- The path to tripleo-heat-templates root directory
type: path
default: /usr/share/openstack-tripleo-heat-templates
'''
RETURN = '''
@ -117,7 +122,8 @@ def main():
instance_uuids=instance_uuids,
provisioner=provisioner,
environment=module.params['environment'],
ctlplane_network=module.params['ctlplane_network']
ctlplane_network=module.params['ctlplane_network'],
templates=module.params['templates']
)
module.exit_json(
changed=False,

View File

@ -15,7 +15,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import ipaddress
import os
import yaml
from ansible.module_utils.basic import AnsibleModule
@ -45,6 +45,12 @@ options:
description:
- Structure describing a TripleO composable network
type: list
templates:
description:
- The path to tripleo-heat-templates root directory
type: path
default: /usr/share/openstack-tripleo-heat-templates
author:
- Harald Jensås <hjensas@redhat.com>
'''
@ -70,12 +76,12 @@ EXAMPLES = '''
- name: External
- name: InternalApi
name_lower: internal_api
templates: /home/stack/tripleo-heat-templates
register: network_environment
'''
def get_net_ip_version(subnets, net_data):
ip_versions = {subnet.ip_version for subnet in subnets}
if {4, 6} == ip_versions:
@ -121,7 +127,8 @@ def get_subnets_attrs(subnets):
return subnets_map
def set_composable_network_attrs(module, conn, name_lower, net_data, attrs=None,
def set_composable_network_attrs(module, conn, name_lower, net_data,
attrs=None,
cidr_map=None, ip_version_map=None):
net = conn.network.find_network(name_lower)
if net is None:
@ -157,6 +164,7 @@ def run_module():
)
networks_data = module.params['net_data']
templates = module.params['templates']
try:
_, conn = openstack_cloud_from_module(module)
@ -175,9 +183,8 @@ def run_module():
result['environment'] = {
'resource_registry': {
'OS::TripleO::Network': (
'/usr/share/openstack-tripleo-heat-templates'
'/network/deployed_networks.yaml'),
'OS::TripleO::Network':
os.path.join(templates, 'network/deployed_networks.yaml'),
},
'parameter_defaults': {
'DeployedNetworkEnvironment': {
@ -193,7 +200,7 @@ def run_module():
except Exception as err:
result['error'] = str(err)
result['msg'] = ("Error overcloud network provision failed!")
result['msg'] = "Error overcloud network provision failed!"
module.fail_json(**result)

View File

@ -56,6 +56,11 @@ options:
- Structure with port data mapped by node and network
type: dict
default: {}
templates:
description:
- The path to tripleo-heat-templates root directory
type: path
default: /usr/share/openstack-tripleo-heat-templates
author:
- Harald Jensås <hjensas@redhat.com>
@ -102,7 +107,6 @@ EXAMPLES = '''
CTLPLANE_NETWORK = 'ctlplane'
DEFAULT_THT_DIR = '/usr/share/openstack-tripleo-heat-templates'
REGISTRY_KEY_TPL = 'OS::TripleO::{role}::Ports::{net_name}Port'
PORT_PATH_TPL = 'network/ports/deployed_{net_name_lower}.yaml'
@ -137,7 +141,8 @@ def get_net_name_map(conn, role_net_map):
return _map
def update_environment(environment, node_port_map, role_net_map, net_name_map):
def update_environment(environment, node_port_map, role_net_map, net_name_map,
templates):
resource_registry = environment.setdefault('resource_registry', {})
parameter_defaults = environment.setdefault('parameter_defaults', {})
@ -149,7 +154,7 @@ def update_environment(environment, node_port_map, role_net_map, net_name_map):
registry_key = REGISTRY_KEY_TPL.format(role=role,
net_name=net_name_map[net])
template_path = os.path.join(
DEFAULT_THT_DIR, PORT_PATH_TPL.format(net_name_lower=net))
templates, PORT_PATH_TPL.format(net_name_lower=net))
resource_registry.update({registry_key: template_path})
_map = parameter_defaults.setdefault('NodePortMap', {})
@ -177,13 +182,14 @@ def run_module():
environment = result['environment'] = module.params['environment']
role_net_map = module.params['role_net_map']
node_port_map = module.params['node_port_map']
templates = module.params['templates']
try:
_, conn = openstack_cloud_from_module(module)
net_name_map = get_net_name_map(conn, role_net_map)
update_environment(environment, node_port_map, role_net_map,
net_name_map)
net_name_map, templates)
result['success'] = True
@ -191,7 +197,7 @@ def run_module():
except Exception as err:
result['error'] = str(err)
result['msg'] = ("Error overcloud network provision failed!")
result['msg'] = "Error overcloud network provision failed!"
module.fail_json(**result)

View File

@ -98,6 +98,12 @@ options:
- Dns Name (Optional)
type: str
required: True
templates:
description:
- The path to tripleo-heat-templates root directory
type: path
default: /usr/share/openstack-tripleo-heat-templates
author:
- Harald Jensås <hjensas@redhat.com>
'''
@ -118,7 +124,6 @@ EXAMPLES = '''
dest: /path/overcloud_vip_env.yaml
'''
DEFAULT_THT_DIR = '/usr/share/openstack-tripleo-heat-templates'
REGISTRY_KEY_TPL = 'OS::TripleO::Network::Ports::{net_name}VipPort'
PORT_PATH_TPL = 'network/ports/deployed_vip_{net_name_lower}.yaml'
@ -166,7 +171,7 @@ def add_vip_to_env(conn, vip_port_map, port, net_name_lower):
subnet.cidr.split('/')[1]])
def populate_net_vip_env(conn, stack, net_maps, vip_data, env):
def populate_net_vip_env(conn, stack, net_maps, vip_data, env, templates):
low_up_map = get_net_name_map(conn)
resource_reg = env['resource_registry'] = {}
@ -186,8 +191,7 @@ def populate_net_vip_env(conn, stack, net_maps, vip_data, env):
resource_reg[REGISTRY_KEY_TPL.format(
net_name=low_up_map[net_name_lower])] = os.path.join(
DEFAULT_THT_DIR, PORT_PATH_TPL.format(
net_name_lower=net_name_lower))
templates, PORT_PATH_TPL.format(net_name_lower=net_name_lower))
if net_name_lower == 'ctlplane':
add_ctlplane_vip_to_env(conn, ctlplane_vip_data, port)
@ -215,11 +219,13 @@ def run_module():
stack = module.params['stack_name']
vip_data = module.params['vip_data']
templates = module.params['templates']
try:
_, conn = openstack_cloud_from_module(module)
net_maps = n_utils.create_name_id_maps(conn)
populate_net_vip_env(conn, stack, net_maps, vip_data, result['env'])
populate_net_vip_env(conn, stack, net_maps, vip_data, result['env'],
templates)
result['changed'] = True if result['env'] else False
result['success'] = True if result['env'] else False

View File

@ -23,6 +23,7 @@
any_errors_fatal: true
vars:
overwrite: false
templates: /usr/share/openstack-tripleo-heat-templates
pre_tasks:
- fail:
msg: network_data_path is a required input
@ -60,6 +61,7 @@
- name: Populate environment
tripleo_network_populate_environment:
net_data: "{{ network_data }}"
templates: "{{ templates }}"
register: network_environment
- name: Write deployed networks environment file

View File

@ -22,6 +22,7 @@
any_errors_fatal: true
vars:
overwrite: false
templates: /usr/share/openstack-tripleo-heat-templates
pre_tasks:
- fail:
msg: stack_name is a required input
@ -61,6 +62,7 @@
tripleo_overcloud_network_vip_populate_environment:
stack_name: "{{ stack_name | default('overcloud') }}"
vip_data: "{{ vip_data | default([]) }}"
templates: "{{ templates }}"
register: vip_environment
- name: Write deployed Virtual IPs environment file

View File

@ -26,6 +26,7 @@
ssh_network: ctlplane
python_interpreter: null
ssh_private_key_file: /home/stack/.ssh/id_rsa
templates: /usr/share/openstack-tripleo-heat-templates
pre_tasks:
- fail:
@ -154,6 +155,7 @@
tripleo_baremetal_populate_environment:
environment: "{{ baremetal_instances.environment }}"
instances: "{{ baremetal_provisioned.instances + baremetal_existing.instances }}"
templates: "{{ templates }}"
register: baremetal_environment
- name: Populate environment with unmanaged nodes
@ -169,6 +171,7 @@
environment: "{{ unmanaged_environment.environment }}"
role_net_map: "{{ baremetal_instances.role_net_map }}"
node_port_map: "{{ instance_network_ports.node_port_map }}"
templates: "{{ templates }}"
register: network_ports_environment
when: manage_network_ports|default(false)

View File

@ -44,8 +44,9 @@ class TestTripleoNetworkPortsPopulateEnvironment(tests_base.TestCase):
'RoleB': ['ctlplane', 'foo', 'bar']
}
net_name_map = {'foo': 'Foo', 'bar': 'Bar', 'baz': 'Baz'}
templates = '/foo/tht_root'
plugin.update_environment(env, node_port_map, role_net_map,
net_name_map)
net_name_map, templates)
self.assertEqual(
{'FooParam': 'foo',
'BarParam': 'bar',
@ -59,20 +60,16 @@ class TestTripleoNetworkPortsPopulateEnvironment(tests_base.TestCase):
self.assertEqual(
{'OS::Some::Existing::Resource': '/foo/bar/some_resource.yaml',
'OS::TripleO::RoleA::Ports::BarPort':
'/usr/share/openstack-tripleo-heat-templates/'
'network/ports/deployed_bar.yaml',
'/foo/tht_root/network/ports/deployed_bar.yaml',
'OS::TripleO::RoleA::Ports::BazPort':
'/usr/share/openstack-tripleo-heat-templates/'
'network/ports/deployed_baz.yaml',
'/foo/tht_root/network/ports/deployed_baz.yaml',
'OS::TripleO::RoleA::Ports::FooPort':
'/usr/share/openstack-tripleo-heat-templates/'
'network/ports/deployed_foo.yaml',
'/foo/tht_root/network/ports/deployed_foo.yaml',
'OS::TripleO::RoleB::Ports::BarPort':
'/usr/share/openstack-tripleo-heat-templates/'
'network/ports/deployed_bar.yaml',
'/foo/tht_root/network/ports/deployed_bar.yaml',
'OS::TripleO::RoleB::Ports::FooPort':
'/usr/share/openstack-tripleo-heat-templates/'
'network/ports/deployed_foo.yaml'}, env['resource_registry'])
'/foo/tht_root/network/ports/deployed_foo.yaml'},
env['resource_registry'])
@mock.patch.object(openstack.connection, 'Connection', autospec=True)
def test_get_net_name_map(self, mock_conn):

View File

@ -148,8 +148,9 @@ class TestTripleoOvercloudVipProvision(tests_base.TestCase):
{'name': 'storage_mgmt_virtual_ip', 'network': 'storage_mgmt'},
{'name': 'external_virtual_ip', 'network': 'external'}]
env = {}
templates = '/foo/tht_root'
plugin.populate_net_vip_env(mock_conn, 'stack', NET_MAPS, vip_data,
env)
env, templates)
self.assertEqual({
'ControlPlaneVipData': {
'name': 'control_virtual_ip',
@ -167,17 +168,13 @@ class TestTripleoOvercloudVipProvision(tests_base.TestCase):
'ip_address_uri': '10.0.3.1',
'ip_subnet': '10.0.3.1/24'}}},
env['parameter_defaults'])
self.assertEqual(
{'OS::TripleO::Network::Ports::ControlPlaneVipPort': (
'/usr/share/openstack-tripleo-heat-templates/network/ports'
'/deployed_vip_ctlplane.yaml'),
'OS::TripleO::Network::Ports::ExternalVipPort': (
'/usr/share/openstack-tripleo-heat-templates/network/ports/'
'deployed_vip_external.yaml'),
'OS::TripleO::Network::Ports::InternalApiVipPort': (
'/usr/share/openstack-tripleo-heat-templates/network/ports/'
'deployed_vip_internal_api.yaml'),
'OS::TripleO::Network::Ports::StorageMgmtVipPort': (
'/usr/share/openstack-tripleo-heat-templates/network/ports/'
'deployed_vip_storage_mgmt.yaml')},
self.assertEqual({
'OS::TripleO::Network::Ports::ControlPlaneVipPort':
'/foo/tht_root/network/ports/deployed_vip_ctlplane.yaml',
'OS::TripleO::Network::Ports::ExternalVipPort':
'/foo/tht_root/network/ports/deployed_vip_external.yaml',
'OS::TripleO::Network::Ports::InternalApiVipPort':
'/foo/tht_root/network/ports/deployed_vip_internal_api.yaml',
'OS::TripleO::Network::Ports::StorageMgmtVipPort':
'/foo/tht_root/network/ports/deployed_vip_storage_mgmt.yaml'},
env['resource_registry'])