for image in self.dcli.images.list():
if len(image.tags) > 0:
for t in image.tags:
- # only use short tag names for OSM compatibility
- t = t.replace(":latest", "")
if t not in self._images:
self._images[t] = Image(t)
return self._images
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
config = c.dcinfo.get("Config", dict())
env = config.get("Env", list())
+ legacy_command_execution = False
for env_var in env:
- if "SON_EMU_CMD=" in env_var:
- cmd = str(env_var.split("=")[1])
- server.son_emu_command = cmd
+ var, cmd = map(str.strip, map(str, env_var.split('=', 1)))
+ if var == "SON_EMU_CMD" or var == "VIM_EMU_CMD":
+ LOG.info("Executing script in '{}': {}={}"
+ .format(server.name, var, cmd))
# execute command in new thread to ensure that GK is not
# blocked by VNF
t = threading.Thread(target=c.cmdPrint, args=(cmd,))
t.daemon = True
t.start()
+ legacy_command_execution = True
+ break # only execute one command
+ if not legacy_command_execution:
+ c.start()
def stop_compute(self, server):
"""
This function provides a shorter name if needed
"""
if len(name) > char_limit:
- LOG.info("Long server name: {}".format(name))
# construct a short name
h = hashlib.sha224(name).hexdigest()
h = h[0:char_limit]
- LOG.info("Short server name: {}".format(h))
+ LOG.debug("Shortened server name '%s' to '%s'" % (name, h))
return name
def delete_server(self, server):
: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
: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):