X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Fopenstack%2Fcompute.py;h=4d6517ec8dd62c679c8e0f4b054e41ce3c84a725;hb=64d1436431fbf61e21bd4cc40ad015e32dbac560;hp=865b770d2ba281f8099356864d7e7ea336d7ea41;hpb=37e8d1a18031a54405ff778a153c364ceca8b4ba;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/openstack/compute.py b/src/emuvim/api/openstack/compute.py index 865b770..4d6517e 100755 --- a/src/emuvim/api/openstack/compute.py +++ b/src/emuvim/api/openstack/compute.py @@ -488,6 +488,7 @@ class OpenstackCompute(object): intf.setMAC(port.mac_address) else: port.mac_address = intf.MAC() + port.assigned_container = c # Start the real emulator command now as specified in the dockerfile # ENV SON_EMU_CMD @@ -686,12 +687,6 @@ class OpenstackCompute(object): :return: Returns the created port. :rtype: :class:`heat.resources.port` """ - port = self.find_port_by_name_or_id(name) - if port is not None and not stack_operation: - LOG.warning( - "Creating port with name %s failed, as it already exists" % name) - raise Exception("Port with name %s already exists." % name) - LOG.debug("Creating port with name %s" % name) port = Port(name) if not stack_operation: self.ports[port.id] = port @@ -707,12 +702,19 @@ class OpenstackCompute(object): :return: Returns the port reference if it was found or None :rtype: :class:`heat.resources.port` """ + # find by id if name_or_id in self.ports: return self.ports[name_or_id] - for port in self.ports.values(): - if port.name == name_or_id or port.template_name == name_or_id: - return port - + # find by name + matching_ports = filter( + lambda port: port.name == name_or_id or port.template_name == name_or_id, + self.ports.values() + ) + matching_ports_count = len(matching_ports) + if matching_ports_count == 1: + return matching_ports[0] + if matching_ports_count > 1: + raise RuntimeError("Ambiguous port name %s" % name_or_id) return None def delete_port(self, name_or_id):