external_network = os.environ.get("EXTERNAL_NETWORK", "net04_ext")
have_external_network = any(net.get("external_network") for net in networks.values())
- if sorted_networks and not have_external_network:
- # no external net defined, assign it to first network using os.environ
- sorted_networks[0][1]["external_network"] = external_network
+ if not have_external_network:
+ # try looking for mgmt network first
+ try:
+ networks['mgmt']["external_network"] = external_network
+ except KeyError:
+ if sorted_networks:
+ # otherwise assign it to first network using os.environ
+ sorted_networks[0][1]["external_network"] = external_network
return sorted_networks
LOG.info("Deploying context '%s' DONE", self.name)
def add_server_port(self, server):
- # TODO(hafe) can only handle one internal network for now
- # use private ip from first port
- private_port = next(iter(server.ports.values()))
+ # use private ip from first port in first network
+ try:
+ private_port = next(iter(server.ports.values()))[0]
+ except IndexError:
+ LOG.exception("Unable to find first private port in %s", server.ports)
+ raise
server.private_ip = self.stack.outputs[private_port["stack_name"]]
server.interfaces = {}
- for network_name, port in server.ports.items():
- # port['port'] is either port name from mapping or default network_name
- server.interfaces[port['port']] = self.make_interface_dict(network_name, port['port'],
- port['stack_name'],
- self.stack.outputs)
+ for network_name, ports in server.ports.items():
+ for port in ports:
+ # port['port'] is either port name from mapping or default network_name
+ server.interfaces[port['port']] = self.make_interface_dict(network_name,
+ port['port'],
+ port['stack_name'],
+ self.stack.outputs)
def make_interface_dict(self, network_name, port, stack_name, outputs):
private_ip = outputs[stack_name]
attr_name: either a name for a server created by yardstick or a dict
with attribute name mapping when using external heat templates
"""
- key_filename = pkg_resources.resource_filename(
+ pkey = pkg_resources.resource_string(
'yardstick.resources',
- h_join('files/yardstick_key', get_short_key_uuid(self.key_uuid)))
+ h_join('files/yardstick_key', get_short_key_uuid(self.key_uuid))).decode('utf-8')
if isinstance(attr_name, collections.Mapping):
node_name, cname = self.split_name(attr_name['name'])
result = {
"user": server.context.user,
- "key_filename": key_filename,
+ "pkey": pkey,
"private_ip": server.private_ip,
"interfaces": server.interfaces,
"routing_table": self.generate_routing_table(server),