| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/data/virtualenvs/linode/bin/python2
- from __future__ import print_function
- import argparse
- import sys
- import utils
- import config
- parser = argparse.ArgumentParser()
- linode_group = parser.add_mutually_exclusive_group(required=True)
- linode_group.add_argument('--linode-id', type=int, dest='linode_id')
- linode_group.add_argument('--linode-label', dest='linode_label')
- parser.add_argument('--host-name', dest='host_name')
- parser.add_argument('--disk-size-mb', dest='disk_size_mb')
- parser.add_argument('--swap-size-mb', dest='swap_size_mb', required=True)
- parser.add_argument('--data-disk-size-mb', dest='data_disk_size_mb', required=True)
- args = parser.parse_args()
- api = utils.get_api(config.linode_api_key)
- if args.linode_id is not None:
- linode = utils.get_linode_by_id(api, args.linode_id)
- else:
- linode = utils.get_linode_by_label(api, args.linode_label)
- linode_id = linode['LINODEID']
- host_name = linode['LABEL'] if args.host_name is None else args.host_name
- disk_size_mb = config.disk_size_mb if args.disk_size_mb is None else args.disk_size_mb
- ips = api.linode_ip_list(LinodeID=linode_id)
- for ip in ips:
- if not ip['ISPUBLIC']:
- break
- else:
- print('Adding private IP address to Linode')
- api.linode_ip_addprivate(LinodeID=linode_id)
- swap_disk = utils.get_swap_disk(api, linode_id)
- if swap_disk is None:
- swap_disk_id = utils.create_swap_disk(api, linode_id, args.swap_size_mb)
- else:
- swap_disk_id = swap_disk['DISKID']
- print('Reusing existing swap disk', file=sys.stderr)
- data_disk = utils.get_data_disk(api, linode_id)
- if data_disk is None:
- data_disk_id = utils.create_data_disk(api, linode_id, args.data_disk_size_mb)
- else:
- data_disk_id = data_disk['DISKID']
- print('Reusing existing data disk', file=sys.stderr)
- utils.deploy_linode_from_stackscript(
- api=api,
- linode_id=linode_id,
- configuration_label=config.configuration_label,
- stackscript_label=config.stackscript_label,
- stackscript_args=config.get_stackscript_args(host_name),
- distribution_label=config.distribution_label,
- disk_label=config.disk_label,
- disk_size_mb=disk_size_mb,
- root_password=config.root_password,
- extra_disk_ids=[swap_disk_id, data_disk_id]
- )
|