parser = argparse.ArgumentParser() parser.add_argument("SourceServer", help="UUID of the server to clone") parser.add_argument("--region", default='DFW', help="Region in which to create servers (DFW or ORD)") args = parser.parse_args() credential_file=os.path.expanduser("~/.rackspace_cloud_credentials") pyrax.set_credential_file(credential_file) if c1.is_valid_region(args.region, 'compute'): cs = pyrax.connect_to_cloudservers(region=args.region) else: print "The region you requested is not valid: %s" % args.region sys.exit(2) try: cs.servers.find(id=args.SourceServer) except: print "The source server UUID you specified was not found" print "in region %s : %s" % (args.region, args.SourceServer) print "Perhaps it is in a different region?" print "Aborting...." sys.exit(2) newserver = clone_server(cs, args.SourceServer); # Wait for network info to become available c1.wait_for_server_networks([newserver]) # Print info for new server c1.print_servers_info([newserver]) # vim: ts=2 sw=2 tw=78 expandtab
# unbuffer stdout for pretty output sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) #Create new Cloud Network if not args.networkname: args.networkname = '%s-net' % args.FQDN print "Creating new CloudNetwork named %s using %s" % (args.networkname, args.networknet) network = cn.create(args.networkname, cidr=args.networknet) allnets = network.get_server_networks(public=True, private=True) #Create servers and attach to network servers = c1.build_some_servers(cs, args.flavor, args.image, args.FQDN, args.numservers, {}, allnets) c1.wait_for_server_builds(servers) c1.print_servers_info(servers) #Create CBS volumes and attach to servers for srv in servers: volname = "%s-vol" % srv.name print "Creating Block Storage Volume %s of size %d" % (volname, args.volumesize) vol = cbs.create(name=volname, size=args.volumesize, volume_type="SATA") print "Attaching volume %s to server %s" % (volname, srv.name) vol.attach_to_instance(srv, mountpoint='/dev/xvdd') #Create LB, with server nodes if not args.lbname: LBName = '%s-LB' % args.FQDN else: LBName = args.lbname