Make the keypair example a bit more robust

Change-Id: I1fcd89881313c984e5dbad60b06e298c9a971ba1
This commit is contained in:
TerryHowe
2015-03-06 09:21:58 -07:00
parent 57e7d49536
commit 77c8fb5e6b

View File

@@ -68,24 +68,32 @@ def create(conn, name, opts, ports_to_open=[80, 22]):
kp = conn.compute.find_keypair(name) kp = conn.compute.find_keypair(name)
if kp is None: if kp is None:
# TODO(terrylhowe): Perhaps create keypair from id_rsa by default dirname = os.path.expanduser("~/.ssh")
# and maybe create id_rsa if it doesn't exist.
kp = conn.compute.create_keypair(name=name)
try: try:
os.remove(name) os.mkdir(dirname, 0o700)
except OSError: except OSError:
pass pass
filename = os.path.join(dirname, name)
filenamepub = filename + '.pub'
args = {'name': name}
pubkey = None
try: try:
os.remove(name + '.pub') f = open(filenamepub, 'r')
except OSError: pubkey = f.read()
f.close()
args['public_key'] = pubkey
except IOError:
pass pass
print(str(kp)) kp = conn.compute.create_keypair(**args)
f = open(name, 'w') if pubkey is None:
f.write("%s" % kp.private_key) f = open(filename, 'w')
f.close() f.write("%s" % kp.private_key)
f = open(name + '.pub', 'w') f.close()
f.write("%s" % kp.public_key) f = open(filenamepub, 'w')
f.close() f.write("%s" % kp.public_key)
f.close()
os.chmod(filename, 0o640)
os.chmod(filenamepub, 0o644)
print(str(kp)) print(str(kp))
return network return network