class TestTemplateBuilder(TestCase):
    def setUp(self):
        deployData = {
            u'2': {
                u'TagTest': u'test value',
                u'name': u'Test CF template',
            }
        }
        self.test_tb = TemplateBuilder(deployData, 'vpc-abcdef01', 'aws_test_testgroup')


    def tearDown(self):
        self.test_tb = None

    def test_get_vpc_template_list(self):
        self.assertTrue()

    def test_get_tags(self):
        result = self.test_tb.get_tags()
        self.assertIsNotNone(result)

    def test_get_tags_values(self):
        result = self.test_tb.get_tags()
        self.assertEquals(result[0]['Key'], 'TagTest')
        self.assertEquals(result[0]['Value'], 'test value')

    def test_get_template_json(self):
        result = self.test_tb.get_template_json()
        self.assertIsNotNone(result)
 def setUp(self):
     deployData = {
         u'2': {
             u'TagTest': u'test value',
             u'name': u'Test CF template',
         }
     }
     self.test_tb = TemplateBuilder(deployData, 'vpc-abcdef01', 'aws_test_testgroup')
Beispiel #3
0
def update_data(request):
    try:
        if CsrfViewMiddleware().process_view(request, None, (), {}):
            HttpResponseRedirect('/error/400')
        data_type = request.POST.get('data', False)
        function_type = request.POST.get('function', False)
        deploy_id = request.POST.get('deploy_id', None)
        response = ''
        if request.method == 'POST' and request.is_ajax and data_type:
            if data_type == 'stacks':
                account = request.POST.get('account')
                region = request.POST.get('region')
                stack_arn = request.POST.get('stack_id')
                if function_type == 'list':
                    searchtxt = request.POST.get('searchtxt')
                    response = get_stacks_list(region, account, searchtxt)
                if function_type == 'detail':
                    response = get_stack_detail(account, stack_arn)
                if function_type == 'events':
                    next_token = request.session.get('event_token', None)
                    last_timestamp_str = request.POST.get('lasttimestamp')
                    stack_response = get_cf_events(region, account, stack_arn, next_token=next_token)
                    stack_events = stack_response['StackEvents']
                    if last_timestamp_str:
                        from dateutil.parser import parse
                        last_timestamp = parse(last_timestamp_str)
                        events_for_display = []
                        for event in stack_events:
                            if event['Timestamp'] > last_timestamp:
                                events_for_display.append(event)
                    else:
                        events_for_display = stack_events
                    response = {'last_timestamp': str(stack_events[0]['Timestamp']), 'event_update': events_for_display}
                    if 'NextToken' in stack_events:
                        request.session['event_token'] = stack_events['NextToken']
                if function_type == 'delete':
                    response = delete_stack(account, stack_arn)
            elif data_type == 'vpc':
                if function_type == 'list':
                    account = request.POST.get('account')
                    region = request.POST.get('region', None)
                    response = get_vpc_list(region, account)
            elif data_type == 'data':
                if function_type == 'regions':
                    response = dict(enumerate(settings.AWS_CONFIG['allowed_regions'], 1))
            elif data_type == 'deploy':
                if request.session.get('deploy_id', None) != deploy_id:
                    HttpResponseRedirect('/error/500')
                if function_type == 'get_vtemplates':
                    response = get_template_list_from_s3_prefix()
                request.session['vpc_templates'] = response
                if function_type == 'template_list':
                    response = get_all_template_parameters()
                    request.session['templates'] = response
                if function_type == 'do_deploy':
                    deploy_data_str = request.POST.get('deployData', False)
                    vpc_id = request.POST.get('vpcid')
                    region = request.POST.get('region')
                    account = request.POST.get('account')
                    app_name = request.POST.get('appName')
                    google_group = request.POST.get('googleGroup')
                    if deploy_data_str:
                        deploy_data = json.loads(deploy_data_str)
                        cf_template = TemplateBuilder(deploy_data,
                                                      vpc_id=vpc_id,
                                                      google_group=google_group)
                        template_json = cf_template.get_template_json()
                        template_tags = cf_template.get_tags()
                        stack_arn = stack_exists(region=region, account=account, stack_name=app_name)
                        if not stack_arn:
                            cf_client = get_deploy_cf_client(region=region, account=account)
                            stack_response = create_cf_stack(cf_client=cf_client,
                                                             stack_name=app_name,
                                                             template=template_json,
                                                             stack_tags=template_tags)
                            stack_arn = stack_response['StackId']
                        if not stack_arn:
                            HttpResponseRedirect('/error/500')
                        response = stack_arn
        return JsonResponse(response)
    except:
        return HttpResponseRedirect('/error/500')