X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Fopenstack%2Fheat_parser.py;h=a6416474e44a9a0c5468662e34e3c3fb79fad2a5;hb=74df451e28839c7ef2d7d29b6969c4ca59904a7c;hp=672a76b6946ab7b1f01ff5eaff84c0e8f7e4b786;hpb=7ab1dbea63ec8dd2e19e1ef9e303a829a209a34f;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/openstack/heat_parser.py b/src/emuvim/api/openstack/heat_parser.py index 672a76b..a641647 100755 --- a/src/emuvim/api/openstack/heat_parser.py +++ b/src/emuvim/api/openstack/heat_parser.py @@ -8,6 +8,9 @@ import logging import ip_handler as IP +LOG = logging.getLogger("api.openstack.heat.parser") + + class HeatParser: """ The HeatParser will parse a heat dictionary and create a stack and its components, to instantiate it within son-emu. @@ -96,7 +99,7 @@ class HeatParser: stack.nets[net_name] = self.compute.create_network(net_name, True) except Exception as e: - logging.warning('Could not create Net: ' + e.message) + LOG.warning('Could not create Net: ' + e.message) return if 'OS::Neutron::Subnet' in resource['type'] and "Net" not in resource['type']: @@ -116,7 +119,7 @@ class HeatParser: if not stack_update: net.set_cidr(IP.get_new_cidr(net.subnet_id)) except Exception as e: - logging.warning('Could not create Subnet: ' + e.message) + LOG.warning('Could not create Subnet: ' + e.message) return if 'OS::Neutron::Port' in resource['type']: @@ -135,7 +138,7 @@ class HeatParser: port.ip_address = net.get_new_ip_address(port.name) return except Exception as e: - logging.warning('Could not create Port: ' + e.message) + LOG.warning('Could not create Port: ' + e.message) self.bufferResource.append(resource) return @@ -168,7 +171,7 @@ class HeatParser: server.port_names.append(port_name) return except Exception as e: - logging.warning('Could not create Server: ' + e.message) + LOG.warning('Could not create Server: ' + e.message) return if 'OS::Neutron::RouterInterface' in resource['type']: @@ -189,7 +192,7 @@ class HeatParser: stack.routers[router_name].add_subnet(subnet_name) return except Exception as e: - logging.warning('Could not create RouterInterface: ' + e.__repr__()) + LOG.warning('Could not create RouterInterface: ' + e.__repr__()) self.bufferResource.append(resource) return @@ -202,7 +205,7 @@ class HeatParser: stack.ports[port_name].floating_ip = floating_network_id except Exception as e: - logging.warning('Could not create FloatingIP: ' + e.message) + LOG.warning('Could not create FloatingIP: ' + e.message) return if 'OS::Neutron::Router' in resource['type']: @@ -214,7 +217,17 @@ class HeatParser: print('Could not create Router: ' + e.message) return - logging.warning('Could not determine resource type!') + if 'OS::Heat::ResourceGroup' in resource['type']: + try: + embedded_resource = resource['properties']['resource_def'] + LOG.debug("Found resource in resource group: {}".format(embedded_resource)) + # recursively parse embedded resource + self.handle_resource(embedded_resource, stack, dc_label, stack_update) + except Exception as e: + print('Could not create Router: ' + e.message) + return + + LOG.warning('Could not determine resource type: {}'.format(resource['type'])) return def shorten_server_name(self, server_name, stack):