def init(self, attrs): """Initializes itself from the supplied arguments""" super(HeatContext, self).init(attrs) self.check_environment() self._user = attrs.get("user") self.template_file = attrs.get("heat_template") self.heat_timeout = attrs.get("timeout", DEFAULT_HEAT_TIMEOUT) if self.template_file: self.heat_parameters = attrs.get("heat_parameters") return self.keypair_name = h_join(self.name, "key") self.secgroup_name = h_join(self.name, "secgroup") self._image = attrs.get("image") self._flavor = attrs.get("flavor") self.placement_groups = [ PlacementGroup(name, self, pg_attrs["policy"]) for name, pg_attrs in attrs.get("placement_groups", {}).items() ] self.server_groups = [ ServerGroup(name, self, sg_attrs["policy"]) for name, sg_attrs in attrs.get("server_groups", {}).items() ] # we have to do this first, because we are injecting external_network # into the dict sorted_networks = self.assign_external_network(attrs["networks"]) self.networks = OrderedDict((name, Network(name, self, net_attrs)) for name, net_attrs in sorted_networks) for name, server_attrs in sorted(attrs["servers"].items()): server = Server(name, self, server_attrs) self.servers.append(server) self._server_map[server.dn] = server self.attrs = attrs self.key_filename = ''.join([ consts.YARDSTICK_ROOT_PATH, 'yardstick/resources/files/yardstick_key-', self.name ]) # Permissions may have changed since creation; this can be fixed. If we # overwrite the file, we lose future access to VMs using this key. # As long as the file exists, even if it is unreadable, keep it intact if not os.path.exists(self.key_filename): SSH.gen_keys(self.key_filename)
def deploy(self): """deploys template into a stack using cloud""" LOG.info("Deploying context '%s' START", self.name) # Check if there was no external private key provided if self.key_filename is None: self.key_filename = ''.join( [consts.YARDSTICK_ROOT_PATH, 'yardstick/resources/files/yardstick_key-', self.name]) # Permissions may have changed since creation; this can be fixed. If we # overwrite the file, we lose future access to VMs using this key. # As long as the file exists, even if it is unreadable, keep it intact if self.yardstick_gen_key_file and not os.path.exists(self.key_filename): SSH.gen_keys(self.key_filename) heat_template = HeatTemplate( self.name, template_file=self.template_file, heat_parameters=self.heat_parameters, os_cloud_config=self._flags.os_cloud_config) if self.template_file is None: self._add_resources_to_template(heat_template) if self._flags.no_setup: # Try to get an existing stack, returns a stack or None self.stack = self._retrieve_existing_stack(self.name) if not self.stack: self.stack = self._create_new_stack(heat_template) else: self.stack = self._create_new_stack(heat_template) # TODO: use Neutron to get segmentation-id self.get_neutron_info() # copy some vital stack output into server objects for server in self.servers: if server.ports: self.add_server_port(server) if server.floating_ip: server.public_ip = \ self.stack.outputs[server.floating_ip["stack_name"]] LOG.info("Deploying context '%s' DONE", self.name)
def init(self, attrs): self.check_environment() """initializes itself from the supplied arguments""" self.name = attrs["name"] self._user = attrs.get("user") self.template_file = attrs.get("heat_template") if self.template_file: self.heat_parameters = attrs.get("heat_parameters") return self.keypair_name = h_join(self.name, "key") self.secgroup_name = h_join(self.name, "secgroup") self._image = attrs.get("image") self._flavor = attrs.get("flavor") self.heat_timeout = attrs.get("timeout", DEFAULT_HEAT_TIMEOUT) self.placement_groups = [ PlacementGroup(name, self, pg_attrs["policy"]) for name, pg_attrs in attrs.get("placement_groups", {}).items() ] self.server_groups = [ ServerGroup(name, self, sg_attrs["policy"]) for name, sg_attrs in attrs.get("server_groups", {}).items() ] # we have to do this first, because we are injecting external_network # into the dict sorted_networks = self.assign_external_network(attrs["networks"]) self.networks = OrderedDict((name, Network(name, self, net_attrs)) for name, net_attrs in sorted_networks) for name, server_attrs in sorted(attrs["servers"].items()): server = Server(name, self, server_attrs) self.servers.append(server) self._server_map[server.dn] = server self.attrs = attrs SSH.gen_keys(self.key_filename)