You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by se...@apache.org on 2013/06/05 18:12:13 UTC
git commit: updated refs/heads/ACS101 to e2aae33
Updated Branches:
refs/heads/ACS101 31b001f08 -> e2aae33f7
More clients demo/docs
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/e2aae33f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/e2aae33f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/e2aae33f
Branch: refs/heads/ACS101
Commit: e2aae33f77411edceef0c137c7dfa6b8d081f590
Parents: 31b001f
Author: Sebastien Goasguen <ru...@gmail.com>
Authored: Wed Jun 5 12:12:20 2013 -0400
Committer: Sebastien Goasguen <ru...@gmail.com>
Committed: Wed Jun 5 12:12:20 2013 -0400
----------------------------------------------------------------------
docs/acs101/en-US/Clientsandshells.xml | 3 +-
docs/acs101/en-US/Wrappers.xml | 1 -
docs/acs101/en-US/boto.xml | 2 +-
docs/acs101/en-US/clostack.xml | 120 ++++++++++++++++++
docs/acs101/en-US/jcloudscli.xml | 178 ++++++++++++++++++++++++++-
docs/acs101/en-US/libcloud.xml | 24 ++++-
6 files changed, 321 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2aae33f/docs/acs101/en-US/Clientsandshells.xml
----------------------------------------------------------------------
diff --git a/docs/acs101/en-US/Clientsandshells.xml b/docs/acs101/en-US/Clientsandshells.xml
index ff084e7..b4d3dd3 100644
--- a/docs/acs101/en-US/Clientsandshells.xml
+++ b/docs/acs101/en-US/Clientsandshells.xml
@@ -31,9 +31,10 @@
<xi:include href="cloudstackapi.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="cloudmonkey.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="boto.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="jcloudscli.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="libcloud.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="clostack.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="boto.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</chapter>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2aae33f/docs/acs101/en-US/Wrappers.xml
----------------------------------------------------------------------
diff --git a/docs/acs101/en-US/Wrappers.xml b/docs/acs101/en-US/Wrappers.xml
index 7c15745..70f2977 100644
--- a/docs/acs101/en-US/Wrappers.xml
+++ b/docs/acs101/en-US/Wrappers.xml
@@ -33,7 +33,6 @@
<xi:include href="saltcloud.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="whirr.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="pallet.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="stormdeploy.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</chapter>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2aae33f/docs/acs101/en-US/boto.xml
----------------------------------------------------------------------
diff --git a/docs/acs101/en-US/boto.xml b/docs/acs101/en-US/boto.xml
index 8d2be64..aac1317 100644
--- a/docs/acs101/en-US/boto.xml
+++ b/docs/acs101/en-US/boto.xml
@@ -23,7 +23,7 @@
-->
<section id="boto">
- <title>Examples</title>
+ <title>Pyton Boto</title>
<para>There are many tools available to interface with a AWS compatible API. In this section we provide
a few examples that users of &PRODUCT; can build upon.</para>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2aae33f/docs/acs101/en-US/clostack.xml
----------------------------------------------------------------------
diff --git a/docs/acs101/en-US/clostack.xml b/docs/acs101/en-US/clostack.xml
new file mode 100644
index 0000000..c5ea05d
--- /dev/null
+++ b/docs/acs101/en-US/clostack.xml
@@ -0,0 +1,120 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "ACS101.ent">
+%BOOK_ENTITIES;
+]>
+
+<!-- Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<section id="clostack">
+ <title>Clostack, a Clojure client</title>
+ <para>There are many tools available to interface with the &PRODUCT; API. Apache Libcloud is one of those. In this section
+ we provide a basic.</para>
+
+ <para>To install Libcloud refer to the libcloud website. If you are familiar with Pypi simply do:</para>
+ <programlisting>pip install apache-libcloud</programlisting>
+
+ <para>You should see the following output:</para>
+
+ <programlisting>
+pip install apache-libcloud
+Downloading/unpacking apache-libcloud
+ </programlisting>
+
+ <para>You can then open a Python interactive shell, create an instance of a &PRODUCT; driver and call the available methods via the libcloud API.</para>
+
+ <programlisting>
+ <![CDATA[
+$ lein repl
+Retrieving codox/codox/0.6.4/codox-0.6.4.pom from clojars
+Retrieving codox/codox.leiningen/0.6.4/codox.leiningen-0.6.4.pom from clojars
+Retrieving leinjacker/leinjacker/0.4.1/leinjacker-0.4.1.pom from clojars
+Retrieving org/clojure/core.contracts/0.0.1/core.contracts-0.0.1.pom from central
+Retrieving org/clojure/core.unify/0.5.3/core.unify-0.5.3.pom from central
+Retrieving org/clojure/core.contracts/0.0.1/core.contracts-0.0.1.jar from central
+Retrieving org/clojure/core.unify/0.5.3/core.unify-0.5.3.jar from central
+Retrieving codox/codox/0.6.4/codox-0.6.4.jar from clojars
+Retrieving codox/codox.leiningen/0.6.4/codox.leiningen-0.6.4.jar from clojars
+Retrieving leinjacker/leinjacker/0.4.1/leinjacker-0.4.1.jar from clojars
+nREPL server started on port 59373
+REPL-y 0.1.4
+Clojure 1.5.1
+ Exit: Control+D or (exit) or (quit)
+Commands: (user/help)
+ Docs: (doc function-name-here)
+ (find-doc "part-of-name-here")
+ Source: (source function-name-here)
+ (user/sourcery function-name-here)
+ Javadoc: (javadoc java-object-or-class-here)
+Examples from clojuredocs.org: [clojuredocs or cdoc]
+ (user/clojuredocs name-here)
+ (user/clojuredocs "ns-here" "name-here")
+user=> (use 'clostack.client)
+SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
+SLF4J: Defaulting to no-operation (NOP) logger implementation
+SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
+nil
+user=> (list
+list list* list-accounts list-async-jobs
+list-capabilities list-disk-offerings list-event-types list-events
+list-firewall-rules list-hypervisors list-instance-groups list-ip-forwarding-rules
+list-iso-permissions list-isos list-lb-stickiness-policies list-load-balancer-rule-instances
+list-load-balancer-rules list-network-ac-ls list-network-offerings list-networks
+list-os-categories list-os-types list-port-forwarding-rules list-private-gateways
+list-project-accounts list-project-invitations list-projects list-public-ip-addresses
+list-remote-access-vpns list-resource-limits list-security-groups list-service-offerings
+list-snapshot-policies list-snapshots list-ssh-key-pairs list-static-routes
+list-tags list-template-permissions list-templates list-virtual-machines
+list-volumes list-vp-cs list-vpc-offerings list-vpn-connections
+list-vpn-customer-gateways list-vpn-gateways list-vpn-users list-zones
+list?
+user=> (list
+list list* list-accounts list-async-jobs
+list-capabilities list-disk-offerings list-event-types list-events
+list-firewall-rules list-hypervisors list-instance-groups list-ip-forwarding-rules
+list-iso-permissions list-isos list-lb-stickiness-policies list-load-balancer-rule-instances
+list-load-balancer-rules list-network-ac-ls list-network-offerings list-networks
+list-os-categories list-os-types list-port-forwarding-rules list-private-gateways
+list-project-accounts list-project-invitations list-projects list-public-ip-addresses
+list-remote-access-vpns list-resource-limits list-security-groups list-service-offerings
+list-snapshot-policies list-snapshots list-ssh-key-pairs list-static-routes
+list-tags list-template-permissions list-templates list-virtual-machines
+list-volumes list-vp-cs list-vpc-offerings list-vpn-connections
+list-vpn-customer-gateways list-vpn-gateways list-vpn-users list-zones
+list?
+user=> (def cs (http-client))
+#'user/cs
+user=> cs
+#clostack.client.CloudstackHTTPClient{:api-key "mnH5EbKcKeJdJcsSnav7SKoqwNtZFGXOiITNCev5AKAd3ArKkMF5FlpurvguEIwQG_Fn-N0lcRt8AZW4kYV55Q", :api-secret nil, :endpoint "https://api.exoscale.ch/compute", :http-client #<AsyncHttpClient com.ning.http.client.AsyncHttpClient@5aa370c7>}
+user=> (list-templates cs :templatefilter "featured")
+NullPointerException clojure.lang.Reflector.invokeNoArgInstanceMember (Reflector.java:296)
+
+user=> (def cs (http-client :api-secret "Hv97W5UKHG-268UN_UKIzPgw7B0zgnJKdReeUmtDHGfbWneOyJO621TdqdFR07Co38iby5PWL1ylC4oJlslicg"))
+#'user/cs
+user=> (list-templates cs :templatefilter "featured")
+]]>
+ </programlisting>
+
+ <para>Clojure seems to be getting a lot of attention these days, mostly for its functional programming aspect.
+ It offers a very clean syntax with the strength of java and the rapid prototyping characteristics of scripting languages.
+ Frameworks like Pallet are making use of clojure to build advanced cloud services. In the next chapter we will have a quick look at pallet-exoscale
+ which lets you create <emphasis>crates</emphasis> in the cloud, defining node dependencies and software packages that need to be configured.
+ </para>
+
+ </section>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2aae33f/docs/acs101/en-US/jcloudscli.xml
----------------------------------------------------------------------
diff --git a/docs/acs101/en-US/jcloudscli.xml b/docs/acs101/en-US/jcloudscli.xml
index dc75a24..b592e2d 100644
--- a/docs/acs101/en-US/jcloudscli.xml
+++ b/docs/acs101/en-US/jcloudscli.xml
@@ -24,9 +24,181 @@
<section id="jcloudscli">
<title>jClouds CLI</title>
- <para>DevCloud is the &PRODUCT; sandbox. It is provided as a Virtual Box appliance. It is meant to be used as a development environment to easily test new &PRODUCT; development. It has also been used for training and &PRODUCT; demos since it provides a <emphasis>Cloud in a box</emphasis>.</para>
+ <para>jclouds is a Java wrapper for many Cloud Providers APIs, it used in a large number of Cloud application to access providers that do not offer a standard APIs. jclouds-cli is the command line interface to jclouds and in &PRODUCT; terminology could be seen as an equivalent to CloudMonkey.</para>
+ <para>However CloudMonkey covers the entire &PRODUCT; API and jclouds-cli does not. Management of virtual machines, blobstore (i.e S3 like) and configuration management via chef are the main features.</para>
+ <warning>
+ <para>jclouds is under going incubation at the Apache Software Foundation, jclouds-cli is available on github. Changes may occur in the sofware from the time of this writing to the time of you reading it.</para>
+ </warning>
+
+ <para>
+ First install jclouds-cli via github and build it with maven:
+ </para>
+ <programlisting>
+$git clone https://github.com/jclouds/jclouds-cli.git
+$cd jclouds-cli
+$mvn install
+ </programlisting>
+
+ <para>
+ Locate the tarball generated by the build in <emphasis>assembly/target</emphasis>, extract the tarball in the directory of your choice and add the bin directory to your path. For instance:
+ </para>
+ <programlisting>
+export PATH=/Users/sebastiengoasguen/Documents/jclouds-cli-1.7.0/bin
+ </programlisting>
+ <para>
+ Define a few environmental variables to set your endpoint and your credentials, the ones listed below are just examples. Adapt to your own endpoint and keys.
+ </para>
+ <programlisting>
+export JCLOUDS_COMPUTE_API=cloudstack
+export JCLOUDS_COMPUTE_ENDPOINT=http://localhost:8080/client/api
+export JCLOUDS_COMPUTE_CREDENTIAL=_UKIzPgw7BneOyJO621Tdlslicg
+export JCLOUDS_COMPUTE_IDENTITY=mnH5EbKcKeJdJrvguEIwQG_Fn-N0l
+ </programlisting>
+
+ <para>
+ You should now be able to use jclouds-cli, check that it is in your path and runs, you should see the following output:
+ </para>
+ <programlisting>
+sebmini:jclouds-cli-1.7.0-SNAPSHOT sebastiengoasguen$ jclouds-cli
+ _ _ _
+ (_) | | | |
+ _ ____| | ___ _ _ _ | | ___
+ | |/ ___) |/ _ \| | | |/ || |/___)
+ | ( (___| | |_| | |_| ( (_| |___ |
+ _| |\____)_|\___/ \____|\____(___/
+(__/
+
+ jclouds cli (1.7.0-SNAPSHOT)
+ http://jclouds.org
+
+Hit '<tab>' for a list of available commands
+and '[cmd] --help' for help on a specific command.
+Hit '<ctrl-d>' to shutdown jclouds cli.
+
+jclouds> features:list
+State Version Name Repository Description
+[installed ] [1.7.0-SNAPSHOT] jclouds-guice jclouds-1.7.0-SNAPSHOT Jclouds - Google Guice
+[installed ] [1.7.0-SNAPSHOT] jclouds jclouds-1.7.0-SNAPSHOT JClouds
+[installed ] [1.7.0-SNAPSHOT] jclouds-blobstore jclouds-1.7.0-SNAPSHOT JClouds Blobstore
+[installed ] [1.7.0-SNAPSHOT] jclouds-compute jclouds-1.7.0-SNAPSHOT JClouds Compute
+[installed ] [1.7.0-SNAPSHOT] jclouds-management jclouds-1.7.0-SNAPSHOT JClouds Management
+[uninstalled] [1.7.0-SNAPSHOT] jclouds-api-filesystem jclouds-1.7.0-SNAPSHOT JClouds - API - FileSystem
+[uninstalled] [1.7.0-SNAPSHOT] jclouds-api-openstack-cinder jclouds-1.7.0-SNAPSHOT JClouds - API - OpenStack Cinder
+[installed ] [1.7.0-SNAPSHOT] jclouds-api-s3 jclouds-1.7.0-SNAPSHOT S3 API
+[uninstalled] [1.7.0-SNAPSHOT] jclouds-api-sqs jclouds-1.7.0-SNAPSHOT SQS API
+[installed ] [1.7.0-SNAPSHOT] jclouds-api-ec2 jclouds-1.7.0-SNAPSHOT EC2 API
+[uninstalled] [1.7.0-SNAPSHOT] jclouds-api-cloudstack jclouds-1.7.0-SNAPSHOT Cloudstack API
+[installed ] [1.7.0-SNAPSHOT] jclouds-api-chef jclouds-1.7.0-SNAPSHOT Jclouds - API - Chef
+[installed ] [1.7.0-SNAPSHOT] jclouds-api-sts jclouds-1.7.0-SNAPSHOT Jclouds - API - STS
+[uninstalled] [1.7.0-SNAPSHOT] jclouds-api-route53 jclouds-1.7.0-SNAPSHOT Jclouds - API - Route53
+[uninstalled] [1.7.0-SNAPSHOT] jclouds-aws-cloudwatch jclouds-1.7.0-SNAPSHOT Amazon Web Service - Cloudwatch
+[installed ] [1.7.0-SNAPSHOT] jclouds-aws-ec2 jclouds-1.7.0-SNAPSHOT Amazon Web Service - EC2
+[uninstalled] [1.7.0-SNAPSHOT] jclouds-aws-route53 jclouds-1.7.0-SNAPSHOT Amazon Web Service - Route 53
+[installed ] [1.7.0-SNAPSHOT] jclouds-aws-s3 jclouds-1.7.0-SNAPSHOT Amazon Web Service - S3
+[uninstalled] [1.7.0-SNAPSHOT] jclouds-aws-sqs jclouds-1.7.0-SNAPSHOT Amazon Web Service - SQS
+[uninstalled] [1.7.0-SNAPSHOT] jclouds-aws-sts jclouds-1.7.0-SNAPSHOT Amazon Web Service - STS
+...<snip>
+ </programlisting>
<note>
- <para>DevCloud is provided as a convenience by community members. It is not an official &PRODUCT; release artifact.</para>
- <para>The &PRODUCT; source code however, contains tools to build your own DevCloud.</para>
+ <para>I edited the output of jclouds-cli to gain some space, there a lot more providers available</para>
</note>
+ <para>The &PRODUCT; API driver is not installed by default. Install it with:</para>
+
+ <programlisting>
+jclouds> features:install jclouds-api-cloudstack
+ </programlisting>
+
+ <para>For now we will only test the virtual machine management functionality. Pretty basic but that's what we want to do to get a feel for jclouds-cli.
+ If you have set your endpoint and keys properly, you should be able to list the location of your cloud like so:
+ </para>
+ <programlisting>
+$ jclouds location list
+[id] [scope] [description] [parent]
+cloudstack PROVIDER https://api.exoscale.ch/compute
+1128bd56-b4d9-4ac6-a7b9-c715b187ce11 ZONE CH-GV2 cloudstack
+ </programlisting>
+ <para>Again this is an example, you will see something different depending on your endpoint.</para>
+ <para>You can list the service offerings with:</para>
+ <programlisting>
+$ jclouds hardware list
+[id] [ram] [cpu] [cores]
+71004023-bb72-4a97-b1e9-bc66dfce9470 512 2198.0 1.0
+b6cd1ff5-3a2f-4e9d-a4d1-8988c1191fe8 1024 2198.0 1.0
+21624abb-764e-4def-81d7-9fc54b5957fb 2048 4396.0 2.0
+b6e9d1e8-89fc-4db3-aaa4-9b4c5b1d0844 4096 4396.0 2.0
+c6f99499-7f59-4138-9427-a09db13af2bc 8182 8792.0 4.0
+350dc5ea-fe6d-42ba-b6c0-efb8b75617ad 16384 8792.0 4.0
+a216b0d1-370f-4e21-a0eb-3dfc6302b564 32184 17584.0 8.0
+ </programlisting>
+ <para>List the images available with:</para>
+ <programlisting>
+$ jclouds image list
+[id] [location] [os family] [os version] [status]
+0f9f4f49-afc2-4139-b26b-b05a9f51ea74 windows null AVAILABLE
+1d16c78d-268f-47d0-be0c-b80d31e765d2 unrecognized null AVAILABLE
+3cfd96dc-acce-4423-a095-e558f740db5c unrecognized null AVAILABLE
+5a536efc-e935-4d77-912d-7585694b1501 unrecognized null AVAILABLE
+5da4b141-19e4-45ac-8460-8262a2d7bcbd unrecognized null AVAILABLE
+7d36b6bc-ec34-4e76-beac-7d6e956b6527 unrecognized null AVAILABLE
+01df77c3-0150-412a-a580-413a50924a18 windows null AVAILABLE
+29cba09f-4569-4bb3-95e7-71f833876e3e windows null AVAILABLE
+77d32782-6866-43d4-9524-6fe346594d09 centos 5.5 AVAILABLE
+81cdfcdd-d696-4642-bf69-c73532579455 unrecognized null AVAILABLE
+89ee852c-a5f5-4ab9-a311-89f39d133e88 windows null AVAILABLE
+93d5b5d7-9ce3-4ff3-9c99-b0133afa679b unrecognized null AVAILABLE
+350ff2a1-57d3-4d33-8610-a3e13791512d unrecognized null AVAILABLE
+754ea486-d649-49e5-a70e-5e5d458f0df0 windows null AVAILABLE
+0324d2e4-3fd9-4ee5-b65d-7619cc74a560 unrecognized null AVAILABLE
+8835e545-bf94-4cc9-a9f5-48a8bc22ea15 unrecognized null AVAILABLE
+954752a8-0486-46bb-8e3f-0adb3e01c619 unrecognized null AVAILABLE
+ccd142ec-83e3-4108-b1c5-8e1fdb353ff9 unrecognized null AVAILABLE
+d605b563-7007-40e6-acd4-bd8db14d30f6 unrecognized null AVAILABLE
+de670627-6fe6-48ac-9955-04efed6e8356 unrecognized null AVAILABLE
+e3b5fa29-ebb4-4486-b923-420437141177 unrecognized null AVAILABLE
+ee241b47-4303-40c8-af58-42ed6bf09f8c windows null AVAILABLE
+ef22eae7-128e-4132-917f-3f47eac2aa00 unrecognized null AVAILABLE
+f2101a0c-eaf7-4760-a143-0a5c940fd864 windows null AVAILABLE
+ </programlisting>
+
+ <para>We see that the os family is not listed properly, this is probably due to some regex used by jclouds to guess the OS type. Unfortunately the name key is not given.</para>
+
+ <para>To start an instance we can check the syntax of </emphasis>jclouds node create</emphasis></para>
+ <programlisting>
+$ jclouds node create --help
+DESCRIPTION
+ jclouds:node-create
+
+ Creates a node.
+
+SYNTAX
+ jclouds:node-create [options] group [number]
+
+ARGUMENTS
+ group
+ Node group.
+ number
+ Number of nodes to create.
+ (defaults to 1)
+ </programlisting>
+
+ <para>We need to define the name of a group and give the number of instance that we want to start. Plus the hardware and image id.
+ In terms of hardware, we want to save money so we are going to use the smallest possible hardware and for image we give a uuid from the previous list.
+ </para>
+ <programlisting>
+$ jclouds node list
+[id] [location] [hardware] [group] [status]
+4e733609-4c4a-4de1-9063-6fe5800ccb10 1128bd56-b4d9-4ac6-a7b9-c715b187ce11 71004023-bb72-4a97-b1e9-bc66dfce9470 foobar RUNNING
+$ jclouds node info 4e733609-4c4a-4de1-9063-6fe5800ccb10
+[id] [location] [hardware] [group] [status]
+4e733609-4c4a-4de1-9063-6fe5800ccb10 1128bd56-b4d9-4ac6-a7b9-c715b187ce11 71004023-bb72-4a97-b1e9-bc66dfce9470 foobar RUNNING
+
+ Operating System: unrecognized null null
+ Configured User: root
+ Public Address: 9.9.9.9
+ Private Address:
+ Image Id: 1d16c78d-268f-47d0-be0c-b80d31e765d2
+ </programlisting>
+
+ <para>With this short intro, you are well on your way to using jclouds-cli. Check out the interactive shell, the blobstore and chef facility and commit back to this section.</para>
+
</section>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2aae33f/docs/acs101/en-US/libcloud.xml
----------------------------------------------------------------------
diff --git a/docs/acs101/en-US/libcloud.xml b/docs/acs101/en-US/libcloud.xml
index 3c98e06..e7bc353 100644
--- a/docs/acs101/en-US/libcloud.xml
+++ b/docs/acs101/en-US/libcloud.xml
@@ -69,7 +69,29 @@ Cleaning up...
u'toto'
]]>
</programlisting>
-
+
+ <para>
+ I recently added support for keypair management in libcloud. For instace, given a conn object obtained from the previous interactive session:
+ </para>
+ <programlisting>
+conn.ex_list_keypairs()
+conn.ex_create_keypair(name='foobar')
+conn.ex_list_keypairs()
+conn.ex_delete_keypair(name='foobar')
+ </programlisting>
+
+ <para>
+ Management of security groups was also added. Below we show how to list, create and delete security groups. As well as add an ingree rule to open port 22 to the world.
+ Both keypair and security groups are key for access to a &PRODUCT; Basic zone like Exoscale.
+ </para>
+ <programlisting>
+conn.ex_list_security_groups()
+conn.ex_create_security_group(name='libcloud')
+conn.ex_authorize_security_group_ingress(securitygroupname='llibcloud',protocol='TCP',startport=22,cidrlist='0.0.0.0/0')
+conn.ex_delete_security_group('llibcloud')
+ </programlisting>
+
+
<para>One of the interesting use cases of Libcloud is that you can use multiple Cloud Providers, such as AWS, Rackspace, OpenNebula, vCloud and so on. You can then create Driver instances to each of these clouds and create your own multi cloud application.</para>
</section>