legacy-wiki
Vcloud
Recovered from the older tannerjc.net wiki snapshot dated January 23, 2016.
https://bitbucket.org/glazemak/terremark-vcloud-express/downloads
hg clone https://bitbucket.org/glazemak/terremark-vcloud-express
http://www.vmware.com/pdf/vcd_15_api_guide.pdf
http://pubs.vmware.com/vcloud-api-1-5/wwhelp/wwhimpl/js/html/wwhelp.htm
[root@dhcp65 ~]# cat vcd-tests.py
#!/usr/bin/python
# http://pubs.vmware.com/vcloud-api-1-5/wwhelp/wwhimpl/js/html/wwhelp.htm
from conary.lib import epdb
import urllib
import urllib2
import httplib2
from xobj import xobj
import logging
def listApiVersions(vcd):
h = httplib2.Http(/tmp/vcdauth/.cache)
h.disable_ssl_certificate_validation = True
resp, content = h.request( vcd + /api/versions,
GET, headers={'Accept':'text/xml'} )
#epdb.st()
versionxml = xobj.parse(content)
#epdb.st()
for v in versionxml.SupportedVersions.VersionInfo:
print version: %s % v.Version
print loginurl: %s % v.LoginUrl
def getToken15(vcd, username, password):
h = httplib2.Http(/tmp/vcdauth/.cache)
h.disable_ssl_certificate_validation = True
h.add_credentials(username, password)
resp, content = h.request( vcd + /api/sessions,
POST, headers={'Accept':'application/*+xml;version=1.5'} )
authtoken = resp['x-vcloud-authorization']
return [h,authtoken]
def getOrgs(session, authtoken):
resp, content = session.request( vcd + /api/org,
GET, headers={'Accept':'application/*+xml;version=1.5',
'x-vcloud-authorization':authtoken} )
orgxml = xobj.parse(content)
orgs = []
if (isinstance(orgxml.OrgList.Org, list)):
pass
else:
#print orgname: %s % orgxml.OrgList.Org.name
#print orgurl: %s % orgxml.OrgList.Org.href
uuid = orgxml.OrgList.Org.href.rsplit('/')[-1]
#epdb.st()
orgs.append({'name': orgxml.OrgList.Org.name,
'url': orgxml.OrgList.Org.href,
'uuid': uuid})
#[{'url': 'https://vcd1a.eng.rpath.com/api/org/bbd7328e-a714-4ccf-82a0-a02b12de796c',
#'name': 'org1',
#'uuid': 'bbd7328e-a714-4ccf-82a0-a02b12de796c'}]
return orgs
def getOrgContents(session, authtoken, url):
resp, content = session.request( url,
GET, headers={'x-vcloud-authorization':authtoken,
'Accept':'application/*+xml;version=1.5'} )
orgxml = xobj.parse(content)
orgfullname = orgxml.Org.FullName
for vdc in orgxml.Org.Link:
#epdb.st()
if ( vdc.type == 'application/vnd.vmware.vcloud.vdc+xml' ):
print vdcname: %s % vdc.name
print vdchref: %s % vdc.href
#epdb.st()
elif (vdc.type == 'application/vnd.vmware.vcloud.tasksList+xml'):
pass
#epdb.st()
#############################################
# MAIN
#############################################
vcd = 'https://vcd1a.eng.rpath.com'
username = 'orgadmintest@org1'
password = 'BLAHBLAHBLAH'
#find api versions and urls
listApiVersions(vcd)
#create a session and a token
session, authtoken = getToken15(vcd, username, password)
# get orgs visible to the user
orgs = getOrgs(session, authtoken)
for org in orgs:
print name: %s % org['name']
print uuid: %s % org['uuid']
print url: %s % org['url']
getOrgContents(session, authtoken, org['url'] )
#epdb.st()