Merge "Add option to set template paths in env population"
This commit is contained in:
commit
b30c748732
|
@ -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:
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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'])
|
||||
|
|
Loading…
Reference in New Issue