You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by je...@apache.org on 2010/03/21 23:30:11 UTC
svn commit: r925925 - in /incubator/libcloud/trunk/demos: ./ .gitignore
ec2_demo.py secrets.py.dist
Author: jerry
Date: Sun Mar 21 22:30:10 2010
New Revision: 925925
URL: http://svn.apache.org/viewvc?rev=925925&view=rev
Log:
First demo: EC2
Added:
incubator/libcloud/trunk/demos/
incubator/libcloud/trunk/demos/.gitignore
incubator/libcloud/trunk/demos/ec2_demo.py
incubator/libcloud/trunk/demos/secrets.py.dist
Added: incubator/libcloud/trunk/demos/.gitignore
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/demos/.gitignore?rev=925925&view=auto
==============================================================================
--- incubator/libcloud/trunk/demos/.gitignore (added)
+++ incubator/libcloud/trunk/demos/.gitignore Sun Mar 21 22:30:10 2010
@@ -0,0 +1 @@
+secrets.py
Added: incubator/libcloud/trunk/demos/ec2_demo.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/demos/ec2_demo.py?rev=925925&view=auto
==============================================================================
--- incubator/libcloud/trunk/demos/ec2_demo.py (added)
+++ incubator/libcloud/trunk/demos/ec2_demo.py Sun Mar 21 22:30:10 2010
@@ -0,0 +1,128 @@
+#!/usr/bin/env python
+#
+# 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.
+# libcloud.org 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.
+
+#
+# This example provides both a running script (invoke from command line)
+# and an importable module one can play with in Interactive Mode.
+#
+# See docstrings for usage examples.
+#
+
+try:
+ import secrets
+except:
+ pass
+import sys; sys.path.append('..')
+
+from libcloud.types import Provider, InvalidCredsException
+from libcloud.providers import get_driver
+
+from pprint import pprint
+
+def main(argv):
+ """Main EC2 Demo
+
+ When invoked from the command line, it will connect using secrets.py
+ (see secrets.py.dist for setup instructions), and perform the following
+ tasks:
+
+ - List current nodes
+ - List available images (up to 10)
+ - List available sizes (up to 10)
+ """
+ # Load EC2 driver
+ EC2Driver = get_driver(Provider.EC2_US_EAST)
+
+ # Instantiate with Access ID and Secret Key
+ # (see secrets.py.dist)
+ try:
+ ec2 = EC2Driver(secrets.EC2_ACCESS_ID, secrets.EC2_SECRET_KEY)
+ print ">> Loading nodes..."
+ nodes = ec2.list_nodes()
+ pprint(nodes)
+ except NameError, e:
+ print ">> Fatal Error: %s" % e
+ print " (Hint: modify secrets.py.dist)"
+ return 1
+ except Exception, e:
+ print ">> Fatal error: %s" % e
+ return 1
+
+ print ">> Loading images... (showing up to 10)"
+ images = ec2.list_images()
+ pprint(images[:10])
+
+ print ">> Loading sizes... (showing up to 10)"
+ sizes = ec2.list_sizes()
+ pprint(sizes[:10])
+
+ return 0
+
+def get_ec2(**kwargs):
+ """An easy way to play with the EC2 Driver in Interactive Mode
+
+ # Load credentials from secrets.py
+ >>> from ec2demo import get_ec2
+ >>> ec2 = get_ec2()
+
+ # Or, provide credentials
+ >>> from ec2demo import get_ec2
+ >>> ec2 = get_ec2(access_id='xxx', secret_key='yyy')
+
+ # Do things
+ >>> ec2.load_nodes()
+ >>> images = ec2.load_images()
+ >>> sizes = ec2.load_sizes()
+ """
+ access_id = kwargs.get('access_id', secrets.EC2_ACCESS_ID)
+ secret_key = kwargs.get('secret_key', secrets.EC2_SECRET_KEY)
+
+ EC2Driver = get_driver(Provider.EC2_US_EAST)
+ return EC2Driver(access_id, secret_key)
+
+def create_demo(ec2):
+ """Create EC2 Node Demo
+
+ >>> from ec2demo import get_ec2, create_demo
+ >>> ec2 = get_ec2()
+ >>> node = create_demo(ec2)
+ >>> node
+ <Node: uuid=9d1..., name=i-7b1fa910, state=3, public_ip=[''], ...>
+
+ And to destroy the node:
+
+ >>> node.destroy()
+
+ If you've accidentally quit and need to destroy the node:
+
+ >>> from ec2demo import get_ec2
+ >>> nodes = ec2.list_nodes()
+ >>> nodes[0].destroy() # assuming it's the first node
+ """
+ images = ec2.list_images()
+ image = [image for image in images if 'ami' in image.id][0]
+ sizes = ec2.list_sizes()
+ size = sizes[0]
+
+ # Note, name is ignored by EC2
+ node = ec2.create_node(name='create_image_demo',
+ image=image,
+ size=size)
+ return node
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
Added: incubator/libcloud/trunk/demos/secrets.py.dist
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/demos/secrets.py.dist?rev=925925&view=auto
==============================================================================
--- incubator/libcloud/trunk/demos/secrets.py.dist (added)
+++ incubator/libcloud/trunk/demos/secrets.py.dist Sun Mar 21 22:30:10 2010
@@ -0,0 +1,21 @@
+# 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.
+# libcloud.org 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.
+
+#
+# Copy this file to secrets.py for use with provided examples
+#
+
+EC2_ACCESS_ID=''
+EC2_SECRET_KEY=''