Exemple #1
0
def create_vm_instance(os_creds,
                       instance_settings,
                       image_settings,
                       keypair_creator=None,
                       init_only=False):
    """
    Creates a VM instance
    :param os_creds: The OpenStack credentials
    :param instance_settings: Instance of VmInstanceConfig
    :param image_settings: The object containing image settings
    :param keypair_creator: The object responsible for creating the keypair
                            associated with this VM instance. (optional)
    :param init_only: Denotes whether or not this is being called for
                      initialization (T) or creation (F) (default False)
    :return: A reference to the VM instance object
    """
    kp_settings = None
    if keypair_creator:
        kp_settings = keypair_creator.keypair_settings
    vm_creator = OpenStackVmInstance(os_creds, instance_settings,
                                     image_settings, kp_settings)
    if init_only:
        vm_creator.initialize()
    else:
        vm_creator.create()
    return vm_creator
Exemple #2
0
    def __create_vm_inst(self, heat_keypair_option, stack_server):

        vm_inst_settings = settings_utils.create_vm_inst_config(
            self.__nova, self._keystone, self.__neutron, stack_server,
            self._os_creds.project_name)
        image_settings = settings_utils.determine_image_config(
            self.__glance, stack_server, self.image_settings)
        keypair_settings = settings_utils.determine_keypair_config(
            self.__heat_cli,
            self.__stack,
            stack_server,
            keypair_settings=self.keypair_settings,
            priv_key_key=heat_keypair_option)
        vm_inst_creator = OpenStackVmInstance(self._os_creds, vm_inst_settings,
                                              image_settings, keypair_settings)
        vm_inst_creator.initialize()
        return vm_inst_creator
Exemple #3
0
    def tearDown(self):
        """
        Cleans the stack and image
        """
        if self.stack:
            try:
                heat_utils.delete_stack(self.heat_client, self.stack)
                # Wait until stack deployment has completed
                end_time = (time.time() + stack_config.STACK_COMPLETE_TIMEOUT)
                is_deleted = False
                while time.time() < end_time:
                    status = heat_utils.get_stack_status(
                        self.heat_client, self.stack.id)
                    if status == stack_config.STATUS_DELETE_COMPLETE:
                        is_deleted = True
                        break
                    elif status == stack_config.STATUS_DELETE_FAILED:
                        is_deleted = False
                        break

                    time.sleep(3)

                if not is_deleted:
                    nova = nova_utils.nova_client(self.os_creds,
                                                  self.os_session)
                    keystone = keystone_utils.keystone_client(
                        self.os_creds, self.os_session)
                    neutron = neutron_utils.neutron_client(
                        self.os_creds, self.os_session)
                    glance = glance_utils.glance_client(
                        self.os_creds, self.os_session)

                    servers = heat_utils.get_stack_servers(
                        self.heat_client, nova, neutron, keystone, self.stack,
                        self.os_creds.project_name)
                    for server in servers:
                        vm_settings = settings_utils.create_vm_inst_config(
                            nova, keystone, neutron, server,
                            self.os_creds.project_name)
                        img_settings = settings_utils.determine_image_config(
                            glance, server, [
                                self.image_creator1.image_settings,
                                self.image_creator2.image_settings
                            ])
                        vm_creator = OpenStackVmInstance(
                            self.os_creds, vm_settings, img_settings)
                        vm_creator.initialize()
                        vm_creator.clean()
                        vm_creator.vm_deleted(block=True)

                    heat_utils.delete_stack(self.heat_client, self.stack)
                    time.sleep(20)
            except:
                raise

        if self.image_creator1:
            try:
                self.image_creator1.clean()
            except:
                pass

        if self.image_creator2:
            try:
                self.image_creator2.clean()
            except:
                pass

        if self.keypair1_settings:
            expanded_path = os.path.expanduser(
                self.keypair1_settings.private_filepath)
            os.chmod(expanded_path, 0o755)
            os.remove(expanded_path)

        if self.keypair2_settings:
            expanded_path = os.path.expanduser(
                self.keypair2_settings.private_filepath)
            os.chmod(expanded_path, 0o755)
            os.remove(expanded_path)

        super(self.__class__, self).__clean__()