Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

pyvcloud

Documentation Status Download Status Stable Version build status

Python SDK for VMware vCloud. It supports vCloud Air On Demand and Subscription. It also supports vCloud Director.

Release early, release often.

This project is under development, the classes, methods and parameters might change over time. This README usually reflects the syntax of the latest version.

Sample usage:

Import modules and instantiate a vCloud Air object:

from pyvcloud.vcloudair import VCA
vca = VCA(host, user, service_type, service_version, verify)

Login to a vCloud Director instance:

result = vca.login(password=password, org=org)

See changes log for a list of changes.

Installation

The Python SDK requires the libxml2 and libxslt libraries, see lxml for more details. On Debian/Ubuntu, you can install the libraries with this command:

sudo apt-get install libxml2-dev libxslt-dev

Of course, a Python dev environment is required:

sudo apt-get install python-dev python-pip

The Python SDK can be installed with the following command:

pip install pyvcloud

Use of virtualenv is recommended.

Usage

The SDK supports logging in to different type of services: vCloud Air Subscription, vCloud Air On Demand and vCloud Director Standalone. See the following code as an example:

import time, datetime, os
from pyvcloud.vcloudair import VCA

def print_vca(vca):
    if vca:
        print 'vca token:            ', vca.token
        if vca.vcloud_session:
            print 'vcloud session token: ', vca.vcloud_session.token
            print 'org name:             ', vca.vcloud_session.org
            print 'org url:              ', vca.vcloud_session.org_url
            print 'organization:         ', vca.vcloud_session.organization
        else:
            print 'vca vcloud session:   ', vca.vcloud_session
    else:
        print 'vca: ', vca

def test_vcloud_session(vca, vdc, vapp):
    the_vdc = vca.get_vdc(vdc)
    for x in range(1, 5):
        print datetime.datetime.now(), the_vdc.get_name(), vca.vcloud_session.token
        the_vdc = vca.get_vdc(vdc)
        if the_vdc: print the_vdc.get_name(), vca.vcloud_session.token
        else: print False
        the_vapp = vca.get_vapp(the_vdc, vapp)
        if the_vapp: print the_vapp.me.name
        else: print False
        time.sleep(2)

### Subscription
host='vchs.vmware.com'
username = os.environ['VCAUSER']
password = os.environ['PASSWORD']
service = '85-719'
org = 'AppServices'
vdc = 'AppServices'
vapp = 'cts'

#sample login sequence on vCloud Air Subscription
vca = VCA(host=host, username=username, service_type='subscription', version='5.6', verify=True)

#first login, with password
result = vca.login(password=password)
print_vca(vca)

#next login, with token, no password
#this tests the vca token
result = vca.login(token=vca.token)
print_vca(vca)

#uses vca.token to generate vca.vcloud_session.token
vca.login_to_org(service, org)
print_vca(vca)

#this tests the vcloud session token
test_vcloud_session(vca, vdc, vapp)


### On Demand
host='iam.vchs.vmware.com'
username = os.environ['VCAUSER']
password = os.environ['PASSWORD']
instance = 'c40ba6b4-c158-49fb-b164-5c66f90344fa'
org = 'a6545fcb-d68a-489f-afff-2ea055104cc1'
vdc = 'VDC1'
vapp = 'ubu'

#sample login sequence on vCloud Air On Demand
vca = VCA(host=host, username=username, service_type='ondemand', version='5.7', verify=True)

#first login, with password
result = vca.login(password=password)
print_vca(vca)

#then login with password and instance id, this will generate a session_token
result = vca.login_to_instance(password=password, instance=instance, token=None, org_url=None)
print_vca(vca)

#next login, with token, org and org_url, no password, it will retrieve the organization
result = vca.login_to_instance(instance=instance, password=None, token=vca.vcloud_session.token, org_url=vca.vcloud_session.org_url)
print_vca(vca)

#this tests the vca token
result = vca.login(token=vca.token)
if result: print result, vca.instances
else: print False

#this tests the vcloud session token
test_vcloud_session(vca, vdc, vapp)


### vCloud Director standalone
host='p1v21-vcd.vchs.vmware.com'
username = os.environ['VCAUSER']
password = os.environ['PASSWORD']
service = '85-719'
org = 'AppServices'
vdc = 'AppServices'
vapp = 'cts'

#sample login sequence on vCloud Director standalone
vca = VCA(host=host, username=username, service_type='standalone', version='5.6', verify=True)

#first login, with password and org name
result = vca.login(password=password, org=org)
print_vca(vca)

#next login, with token, org and org_url, no password, it will retrieve the organization
result = vca.login(token=vca.token, org=org, org_url=vca.vcloud_session.org_url)
print_vca(vca)

#this tests the vcloud session token
test_vcloud_session(vca, vdc, vapp)

Development

To test the current code, check it out from github and install it with:

pip install --edit .

To debug a python session, add this code:

import logging
import httplib
httplib.HTTPConnection.debuglevel = 1
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True

Testing

To test pyvcloud:

git clone https://github.com/vmware/pyvcloud.git
cd pyvcloud
virtualenv .venv
source .venv/bin/activate
pip install --edit .
pip install -r test-requirements.txt
cp tests/config_example.yaml tests/config_standalone.yaml
# customize credentials and other parameters
nosetests --verbosity=2  --tc-format yaml --tc-file tests/config_standalone.yaml \
            tests/vcloud_tests.py

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyvcloud-14rc6.tar.gz (1.3 MB view details)

Uploaded Source

File details

Details for the file pyvcloud-14rc6.tar.gz.

File metadata

  • Download URL: pyvcloud-14rc6.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyvcloud-14rc6.tar.gz
Algorithm Hash digest
SHA256 c49fc4e8f913f826be633c468c3f1f3cb1ff1af9032a5298ee44e4950bbe5581
MD5 f6d93002aa549a94727d74c1b06e5994
BLAKE2b-256 d68bb2a7b5744c6424d6ca27a9fe1f4b771f622cf69a8fda72abdc4ee1a7035c

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page