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
示例#2
0
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
示例#3
0
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
示例#4
0
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
示例#5
0
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
示例#7
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
示例#8
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