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 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')