Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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)