From eb98973d164cc35081bc3cd1dbd1b4b20674e061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phan=20Sainl=C3=A9ger?= Date: Mon, 28 Aug 2023 22:08:30 +0200 Subject: [PATCH] [NEW] maintenance_server_data: create add-on --- maintenance_server_data/.gitignore | 2 + maintenance_server_data/README.rst | 44 +++++++++ maintenance_server_data/__init__.py | 3 + maintenance_server_data/__manifest__.py | 40 ++++++++ maintenance_server_data/i18n/README | 1 + maintenance_server_data/models/__init__.py | 3 + .../models/maintenance_equipment.py | 17 ++++ .../models/os_distribution.py | 17 ++++ maintenance_server_data/models/service.py | 27 ++++++ .../security/ir.model.access.csv | 11 +++ .../views/maintenance_equipment.xml | 56 +++++++++++ .../views/os_distribution.xml | 33 +++++++ maintenance_server_data/views/service.xml | 95 +++++++++++++++++++ 13 files changed, 349 insertions(+) create mode 100644 maintenance_server_data/.gitignore create mode 100644 maintenance_server_data/README.rst create mode 100644 maintenance_server_data/__init__.py create mode 100644 maintenance_server_data/__manifest__.py create mode 100644 maintenance_server_data/i18n/README create mode 100644 maintenance_server_data/models/__init__.py create mode 100644 maintenance_server_data/models/maintenance_equipment.py create mode 100644 maintenance_server_data/models/os_distribution.py create mode 100644 maintenance_server_data/models/service.py create mode 100644 maintenance_server_data/security/ir.model.access.csv create mode 100644 maintenance_server_data/views/maintenance_equipment.xml create mode 100644 maintenance_server_data/views/os_distribution.xml create mode 100644 maintenance_server_data/views/service.xml diff --git a/maintenance_server_data/.gitignore b/maintenance_server_data/.gitignore new file mode 100644 index 0000000..6da5887 --- /dev/null +++ b/maintenance_server_data/.gitignore @@ -0,0 +1,2 @@ +*.*~ +*pyc diff --git a/maintenance_server_data/README.rst b/maintenance_server_data/README.rst new file mode 100644 index 0000000..2e1e290 --- /dev/null +++ b/maintenance_server_data/README.rst @@ -0,0 +1,44 @@ +====================================== +maintenance_server_data +====================================== + +Gather several identification data about the servers to maintain. + +Installation +============ + +Use Odoo normal module installation procedure to install +``maintenance_server_data``. + +Known issues / Roadmap +====================== + +None yet. + +Bug Tracker +=========== + +Bugs are tracked on `our issues website `_. In case of +trouble, please check there if your issue has already been +reported. If you spotted it first, help us smashing it by providing a +detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Stéphan Sainléger + +Funders +------- + +The development of this module has been financially supported by: +* Elabore (https://elabore.coop) + + +Maintainer +---------- + +This module is maintained by Elabore. diff --git a/maintenance_server_data/__init__.py b/maintenance_server_data/__init__.py new file mode 100644 index 0000000..cde864b --- /dev/null +++ b/maintenance_server_data/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/maintenance_server_data/__manifest__.py b/maintenance_server_data/__manifest__.py new file mode 100644 index 0000000..ed9e972 --- /dev/null +++ b/maintenance_server_data/__manifest__.py @@ -0,0 +1,40 @@ +# Copyright 2023 Stéphan Sainléger (Elabore) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "maintenance_server_data", + "version": "14.0.1.0.0", + "author": "Elabore", + "website": "https://elabore.coop", + "maintainer": "Stéphan Sainléger", + "license": "AGPL-3", + "category": "Tools", + "summary": "Gather data about the servers to maintain.", + # any module necessary for this one to work correctly + "depends": [ + "base", + "maintenance", + ], + "qweb": [ + # "static/src/xml/*.xml", + ], + "external_dependencies": { + "python": [], + }, + # always loaded + "data": [ + "security/ir.model.access.csv", + "views/maintenance_equipment.xml", + "views/os_distribution.xml", + "views/service.xml", + ], + # only loaded in demonstration mode + "demo": [], + "js": [], + "css": [], + "installable": True, + # Install this module automatically if all dependency have been previously + # and independently installed. Used for synergetic or glue modules. + "auto_install": False, + "application": False, +} \ No newline at end of file diff --git a/maintenance_server_data/i18n/README b/maintenance_server_data/i18n/README new file mode 100644 index 0000000..62197a1 --- /dev/null +++ b/maintenance_server_data/i18n/README @@ -0,0 +1 @@ +This directory should contain the *.po for Odoo translation. diff --git a/maintenance_server_data/models/__init__.py b/maintenance_server_data/models/__init__.py new file mode 100644 index 0000000..38091b4 --- /dev/null +++ b/maintenance_server_data/models/__init__.py @@ -0,0 +1,3 @@ +from . import os_distribution +from . import service +from . import maintenance_equipment \ No newline at end of file diff --git a/maintenance_server_data/models/maintenance_equipment.py b/maintenance_server_data/models/maintenance_equipment.py new file mode 100644 index 0000000..07c2818 --- /dev/null +++ b/maintenance_server_data/models/maintenance_equipment.py @@ -0,0 +1,17 @@ +from odoo import fields, models + + + +class MaintenanceEquipment(models.Model): + _inherit = 'maintenance.equipment' + + server_ip = fields.Char('Server Ip Address') + distribution_id = fields.Many2one('os.distribution', string='Distribution') + service_ids = fields.One2many('service.instance', 'equipment_id', string='Services') + hosting_city = fields.Char('Hosting City') + nb_cores = fields.Integer('Nb Cores') + ram = fields.Integer('RAM (Go)') + disk_storage = fields.Integer('Disk Storage (Go)') + backup_activated = fields.Boolean('Backup Activated ?') + backup_server_id = fields.Many2one('backup.server', string='Backup Server') + backup_ok = fields.Boolean('Backup OK ?') \ No newline at end of file diff --git a/maintenance_server_data/models/os_distribution.py b/maintenance_server_data/models/os_distribution.py new file mode 100644 index 0000000..e422279 --- /dev/null +++ b/maintenance_server_data/models/os_distribution.py @@ -0,0 +1,17 @@ +from odoo import api, fields, models + +class OsDistribution(models.Model): + _name = 'os.distribution' + + name = fields.Char('Name', compute="_compute_name") + distrib_name = fields.Char('Distrib Name', required=True) + distrib_version = fields.Char('Distrib Version') + + @api.depends("distrib_name","distrib_version") + def _compute_name(self): + for distrib in self: + distrib.name = "" + if distrib.distrib_name != "": + distrib.name = distrib.distrib_name + if distrib.distrib_version != "": + distrib.name = distrib.name + ' ' + distrib.distrib_version \ No newline at end of file diff --git a/maintenance_server_data/models/service.py b/maintenance_server_data/models/service.py new file mode 100644 index 0000000..9045de9 --- /dev/null +++ b/maintenance_server_data/models/service.py @@ -0,0 +1,27 @@ +from odoo import fields, models + +class Service(models.Model): + _name = 'service' + + name = fields.Char('Name', required=True) + +class ServiceVersion(models.Model): + _name = "service.version" + + service_id = fields.Many2one('service', string='Service', required=True) + name = fields.Char('Name') + is_last_version = fields.Boolean('Is Last Version?') + +class ServiceInstance(models.Model): + _name = "service.instance" + + equipment_id = fields.Many2one('maintenance.equipment', string='Equipment') + service_id = fields.Many2one('service', string='Service', required=True) + version_id = fields.Many2one('service.version', string='Version') + service_url = fields.Char(string='Service Url') + + +class BackupServer(models.Model): + _name = 'backup.server' + + name = fields.Char('Name', required=True) \ No newline at end of file diff --git a/maintenance_server_data/security/ir.model.access.csv b/maintenance_server_data/security/ir.model.access.csv new file mode 100644 index 0000000..4bc80fb --- /dev/null +++ b/maintenance_server_data/security/ir.model.access.csv @@ -0,0 +1,11 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +os_distribution_user,os_distribution_user,model_os_distribution,base.group_user,1,0,0,0 +os_distribution_manager,os_distribution_manager,model_os_distribution,maintenance.group_equipment_manager,1,1,1,1 +service_user,service_user,model_service,base.group_user,1,0,0,0 +service_manager,service_manager,model_service,maintenance.group_equipment_manager,1,1,1,1 +service_version_user,service_version_user,model_service_version,base.group_user,1,0,0,0 +service_version_manager,service_version_manager,model_service_version,maintenance.group_equipment_manager,1,1,1,1 +service_instance_user,service_instance_user,model_service_instance,base.group_user,1,0,0,0 +service_instance_manager,service_instance_manager,model_service_instance,maintenance.group_equipment_manager,1,1,1,1 +backup_server_user,backup_server_user,model_backup_server,base.group_user,1,0,0,0 +backup_server_manager,backup_server_manager,model_backup_server,maintenance.group_equipment_manager,1,1,1,1 \ No newline at end of file diff --git a/maintenance_server_data/views/maintenance_equipment.xml b/maintenance_server_data/views/maintenance_equipment.xml new file mode 100644 index 0000000..5defd08 --- /dev/null +++ b/maintenance_server_data/views/maintenance_equipment.xml @@ -0,0 +1,56 @@ + + + + equipment.form.server.inherit + maintenance.equipment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + equipment.tree.server.inherit + maintenance.equipment + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/maintenance_server_data/views/os_distribution.xml b/maintenance_server_data/views/os_distribution.xml new file mode 100644 index 0000000..3a35927 --- /dev/null +++ b/maintenance_server_data/views/os_distribution.xml @@ -0,0 +1,33 @@ + + + + os.distribution.view.tree + os.distribution + + + + + + + + + + OS Distribution + os.distribution + tree + + +

+ Add a new OS Distribution +

+
+
+ + + +
\ No newline at end of file diff --git a/maintenance_server_data/views/service.xml b/maintenance_server_data/views/service.xml new file mode 100644 index 0000000..39fec1e --- /dev/null +++ b/maintenance_server_data/views/service.xml @@ -0,0 +1,95 @@ + + + + + service.view.tree + service + + + + + + + + + service.version.view.tree + service.version + + + + + + + + + + + backup.server.view.tree + backup.server + + + + + + + + + + Service + service + tree + + +

+ Add a new Service +

+
+
+ + + Service Version + service.version + tree + + +

+ Add a new Service Version +

+
+
+ + + Backup server + backup.server + tree + + +

+ Add a new Backup Server +

+
+
+ + + + + + + + +
\ No newline at end of file