1 | from xen.xend.XendClient import server |
---|
2 | from xen.xend import sxp |
---|
3 | from xen.xend import PrettyPrint |
---|
4 | |
---|
5 | import types |
---|
6 | |
---|
7 | def getDomInfo( domain ): |
---|
8 | domInfoHash = {} |
---|
9 | try: |
---|
10 | domInfoHash = sxp2hash( server.xend_domain( domain ) ) |
---|
11 | domInfoHash['dom'] = domain |
---|
12 | except: |
---|
13 | domInfoHash['name'] = "Error getting domain details" |
---|
14 | return domInfoHash |
---|
15 | |
---|
16 | def sxp2hash( s ): |
---|
17 | sxphash = {} |
---|
18 | |
---|
19 | for child in sxp.children( s ): |
---|
20 | if isinstance( child, types.ListType ) and len( child ) > 1: |
---|
21 | if isinstance( child[1], types.ListType ) and len( child ) > 1: |
---|
22 | sxphash[ child[0] ] = sxp2hash( child[1] ) |
---|
23 | else: |
---|
24 | sxphash[ child[0] ] = child[1] |
---|
25 | |
---|
26 | return sxphash |
---|
27 | |
---|
28 | def ssxp2hash( s ): |
---|
29 | sxphash = {} |
---|
30 | |
---|
31 | for i in s: |
---|
32 | if isinstance( i, types.ListType ) and len( i ) > 1: |
---|
33 | sxphash[ i[0] ] = i[1] |
---|
34 | |
---|
35 | return sxphash |
---|
36 | |
---|
37 | def hash2sxp( h ): |
---|
38 | hashsxp = [] |
---|
39 | |
---|
40 | for (key, item) in h.items(): |
---|
41 | hashsxp.append( [key, item] ) |
---|
42 | |
---|
43 | return hashsxp |
---|
44 | |
---|
45 | def string2sxp( string ): |
---|
46 | pin = sxp.Parser() |
---|
47 | pin.input( string ) |
---|
48 | return pin.get_val() |
---|
49 | |
---|
50 | def sxp2string( sexp ): |
---|
51 | return sxp.to_string( sexp ) |
---|
52 | |
---|
53 | def sxp2prettystring( sxp ): |
---|
54 | class tmp: |
---|
55 | def __init__( self ): |
---|
56 | self.str = "" |
---|
57 | def write( self, str ): |
---|
58 | self.str = self.str + str |
---|
59 | temp = tmp() |
---|
60 | PrettyPrint.prettyprint( sxp, out=temp ) |
---|
61 | return temp.str |
---|
62 | |
---|
63 | def getVar( var, request, default=None ): |
---|
64 | |
---|
65 | arg = request.args.get( var ) |
---|
66 | |
---|
67 | if arg is None: |
---|
68 | return default |
---|
69 | else: |
---|
70 | return arg[ len( arg )-1 ] |
---|
71 | |
---|
72 | def bigTimeFormatter( time ): |
---|
73 | time = float( time ) |
---|
74 | weeks = time // 604800 |
---|
75 | remainder = time % 604800 |
---|
76 | days = remainder // 86400 |
---|
77 | |
---|
78 | remainder = remainder % 86400 |
---|
79 | |
---|
80 | hms = smallTimeFormatter( remainder ) |
---|
81 | |
---|
82 | return "%d weeks, %d days, %s" % ( weeks, days, hms ) |
---|
83 | |
---|
84 | def smallTimeFormatter( time ): |
---|
85 | time = float( time ) |
---|
86 | hours = time // 3600 |
---|
87 | remainder = time % 3600 |
---|
88 | mins = remainder // 60 |
---|
89 | secs = time % 60 |
---|
90 | return "%02d:%02d:%04.1f (hh:mm:ss.s)" % ( hours, mins, secs ) |
---|
91 | |
---|
92 | def stateFormatter( state ): |
---|
93 | states = [ 'Running', 'Blocked', 'Paused', 'Shutdown', 'Crashed' ] |
---|
94 | |
---|
95 | stateStr = "" |
---|
96 | |
---|
97 | for i in range( len( state ) ): |
---|
98 | if state[i] != "-": |
---|
99 | stateStr += "%s, " % states[ i ] |
---|
100 | |
---|
101 | return stateStr + " (%s)" % state |
---|
102 | |
---|
103 | def memoryFormatter( mem ): |
---|
104 | mem = int( mem ) |
---|
105 | if mem >= 1024: |
---|
106 | mem = float( mem ) / 1024 |
---|
107 | return "%3.2fGb" % mem |
---|
108 | else: |
---|
109 | return "%7dMb" % mem |
---|
110 | |
---|
111 | def cpuFormatter( mhz ): |
---|
112 | mhz = int( mhz ) |
---|
113 | if mhz > 1000: |
---|
114 | ghz = float( mhz ) / 1000.0 |
---|
115 | return "%4.2fGHz" % ghz |
---|
116 | else: |
---|
117 | return "%4dMHz" % mhz |
---|
118 | |
---|
119 | def hyperthreadFormatter( threads ): |
---|
120 | try: |
---|
121 | if int( threads ) > 1: |
---|
122 | return "Yes" |
---|
123 | else: |
---|
124 | return "No" |
---|
125 | except: |
---|
126 | return "No" |
---|