Example #1
0
    def stop_virtual_machine(self, sctx):
        ctx = sctx.job_ctxs[sctx.current_job_index]
        adapter = VirtualMachineAdapter(ctx.subscription_id, ctx.pem_url, host=ctx.management_host)

        deployment_name = adapter.get_deployment_name(ctx.cloud_service_name, ctx.deployment_slot)
        now_status = adapter.get_virtual_machine_instance_status(
            ctx.cloud_service_name, ctx.deployment_slot, ctx.virtual_machine_name)

        if now_status is None:
            self.log.error(
                "azure virtual environment %d stop vm failed: cannot get status of vm %r" %
                (sctx.current_job_index, ctx.virtual_machine_name))
            self.__on_stop_virtual_machine_failed(sctx)
        elif now_status != AVMStatus.STOPPED_DEALLOCATED:
            try:
                req = adapter.stop_virtual_machine(
                    ctx.cloud_service_name, deployment_name, ctx.virtual_machine_name, AVMStatus.STOPPED_DEALLOCATED)
            except Exception as e:
                self.log.error(
                    "azure virtual environment %d stop vm failed: %r" %
                    (sctx.current_job_index, str(e.message)))
                self.__on_stop_virtual_machine_failed(sctx)
                return False

            ctx.request_id = req.request_id
            self.__wait_for_stop_virtual_machine(sctx)
        else:
            self.__stop_virtual_machine_done(sctx)
Example #2
0
    def stop_virtual_machine(self, sctx):
        ctx = sctx.job_ctxs[sctx.current_job_index]
        adapter = VirtualMachineAdapter(ctx.subscription_id,
                                        ctx.pem_url,
                                        host=ctx.management_host)

        deployment_name = adapter.get_deployment_name(ctx.cloud_service_name,
                                                      ctx.deployment_slot)
        now_status = adapter.get_virtual_machine_instance_status(
            ctx.cloud_service_name, ctx.deployment_slot,
            ctx.virtual_machine_name)

        if now_status is None:
            self.log.error(
                "azure virtual environment %d stop vm failed: cannot get status of vm %r"
                % (sctx.current_job_index, ctx.virtual_machine_name))
            self.__on_stop_virtual_machine_failed(sctx)
        elif now_status != AVMStatus.STOPPED_DEALLOCATED:
            try:
                req = adapter.stop_virtual_machine(
                    ctx.cloud_service_name, deployment_name,
                    ctx.virtual_machine_name, AVMStatus.STOPPED_DEALLOCATED)
            except Exception as e:
                self.log.error(
                    "azure virtual environment %d stop vm failed: %r" %
                    (sctx.current_job_index, str(e.message)))
                self.__on_stop_virtual_machine_failed(sctx)
                return False

            ctx.request_id = req.request_id
            self.__wait_for_stop_virtual_machine(sctx)
        else:
            self.__stop_virtual_machine_done(sctx)
Example #3
0
    def wait_for_virtual_machine_ready(self, sctx):
        ctx = sctx.job_ctxs[sctx.current_job_index]
        adapter = VirtualMachineAdapter(ctx.subscription_id, ctx.pem_url, host=ctx.management_host)

        status = adapter.get_virtual_machine_instance_status(
            ctx.cloud_service_name, ctx.deployment_slot, ctx.virtual_machine_name)

        if not status:
            self.log.error(
                "azure virtual environment %d error occured while waiting for virtual machine ready"
                % sctx.current_job_index)
            self.__on_setup_failed(sctx)
            return

        self.log.debug(
            "waiting for virtual machine ready, vm: %s, status: %s" %
            (ctx.virtual_machine_name, str(status)))
        if status == AVMStatus.READY_ROLE:
            if ctx.vm_need_config:
                ctx.vm_need_config = False
                self.__config_virtual_machine(sctx)
            else:
                self.__setup_virtual_machine_done(sctx)
        else:
            self.__wait_for_virtual_machine_ready(sctx)
Example #4
0
    def wait_for_virtual_machine_ready(self, sctx):
        ctx = sctx.job_ctxs[sctx.current_job_index]
        adapter = VirtualMachineAdapter(ctx.subscription_id,
                                        ctx.pem_url,
                                        host=ctx.management_host)

        status = adapter.get_virtual_machine_instance_status(
            ctx.cloud_service_name, ctx.deployment_slot,
            ctx.virtual_machine_name)

        if not status:
            self.log.error(
                "azure virtual environment %d error occured while waiting for virtual machine ready"
                % sctx.current_job_index)
            self.__on_setup_failed(sctx)
            return

        self.log.debug(
            "waiting for virtual machine ready, vm: %s, status: %s" %
            (ctx.virtual_machine_name, str(status)))
        if status == AVMStatus.READY_ROLE:
            if ctx.vm_need_config:
                ctx.vm_need_config = False
                self.__config_virtual_machine(sctx)
            else:
                self.__setup_virtual_machine_done(sctx)
        else:
            self.__wait_for_virtual_machine_ready(sctx)