[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