mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-22 09:50:37 +00:00
Remove commandline arguments, run solely on manifest file
This commit is contained in:
parent
e63e2cca0c
commit
ef343016f0
6 changed files with 29 additions and 36 deletions
|
@ -1,6 +1,6 @@
|
|||
|
||||
|
||||
class BootstrapInformation(object):
|
||||
def __init__(self, manifest=None, args=None):
|
||||
def __init__(self, manifest=None, debug=False):
|
||||
self.manifest = manifest
|
||||
self.args = args
|
||||
self.debug = debug
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
from providers import providers
|
||||
|
||||
|
||||
def main():
|
||||
|
@ -6,20 +5,20 @@ def main():
|
|||
parser = ArgumentParser(description='Bootstrap Debian for the cloud.')
|
||||
parser.add_argument('--debug', action='store_true',
|
||||
help='Print debugging information')
|
||||
parser.add_argument('manifest', help='Manifest file to use for bootstrapping', metavar='MANIFEST')
|
||||
parser.set_defaults(func=run)
|
||||
|
||||
subparsers = parser.add_subparsers(title='providers', description='supported providers', dest='provider')
|
||||
|
||||
for provider in providers.values():
|
||||
provider.init_subparser(subparsers)
|
||||
|
||||
args = parser.parse_args()
|
||||
args.func(args)
|
||||
|
||||
|
||||
def run(args):
|
||||
provider = providers[args.provider]
|
||||
manifest = provider.Manifest(args.manifest)
|
||||
from manifest import load_manifest
|
||||
from manifest import get_provider
|
||||
data = load_manifest(args.manifest)
|
||||
provider = get_provider(data)
|
||||
|
||||
manifest = provider.Manifest(args.manifest, data)
|
||||
manifest.validate()
|
||||
manifest.load_plugins()
|
||||
|
||||
|
@ -27,5 +26,5 @@ def run(args):
|
|||
tasklist.plugins(manifest)
|
||||
|
||||
from common import BootstrapInformation
|
||||
bootstrap_info = BootstrapInformation(manifest, args)
|
||||
bootstrap_info = BootstrapInformation(manifest=manifest, debug=args.debug)
|
||||
tasklist.run(bootstrap_info)
|
||||
|
|
|
@ -1,15 +1,25 @@
|
|||
import json
|
||||
|
||||
|
||||
def load_manifest(path):
|
||||
import json
|
||||
return json.load(open(path))
|
||||
|
||||
|
||||
def get_provider(data):
|
||||
provider = __import__('providers.%s' % data['provider'], fromlist=['providers'])
|
||||
return provider
|
||||
|
||||
|
||||
class Manifest(object):
|
||||
def __init__(self, path):
|
||||
def __init__(self, path, data):
|
||||
self.path = path
|
||||
self.parse(json.load(open(self.path)))
|
||||
self.parse(data)
|
||||
|
||||
def parse(self, data):
|
||||
self.volume = data['volume']
|
||||
self.system = data['system']
|
||||
self.plugins = data['plugins']
|
||||
self.provider = data['provider']
|
||||
self.volume = data['volume']
|
||||
self.system = data['system']
|
||||
self.plugins = data['plugins']
|
||||
|
||||
def validate(self):
|
||||
pass
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
import ec2
|
||||
|
||||
|
||||
providers = {'ec2': ec2}
|
|
@ -1,13 +1,6 @@
|
|||
from manifest import Manifest
|
||||
|
||||
|
||||
def init_subparser(subparsers):
|
||||
sub = subparsers.add_parser('ec2', help='Bootstrap Debian for EC2')
|
||||
sub.add_argument('--access-key', help='AWS Access Key', metavar='ID')
|
||||
sub.add_argument('--secret-key', help='AWS Secret Key', metavar='KEY')
|
||||
sub.add_argument('manifest', help='Manifest file to use for bootstrapping', metavar='MANIFEST')
|
||||
|
||||
|
||||
def tasklist(manifest):
|
||||
from common import TaskList
|
||||
import packages
|
||||
|
|
|
@ -4,14 +4,11 @@ from common import Task
|
|||
class GetCredentials(Task):
|
||||
def run(self, info):
|
||||
super(GetCredentials, self).run(info)
|
||||
info.ec2_credentials = self.get_ec2_credentials(info.args, info.manifest)
|
||||
info.ec2_credentials = self.get_ec2_credentials(info.manifest)
|
||||
|
||||
def get_ec2_credentials(self, args, manifest):
|
||||
def get_ec2_credentials(self, manifest):
|
||||
from os import getenv
|
||||
# args override manifest override environment
|
||||
if(args.access_key and args.secret_key):
|
||||
return {'access_key': args.access_key,
|
||||
'secret_key': args.secret_key}
|
||||
# manifest overrides environment
|
||||
if(manifest.credentials['access-key'] and manifest.credentials['secret-key']):
|
||||
return {'access_key': manifest.credentials['access-key'],
|
||||
'secret_key': manifest.credentials['secret-key']}
|
||||
|
@ -19,8 +16,6 @@ class GetCredentials(Task):
|
|||
return {'access_key': getenv('EC2_ACCESS_KEY'),
|
||||
'secret_key': getenv('EC2_SECRET_KEY')}
|
||||
|
||||
if(bool(args.access_key) != bool(args.secret_key)):
|
||||
raise RuntimeError('Both the access key and secret key must be specified as arguments.')
|
||||
if(bool(manifest.credentials['access-key']) != bool(manifest.credentials['secret-key'])):
|
||||
raise RuntimeError('Both the access key and secret key must be specified in the manifest.')
|
||||
if(bool(getenv('EC2_ACCESS_KEY')) != bool(getenv('EC2_SECRET_KEY'))):
|
||||
|
|
Loading…
Add table
Reference in a new issue