# -*- coding: utf-8 -*-
[docs]class StatsModule:
'''
Class responsible for processing general data to the AWS account.
This class is dedicated to the global management of the AWS account in order to obtain statistics, costs or global information.
Attributes:
aws: awspice client
'''
[docs] def get_stats(self, regions=[]):
'''
Retrieve data about services in your AWS account like Volumes, Instances or Databases.
Args:
aws: AwsManager client
region: To retrieve data only of this region
Return:
List of regions with its stats
'''
results = dict()
regions = [region.encode('ascii', 'ignore') for region in regions]
results['Users'] = self.aws.iam.get_users()
results['Buckets'] = self.aws.s3.get_buckets()
results['Regions'] = dict()
for region in regions:
self.aws.ec2.change_region(region)
data = dict()
data['Instances'] = self.aws.ec2.get_instances()
data['SecurityGroups'] = self.aws.ec2.get_secgroups()
data['Volumes'] = self.aws.ec2.get_volumes()
# data['Snapshots'] = self.aws.ec2.get_snapshots(); # Need to select only private snaps
data['Addresses'] = self.aws.ec2.get_addresses()
data['Vpcs'] = self.aws.ec2.get_vpcs()
data['LoadBalancers'] = self.aws.elb.get_loadbalancers()
data['Databases'] = self.aws.rds.get_databases()
data['Certificates'] = self.aws.acm.list_certificates()
results['Regions'][region] = data
return results
[docs] def cost_saving(self, regions=[]):
'''
List unused elements that carry expenses.
Args:
aws: AwsManager client.
Returns:
Dict Region with a list of regions with its unused elements
'''
results = dict()
regions = [region.encode('ascii', 'ignore') for region in regions]
for region in regions:
self.aws.ec2.change_region(region)
savings = dict()
savings['Volumes'] = self.aws.ec2.get_volumes_by({'status': 'available'})
adds = self.aws.ec2.get_addresses()
savings['Addresses'] = filter(lambda x: x.get('AssociationId') == None, adds)
elbs = self.aws.elb.get_loadbalancers()
savings['LoadBalancers'] = filter(lambda x: x.get('Instances') == [], elbs)
results[region] = savings
return {'Regions': results}
[docs] def __init__(self, aws):
self.aws = aws