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

📄 main.py

📁 xen 3.2.2 源码
💻 PY
📖 第 1 页 / 共 5 页
字号:
            "cores_per_socket":  getVal(["cpu_configuration", "cores_per_socket"]),            "threads_per_core":  getVal(["cpu_configuration", "threads_per_core"]),            "cpu_mhz":           getCpuMhz(),            "hw_caps":           getCpuFeatures(),            "total_memory":      int(host_metrics_record["memory_total"])/1024/1024,            "free_memory":       int(host_metrics_record["memory_free"])/1024/1024,            "xen_major":         getVal(["software_version", "xen_major"]),            "xen_minor":         getVal(["software_version", "xen_minor"]),            "xen_extra":         getVal(["software_version", "xen_extra"]),            "xen_caps":          " ".join(getVal(["capabilities"], [])),            "xen_scheduler":     getVal(["sched_policy"]),            "xen_pagesize":      getVal(["other_config", "xen_pagesize"]),            "platform_params":   getVal(["other_config", "platform_params"]),            "xen_changeset":     getVal(["software_version", "xen_changeset"]),            "cc_compiler":       getVal(["software_version", "cc_compiler"]),            "cc_compile_by":     getVal(["software_version", "cc_compile_by"]),            "cc_compile_domain": getVal(["software_version", "cc_compile_domain"]),            "cc_compile_date":   getVal(["software_version", "cc_compile_date"]),            "xend_config_format":getVal(["software_version", "xend_config_format"])                                        }        sorted = info.items()        sorted.sort(lambda (x1,y1), (x2,y2): -cmp(x1,x2))                for (k, v) in sorted:           print "%-23s:" % k, v     else:        info = server.xend.node.info()        for x in info[1:]:            if len(x) < 2:                 print "%-23s: (none)" % x[0]            else:                 print "%-23s:" % x[0], x[1]def xm_console(args):    arg_check(args, "console", 1, 2)    quiet = False;    try:        (options, params) = getopt.gnu_getopt(args, 'q', ['quiet'])    except getopt.GetoptError, opterr:        err(opterr)        usage('console')    for (k, v) in options:        if k in ['-q', '--quiet']:            quiet = True        else:            assert False    if len(params) != 1:        err('No domain given')        usage('console')    dom = params[0]    try:        if serverType == SERVER_XEN_API:            domid = int(server.xenapi.VM.get_domid(get_single_vm(dom)))        else:            info = server.xend.domain(dom)            domid = int(sxp.child_value(info, 'domid', '-1'))    except:        if quiet:            sys.exit(1)        else:            raise            if domid == -1:        if quiet:            sys.exit(1)        else:            raise xmlrpclib.Fault(0, "Domain '%s' is not started" % dom)    console.execConsole(domid)def xm_uptime(args):    short_mode = 0    try:        (options, params) = getopt.gnu_getopt(args, 's', ['short'])    except getopt.GetoptError, opterr:        err(opterr)        usage('uptime')    for (k, v) in options:        if k in ['-s', '--short']:            short_mode = 1    doms = getDomains(params, 'all')    if short_mode == 0:        print '%-33s %4s %s ' % ('Name','ID','Uptime')    for dom in doms:        d = parse_doms_info(dom)        if d['domid'] == '':            uptime = 0        elif int(d['domid']) > 0:            uptime = int(round(d['up_time']))        else:            f=open('/proc/uptime', 'r')            upfile = f.read()            uptime = int(round(float(upfile.split(' ')[0])))            f.close()        days = int(uptime / 86400)        uptime -= (days * 86400)        hours = int(uptime / 3600)        uptime -= (hours * 3600)        minutes = int(uptime / 60)        uptime -= (minutes * 60)        seconds = uptime                    upstring = ""        if days > 0:            upstring += str(days) + " day"            if days > 1:                upstring += "s"            upstring += ", "        upstring += '%(hours)2d:%(minutes)02d' % vars()        if short_mode:            now = datetime.datetime.now()            upstring = now.strftime(" %H:%M:%S") + " up " + upstring            upstring += ", " + d['name'] + " (" + d['domid'] + ")"        else:            upstring += ':%(seconds)02d' % vars()            upstring = ("%(name)-32s %(domid)5s " % d) + upstring        print upstringdef xm_sysrq(args):    arg_check(args, "sysrq", 2)    dom = args[0]    req = args[1]    if serverType == SERVER_XEN_API:        server.xenapi.VM.send_sysrq(get_single_vm(dom), req)    else:        server.xend.domain.send_sysrq(dom, req)def xm_trigger(args):    vcpu = 0        arg_check(args, "trigger", 2, 3)    dom = args[0]    trigger = args[1]    if len(args) == 3:        vcpu = int(args[2])            if serverType == SERVER_XEN_API:        server.xenapi.VM.send_trigger(get_single_vm(dom), trigger, vcpu)    else:        server.xend.domain.send_trigger(dom, trigger, vcpu)def xm_debug_keys(args):    arg_check(args, "debug-keys", 1)    keys = str(args[0])        if serverType == SERVER_XEN_API:        server.xenapi.host.send_debug_keys(            server.xenapi.session.get_this_host(server.getSession()),            keys)    else:        server.xend.node.send_debug_keys(keys)def xm_top(args):    arg_check(args, "top", 0)    os.system('xentop')def xm_dmesg(args):    arg_check(args, "dmesg", 0, 1)        try:        (options, params) = getopt.gnu_getopt(args, 'c', ['clear'])    except getopt.GetoptError, opterr:        err(opterr)        usage('dmesg')        use_clear = 0    for (k, v) in options:        if k in ['-c', '--clear']:            use_clear = 1        if len(params) :        err("No parameter required")        usage('dmesg')    if serverType == SERVER_XEN_API:        host = server.xenapi.session.get_this_host(server.getSession())        if use_clear:            print server.xenapi.host.dmesg_clear(host),        else:            print server.xenapi.host.dmesg(host),    else:        if not use_clear:            print server.xend.node.dmesg.info(),        else:            print server.xend.node.dmesg.clear(),def xm_log(args):    arg_check(args, "log", 0)    if serverType == SERVER_XEN_API:        print server.xenapi.host.get_log(            server.xenapi.session.get_this_host(server.getSession()))    else:        print server.xend.node.log()def xm_serve(args):    if serverType == SERVER_XEN_API:        print "Not supported with XenAPI"        sys.exit(-1)    arg_check(args, "serve", 0)    from fcntl import fcntl, F_SETFL        s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)    s.connect(XendClient.XML_RPC_SOCKET)    fcntl(sys.stdin, F_SETFL, os.O_NONBLOCK)    while True:        iwtd, owtd, ewtd = select([sys.stdin, s], [], [])        if s in iwtd:            data = s.recv(4096)            if len(data) > 0:                sys.stdout.write(data)                sys.stdout.flush()            else:                break        if sys.stdin in iwtd:            data = sys.stdin.read(4096)            if len(data) > 0:                s.sendall(data)            else:                break    s.close()def parse_dev_info(info):    def get_info(n, t, d):        i = 0        while i < len(info):            if (info[i][0] == n):                return t(info[i][1])            i = i + 1        return t(d)    return {        #common        'backend-id' : get_info('backend-id',   int,   -1),        'handle'     : get_info('handle',       int,    0),        'state'      : get_info('state',        int,   -1),        'be-path'    : get_info('backend',      str,   '??'),        'event-ch'   : get_info('event-channel',int,   -1),        #network specific        'virtual-device' : get_info('virtual-device', str, '??'),        'tx-ring-ref': get_info('tx-ring-ref',  int,   -1),        'rx-ring-ref': get_info('rx-ring-ref',  int,   -1),        'mac'        : get_info('mac',          str,   '??'),        #block-device specific        'ring-ref'   : get_info('ring-ref',     int,   -1),        }def arg_check_for_resource_list(args, name):    use_long = 0    try:        (options, params) = getopt.gnu_getopt(args, 'l', ['long'])    except getopt.GetoptError, opterr:        err(opterr)        sys.exit(1)    for (k, v) in options:        if k in ['-l', '--long']:            use_long = 1    if len(params) == 0:        print 'No domain parameter given'        usage(name)    if len(params) > 1:        print 'No multiple domain parameters allowed'        usage(name)        return (use_long, params)def xm_network_list(args):    (use_long, params) = arg_check_for_resource_list(args, "network-list")    dom = params[0]    if serverType == SERVER_XEN_API:        vif_refs = server.xenapi.VM.get_VIFs(get_single_vm(dom))        vif_properties = \            map(server.xenapi.VIF.get_runtime_properties, vif_refs)        devs = map(lambda (handle, properties): [handle, map2sxp(properties)],                   zip(range(len(vif_properties)), vif_properties))    else:        devs = server.xend.domain.getDeviceSxprs(dom, 'vif')            if use_long:        map(PrettyPrint.prettyprint, devs)    else:        hdr = 0        for x in devs:            if hdr == 0:                print 'Idx BE     MAC Addr.     handle state evt-ch tx-/rx-ring-ref BE-path'                hdr = 1            ni = parse_dev_info(x[1])            ni['idx'] = int(x[0])            print ("%(idx)-3d "                   "%(backend-id)-3d"                   "%(mac)-17s    "                   "%(handle)-3d   "                   "%(state)-3d    "                   "%(event-ch)-3d   "                   "%(tx-ring-ref)-5d/%(rx-ring-ref)-5d   "                   "%(be-path)-30s  "                   % ni)def xm_block_list(args):    (use_long, params) = arg_check_for_resource_list(args, "block-list")    dom = params[0]    if serverType == SERVER_XEN_API:        vbd_refs = server.xenapi.VM.get_VBDs(get_single_vm(dom))        vbd_properties = \            map(server.xenapi.VBD.get_runtime_properties, vbd_refs)        vbd_devs = \            map(server.xenapi.VBD.get_device, vbd_refs)        vbd_devids = \            map(blkdev_name_to_number, vbd_devs)        devs = map(lambda (devid, prop): [devid, map2sxp(prop)],                   zip(vbd_devids, vbd_properties))    else:        devs = server.xend.domain.getDeviceSxprs(dom, 'vbd')    if use_long:        map(PrettyPrint.prettyprint, devs)    else:        hdr = 0        for x in devs:            if hdr == 0:                print 'Vdev  BE handle state evt-ch ring-ref BE-path'                hdr = 1            ni = parse_dev_info(x[1])            ni['idx'] = int(x[0])            print ("%(idx)-3d    "                   "%(backend-id)-3d  "                   "%(handle)-3d   "                   "%(state)-3d    "                   "%(event-ch)-3d    "                   "%(ring-ref)-5d "                   "%(be-path)-30s  "                   % ni)def xm_vtpm_list(args):    (use_long, params) = arg_check_for_resource_list(args, "vtpm-list")    dom = params[0]    if serverType == SERVER_XEN_API:        vtpm_refs = server.xenapi.VM.get_VTPMs(get_single_vm(dom))        vtpm_properties = \            map(server.xenapi.VTPM.get_runtime_properties, vtpm_refs)        devs = map(lambda (handle, properties): [handle, map2sxp(properties)],                   zip(range(len(vtpm_properties)), vtpm_properties))    else:        devs = server.xend.domain.getDeviceSxprs(dom, 'vtpm')    if use_long:        map(PrettyPrint.prettyprint, devs)    else:        hdr = 0        for x in devs:            if hdr == 0:                print 'Idx  BE handle state evt-ch ring-ref BE-path'                hdr = 1            ni = parse_dev_info(x[1])            ni['idx'] = int(x[0])            print ("%(idx)-3d   "                   "%(backend-id)-3d  "                   "%(handle)-3d   "                   "%(state)-3d    "                   "%(event-ch)-3d    "                   "%(ring-ref)-5d "                   "%(be-path)-30s  "                   % ni)def parse_block_configuration(args):    dom = args[0]    if args[1].startswith('tap:'):        cls = 'tap'    else:        cls = 'vbd'    vbd = [cls,           ['uname', args[1]],           ['dev',   args[2]],           ['mode',  args[3]]]    if len(args) == 5:        vbd.append(['backend', args[4]])    return (dom, vbd)def xm_block_attach(args):    arg_check(args, 'block-attach', 4, 5)    if serverType =

⌨️ 快捷键说明

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