From e0d37d760ae333aa2620e6637134881d802c6549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Wed, 25 Mar 2015 14:13:59 +0000 Subject: [PATCH] enhance network_id_to_name to accept list as well --- filter_plugins/openstack.py | 19 +++++++++++++++---- .../copr-be-dev.cloud.fedoraproject.org | 3 +++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/filter_plugins/openstack.py b/filter_plugins/openstack.py index 80c4617159..ef9dea1051 100644 --- a/filter_plugins/openstack.py +++ b/filter_plugins/openstack.py @@ -62,17 +62,28 @@ def network_name_to_id(host_vars, user, password, tenant, auth_url): raise errors.AnsibleFilterError('There is no network of name {0} accessible for tenant {1}'.format(host_vars, tenant)) def network_id_to_name(host_vars, user, password, tenant, auth_url): + """ Accept one id of network or list of ids of networks and return the same + structure, but ids replaced by name of the network(s). """ auth = identity.Password(auth_url=auth_url, username=user, password=password, tenant_name=tenant) sess = session.Session(auth=auth) token = auth.get_token(sess) endpoint = auth.get_endpoint(sess, service_name='neutron', service_type='network') neutron = NeutronClient('2.0', endpoint_url=endpoint, token=token) - networks = neutron.list_networks(id=host_vars, fields='name')["networks"] - if networks: - return networks[0]['name'] + result_as_list = isinstance(host_vars, list) + if not result_as_list: + host_vars = [host_vars] + result = [] + for net in host_vars: + networks = neutron.list_networks(id=net, fields='name')["networks"] + if networks: + result += [networks[0]['name']] + else: + raise errors.AnsibleFilterError('There is no network of id {0} accessible for tenant {1}'.format(host_vars, tenant)) + if result_as_list: + return result else: - raise errors.AnsibleFilterError('There is no network of id {0} accessible for tenant {1}'.format(host_vars, tenant)) + return result[0] class FilterModule (object): def filters(self): diff --git a/inventory/host_vars/copr-be-dev.cloud.fedoraproject.org b/inventory/host_vars/copr-be-dev.cloud.fedoraproject.org index 507a9064cd..5aa9a32582 100644 --- a/inventory/host_vars/copr-be-dev.cloud.fedoraproject.org +++ b/inventory/host_vars/copr-be-dev.cloud.fedoraproject.org @@ -14,6 +14,9 @@ volumes: [ {volume_id: 'b41e4d70-8f76-44b5-ab24-d91f02ae0afa', device: '/dev/vdc inventory_tenant: persistent # name of machine in OpenStack inventory_instance_name: copr-be-dev +cloud_networks: + - net-id: persistent-net + - net-id: copr-net # Copr vars copr_hostbase: copr-be-dev