⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.py

📁 xen虚拟机源代码安装包
💻 PY
📖 第 1 页 / 共 5 页
字号:
            if domid == -1:        raise xmlrpclib.Fault(0, "Domain '%s' is not started" % dom)def xm_delete(args):    arg_check(args, "delete", 1)    dom = args[0]    if serverType == SERVER_XEN_API:        server.xenapi.VM.destroy(get_single_vm(dom))    else:        server.xend.domain.delete(dom)def xm_suspend(args):    arg_check(args, "suspend", 1)    dom = args[0]    if serverType == SERVER_XEN_API:        server.xenapi.VM.suspend(get_single_vm(dom))    else:        server.xend.domain.suspend(dom)def xm_resume(args):    arg_check(args, "resume", 1, 2)    try:        (options, params) = getopt.gnu_getopt(args, 'p', ['paused'])    except getopt.GetoptError, opterr:        err(opterr)        usage('resume')    paused = False    for (k, v) in options:        if k in ['-p', '--paused']:            paused = True    if len(params) != 1:        err("Wrong number of parameters")        usage('resume')    dom = params[0]    if serverType == SERVER_XEN_API:        server.xenapi.VM.resume(get_single_vm(dom), paused)    else:        server.xend.domain.resume(dom, paused)    def xm_reboot(args):    arg_check(args, "reboot", 1, 3)    from xen.xm import shutdown    shutdown.main(["shutdown", "-R"] + args)def xm_shutdown(args):    arg_check(args, "shutdown", 1, 4)    from xen.xm import shutdown    shutdown.main(["shutdown"] + args)def xm_reset(args):    arg_check(args, "reset", 1)    dom = args[0]    if serverType == SERVER_XEN_API:        server.xenapi.VM.hard_reboot(get_single_vm(dom))    else:        server.xend.domain.reset(dom)def xm_pause(args):    arg_check(args, "pause", 1)    dom = args[0]    if serverType == SERVER_XEN_API:        server.xenapi.VM.pause(get_single_vm(dom))    else:        server.xend.domain.pause(dom)def xm_unpause(args):    arg_check(args, "unpause", 1)    dom = args[0]    if serverType == SERVER_XEN_API:        server.xenapi.VM.unpause(get_single_vm(dom))    else:        server.xend.domain.unpause(dom)def xm_dump_core(args):    live = False    crash = False    reset = False    try:        (options, params) = getopt.gnu_getopt(args, 'LCR', ['live', 'crash', 'reset'])        for (k, v) in options:            if k in ('-L', '--live'):                live = True            elif k in ('-C', '--crash'):                crash = True            elif k in ('-R', '--reset'):                reset = True        if crash and reset:            raise OptionError("You may not specify more than one '-CR' option")        if len(params) not in (1, 2):            raise OptionError("Expects 1 or 2 argument(s)")    except getopt.GetoptError, e:        raise OptionError(str(e))        dom = params[0]    if len(params) == 2:        filename = os.path.abspath(params[1])    else:        filename = None    if not live:        ds = server.xend.domain.pause(dom, True)    try:        print "Dumping core of domain: %s ..." % str(dom)        server.xend.domain.dump(dom, filename, live, crash)        if crash:            print "Destroying domain: %s ..." % str(dom)            server.xend.domain.destroy(dom)        elif reset:            print "Resetting domain: %s ..." % str(dom)            server.xend.domain.reset(dom)    finally:        if not live and not crash and not reset and ds == DOM_STATE_RUNNING:            server.xend.domain.unpause(dom)def xm_rename(args):    arg_check(args, "rename", 2)            if serverType == SERVER_XEN_API:        server.xenapi.VM.set_name_label(get_single_vm(args[0]), args[1])    else:        server.xend.domain.setName(args[0], args[1])def xm_importcommand(command, args):    cmd = __import__(command, globals(), locals(), 'xen.xm')    cmd.main([command] + args)#############################################################def xm_vcpu_pin(args):    arg_check(args, "vcpu-pin", 3)    def cpu_make_map(cpulist):        cpus = []        for c in cpulist.split(','):            if c.find('-') != -1:                (x,y) = c.split('-')                for i in range(int(x),int(y)+1):                    cpus.append(int(i))            else:                # remove this element from the list                if c[0] == '^':                    cpus = [x for x in cpus if x != int(c[1:])]                else:                    cpus.append(int(c))        cpus.sort()        return cpus    dom  = args[0]    vcpu = args[1]    if args[2] == 'all':        cpumap = cpu_make_map('0-63')    else:        cpumap = cpu_make_map(args[2])    if serverType == SERVER_XEN_API:        cpumap = map(str, cpumap)                server.xenapi.VM.add_to_VCPUs_params_live(            get_single_vm(dom), "cpumap%i" % int(vcpu), ",".join(cpumap))    else:        server.xend.domain.pincpu(dom, vcpu, cpumap)def xm_mem_max(args):    arg_check(args, "mem-max", 2)    dom = args[0]    if serverType == SERVER_XEN_API:        mem = int_unit(args[1], 'k') * 1024        server.xenapi.VM.set_memory_static_max(get_single_vm(dom), mem)    else:        mem = int_unit(args[1], 'm')        server.xend.domain.maxmem_set(dom, mem)    def xm_mem_set(args):    arg_check(args, "mem-set", 2)    dom = args[0]    if serverType == SERVER_XEN_API:        mem_target = int_unit(args[1], 'm') * 1024 * 1024        server.xenapi.VM.set_memory_dynamic_max_live(get_single_vm(dom),                                                     mem_target)        server.xenapi.VM.set_memory_dynamic_min_live(get_single_vm(dom),                                                     mem_target)    else:        mem_target = int_unit(args[1], 'm')        server.xend.domain.setMemoryTarget(dom, mem_target)    def xm_vcpu_set(args):    arg_check(args, "vcpu-set", 2)    dom = args[0]    vcpus = int(args[1])    if serverType == SERVER_XEN_API:        server.xenapi.VM.set_VCPUs_number_live(get_single_vm(dom), vcpus)    else:        server.xend.domain.setVCpuCount(dom, vcpus)def xm_destroy(args):    arg_check(args, "destroy", 1)    dom = args[0]        if serverType == SERVER_XEN_API:        server.xenapi.VM.hard_shutdown(get_single_vm(dom))    else:        server.xend.domain.destroy(dom)def xm_domid(args):    arg_check(args, "domid", 1)    name = args[0]    if serverType == SERVER_XEN_API:        print server.xenapi.VM.get_domid(get_single_vm(name))    else:        dom = server.xend.domain(name)        print sxp.child_value(dom, 'domid')    def xm_domname(args):    arg_check(args, "domname", 1)    name = args[0]        if serverType == SERVER_XEN_API:        print server.xenapi.VM.get_name_label(get_single_vm(name))    else:        dom = server.xend.domain(name)        print sxp.child_value(dom, 'name')def xm_sched_sedf(args):    xenapi_unsupported()        def ns_to_ms(val):        return float(val) * 0.000001        def ms_to_ns(val):        return (float(val) / 0.000001)    def print_sedf(info):        info['period']  = ns_to_ms(info['period'])        info['slice']   = ns_to_ms(info['slice'])        info['latency'] = ns_to_ms(info['latency'])        print( ("%(name)-32s %(domid)5d %(period)9.1f %(slice)9.1f" +                " %(latency)7.1f %(extratime)6d %(weight)6d") % info)    check_sched_type('sedf')    # we want to just display current info if no parameters are passed    if len(args) == 0:        domid = None    else:        # we expect at least a domain id (name or number)        # and at most a domid up to 5 options with values        arg_check(args, "sched-sedf", 1, 11)        domid = args[0]        # drop domid from args since get_opt doesn't recognize it        args = args[1:]     opts = {}    try:        (options, params) = getopt.gnu_getopt(args, 'p:s:l:e:w:',            ['period=', 'slice=', 'latency=', 'extratime=', 'weight='])    except getopt.GetoptError, opterr:        err(opterr)        usage('sched-sedf')        # convert to nanoseconds if needed     for (k, v) in options:        if k in ['-p', '--period']:            opts['period'] = ms_to_ns(v)        elif k in ['-s', '--slice']:            opts['slice'] = ms_to_ns(v)        elif k in ['-l', '--latency']:            opts['latency'] = ms_to_ns(v)        elif k in ['-e', '--extratime']:            opts['extratime'] = v        elif k in ['-w', '--weight']:            opts['weight'] = v    doms = filter(lambda x : domid_match(domid, x),                        [parse_doms_info(dom)                         for dom in getDomains(None, 'running')])    if domid is not None and doms == []:         err("Domain '%s' does not exist." % domid)        usage('sched-sedf')    # print header if we aren't setting any parameters    if len(opts.keys()) == 0:        print '%-33s %4s %-4s %-4s %-7s %-5s %-6s' % \              ('Name','ID','Period(ms)', 'Slice(ms)', 'Lat(ms)',               'Extra','Weight')        for d in doms:        # fetch current values so as not to clobber them        try:            sedf_raw = server.xend.domain.cpu_sedf_get(d['domid'])        except xmlrpclib.Fault:            # domain does not support sched-sedf?            sedf_raw = {}        sedf_info = parse_sedf_info(sedf_raw)        sedf_info['name'] = d['name']        # update values in case of call to set        if len(opts.keys()) > 0:            for k in opts.keys():                sedf_info[k]=opts[k]                     # send the update, converting user input            v = map(int, [sedf_info['period'], sedf_info['slice'],                          sedf_info['latency'],sedf_info['extratime'],                           sedf_info['weight']])            rv = server.xend.domain.cpu_sedf_set(d['domid'], *v)            if int(rv) != 0:                err("Failed to set sedf parameters (rv=%d)."%(rv))        # not setting values, display info        else:            print_sedf(sedf_info)def xm_sched_credit(args):    """Get/Set options for Credit Scheduler."""        check_sched_type('credit')    try:        opts, params = getopt.getopt(args, "d:w:c:",            ["domain=", "weight=", "cap="])    except getopt.GetoptError, opterr:        err(opterr)        usage('sched-credit')    domid = None    weight = None    cap = None    for o, a in opts:        if o in ["-d", "--domain"]:            domid = a        elif o in ["-w", "--weight"]:            weight = int(a)        elif o in ["-c", "--cap"]:            cap = int(a);    doms = filter(lambda x : domid_match(domid, x),                  [parse_doms_info(dom)                  for dom in getDomains(None, 'all')])    if weight is None and cap is None:        if domid is not None and doms == []:             err("Domain '%s' does not exist." % domid)            usage('sched-credit')        # print header if we aren't setting any parameters        print '%-33s %4s %6s %4s' % ('Name','ID','Weight','Cap')                for d in doms:            try:                if serverType == SERVER_XEN_API:                    info = server.xenapi.VM_metrics.get_VCPUs_params(                        server.xenapi.VM.get_metrics(                            get_single_vm(d['name'])))                else:                    info = server.xend.domain.sched_credit_get(d['name'])            except xmlrpclib.Fault:                pass            if 'weight' not in info or 'cap' not in info:                # domain does not support sched-credit?                info = {'weight': -1, 'cap': -1}            info['weight'] = int(info['weight'])            info['cap']    = int(info['cap'])                        info['name']  = d['name']            info['domid'] = str(d['domid'])            print( ("%(name)-32s %(domid)5s %(weight)6d %(cap)4d") % info)    else:        if domid is None:            # place holder for system-wide scheduler parameters            err("No domain given.")            usage('sched-credit')        if serverType == SERVER_XEN_API:            if doms[0]['domid']:                server.xenapi.VM.add_to_VCPUs_params_live(                    get_single_vm(domid),                    "weight",                    weight)                server.xenapi.VM.add_to_VCPUs_params_live(                    get_single_vm(domid),                    "cap",                    cap)            else:                server.xenapi.VM.add_to_VCPUs_params(                    get_single_vm(domid),                    "weight",                    weight)                server.xenapi.VM.add_to_VCPUs_params(                    get_single_vm(domid),                    "cap",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -