[Pkg-xen-changes] r1117 - in trunk/xen/debian: . scripts

Bastian Blank waldi at alioth.debian.org
Tue Sep 18 12:26:34 UTC 2012


Author: waldi
Date: Tue Sep 18 12:26:34 2012
New Revision: 1117

Log:
* debian/changelog: Update.
* debian/scripts/xen-init-list:
  - Support JSON.
  - Sort output.

Modified:
   trunk/xen/debian/changelog
   trunk/xen/debian/scripts/xen-init-list

Modified: trunk/xen/debian/changelog
==============================================================================
--- trunk/xen/debian/changelog	Tue Sep 18 11:55:00 2012	(r1116)
+++ trunk/xen/debian/changelog	Tue Sep 18 12:26:34 2012	(r1117)
@@ -1,3 +1,9 @@
+xen (4.2.0-2) UNRELEASED; urgency=low
+
+  * Support JSON output in domain init script helper.
+
+ -- Bastian Blank <waldi at debian.org>  Tue, 18 Sep 2012 14:25:57 +0200
+
 xen (4.2.0-1) experimental; urgency=low
 
   * New upstream release.

Modified: trunk/xen/debian/scripts/xen-init-list
==============================================================================
--- trunk/xen/debian/scripts/xen-init-list	Tue Sep 18 11:55:00 2012	(r1116)
+++ trunk/xen/debian/scripts/xen-init-list	Tue Sep 18 12:26:34 2012	(r1117)
@@ -1,6 +1,10 @@
 #!/usr/bin/python
 
+from __future__ import print_function
+
+import json
 import re
+import sys
 import subprocess
 
 
@@ -30,17 +34,44 @@
         return self.data
 
 
+class Data(object):
+    def __call__(self, out):
+        for domid, info in sorted(self.data.iteritems(), reverse=True):
+            print(str(domid), *info)
+
+
+class DataJSON(Data):
+    def __init__(self, p):
+        s = json.loads(p)
+        self.data = d = {}
+        for i in s:
+            domid = i['domid']
+            name = i['config']['c_info']['name']
+            d[domid] = (name, )
+
+
+class DataSXP(Data):
+    def __init__(self, p):
+        s = SXPParser()(p)
+        self.data = d = {}
+        for i in s:
+            if i and i[0] == 'domain':
+                try:
+                    data = dict(j for j in i if len(j) == 2)
+                    domid = int(data['domid'])
+                    name = data['name']
+                    if domid == 0:
+                        continue
+                    d[domid] = (name, )
+                except (KeyError, ValueError) as e:
+                    pass
+
+
 if __name__ == '__main__':
     p = subprocess.check_output(('xen', 'list', '-l'))
-    s = SXPParser()(p)
-    for i in s:
-        if i and i[0] == 'domain':
-            try:
-                data = dict(j for j in i if len(j) == 2)
-                domid = int(data['domid'])
-                name = data['name']
-                if domid == 0:
-                    continue
-                print domid, name
-            except (KeyError, ValueError) as e:
-                pass
+    if p[0] == '(':
+        d = DataSXP(p)
+    else:
+        d = DataJSON(p)
+    d(sys.stdout)
+



More information about the Pkg-xen-changes mailing list