#!/usr/bin/env python import os import sys import time from novaclient import client if not sys.argv[4:]: print >> sys.stderr, 'Usage: %s ' % sys.argv[0] sys.exit(1) nova = client.Client( '1.1', username=os.getenv('OS_USERNAME'), api_key=os.getenv('OS_PASSWORD'), project_id=os.getenv('OS_TENANT_NAME'), auth_url=os.getenv('OS_AUTH_URL') ) print 'Created client...' ip = nova.floating_ips.create(sys.argv[4]) print 'Created floating ip: %s' % ip.id instance = nova.servers.create( name='demo', image=sys.argv[1], flavor=sys.argv[2], nics=[{"net-id": sys.argv[3]}] ) print 'Created instance: %s - %s' % (instance.id, instance.name) while instance.status.upper() not in ('ACTIVE', 'ERROR'): print 'waiting for instance to boot...' time.sleep(5) instance = nova.servers.get(instance.id) instance.add_floating_ip(ip) print 'Added floating ip...' assert nova.floating_ips.findall(instance_id=instance.id), 'No floating IPs for instance %s found' % instance.id