def test_change_profile(self): aws = awspice.connect('eu-west-2', profile='test') client_vars = aws.service.ec2.get_client_vars() self.assertEqual( client_vars, { 'region': { 'Description': 'EU (London)', 'Country': 'London', 'RegionName': 'eu-west-2' }, 'profile': 'test', 'access_key': 'None' }) aws.service.ec2.change_profile('test2') client_vars = aws.service.ec2.get_client_vars() self.assertEqual( client_vars, { 'region': { 'Description': 'EU (London)', 'Country': 'London', 'RegionName': 'eu-west-2' }, 'profile': 'test2', 'access_key': 'None' })
def test_get_loadbalancer_by(self): aws = awspice.connect('eu-central-1') elb = aws.service.elb.get_loadbalancer_by('domain', 'aws.elevenpaths.com') self.assertEquals( elb['CanonicalHostedZoneName'], 'elevenpaths-web-pro-1763591843.eu-west-1.elb.amazonaws.com')
def test_change_profile(self): aws = awspice.connect('eu-west-1') for profile in ['default', 'qa']: aws.service.ec2.change_profile(profile) profile = aws.service.get_auth_config() self.assertEquals(profile['Authorization']['Value'], profile['Authorization']['Value'])
def test_set_tag(self): aws = awspice.connect('eu-west-1') rnd = random.choice('abcdefghij') results = aws.service.ec2.set_tag( ['i-056811c5f5e5fff57'], 'Test', 'david_amrani' + rnd, regions=['eu-west-1', 'eu-central-1'])
def test_get_auth_config(self): aws = awspice.connect('eu-west-1', profile='default') self.assertEquals( aws.service.get_auth_config(), {'Authorization': { 'Type': 'Profile', 'Value': 'default' }})
def test_get_cost(self): time_from = '2018-02-01' time_to = '2018-02-28' aws = awspice.connect('eu-central-1') instance = aws.service.ec2.get_instance_by('id', 'i-0ac0ed3329e4114ae') cost = aws.service.ce.get_cost([instance['TagName']], time_from, time_to) self.assertGreater(float(cost[0]['Total']['UnblendedCost']['Amount']), 8.67)
def test_cost_saving(self): aws = awspice.connect('eu-west-1') costs = aws.stats.cost_saving(regions='eu-west-1') self.assertTrue( isinstance(costs['Regions']['eu-west-1']['Volumes'], list)) self.assertTrue( isinstance(costs['Regions']['eu-west-1']['Addresses'], list)) self.assertTrue( isinstance(costs['Regions']['eu-west-1']['LoadBalancers'], list))
def test_parse_profiles(self): aws = awspice.connect('eu-west-2', profile='test') profiles = aws.service.ec2.parse_profiles('ALL') ss = ['test' in item or 'test2' in item for item in profiles] self.assertEqual(True, all(ss)) profiles = aws.service.ec2.parse_profiles(['test']) self.assertEqual(profiles, ['test']) profiles = aws.service.ec2.parse_profiles('test5') self.assertEqual(profiles, ['test5'])
def test_inject_client_vars(self): aws = awspice.connect('eu-west-1', 'qa') elements = [{'test': 1}, {'test': 2}] newelements = aws.service.ec2.inject_client_vars(elements) for el in newelements: self.assertEquals(el['RegionName'], 'eu-west-1') self.assertEquals(el['Authorization']['Type'], 'Profile') self.assertEquals(el['Authorization']['Value'], 'qa')
def test_find_instances(self): aws = awspice.connect('eu-west-1') instances = aws.finder.find_instances('status', 'running', profiles=['qa']) self.assertEquals(instances[0]['State']['Name'], 'running') # Verify regions=[] == all regions q_regions = map(lambda x: x['RegionName'], instances) map(lambda x: self.assertTrue(x in ['eu-central-1', 'eu-west-1']), q_regions)
def test_parse_profiles_string_ALL_hack(self): aws = awspice.connect('eu-west-1', profile='qa') profiles = sorted(aws.service.ec2.parse_profiles('ALL')) # GET profiles from file with open(expanduser("~") + "/.aws/credentials", 'r') as myfile: data = myfile.read().replace('\n', '') regex = re.compile(r'\[(?P<name>\w*)\]') credentials = sorted(regex.findall(data)) self.assertEquals(profiles, credentials)
def test_get_regions(self): aws = awspice.connect('eu-west-1') regions = [ 'us-east-1', 'us-east-2', 'us-west-1', 'us-west-2', 'eu-west-3', 'eu-west-1', 'eu-west-2', 'eu-central-1', 'ca-central-1', 'ap-south-1', 'ap-southeast-1', 'ap-southeast-2', 'ap-northeast-1', 'ap-northeast-2', 'sa-east-1' ] regions = sorted(regions) curregions = sorted( [region['RegionName'] for region in aws.service.ec2.get_regions()]) self.assertEquals(regions, curregions)
def test_get_stats_of_region(self): aws = awspice.connect('eu-west-1', 'qa') stats = aws.stats.get_stats(regions=['eu-west-1']) self.assertTrue(isinstance(stats['Users'], list)) self.assertTrue(isinstance(stats['Buckets'], list)) self.assertTrue( isinstance(stats['Regions']['eu-west-1']['Instances'], list)) self.assertTrue( isinstance(stats['Regions']['eu-west-1']['Volumes'], list)) self.assertTrue( isinstance(stats['Regions']['eu-west-1']['SecurityGroups'], list)) self.assertTrue( isinstance(stats['Regions']['eu-west-1']['Databases'], list))
def test_parse_regions(self): aws = awspice.connect('eu-west-1', profile='test') regions = aws.service.ec2.parse_regions('eu-west-2') self.assertEqual(regions, [{'RegionName': 'eu-west-2'}]) regions = aws.service.ec2.parse_regions(['eu-west-1', 'eu-west-2']) ss = [ 'eu-west-1' in item.values() or 'eu-west-2' in item.values() for item in regions ] self.assertEqual(True, all(ss)) regions = aws.service.ec2.parse_regions([{ 'RegionName': 'eu-west-1' }, { 'RegionName': 'eu-west-2' }]) ss = [ 'eu-west-1' in item.values() or 'eu-west-2' in item.values() for item in regions ] self.assertEqual(True, all(ss))
def test_set_auth_config(self): aws = awspice.connect('eu-west-2', profile='test') client_vars = aws.service.ec2.get_client_vars() self.assertEqual( client_vars, { 'region': { 'Description': 'EU (London)', 'Country': 'London', 'RegionName': 'eu-west-2' }, 'profile': 'test', 'access_key': 'None' }) aws.service.ec2.set_auth_config( region=client_vars['region']['RegionName'], profile='test2') client_vars = aws.service.ec2.get_client_vars() self.assertEqual( client_vars, { 'region': { 'Description': 'EU (London)', 'Country': 'London', 'RegionName': 'eu-west-2' }, 'profile': 'test2', 'access_key': 'None' }) aws.service.ec2.set_auth_config( region=client_vars['region']['RegionName'], access_key='key', secret_key='secret') client_vars = aws.service.ec2.get_client_vars() self.assertEqual( client_vars, { 'region': { 'Description': 'EU (London)', 'Country': 'London', 'RegionName': 'eu-west-2' }, 'profile': 'None', 'access_key': 'key' })
def test_get_volumes(self): aws = awspice.connect('eu-west-1') vols = aws.service.ec2.get_volumes() inst = aws.service.ec2.get_instances() self.assertTrue(len(vols) > len(inst))
def test_get_profiles(self): aws = awspice.connect('eu-west-2', profile='test') profiles = aws.service.ec2.get_profiles() ss = ['test' in item or 'test2' in item for item in profiles] self.assertEqual(True, all(ss))
def test_get_instances_by(self): aws = awspice.connect('eu-west-1') instances = aws.service.ec2.get_instances_by( 'status', 'running', regions=['eu-west-1', 'eu-west-2']) for instance in instances: self.assertEquals(instance['State']['Name'], 'running')
def test_get_instance_by(self): aws = awspice.connect('eu-west-2') instance = aws.service.ec2.get_instance_by( 'id', 'i-541f08dc', regions=['eu-west-1', 'eu-west-2']) self.assertEquals(instance['State']['Name'], 'running')
def test_get_instances(self): aws = awspice.connect('eu-west-1') instances = aws.service.ec2.get_instances() self.assertTrue(len(instances) > 15)
def test_find_instance_accounts(self): aws = awspice.connect('eu-west-2') instance = aws.finder.find_instance('id', 'i-541f08dc', profiles=['qa', 'default']) self.assertEquals(instance['InstanceId'], 'i-541f08dc')
def test_get_addresses(self): aws = awspice.connect('eu-west-1') addresses = aws.service.ec2.get_addresses(regions=['eu-west-1']) addresses = filter(lambda x: x.get('AssociationId') != None, addresses) self.assertTrue(len(addresses) > 20)
def test_get_volumes_by(self): aws = awspice.connect('eu-west-1') volumes = aws.service.ec2.get_volumes_by('status', 'available') self.assertEquals(volumes[0]['State'], 'available')
def test_find_instance_regions(self): aws = awspice.connect('eu-west-2', profile='default') instance = aws.finder.find_instance('id', 'i-541f08dc', regions=['eu-west-1']) self.assertEquals(instance['InstanceId'], 'i-541f08dc')
def __init__(self, account='default'): self.client = awspice.connect(profile=account) self._ec2 = EC2(self.client) self._s3 = S3(self.client) self._iam = IAM(self.client)
def test_get_loadbalancers(self): aws = awspice.connect('eu-central-1') elbs = aws.service.elb.get_loadbalancers() self.assertTrue(len(elbs) == 20)
def test_get_volume_by(self): aws = awspice.connect('eu-west-1') volume = aws.service.ec2.get_volume_by('status', 'in-use') self.assertTrue('i-' in volume['Attachments'][0]['InstanceId'])
def test_find_volume(self): aws = awspice.connect('eu-west-1') volume = aws.finder.find_volume('id', 'vol-04ee612f6b83104cd', profiles=['default', 'qa']) self.assertEquals(volume['State'], 'in-use')
def test_get_address_by(self): aws = awspice.connect('eu-west-1') address = aws.service.ec2.get_address_by('privateip', '172.22.1.221', regions=['eu-west-1']) self.assertTrue(address['PublicIp'], '52.214.252.60')
def test_find_volumes(self): aws = awspice.connect('eu-west-1') volumes = aws.finder.find_volumes('status', 'in-use', profiles=['qa']) self.assertEquals(volumes[2]['State'], 'in-use')