diff --git a/aws_s3_analytics/__init__.py b/aws_s3_analytics/__init__.py new file mode 100644 index 00000000..9a7e03ed --- /dev/null +++ b/aws_s3_analytics/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/aws_s3_analytics/__manifest__.py b/aws_s3_analytics/__manifest__.py new file mode 100644 index 00000000..8c786c43 --- /dev/null +++ b/aws_s3_analytics/__manifest__.py @@ -0,0 +1,19 @@ +{ # pylint: disable=C8101,C8103,C7902 + "name": "AWS S3 analytics", + "description": """Análise dos buckets de backup.""", + "author": "Trustcode", + "category": "Productivity", + "version": "13.0.0.1", + "contributors": [""], + "depends": ['mail'], + "data": [ + "views/buckets.xml", + "views/res_company.xml", + "security/ir.model.access.csv", + "data/cron.xml", + "data/decimal_data.xml", + ], + "installable": True, + "application": True, + "auto-install": False, +} diff --git a/aws_s3_analytics/data/cron.xml b/aws_s3_analytics/data/cron.xml new file mode 100644 index 00000000..e068776e --- /dev/null +++ b/aws_s3_analytics/data/cron.xml @@ -0,0 +1,14 @@ + + + + Cron Update Buckets + 1 + hours + code + -1 + + + model.list_buckets() + + + \ No newline at end of file diff --git a/aws_s3_analytics/data/decimal_data.xml b/aws_s3_analytics/data/decimal_data.xml new file mode 100644 index 00000000..751d90bd --- /dev/null +++ b/aws_s3_analytics/data/decimal_data.xml @@ -0,0 +1,9 @@ + + + + + Disk usage + + + + \ No newline at end of file diff --git a/aws_s3_analytics/models/__init__.py b/aws_s3_analytics/models/__init__.py new file mode 100644 index 00000000..bc8aa7bf --- /dev/null +++ b/aws_s3_analytics/models/__init__.py @@ -0,0 +1,2 @@ +from . import buckets +from . import res_company \ No newline at end of file diff --git a/aws_s3_analytics/models/buckets.py b/aws_s3_analytics/models/buckets.py new file mode 100644 index 00000000..14e3956b --- /dev/null +++ b/aws_s3_analytics/models/buckets.py @@ -0,0 +1,54 @@ +import datetime +from odoo import fields, models + +try: + from boto3 import session + from boto3 import resource + from boto3 import client +except ImportError: + _logger.error('Cannot import Boto3', exc_info=True) + + +class AwsS3Analytics(models.Model): + _name = 'aws.s3.analytics' + _description = 'AWS S3 Analytics' + _rec_name = 'bucket_name' + + bucket_name = fields.Char(string="Bucket", readonly=True) + object_line_ids = fields.One2many('object.lines', 'relation_id', string='Object Lines', readonly=True) + + def list_buckets(self): + + session = boto3.Session( + aws_access_key_id=(self.env.company.aws_access_key_id_o), + aws_secret_access_key=(self.env.company.aws_secret_access_key_o), + ) + s3 = session.resource('s3') + lista = [] + + for bucket in s3.buckets.all(): + lista.append(bucket) + + self.create_bucket(lista) + + def create_bucket(self, lista): + for i in lista: + name_dir = i.name + + vals = { + "bucket_name": name_dir, + } + + self.create(vals) + self.env.cr.commit() + + +class ObjectLines(models.Model): + _name = 'object.lines' + _description = 'Object lines' + + bucket_name_id = fields.Many2one('aws.s3.analytics', string='Bucket') + bucket_object = fields.Char(string="Objeto") + last_modified = fields.Datetime('Ultima modificação do Obj') + disk_usage = fields.Float(string="Uso de disco", digits='Disk usage') + relation_id = fields.Many2one('aws.s3.analytics', string='IDS') diff --git a/aws_s3_analytics/models/res_company.py b/aws_s3_analytics/models/res_company.py new file mode 100644 index 00000000..17606c8e --- /dev/null +++ b/aws_s3_analytics/models/res_company.py @@ -0,0 +1,9 @@ +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = "res.company" + + aws_access_key_id_o = fields.Char(string="Aws Token") + aws_secret_access_key_o = fields.Char(string="Aws Secret Key") + diff --git a/aws_s3_analytics/security/ir.model.access.csv b/aws_s3_analytics/security/ir.model.access.csv new file mode 100644 index 00000000..1a1e7da8 --- /dev/null +++ b/aws_s3_analytics/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_aws_s3_analytics,access.aws.s3.analytics,model_aws_s3_analytics,account.group_account_readonly,1,0,0,1 +access_object_lines,access.object.lines,model_object_lines,account.group_account_readonly,1,1,1,1 diff --git a/aws_s3_analytics/static/description/icon.png b/aws_s3_analytics/static/description/icon.png new file mode 100644 index 00000000..52fd9a04 Binary files /dev/null and b/aws_s3_analytics/static/description/icon.png differ diff --git a/aws_s3_analytics/views/buckets.xml b/aws_s3_analytics/views/buckets.xml new file mode 100644 index 00000000..6fe3ec71 --- /dev/null +++ b/aws_s3_analytics/views/buckets.xml @@ -0,0 +1,77 @@ + + + + + + Bucket view + ir.actions.act_window + aws.s3.analytics + kanban,form,graph + + + Aguarde enquanto sincronizamos com a AWS! + + + + + + + + + + aws.s3.analytics.form + aws.s3.analytics + + + + + + + + + + + + + + + + + + + + + + aws.s3.analytics.kanban + aws.s3.analytics + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/aws_s3_analytics/views/res_company.xml b/aws_s3_analytics/views/res_company.xml new file mode 100644 index 00000000..7278ba17 --- /dev/null +++ b/aws_s3_analytics/views/res_company.xml @@ -0,0 +1,18 @@ + + + + res.company + + + + + + + + + + + + + + \ No newline at end of file
+ Aguarde enquanto sincronizamos com a AWS! +