Updated Branches:
  refs/heads/trunk dbe5259ae -> 9e073990e

docs: Add documentation for CloudStack driver.

Signed-off-by: Tomaz Muraus <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/b262190c
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/b262190c
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/b262190c

Branch: refs/heads/trunk
Commit: b262190c9c3dcb03513008dd8c0408bf4feda647
Parents: dbe5259
Author: Sebastien Goasguen <[email protected]>
Authored: Thu Dec 12 15:59:27 2013 +0100
Committer: Tomaz Muraus <[email protected]>
Committed: Fri Dec 13 12:32:18 2013 +0100

----------------------------------------------------------------------
 docs/compute/_supported_providers.rst           |   2 +-
 docs/compute/drivers/cloudstack.rst             | 190 +++++++++++++++++++
 .../create_cloudstack_node_keypair_secgroup.py  |  29 +++
 .../cloudstack/create_node_advanced_zone.py     |  21 ++
 .../deploy_node_with_keypair_security_group.py  |  21 ++
 .../cloudstack/instantiate_driver_host_path.py  |   4 +
 .../instantiate_driver_insecure_port.py         |   6 +
 .../cloudstack/instantiate_driver_url.py        |   3 +
 .../cloudstack/port_forwarding_management.py    |  15 ++
 .../cloudstack/security_groups_management.py    |  30 +++
 .../ssh_keypairs_management_exoscale.py         |  28 +++
 .../start_interactive_shell_exoscale.py         |  14 ++
 .../start_interactive_shell_ikoula.py           |  17 ++
 .../cloudstack/turn_off_ssl_verification.py     |   2 +
 .../create_cloudstack_node_keypair_secgroup.py  |  29 ---
 15 files changed, 381 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/compute/_supported_providers.rst
----------------------------------------------------------------------
diff --git a/docs/compute/_supported_providers.rst 
b/docs/compute/_supported_providers.rst
index d10ff7b..e20bfad 100644
--- a/docs/compute/_supported_providers.rst
+++ b/docs/compute/_supported_providers.rst
@@ -7,7 +7,7 @@ Provider                              Documentation
 `CloudFrames`_                        :doc:`Click 
</compute/drivers/cloudframes>` CLOUDFRAMES         
:mod:`libcloud.compute.drivers.cloudframes`    :class:`CloudFramesNodeDriver`   
   
 `CloudSigma`_                                                                  
   CLOUDSIGMA          :mod:`libcloud.compute.drivers.cloudsigma`     
:class:`CloudSigmaZrhNodeDriver`    
 `CloudSigma`_                                                                  
   CLOUDSIGMA_US       :mod:`libcloud.compute.drivers.cloudsigma`     
:class:`CloudSigmaLvsNodeDriver`    
-`CloudStack`_                                                                  
   CLOUDSTACK          :mod:`libcloud.compute.drivers.cloudstack`     
:class:`CloudStackNodeDriver`       
+`CloudStack`_                         :doc:`Click 
</compute/drivers/cloudstack>`  CLOUDSTACK          
:mod:`libcloud.compute.drivers.cloudstack`     :class:`CloudStackNodeDriver`
 `Digital Ocean`_                                                               
   DIGITAL_OCEAN       :mod:`libcloud.compute.drivers.digitalocean`   
:class:`DigitalOceanNodeDriver`     
 `Dreamhost`_                                                                   
   DREAMHOST           :mod:`libcloud.compute.drivers.dreamhost`      
:class:`DreamhostNodeDriver`        
 `Amazon EC2`_                         :doc:`Click </compute/drivers/ec2>`      
   EC2                 :mod:`libcloud.compute.drivers.ec2`            
:class:`EC2NodeDriver`              

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/compute/drivers/cloudstack.rst
----------------------------------------------------------------------
diff --git a/docs/compute/drivers/cloudstack.rst 
b/docs/compute/drivers/cloudstack.rst
new file mode 100644
index 0000000..e5f0630
--- /dev/null
+++ b/docs/compute/drivers/cloudstack.rst
@@ -0,0 +1,190 @@
+CloudStack Driver Documentation
+===============================
+
+`CloudStack`_ is an Apache Software Foundation open source software designed to
+deploy and manage large networks of virtual machines, as a highly available,
+highly scalable Infrastructure as a Service (IaaS) cloud computing platform.
+CloudStack is used by a number of service providers to offer public cloud
+services, and by many companies to provide an on-premises (private) cloud
+offering, or as part of a hybrid cloud solution.
+
+`CloudStack`_ has its own non-standard `API`_ , `libcloud` provides a Python
+wrapper on top of this `API`_ with common methods with other IaaS solutions and
+Public cloud providers. Therefore, you can use use the `CloudStack` libcloud
+driver to communicate with your local CloudStack based private cloud as well
+as CloudStack based public clouds.
+
+Instantiating a driver
+----------------------
+
+When you instantiate a driver you need to pass the following arguments to the
+driver constructor:
+
+* ``key`` - Your CloudStack API key
+* ``secret`` - Your CloudStack secret key
+* ``host`` - The host of your CloudStack endpoint
+               (e.g `localhost` for http://localhost:8080/client/api)
+* ``path`` - The path to your CloudStack endpoint
+               (e.g `/client/api` for http://localhost:8080/client/api)
+* ``url`` - The url to your CloudStack endpoint,
+               mutually exclusive with `host` and `path`
+* ``secure`` - True or False. True by default
+
+Typically this will lead to:
+
+.. literalinclude:: 
/examples/compute/cloudstack/instantiate_driver_host_path.py
+   :language: python
+
+A complete `url` can be used instead:
+
+.. literalinclude:: /examples/compute/cloudstack/instantiate_driver_url.py
+   :language: python
+
+In the testing scenario where you are running CloudStack locally, the 
connection
+may be insecure and you may run it on a specific port. In that case, the
+instantiation would look like this
+
+.. literalinclude:: 
/examples/compute/cloudstack/instantiate_driver_insecure_port.py
+   :language: python
+
+If you are making a connection to a secure cloud that does not use a trusted
+certificate, you will have to disable the SSL verification like so:
+
+.. literalinclude:: /examples/compute/cloudstack/turn_off_ssl_verification.py
+   :language: python
+
+`libcloud` now features CloudStack based drivers for the `exoscale`_ and
+`ikoula`_ public clouds. Instantiating drivers to those clouds is shown
+in the example section below.
+
+The base `libcloud` API allows you to:
+
+* list nodes, images, instance types, locations
+* list, create, attach, detach, delete volumes
+
+Non-standard functionality and extension methods
+------------------------------------------------
+
+The CloudStack driver exposes a lot of `libcloud` non-standard
+functionalities through extension methods and arguments.
+
+These functionalities include:
+
+* start and stop a node
+* list disk offerings
+* list networks
+* list, allocate and release public IPs,
+* list, create and delete port forwarding rules
+* list, create and delete IP forwarding rules
+* list, create, delete and authorize security groups
+
+.. compound::
+
+   Some methods are only valid for `CloudStack`_ advanced zones, while others
+   are suited for basic zones.
+
+For information on how to use these functionalities please see the method
+docstrings below. You can also use an interactive shell for exploration as
+shown in the examples.
+
+Basic Zone Examples
+--------------------
+
+To start experimenting with libcloud, starting an ipython interactive shell can
+ be very handy. Tab completion and shell history are available. Below is an
+ example of starting such an interactive shell for the exoscale public cloud.
+ Once started you can explore the libcloud API.
+
+1. Start an interactive shell on Exoscale public cloud
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. literalinclude:: 
/examples/compute/cloudstack/start_interactive_shell_exoscale.py
+   :language: python
+
+After experimenting through an interactive shell, you can write scripts that
+will directly execute libcloud commands. For instance starting a node with a
+specific ssh keypair and a couple of security groups can be done as shown in
+the following example:
+
+2. SSH Keypairs management on Exoscale public cloud
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The base libcloud API has been extended to handle management of ssh keypairs.
+This is very useful for CloudStack basic zones. SSH Keypairs, can be listed,
+created, deleted and imported. This new base API is only available in libcloud
+trunk.
+
+.. literalinclude:: 
/examples/compute/cloudstack/ssh_keypairs_management_exoscale.py
+   :language: python
+
+3. Security Groups management on Exoscale public cloud
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Currently there is no security group class defined, hence the result of
+`ex_list_securitry_groups()` is a list of dictionaries and not classes.
+
+.. literalinclude:: /examples/compute/cloudstack/security_groups_management.py
+   :language: python
+
+4. Create a node with a keypair and a list of security groups
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. literalinclude:: 
/examples/compute/cloudstack/create_cloudstack_node_keypair_secgroup.py
+   :language: python
+
+5. Deploying a node with a keypair
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Executing deployment scripts when creating node is currently only support in
+basic zones. The `deploy_node` method is used instead of the `create_node`,
+ssh key are passed as arguments as well as a list of scripts.
+
+.. literalinclude:: 
/examples/compute/cloudstack/deploy_node_with_keypair_security_group.py
+   :language: python
+
+Advanced Zone examples
+-----------------------
+
+Advanced zones in CloudStack provide tenant isolation via VLANs or SDN
+technologies like GRE/STT meshes. In a typical advanced zones, users will
+deploy nodes on a private network and will use NAT to access their nodes.
+Therefore one needs to specifiy the network a node needs to be deployed on,
+and needs to setup port forwarding or IP forwarding rules.
+
+1. Start an interactive shell on Ikoula public cloud
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Instantiation of driver for an advanced zone is the same as with a basic zone,
+for example on the `ikoula`_ cloud:
+
+.. literalinclude:: 
/examples/compute/cloudstack/start_interactive_shell_ikoula.py
+   :language: python
+
+2. Create a node on a guest network and allocate an IP
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Starting a node requires a specific guest network.
+
+.. literalinclude:: /examples/compute/cloudstack/create_node_advanced_zone.py
+   :language: python
+
+3. List, create and delete a Port forwarding rule
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To access the node via ssh you need you can create a port forwarding rule like 
so:
+
+.. literalinclude:: /examples/compute/cloudstack/port_forwarding_management.py
+   :language: python
+
+
+API Docs
+--------
+
+.. autoclass:: libcloud.compute.drivers.cloudstack.CloudStackNodeDriver
+    :members:
+    :inherited-members:
+
+.. _`CloudStack`: http://cloudstack.apache.org
+.. _`API`: http://cloudstack.apache.org/docs/api/
+.. _`exoscale`: http://exoscale.ch
+.. _`ikoula`: http://ikoula.com

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/create_cloudstack_node_keypair_secgroup.py
----------------------------------------------------------------------
diff --git 
a/docs/examples/compute/cloudstack/create_cloudstack_node_keypair_secgroup.py 
b/docs/examples/compute/cloudstack/create_cloudstack_node_keypair_secgroup.py
new file mode 100644
index 0000000..b912fbf
--- /dev/null
+++ 
b/docs/examples/compute/cloudstack/create_cloudstack_node_keypair_secgroup.py
@@ -0,0 +1,29 @@
+from libcloud.compute.types import Provider
+from libcloud.compute.providers import get_driver
+
+ACCESS_ID = 'your access id'
+SECRET_KEY = 'your secret key'
+HOST = 'hostname or ip address of your management server'
+PATH = 'path to the api endpoint, e.g: /client/api'
+
+SIZE_ID = 'id of the computer offering you want to use'
+IMAGE_ID = 'id of the template you want to use'
+
+# Name of the existing keypair you want to use
+KEYPAIR_NAME = 'keypairname'
+
+# The security groups you want this node to be added to
+SECURITY_GROUP_NAMES = ['secgroup1', 'secgroup2']
+
+cls = get_driver(Provider.CLOUDSTACK)
+driver = cls(key=ACCESS_ID, secret=SECRET_KEY, secure=True,
+             host=HOST, path=PATH)
+
+sizes = driver.list_sizes()
+images = driver.list_images()
+size = [s for s in sizes if s.id == SIZE_ID][0]
+image = [i for i in images if i.id == IMAGE_ID][0]
+
+node = driver.create_node(name='test-node-1', image=image, size=size,
+                          ex_security_groups=SECURITY_GROUP_NAMES,
+                          ex_keyname=KEYPAIR_NAME)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/create_node_advanced_zone.py
----------------------------------------------------------------------
diff --git a/docs/examples/compute/cloudstack/create_node_advanced_zone.py 
b/docs/examples/compute/cloudstack/create_node_advanced_zone.py
new file mode 100644
index 0000000..a174752
--- /dev/null
+++ b/docs/examples/compute/cloudstack/create_node_advanced_zone.py
@@ -0,0 +1,21 @@
+# List the guest networks
+# This returns a list of CloudStackNetwork objects
+nets = driver.ex_list_networks()
+
+# List the images/templates available
+# This returns a list of NodeImage objects
+images = driver.list_images()
+
+# List the instance types
+# This returns a list of NodeSize objects
+sizes = driver.list_sizes()
+
+# Create the node
+# This returns a Node object
+node = driver.create_node(name='libcloud', image=images[0],
+                          size=sizes[0], network=[nets[0]])
+
+# The node has a private IP in the guest network used
+# No public IPs and no rules
+pprint(node.extra)
+pprint(node.private_ips)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/deploy_node_with_keypair_security_group.py
----------------------------------------------------------------------
diff --git 
a/docs/examples/compute/cloudstack/deploy_node_with_keypair_security_group.py 
b/docs/examples/compute/cloudstack/deploy_node_with_keypair_security_group.py
new file mode 100755
index 0000000..d018142
--- /dev/null
+++ 
b/docs/examples/compute/cloudstack/deploy_node_with_keypair_security_group.py
@@ -0,0 +1,21 @@
+from libcloud.compute.types import Provider
+from libcloud.compute.providers import get_driver
+
+# Import the deployment specific modules
+from libcloud.compute.deployment import ScriptDeployment
+from libcloud.compute.deployment import MultiStepDeployment
+
+cls = get_driver(Provider.EXOSCALE)
+driver = cls('api key', 'api secret key')
+
+# Define the scripts that you want to run during deployment
+script = ScriptDeployment("/bin/date")
+msd = MultiStepDeployment([script])
+
+node = conn.deploy_node(name='test', image=image, size=size,
+                        ssh_key='~/.ssh/id_rsa_test',
+                        ex_keyname='test-keypair',
+                        deploy=msd)
+
+# The stdout of the deployment can be checked on the `script` object
+script.stdout

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/instantiate_driver_host_path.py
----------------------------------------------------------------------
diff --git a/docs/examples/compute/cloudstack/instantiate_driver_host_path.py 
b/docs/examples/compute/cloudstack/instantiate_driver_host_path.py
new file mode 100644
index 0000000..0314ba2
--- /dev/null
+++ b/docs/examples/compute/cloudstack/instantiate_driver_host_path.py
@@ -0,0 +1,4 @@
+host = 'example.com'
+path = '/path/to/api'
+Driver = get_driver(Provider.CLOUDSTACK)
+conn = Driver(key=apikey, secret=secretkey, host=host, path=path)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/instantiate_driver_insecure_port.py
----------------------------------------------------------------------
diff --git 
a/docs/examples/compute/cloudstack/instantiate_driver_insecure_port.py 
b/docs/examples/compute/cloudstack/instantiate_driver_insecure_port.py
new file mode 100644
index 0000000..a3171e3
--- /dev/null
+++ b/docs/examples/compute/cloudstack/instantiate_driver_insecure_port.py
@@ -0,0 +1,6 @@
+host = 'localhost'
+path = '/path/to/api'
+port = 8080
+Driver = get_driver(Provider.CLOUDSTACK)
+conn = Driver(key=apikey, secret=secretkey, host=host,
+              path=path, port=port, secure=False)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/instantiate_driver_url.py
----------------------------------------------------------------------
diff --git a/docs/examples/compute/cloudstack/instantiate_driver_url.py 
b/docs/examples/compute/cloudstack/instantiate_driver_url.py
new file mode 100644
index 0000000..5fc33b9
--- /dev/null
+++ b/docs/examples/compute/cloudstack/instantiate_driver_url.py
@@ -0,0 +1,3 @@
+url = 'http://example.com/path/to/api'
+Driver = get_driver(Provider.CLOUDSTACK)
+conn = Driver(key=apikey, secret=secretkey, url=url)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/port_forwarding_management.py
----------------------------------------------------------------------
diff --git a/docs/examples/compute/cloudstack/port_forwarding_management.py 
b/docs/examples/compute/cloudstack/port_forwarding_management.py
new file mode 100644
index 0000000..73ec09c
--- /dev/null
+++ b/docs/examples/compute/cloudstack/port_forwarding_management.py
@@ -0,0 +1,15 @@
+# Allocate a public IP
+# This returns a CloudStackAddress object
+driver.ex_allocate_public_ip()
+
+# You can now see this address when listing public IPs
+ip = driver.ex_list_public_ips()[0]
+
+# Create a port forwarding rule for the node
+# This returns a CloudStackPortForwardingRule object
+rule = conn.ex_create_port_forwarding_rule(ip, 22, 22, 'TCP', node)
+pprint(rule)
+
+# The node now has a public IP and a rule associated to it
+print node
+print node.extra

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/security_groups_management.py
----------------------------------------------------------------------
diff --git a/docs/examples/compute/cloudstack/security_groups_management.py 
b/docs/examples/compute/cloudstack/security_groups_management.py
new file mode 100644
index 0000000..c8dc37d
--- /dev/null
+++ b/docs/examples/compute/cloudstack/security_groups_management.py
@@ -0,0 +1,30 @@
+import os
+from pprint import pprint
+
+from libcloud.compute.types import Provider
+from libcloud.compute.providers import get_driver
+
+cls = get_driver(Provider.EXOSCALE)
+driver = cls('api key', 'api secret key')
+
+# List all security groups
+sg = driver.ex_list_security_groups()
+pprint(sg)
+
+# Create a new security group.
+security_group = driver.ex_create_security_group(name='test-security-group')
+pprint(security_group)
+
+# Authorize an ingress rule on a security group
+# If `startport` is used alone, this will be the only port open
+# If `endport` is also used then the entire range will be authorized
+sg = driver.ex_authorize_security_group_ingress(securitygroupname=
+                                                'test-security-group',
+                                                protocol='tcp',
+                                                startport='22',
+                                                cidrlist='0.0.0.0/0')
+pprint(sg)
+
+# Delete a security group we have previously created
+status = driver.ex_delete_security_group(name='test-security-group')
+pprint(status)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/ssh_keypairs_management_exoscale.py
----------------------------------------------------------------------
diff --git 
a/docs/examples/compute/cloudstack/ssh_keypairs_management_exoscale.py 
b/docs/examples/compute/cloudstack/ssh_keypairs_management_exoscale.py
new file mode 100644
index 0000000..0779754
--- /dev/null
+++ b/docs/examples/compute/cloudstack/ssh_keypairs_management_exoscale.py
@@ -0,0 +1,28 @@
+import os
+from pprint import pprint
+
+from libcloud.compute.types import Provider
+from libcloud.compute.providers import get_driver
+
+cls = get_driver(Provider.EXOSCALE)
+driver = cls('api key', 'api secret key')
+
+# Create a new key pair. Most providers will return generated private key in
+# the response which can be accessed at key_pair.private_key
+key_pair = driver.create_key_pair(name='test-key-pair-1')
+pprint(key_pair)
+
+# Import an existing public key from a file. If you have public key as a
+# string, you can use import_key_pair_from_string method instead.
+key_file_path = os.path.expanduser('~/.ssh/id_rsa_test.pub')
+key_pair = driver.import_key_pair_from_file(name='test-key-pair-2',
+                                            key_file_path=key_file_path)
+pprint(key_pair)
+
+# Retrieve information about previously created key pair
+key_pair = driver.get_key_pair(name='test-key-pair-1')
+pprint(key_pair)
+
+# Delete a key pair we have previously created
+status = driver.delete_key_pair(key_pair=key_pair)
+pprint(status)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/start_interactive_shell_exoscale.py
----------------------------------------------------------------------
diff --git 
a/docs/examples/compute/cloudstack/start_interactive_shell_exoscale.py 
b/docs/examples/compute/cloudstack/start_interactive_shell_exoscale.py
new file mode 100755
index 0000000..3a07756
--- /dev/null
+++ b/docs/examples/compute/cloudstack/start_interactive_shell_exoscale.py
@@ -0,0 +1,14 @@
+from IPython.terminal.embed import InteractiveShellEmbed
+
+from libcloud.compute.types import Provider
+from libcloud.compute.providers import get_driver
+
+apikey = os.getenv('EXOSCALE_API_KEY')
+secretkey = os.getenv('EXOSCALE_SECRET_KEY')
+
+Driver = get_driver(Provider.EXOSCALE)
+
+conn = Driver(key=apikey, secret=secretkey)
+
+shell = InteractiveShellEmbed(banner1="Hello from Libcloud Shell !!")
+shell()

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/start_interactive_shell_ikoula.py
----------------------------------------------------------------------
diff --git a/docs/examples/compute/cloudstack/start_interactive_shell_ikoula.py 
b/docs/examples/compute/cloudstack/start_interactive_shell_ikoula.py
new file mode 100755
index 0000000..34d554f
--- /dev/null
+++ b/docs/examples/compute/cloudstack/start_interactive_shell_ikoula.py
@@ -0,0 +1,17 @@
+from IPython.terminal.embed import InteractiveShellEmbed
+
+from libcloud.compute.types import Provider
+from libcloud.compute.providers import get_driver
+import libcloud.security as sec
+
+sec.VERIFY_SSL_CERT = False
+
+apikey = os.getenv('IKOULA_API_KEY')
+secretkey = os.getenv('IKOULA_SECRET_KEY')
+
+Driver = get_driver(Provider.IKOULA)
+
+conn = Driver(key=apikey, secret=secretkey)
+
+shell = InteractiveShellEmbed(banner1="Hello from Libcloud Shell !!")
+shell()

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/cloudstack/turn_off_ssl_verification.py
----------------------------------------------------------------------
diff --git a/docs/examples/compute/cloudstack/turn_off_ssl_verification.py 
b/docs/examples/compute/cloudstack/turn_off_ssl_verification.py
new file mode 100644
index 0000000..d7ace61
--- /dev/null
+++ b/docs/examples/compute/cloudstack/turn_off_ssl_verification.py
@@ -0,0 +1,2 @@
+import libcloud.security as sec
+sec.VERIFY_SSL_CERT = False

http://git-wip-us.apache.org/repos/asf/libcloud/blob/b262190c/docs/examples/compute/create_cloudstack_node_keypair_secgroup.py
----------------------------------------------------------------------
diff --git a/docs/examples/compute/create_cloudstack_node_keypair_secgroup.py 
b/docs/examples/compute/create_cloudstack_node_keypair_secgroup.py
deleted file mode 100644
index b912fbf..0000000
--- a/docs/examples/compute/create_cloudstack_node_keypair_secgroup.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from libcloud.compute.types import Provider
-from libcloud.compute.providers import get_driver
-
-ACCESS_ID = 'your access id'
-SECRET_KEY = 'your secret key'
-HOST = 'hostname or ip address of your management server'
-PATH = 'path to the api endpoint, e.g: /client/api'
-
-SIZE_ID = 'id of the computer offering you want to use'
-IMAGE_ID = 'id of the template you want to use'
-
-# Name of the existing keypair you want to use
-KEYPAIR_NAME = 'keypairname'
-
-# The security groups you want this node to be added to
-SECURITY_GROUP_NAMES = ['secgroup1', 'secgroup2']
-
-cls = get_driver(Provider.CLOUDSTACK)
-driver = cls(key=ACCESS_ID, secret=SECRET_KEY, secure=True,
-             host=HOST, path=PATH)
-
-sizes = driver.list_sizes()
-images = driver.list_images()
-size = [s for s in sizes if s.id == SIZE_ID][0]
-image = [i for i in images if i.id == IMAGE_ID][0]
-
-node = driver.create_node(name='test-node-1', image=image, size=size,
-                          ex_security_groups=SECURITY_GROUP_NAMES,
-                          ex_keyname=KEYPAIR_NAME)

Reply via email to