コード例 #1
0
ファイル: test_aws.py プロジェクト: achim/sevenseconds
def test_get_az_names(monkeypatch):
    conn = MagicMock(describe_availability_zones=lambda **kargs: {
        'AvailabilityZones': [
            {
                'ZoneName': 'eu-west-1a',
                'RegionName': 'eu-west-1',
                'State': 'available',
                'Messages': []
            }, {
                'ZoneName': 'eu-west-1b',
                'RegionName': 'eu-west-1',
                'State': 'available',
                'Messages': []
            }, {
                'ZoneName': 'eu-west-1c',
                'RegionName': 'eu-west-1',
                'State': 'available',
                'Messages': []
            }]})
    monkeypatch.setattr('boto3.client', lambda x, y: conn)
    names = get_az_names('eu-west-1')
    assert 'eu-west-1b' in names, 'AZ found'

    conn = MagicMock(describe_availability_zones=lambda **kargs: {
        'AvailabilityZones': []})
    monkeypatch.setattr('boto3.client', lambda x, y: conn)
    names = get_az_names('eu-west-1')
    assert 'eu-west-1b' in names, 'AZ found from Cache'
コード例 #2
0
ファイル: cli.py プロジェクト: achim/sevenseconds
def get_trusted_addresses(config: dict):
    accounts = config.get('accounts', {})

    addresses = set()

    for name, cidr in config.get('global', {}).get('trusted_networks', {}).items():
        info('Adding trusted network {} ({})'.format(name, cidr))
        addresses.add(cidr)

    for account_name, _cfg in accounts.items():
        cfg = {}
        cfg.update(config.get('global', {}))
        if _cfg:
            cfg.update(_cfg)
        for region in cfg['regions']:
            domains = set(['odd-{}.{}'.format(region, cfg.get('domain').format(account_name=account_name))])
            for az in get_az_names(region):
                domains.add('nat-{}.{}'.format(az, cfg.get('domain').format(account_name=account_name)))
            for domain in sorted(domains):
                with Action('Checking {}'.format(domain)) as act:
                    try:
                        ai = socket.getaddrinfo(domain, 443, family=socket.AF_INET, type=socket.SOCK_STREAM)
                    except:
                        ai = []
                        act.error('n/a')
                        pass
                    for _, _, _, _, ip_port in ai:
                        ip, _ = ip_port
                        addresses.add('{}/32'.format(ip))

    return addresses