Skip to content
Snippets Groups Projects
Commit ef98ddf7 authored by ale's avatar ale
Browse files

Update floatup.py script from upstream

parent 814f2e90
No related branches found
No related tags found
No related merge requests found
......@@ -87,7 +87,7 @@ def encode_dashboard_request(req):
return base64.urlsafe_b64encode(comp.flush()).decode('ascii')
def install_ssh_key():
def install_vagrant_ssh_key():
# Install the SSH key as Vagrant would do, for compatibility.
key_path = os.path.join(
os.getenv('HOME'), '.vagrant.d', 'insecure_private_key')
......@@ -133,6 +133,13 @@ def main():
parser.add_argument(
'--dashboard-url', metavar='URL',
help='vmine dashboard base URL (for Gitlab CI)')
parser.add_argument(
'--ssh-key', metavar='FILE',
type=argparse.FileType('r'),
help='root SSH key to install on VMs')
parser.add_argument(
'--name', metavar='NAME',
help='group name (for named groups)')
parser.add_argument(
'cmd',
choices=['up', 'down'])
......@@ -148,6 +155,12 @@ def main():
host_attrs['image'] = args.image
req = parse_inventory(args.inventory, host_attrs)
req['ttl'] = args.ttl
if args.name:
req['name'] = args.name
if args.ssh_key:
req['ssh_key'] = args.ssh_key
else:
install_vagrant_ssh_key()
print(f'creating VM group with attrs {host_attrs} ...')
print(f'vmine request: {req}')
......@@ -157,8 +170,6 @@ def main():
fd.write(group_id)
print(f'created VM group {group_id}')
install_ssh_key()
if args.env:
with open(args.env, 'w') as fd:
fd.write(f'VMINE_ID={group_id}\n')
......@@ -168,15 +179,21 @@ def main():
fd.write(f'VMINE_GROUP_URL={base_url}/dash/{payload}\n')
elif args.cmd == 'down':
req = {}
if args.name:
req['name'] = args.name
print(f'stopping VM group {args.name}...')
else:
try:
with open(args.state_file) as fd:
group_id = fd.read().strip()
except FileNotFoundError:
print('state file not found, exiting')
return
req['group_id'] = group_id
print(f'stopping VM group {group_id}...')
do_request(args.url + '/api/stop-group', args.ssh,
{'group_id': group_id})
do_request(args.url + '/api/stop-group', args.ssh, req)
if args.state_file:
os.remove(args.state_file)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment