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