Ejemplo n.º 1
0
 def test_cloudformation_create_and_update(self):
     cloudformation = CloudFormationBuddy(self.test_deploy_ctx)
     s3 = CloudFormationDeployS3Buddy(self.test_deploy_ctx)
     temp_dir = tempfile.mkdtemp()
     try:
         template = ParentTestCase._get_resource_path("cloudformation/aws-resources.template")
         parameter_file = ParentTestCase._get_resource_path("cloudformation/aws-resources.parameters.json")
         self.test_deploy_ctx['RANDOM'] = self.randomWord(5)
         parameter_file_rendered = self.test_deploy_ctx.render_template(parameter_file,temp_dir)
         template_file_url = s3.upload(file=template)
         self.assertFalse(cloudformation.does_stack_exist(), "Failed to identify reality")
         cloudformation.create_stack(template_file_url=template_file_url,
                                     parameter_file=parameter_file_rendered)
         self.assertTrue(cloudformation.does_stack_exist(), "Failed to identify reality")
         self.assertEqual(cloudformation.get_stack_status(), "CREATE_COMPLETE", "Failed to identify create complete")
         cloudformation.create_change_set(template_file_url=template_file_url,
                                          parameter_file=parameter_file_rendered)
         self.assertFalse(cloudformation.should_execute_change_set(),"Failed to id noop changeset")
         cloudformation.delete_change_set()
         self.test_deploy_ctx['RANDOM'] = self.randomWord(5)
         parameter_file_rendered = self.test_deploy_ctx.render_template(parameter_file,temp_dir)
         cloudformation.create_change_set(template_file_url=template_file_url,
                                          parameter_file=parameter_file_rendered)
         self.assertEqual(cloudformation.get_change_set_status(refresh=True), "CREATE_COMPLETE",
                          "Did not get expected cs status")
         self.assertTrue(cloudformation.should_execute_change_set(),"Failed to id good changeset")
         if not cloudformation.should_execute_change_set():
             self.fail("Did not want to execute changeset")
         else:
             cloudformation.execute_change_set()
         cloudformation.log_stack_status()
     finally:
         super(CloudFormationTestCase, self).clean(cloudformation)
         super(CloudFormationTestCase, self).clean_s3(s3)
         super(CloudFormationTestCase, self).clean_dir(temp_dir)
Ejemplo n.º 2
0
 def test_cloudformation_deploy(self):
     template = ParentTestCase._get_resource_path("cloudformation/aws-resources.template")
     parameter_file = ParentTestCase._get_resource_path("cloudformation/aws-resources.parameters.json")
     config_templates = ParentTestCase._get_resource_path("cloudformation/config/")
     deploy = CloudFormationDeploy(self.test_deploy_ctx.stack_name, LocalTemplate(template, parameter_file, config_templates), self.test_deploy_ctx)
     deploy.do_deploy(dry_run=False)
     cloudformation = CloudFormationBuddy(self.test_deploy_ctx)
     s3 = CloudFormationDeployS3Buddy(self.test_deploy_ctx)
     try:
         self.assertTrue(cloudformation.does_stack_exist(), "Failed to create stack")
         self.assertEqual(s3.get_file_as_string("install_template.sh"),"foo-bar-{}".format(self.run_random_word),"Did not render config template")
     finally:
         super(CloudFormationTestCase, self).clean(cloudformation)
         super(CloudFormationTestCase, self).clean_s3(s3)
Ejemplo n.º 3
0
def calculate_rule_priority(deploy_ctx, stack_name):
    # type: (DeployContext,str) -> str
    cf = CloudFormationBuddy(deploy_ctx)
    # we need some data for the passed stack_name so manually override it
    cf.stack_name = stack_name
    if cf.does_stack_exist():
        return cf.get_existing_parameter_value('RulePriority')
    else:
        listenerArn = _get_cluster_stack_export_value(cf, deploy_ctx,
                                                      "HTTPSListenerARN")
        if listenerArn:
            client = get_boto_client(deploy_ctx)
            rules = client.describe_rules(ListenerArn=listenerArn)['Rules']
        else:
            rules = None
        if not rules or len(rules) == 0:
            current_max = 30
        else:
            if len(rules) == 1 and rules[0]['Priority'] == "default":
                current_max = 30
            else:
                current_max = int(_get_max_priority(rules))
        return str(current_max + 1)