def launch(pname, instance_id=None, alt_config='standalone', *repolist): stackname = cfn.generate_stack_from_input(pname, instance_id, alt_config) pdata = core.project_data_for_stackname(stackname) # ensure given alt config has masterless=True # todo: can the choices presented to the user remove non-masterless alt-configs? ensure(pdata['aws-alt'], "project has no alternate configurations") ensure(alt_config in pdata['aws-alt'], "unknown alt-config %r" % alt_config) ensure(pdata['aws-alt'][alt_config]['ec2']['masterless'], "alternative configuration %r has masterless=False" % alt_config) formula_revisions = parse_validate_repolist(pdata, *repolist) # todo: this is good UX but was simply debug output that got left in. # a better summary of what is to be created could be printed out, # preferably after the templates are printed out but before confirmation. LOG.info('attempting to create masterless stack:') LOG.info('stackname:\t' + stackname) LOG.info('region:\t' + pdata['aws']['region']) LOG.info('formula_revisions:\t%s' % pformat(formula_revisions)) if core.is_master_server_stack(stackname): checks.ensure_can_access_builder_private(pname) checks.ensure_stack_does_not_exist(stackname) bootstrap.create_stack(stackname) LOG.info('updating stack %s', stackname) bootstrap.update_stack(stackname, service_list=['ec2', 'sqs', 's3'], formula_revisions=formula_revisions)
def launch(pname, instance_id=None, alt_config='standalone', *repolist): stackname = cfn.generate_stack_from_input(pname, instance_id, alt_config) pdata = core.project_data_for_stackname(stackname) # ensure given alt config has masterless=True ensure(pdata['aws-alt'], "project has no alternate configurations") ensure(alt_config in pdata['aws-alt'], "unknown alt-config %r" % alt_config) ensure(pdata['aws-alt'][alt_config]['ec2']['masterless'], "alternative configuration %r has masterless=False" % alt_config) formula_revisions = parse_validate_repolist(pdata, *repolist) LOG.info('attempting to create masterless stack:') LOG.info('stackname:\t' + stackname) LOG.info('region:\t' + pdata['aws']['region']) LOG.info('formula_revisions:\t%s' % pformat(formula_revisions)) if core.is_master_server_stack(stackname): checks.ensure_can_access_builder_private(pname) checks.ensure_stack_does_not_exist(stackname) bootstrap.create_stack(stackname) LOG.info('updating stack %s', stackname) bootstrap.update_stack(stackname, service_list=['ec2', 'sqs', 's3'], formula_revisions=formula_revisions)
def launch(pname, instance_id=None, alt_config=None): stackname = generate_stack_from_input(pname, instance_id, alt_config) pdata = core.project_data_for_stackname(stackname) LOG.info('attempting to create %s (AWS region %s)', stackname, pdata['aws']['region']) if core.is_master_server_stack(stackname): checks.ensure_can_access_builder_private(pname) bootstrap.create_stack(stackname) LOG.info('updating stack %s', stackname) # TODO: highstate.sh (think it's run inside here) doesn't detect: # [34.234.95.137] out: [CRITICAL] The Salt Master has rejected this minion's public key! bootstrap.update_stack(stackname, service_list=['ec2', 'sqs', 's3']) setdefault('.active-stack', stackname)
def launch(pname, instance_id=None, alt_config=None): try: stackname = generate_stack_from_input(pname, instance_id, alt_config) except checks.StackAlreadyExistsProblem as e: LOG.info('stack %s already exists', e.stackname) return pdata = core.project_data_for_stackname(stackname) LOG.info('attempting to create %s (AWS region %s)', stackname, pdata['aws']['region']) if core.is_master_server_stack(stackname): checks.ensure_can_access_builder_private(pname) bootstrap.create_stack(stackname) LOG.info('updating stack %s', stackname) # TODO: highstate.sh (think it's run inside here) doesn't detect: # [34.234.95.137] out: [CRITICAL] The Salt Master has rejected this minion's public key! bootstrap.update_stack(stackname, service_list=['ec2', 'sqs', 's3']) setdefault('.active-stack', stackname)
def launch(pname, instance_id=None): try: stackname = generate_stack_from_input(pname, instance_id) pdata = core.project_data_for_stackname(stackname) print 'attempting to create stack:' print ' stackname: ' + stackname print ' region: ' + pdata['aws']['region'] print if core.is_master_server_stack(stackname): if not checks.can_access_builder_private(pname): print "failed to access your organisation's 'builder-private' repository:" print ' ' + pdata['private-repo'] print "you'll need access to this repository to add a deploy key later" print return bootstrap.create_update(stackname) setdefault('.active-stack', stackname) except core.NoMasterException as e: LOG.warn(e.message) print "\n%s\ntry `./bldr master.create`'" % e.message
def launch(pname): try: stackname = create_stack(pname) pdata = core.project_data_for_stackname(stackname) print 'attempting to create stack:' print ' stackname: ' + stackname print ' region: ' + pdata['aws']['region'] print if core.is_master_server_stack(stackname): if not checks.can_access_builder_private(pname): print "failed to access your organisation's 'builder-private' repository:" print ' ' + pdata['private-repo'] print "you'll need access to this repository to add a deploy key later" print return stackname = create_update(stackname) if stackname: setdefault('.active-stack', stackname) except core.NoMasterException, e: LOG.warn(e.message) print "\n%s\ntry `./bldr master.create`'" % e.message
def test_master_server_stackname(self): self.assertTrue(core.is_master_server_stack('master-server--temp')) self.assertFalse(core.is_master_server_stack('master-some-project--end2end')) self.assertFalse(core.is_master_server_stack('lax--end2end'))