def vps_open(self, vps_info, vps_image=None, is_new=True): vps_id = vps_info.id self.logger.info("to open vps %s" % (vps_id)) if vps_info.host_id != self.host_id: msg = "vpsopen : vps %s host_id=%s != current host %s , abort" % ( vps_id, vps_info.host_id, self.host_id) self.logger.error(msg) self.done_task(CMD.OPEN, vps_id, False, msg) return if not self.vpsinfo_check_ip(vps_info): msg = "no ip with vps %s" % (vps_id) self.logger.error(msg) self.done_task(CMD.OPEN, vps_id, False, msg) return xv = XenVPS(vps_id) try: domain_dict = XenStore.domain_name_id_map() limit = None if 'VPS_NUM_LIMIT' in dir(conf): limit = conf.VPS_NUM_LIMIT if limit and len(domain_dict.keys()) >= limit + 1: msg = "vps open: cannot open more than %d vps" % (limit) self.logger.error(msg) self.done_task(CMD.OPEN, vps_id, False, msg) return self.setup_vps(xv, vps_info) if xv.is_running(): msg = "vps %s is running" % (vps_id) self.logger.error(msg) self.done_task(CMD.OPEN, vps_id, True, msg) return if vps_info.state in [VM_STATE.PAY, VM_STATE.OPEN, VM_STATE.CLOSE]: if self.vpsops.is_normal_exists(vps_id): xv.check_storage_integrity() xv.check_xen_config() if not xv.is_running(): self.logger.info( "seems vps %s was not closed, try to boot" % (vps_id)) self.vpsops._boot_and_test(xv, is_new=False) elif self.vpsops.is_trash_exists(vps_id): self.vpsops.reopen_vps(vps_id, xv) else: self.vpsops.create_vps(xv, vps_image, is_new) else: msg = "vps%s state is %s(%s)" % (str(vps_id), vps_info.state, VM_STATE_CN[vps_info.state]) self.logger.error(msg) self.done_task(CMD.OPEN, vps_id, False, msg) return except Exception, e: self.logger.exception("vps %s: %s" % (str(vps_id), str(e))) self.done_task(CMD.OPEN, vps_id, False, "error, " + str(e)) return
def vps_open(self, vps_info, vps_image=None, is_new=True): vps_id = vps_info.id self.logger.info("to open vps %s" % (vps_id)) if vps_info.host_id != self.host_id: msg = "vpsopen : vps %s host_id=%s != current host %s , abort" % ( vps_id, vps_info.host_id, self.host_id) self.logger.error(msg) self.done_task(CMD.OPEN, vps_id, False, msg) return if not self.vpsinfo_check_ip(vps_info): msg = "no ip with vps %s" % (vps_id) self.logger.error(msg) self.done_task(CMD.OPEN, vps_id, False, msg) return xv = XenVPS(vps_id) try: domain_dict = XenStore.domain_name_id_map() limit = None if 'VPS_NUM_LIMIT' in dir(conf): limit = conf.VPS_NUM_LIMIT if limit and len(domain_dict.keys()) >= limit + 1: msg = "vps open: cannot open more than %d vps" % (limit) self.logger.error(msg) self.done_task(CMD.OPEN, vps_id, False, msg) return self.setup_vps(xv, vps_info) if xv.is_running(): msg = "vps %s is running" % (vps_id) self.logger.error(msg) self.done_task(CMD.OPEN, vps_id, True, msg) return if vps_info.state in [VM_STATE.PAY, VM_STATE.OPEN, VM_STATE.CLOSE]: if self.vpsops.is_normal_exists(vps_id): xv.check_storage_integrity() xv.check_xen_config() if not xv.is_running(): self.logger.info( "seems vps %s was not closed, try to boot" % (vps_id)) self.vpsops._boot_and_test(xv, is_new=False) elif self.vpsops.is_trash_exists(vps_id): self.vpsops.reopen_vps(vps_id, xv) else: self.vpsops.create_vps(xv, vps_image, is_new) else: msg = "vps%s state is %s(%s)" % ( str(vps_id), vps_info.state, VM_STATE_CN[vps_info.state]) self.logger.error(msg) self.done_task(CMD.OPEN, vps_id, False, msg) return except Exception, e: self.logger.exception("vps %s: %s" % (str(vps_id), str(e))) self.done_task(CMD.OPEN, vps_id, False, "error, " + str(e)) return