+ if "sites" not in myInstance["instance"]["networks"][net_scenario]:
+ myInstance["instance"]["networks"][net_scenario]["sites"] = [ {} ]
+ myInstance["instance"]["networks"][net_scenario]["sites"][0]["netmap-create"] = net_datacenter
+ if args.keypair:
+ if "cloud-config" not in myInstance["instance"]:
+ myInstance["instance"]["cloud-config"] = {}
+ cloud_config = myInstance["instance"]["cloud-config"]
+ for key in args.keypair:
+ index = key.find(":")
+ if index<0:
+ if "key-pairs" not in cloud_config:
+ cloud_config["key-pairs"] = []
+ cloud_config["key-pairs"].append(key)
+ else:
+ user = key[:index]
+ key_ = key[index+1:]
+ key_list = key_.split(",")
+ if "users" not in cloud_config:
+ cloud_config["users"] = []
+ cloud_config["users"].append({"name": user, "key-pairs": key_list })
+ if args.keypair_auto:
+ try:
+ keys=[]
+ home = os.getenv("HOME")
+ user = os.getenv("USER")
+ files = os.listdir(home+'/.ssh')
+ for file in files:
+ if file[-4:] == ".pub":
+ with open(home+'/.ssh/'+file, 'r') as f:
+ keys.append(f.read())
+ if not keys:
+ print "Cannot obtain any public ssh key from '{}'. Try not using --keymap-auto".format(home+'/.ssh')
+ return 1
+ except Exception as e:
+ print "Cannot obtain any public ssh key. Error '{}'. Try not using --keymap-auto".format(str(e))
+ return 1
+
+ if "cloud-config" not in myInstance["instance"]:
+ myInstance["instance"]["cloud-config"] = {}
+ cloud_config = myInstance["instance"]["cloud-config"]
+ if "key-pairs" not in cloud_config:
+ cloud_config["key-pairs"] = []
+ if user:
+ if "users" not in cloud_config:
+ cloud_config["users"] = []
+ cloud_config["users"].append({"name": user, "key-pairs": keys })