class CFHelperTest(unittest.TestCase): def setUp(self): session = Session(region_name='us-west-1') current_dir = os.path.dirname(os.path.realpath(__file__)) test_dir = '{0}/test_data'.format(current_dir) pill = placebo.attach(session, test_dir) pill.playback() self.configs_directory = 'tests/sit/configs' self.cf_helper_placebo = CFHelper(configs_directory=self.configs_directory, session=session) self.sit_loader_placebo = SITLoader(configs_directory=self.configs_directory, session=session) @raises(SystemExit) def test_validate_template(self): template_body = SITTemplate(self.configs_directory).template.to_json() negative_result = self.cf_helper_placebo.validate_template(template_body) self.assertEquals(negative_result, None) def test_create_stack_success(self): positive_result = self.cf_helper_placebo.create_stack(self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) self.assertEquals(positive_result, None) def test_update_stack_success(self): positive_result = self.cf_helper_placebo.update_stack(self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) self.assertEquals(positive_result, None) @raises(SystemExit) def test_create_stack_failure(self): positive_result = self.cf_helper_placebo.create_stack(self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) self.assertEquals(positive_result, None) self.cf_helper_placebo.create_stack(self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) @raises(SystemExit) def test_update_stack_failure(self): positive_result = self.cf_helper_placebo.update_stack(self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) self.assertEquals(positive_result, None) self.cf_helper_placebo.update_stack(self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) def test_stack_was_created_successfully(self): attempts = 25 # set attempts to the max so that it only tries once positive_result = self.cf_helper_placebo.stack_was_created_successfully(self.sit_loader_placebo.STACK_NAME, attempts, 0) self.assertEquals(positive_result, True) # failed status negative_result = self.cf_helper_placebo.stack_was_created_successfully(self.sit_loader_placebo.STACK_NAME, attempts, 0) self.assertEquals(negative_result, False) # too many attempts negative_result = self.cf_helper_placebo.stack_was_created_successfully(self.sit_loader_placebo.STACK_NAME, attempts + 1, 0) self.assertEquals(negative_result, False) # bad status negative_result = self.cf_helper_placebo.stack_was_created_successfully(self.sit_loader_placebo.STACK_NAME, attempts, 0) self.assertEquals(negative_result, False) @raises(SystemExit) def test_get_resource_name(self): # this call will raise the SystemExit because the stack has already been created self.cf_helper_placebo.get_resource_name(self.sit_loader_placebo.STACK_NAME, 'AutoFailingGroup')
class SITLoader(object): def __init__(self, configs_directory='configs', session=None): troposphere_configs = SITHelper(configs_directory).get_configs( 'troposphere') self.STACK_NAME = troposphere_configs['stack_name'] self.TAG_VALUE = troposphere_configs['tag_value'] self.AMI_ID = troposphere_configs['ami_id'] self.SUBNET = troposphere_configs['subnet'] self.SECURITY_GROUPS = troposphere_configs['security_groups'] self.KEY_NAME = troposphere_configs['key_name'] self.AMI_URL = troposphere_configs['ami_url'] self.cf_helper = CFHelper(configs_directory=configs_directory, session=session) self.sit_template = SITTemplate(configs_directory) self.template = self.sit_template.template self.template_json = self.template.to_json() def validate_template(self): self.cf_helper.validate_template(self.template_json) def create_or_update_stack(self): if self.cf_helper.stack_exists(self.STACK_NAME): self.cf_helper.update_stack(self.STACK_NAME, self.template_json, self.TAG_VALUE) else: self.cf_helper.create_stack(self.STACK_NAME, self.template_json, self.TAG_VALUE) def stack_created_successfully(self): if not self.cf_helper.stack_was_created_successfully(self.STACK_NAME): Log.error('stack was not created') def run(self): start = time() self.validate_template() self.create_or_update_stack() self.stack_created_successfully() end = time() logging.info('Your stack is up and ready to go!') logging.info('Elapsed time: {0} seconds'.format(end - start))
class SITLoader(object): def __init__(self, configs_directory='configs', session=None): troposphere_configs = SITHelper(configs_directory).get_configs('troposphere') self.STACK_NAME = troposphere_configs['stack_name'] self.TAG_VALUE = troposphere_configs['tag_value'] self.AMI_ID = troposphere_configs['ami_id'] self.SUBNET = troposphere_configs['subnet'] self.SECURITY_GROUPS = troposphere_configs['security_groups'] self.KEY_NAME = troposphere_configs['key_name'] self.AMI_URL = troposphere_configs['ami_url'] self.cf_helper = CFHelper(configs_directory=configs_directory, session=session) self.sit_template = SITTemplate(configs_directory) self.template = self.sit_template.template self.template_json = self.template.to_json() def validate_template(self): self.cf_helper.validate_template(self.template_json) def create_or_update_stack(self): if self.cf_helper.stack_exists(self.STACK_NAME): self.cf_helper.update_stack(self.STACK_NAME, self.template_json, self.TAG_VALUE) else: self.cf_helper.create_stack(self.STACK_NAME, self.template_json, self.TAG_VALUE) def stack_created_successfully(self): if not self.cf_helper.stack_was_created_successfully(self.STACK_NAME): Log.error('stack was not created') def run(self): start = time() self.validate_template() self.create_or_update_stack() self.stack_created_successfully() end = time() logging.info('Your stack is up and ready to go!') logging.info('Elapsed time: {0} seconds'.format(end - start))
class CFHelperTest(unittest.TestCase): def setUp(self): session = Session(region_name='us-west-1') current_dir = os.path.dirname(os.path.realpath(__file__)) test_dir = '{0}/test_data'.format(current_dir) pill = placebo.attach(session, test_dir) pill.playback() self.configs_directory = 'tests/sit/configs' self.cf_helper_placebo = CFHelper( configs_directory=self.configs_directory, session=session) self.sit_loader_placebo = SITLoader( configs_directory=self.configs_directory, session=session) @raises(SystemExit) def test_validate_template(self): template_body = SITTemplate(self.configs_directory).template.to_json() negative_result = self.cf_helper_placebo.validate_template( template_body) self.assertEquals(negative_result, None) def test_create_stack_success(self): positive_result = self.cf_helper_placebo.create_stack( self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) self.assertEquals(positive_result, None) def test_update_stack_success(self): positive_result = self.cf_helper_placebo.update_stack( self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) self.assertEquals(positive_result, None) @raises(SystemExit) def test_create_stack_failure(self): positive_result = self.cf_helper_placebo.create_stack( self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) self.assertEquals(positive_result, None) self.cf_helper_placebo.create_stack( self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) @raises(SystemExit) def test_update_stack_failure(self): positive_result = self.cf_helper_placebo.update_stack( self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) self.assertEquals(positive_result, None) self.cf_helper_placebo.update_stack( self.sit_loader_placebo.STACK_NAME, self.sit_loader_placebo.template_json, self.sit_loader_placebo.TAG_VALUE) def test_stack_was_created_successfully(self): attempts = 25 # set attempts to the max so that it only tries once positive_result = self.cf_helper_placebo.stack_was_created_successfully( self.sit_loader_placebo.STACK_NAME, attempts, 0) self.assertEquals(positive_result, True) # failed status negative_result = self.cf_helper_placebo.stack_was_created_successfully( self.sit_loader_placebo.STACK_NAME, attempts, 0) self.assertEquals(negative_result, False) # too many attempts negative_result = self.cf_helper_placebo.stack_was_created_successfully( self.sit_loader_placebo.STACK_NAME, attempts + 1, 0) self.assertEquals(negative_result, False) # bad status negative_result = self.cf_helper_placebo.stack_was_created_successfully( self.sit_loader_placebo.STACK_NAME, attempts, 0) self.assertEquals(negative_result, False) @raises(SystemExit) def test_get_resource_name(self): # this call will raise the SystemExit because the stack has already been created self.cf_helper_placebo.get_resource_name( self.sit_loader_placebo.STACK_NAME, 'AutoFailingGroup')