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()