def component_stups_auto_configuration(definition, configuration, args, info, force): vpc_conn = boto.vpc.connect_to_region(args.region) availability_zones = configuration.get('AvailabilityZones') server_subnets = [] lb_subnets = [] for subnet in vpc_conn.get_all_subnets(): name = subnet.tags.get('Name', '') if availability_zones and subnet.availability_zone not in availability_zones: # skip subnet as it's not in one of the given AZs continue if 'dmz' in name: lb_subnets.append(subnet.id) else: server_subnets.append(subnet.id) if not lb_subnets: # no DMZ subnets were found, just use the same set for both LB and instances lb_subnets = server_subnets configuration = ensure_keys(configuration, "ServerSubnets", args.region) configuration["ServerSubnets"][args.region] = server_subnets configuration = ensure_keys(configuration, "LoadBalancerSubnets", args.region) configuration["LoadBalancerSubnets"][args.region] = lb_subnets most_recent_image = find_taupage_image(args.region) configuration = ensure_keys(configuration, "Images", 'LatestTaupageImage', args.region) configuration["Images"]['LatestTaupageImage'][args.region] = most_recent_image.id component_configuration(definition, configuration, args, info, force) return definition
def test_template_parameters(): definition = {} configuration = {'DefineParameters': False} args = MagicMock() args.__dict__ = {'Param1': 'my param value', 'SecondParam': ('1234567890' * 100)} info = {'StackName': 'My-Stack', 'Parameters': []} component_configuration(definition, configuration, args, info, False, AccountArguments('dummyregion')) assert definition.get('Parameters') == None
def test_max_description_length(): definition = {} configuration = {} args = MagicMock() args.__dict__ = {'Param1': 'my param value', 'SecondParam': ('1234567890' * 100)} info = {'StackName': 'My-Stack'} component_configuration(definition, configuration, args, info, False, AccountArguments('dummyregion')) assert definition['Description'].startswith('My Stack (Param1: my param value, SecondParam: 1234567890') assert 0 < len(definition['Description']) <= 1024
def component_subnet_auto_configuration(definition, configuration, args, info, force, account_info): ec2 = boto3.resource('ec2', args.region) vpc_id = configuration.get('VpcId', account_info.VpcID) availability_zones = configuration.get('AvailabilityZones') public_only = configuration.get('PublicOnly') server_subnets = [] lb_subnets = [] lb_internal_subnets = [] all_subnets = [] for subnet in ec2.subnets.filter(Filters=[{'Name': 'vpc-id', 'Values': [vpc_id]}]): name = get_tag(subnet.tags, 'Name', '') if availability_zones and subnet.availability_zone not in availability_zones: # skip subnet as it's not in one of the given AZs continue all_subnets.append(subnet.id) if public_only: if 'dmz' in name: lb_subnets.append(subnet.id) lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) else: if 'dmz' in name: lb_subnets.append(subnet.id) elif 'internal' in name: lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) elif 'nat' in name: # ignore creating listeners in NAT gateway subnets pass else: server_subnets.append(subnet.id) if not lb_subnets: if public_only: # assume default AWS VPC setup with all subnets being public lb_subnets = all_subnets lb_internal_subnets = all_subnets server_subnets = all_subnets else: # no DMZ subnets were found, just use the same set for both LB and instances lb_subnets = server_subnets configuration = ensure_keys(configuration, "ServerSubnets", args.region) configuration["ServerSubnets"][args.region] = server_subnets configuration = ensure_keys(configuration, "LoadBalancerSubnets", args.region) configuration["LoadBalancerSubnets"][args.region] = lb_subnets configuration = ensure_keys(configuration, "LoadBalancerInternalSubnets", args.region) configuration["LoadBalancerInternalSubnets"][args.region] = lb_internal_subnets component_configuration(definition, configuration, args, info, force, account_info) return definition
def component_stups_auto_configuration(definition, configuration, args, info, force, account_info): ec2 = boto3.resource('ec2', args.region) availability_zones = configuration.get('AvailabilityZones') server_subnets = [] lb_subnets = [] lb_internal_subnets = [] for subnet in ec2.subnets.filter(Filters=[{ 'Name': 'vpc-id', 'Values': [account_info.VpcID] }]): name = get_tag(subnet.tags, 'Name', '') if availability_zones and subnet.availability_zone not in availability_zones: # skip subnet as it's not in one of the given AZs continue if 'dmz' in name: lb_subnets.append(subnet.id) elif 'internal' in name: lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) else: server_subnets.append(subnet.id) if not lb_subnets: # no DMZ subnets were found, just use the same set for both LB and instances lb_subnets = server_subnets configuration = ensure_keys(configuration, "ServerSubnets", args.region) configuration["ServerSubnets"][args.region] = server_subnets configuration = ensure_keys(configuration, "LoadBalancerSubnets", args.region) configuration["LoadBalancerSubnets"][args.region] = lb_subnets configuration = ensure_keys(configuration, "LoadBalancerInternalSubnets", args.region) configuration["LoadBalancerInternalSubnets"][ args.region] = lb_internal_subnets most_recent_image = find_taupage_image(args.region) configuration = ensure_keys(configuration, "Images", 'LatestTaupageImage', args.region) configuration["Images"]['LatestTaupageImage'][ args.region] = most_recent_image.id component_configuration(definition, configuration, args, info, force, account_info) return definition
def component_stups_auto_configuration(definition, configuration, args, info, force, account_info): ec2 = boto3.resource('ec2', args.region) vpc_id = configuration.get('VpcId', account_info.VpcID) availability_zones = configuration.get('AvailabilityZones') server_subnets = [] lb_subnets = [] lb_internal_subnets = [] for subnet in ec2.subnets.filter(Filters=[{'Name': 'vpc-id', 'Values': [vpc_id]}]): name = get_tag(subnet.tags, 'Name', '') if availability_zones and subnet.availability_zone not in availability_zones: # skip subnet as it's not in one of the given AZs continue if 'dmz' in name: lb_subnets.append(subnet.id) elif 'internal' in name: lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) else: server_subnets.append(subnet.id) if not lb_subnets: # no DMZ subnets were found, just use the same set for both LB and instances lb_subnets = server_subnets configuration = ensure_keys(configuration, "ServerSubnets", args.region) configuration["ServerSubnets"][args.region] = server_subnets configuration = ensure_keys(configuration, "LoadBalancerSubnets", args.region) configuration["LoadBalancerSubnets"][args.region] = lb_subnets configuration = ensure_keys(configuration, "LoadBalancerInternalSubnets", args.region) configuration["LoadBalancerInternalSubnets"][args.region] = lb_internal_subnets most_recent_image = find_taupage_image(args.region) configuration = ensure_keys(configuration, "Images", 'LatestTaupageImage', args.region) configuration["Images"]['LatestTaupageImage'][args.region] = most_recent_image.id component_configuration(definition, configuration, args, info, force, account_info) return definition
def component_subnet_auto_configuration(definition, configuration, args, info, force, account_info): ec2 = boto3.resource('ec2', args.region) vpc_id = configuration.get('VpcId', account_info.VpcID) availability_zones = configuration.get('AvailabilityZones') public_only = configuration.get('PublicOnly') server_subnets = [] lb_subnets = [] lb_internal_subnets = [] all_subnets = [] for subnet in ec2.subnets.filter(Filters=[{ 'Name': 'vpc-id', 'Values': [vpc_id] }]): name = get_tag(subnet.tags, 'Name', '') if availability_zones and subnet.availability_zone not in availability_zones: # skip subnet as it's not in one of the given AZs continue all_subnets.append(subnet.id) if public_only: if 'dmz' in name: lb_subnets.append(subnet.id) lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) else: if 'dmz' in name: lb_subnets.append(subnet.id) elif 'internal' in name: lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) elif 'nat' in name: # ignore creating listeners in NAT gateway subnets pass else: server_subnets.append(subnet.id) if not lb_subnets: if public_only: # assume default AWS VPC setup with all subnets being public lb_subnets = all_subnets lb_internal_subnets = all_subnets server_subnets = all_subnets else: # no DMZ subnets were found, just use the same set for both LB and instances lb_subnets = server_subnets configuration = ensure_keys(configuration, "ServerSubnets", args.region) configuration["ServerSubnets"][args.region] = server_subnets configuration = ensure_keys(configuration, "LoadBalancerSubnets", args.region) configuration["LoadBalancerSubnets"][args.region] = lb_subnets configuration = ensure_keys(configuration, "LoadBalancerInternalSubnets", args.region) configuration["LoadBalancerInternalSubnets"][ args.region] = lb_internal_subnets component_configuration(definition, configuration, args, info, force, account_info) return definition