Esempio n. 1
0
def test_get_tag():
    tags = [{'Key': 'aws:cloudformation:stack-id',
             'Value': 'arn:aws:cf:eu-west-1:123:stack/test'},
            {'Key': 'Name',
             'Value': 'test-123'},
            {'Key': 'StackVersion',
             'Value': '123'}]

    assert get_tag(tags, 'StackVersion') == '123'

    assert get_tag(tags,
                   'aws:cloudformation:stack-id') == 'arn:aws:cf:eu-west-1:123:stack/test'

    assert get_tag(tags, 'notfound') is None
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
Esempio n. 3
0
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
Esempio n. 4
0
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