bug 7270: added strip xml support to cloud-tool.

status 7270: resolved fixed

Specify --stripxml=true if you want to enable this option. It set to "false" by default. Example with tags stripped:

$ cloud-tool listDomains --server=localhost:8096 --stripxml=true

domain
id=1
name=ROOT
level=0
haschild=true

domain
id=2
name=hello
level=1
parentdomainid=1
parentdomainname=ROOT
haschild=false

Example with original xml format:

$ cloud-tool listDomains --server=localhost:8096

<?xml version="1.0" encoding="ISO-8859-1"?><listdomainsresponse cloud-stack-version="1.9.1"><domain><id>1</id><name>ROOT</name><level>0</level><haschild>true</haschild></domain><domain><id>2</id><name>hello"</name><level>1</level><parentdomainid>1</parentdomainid><parentdomainname>ROOT</parentdomainname><haschild>false</haschild></domain></listdomainsresponse>
This commit is contained in:
alena 2010-11-24 17:20:35 -08:00
parent 9885392f5b
commit 33c062473d

View File

@ -6,14 +6,17 @@ import urllib
import urllib2
import os
import xml.dom.minidom
import re
class CloudAPI:
@describe("server", "Management Server host name or address")
@describe("responseformat", "Response format: xml or json")
@describe("stripxml", "True if xml tags have to be stripped in the output, false otherwise")
def __init__(self,
server="127.0.0.1:8096",
responseformat="xml",
stripxml="false"
):
self.__dict__.update(locals())
@ -35,8 +38,18 @@ class CloudAPI:
url += querystring
f = urllib2.urlopen(url)
data = f.read()
if self.stripxml == "true":
data=re.sub("<\?.*\?>", "\n", data);
data=re.sub("</[a-z]*>", "\n", data);
data=data.replace(">", "=");
data=data.replace("=<", "\n");
data=data.replace("\n<", "\n");
data=re.sub("\n.*cloud-stack-version=.*", "", data);
data=data.replace("\n\n\n", "\n");
else:
data="\n"+data+"\n"
return data
return data