This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

VMware vCloud Python SDK

Project Description

pyvcloud

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
Release History

Release History

This version
History Node

16

History Node

15rc2

History Node

15rc1

History Node

14

History Node

14rc9

History Node

14rc8

History Node

14rc7

History Node

14rc6

History Node

14rc5

History Node

14rc2

History Node

14rc1

History Node

13

History Node

13rc16

History Node

13rc15

History Node

13rc14

History Node

13rc13

History Node

13rc12

History Node

13rc11

History Node

13rc10

History Node

13rc8

History Node

13rc7

History Node

13rc6

History Node

13rc5

History Node

13rc4

History Node

13rc3

History Node

13rc2

History Node

13c1

History Node

12

History Node

12c4

History Node

12c3

History Node

12c2

History Node

12c1

History Node

11

History Node

10

History Node

9

History Node

8

History Node

7

History Node

6

History Node

5

History Node

4

History Node

3

History Node

2.2

History Node

2.1

History Node

0.8.1

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
pyvcloud-16.tar.gz (1.3 MB) Copy SHA256 Checksum SHA256 Source Jul 23, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting