X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=snaps%2Fopenstack%2Futils%2Fheat_utils.py;h=5b47280c1aafcdd27c4484a1e00bb0d02f6f5b5e;hb=15b7270542288263189abebcfa4f89c0245aaf8b;hp=f09857ab2734f9dc856c8ad8d444237595c368e7;hpb=85eb362579efbbc57e2851b2da2fd9599461f1ae;p=snaps.git diff --git a/snaps/openstack/utils/heat_utils.py b/snaps/openstack/utils/heat_utils.py index f09857a..5b47280 100644 --- a/snaps/openstack/utils/heat_utils.py +++ b/snaps/openstack/utils/heat_utils.py @@ -23,8 +23,8 @@ from oslo_serialization import jsonutils from snaps import file_utils from snaps.domain.stack import Stack, Resource, Output -from snaps.openstack.utils import keystone_utils, neutron_utils, nova_utils, \ - cinder_utils +from snaps.openstack.utils import ( + keystone_utils, neutron_utils, nova_utils, cinder_utils) __author__ = 'spisarski' @@ -155,10 +155,13 @@ def get_resources(heat_cli, stack, res_type=None): out = list() for os_resource in os_resources: if ((res_type and os_resource.resource_type == res_type) - or not res_type): + or not res_type): out.append(Resource( + name=os_resource.resource_name, resource_type=os_resource.resource_type, - resource_id=os_resource.physical_resource_id)) + resource_id=os_resource.physical_resource_id, + status=os_resource.resource_status, + status_reason=os_resource.resource_status_reason)) return out @@ -197,14 +200,32 @@ def get_stack_networks(heat_cli, neutron, stack): out = list() resources = get_resources(heat_cli, stack, 'OS::Neutron::Net') for resource in resources: - network = neutron_utils.get_network_by_id( - neutron, resource.id) + network = neutron_utils.get_network_by_id(neutron, resource.id) if network: out.append(network) return out +def get_stack_routers(heat_cli, neutron, stack): + """ + Returns a list of Network domain objects deployed by this stack + :param heat_cli: the OpenStack heat client object + :param neutron: the OpenStack neutron client object + :param stack: the SNAPS-OO Stack domain object + :return: a list of Network objects + """ + + out = list() + resources = get_resources(heat_cli, stack, 'OS::Neutron::Router') + for resource in resources: + router = neutron_utils.get_router_by_id(neutron, resource.id) + if router: + out.append(router) + + return out + + def get_stack_servers(heat_cli, nova, stack): """ Returns a list of VMInst domain objects associated with a Stack @@ -293,6 +314,29 @@ def get_stack_volume_types(heat_cli, cinder, stack): return out +def get_stack_flavors(heat_cli, nova, stack): + """ + Returns an instance of Flavor SNAPS domain object for each flavor created + by this stack + :param heat_cli: the OpenStack heat client object + :param nova: the OpenStack cinder client object + :param stack: the SNAPS-OO Stack domain object + :return: a list of Volume domain objects + """ + + out = list() + resources = get_resources(heat_cli, stack, 'OS::Nova::Flavor') + for resource in resources: + try: + flavor = nova_utils.get_flavor_by_id(nova, resource.id) + if flavor: + out.append(flavor) + except NotFound: + logger.warn('Flavor cannot be located with ID %s', resource.id) + + return out + + def parse_heat_template_str(tmpl_str): """ Takes a heat template string, performs some simple validation and returns a