[NEW] maintenance_server_data: create add-on

This commit is contained in:
Stéphan Sainléger
2023-08-28 22:08:30 +02:00
parent d82e1701f9
commit eb98973d16
13 changed files with 349 additions and 0 deletions

2
maintenance_server_data/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*.*~
*pyc

View File

@@ -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 <https://github.com/elabore-coop/maintenance-tools/issues>`_. 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.

View File

@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

View File

@@ -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,
}

View File

@@ -0,0 +1 @@
This directory should contain the *.po for Odoo translation.

View File

@@ -0,0 +1,3 @@
from . import os_distribution
from . import service
from . import maintenance_equipment

View File

@@ -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 ?')

View File

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

View File

@@ -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)

View File

@@ -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
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 os_distribution_user os_distribution_user model_os_distribution base.group_user 1 0 0 0
3 os_distribution_manager os_distribution_manager model_os_distribution maintenance.group_equipment_manager 1 1 1 1
4 service_user service_user model_service base.group_user 1 0 0 0
5 service_manager service_manager model_service maintenance.group_equipment_manager 1 1 1 1
6 service_version_user service_version_user model_service_version base.group_user 1 0 0 0
7 service_version_manager service_version_manager model_service_version maintenance.group_equipment_manager 1 1 1 1
8 service_instance_user service_instance_user model_service_instance base.group_user 1 0 0 0
9 service_instance_manager service_instance_manager model_service_instance maintenance.group_equipment_manager 1 1 1 1
10 backup_server_user backup_server_user model_backup_server base.group_user 1 0 0 0
11 backup_server_manager backup_server_manager model_backup_server maintenance.group_equipment_manager 1 1 1 1

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="equipment_view_form_server_inherit" model="ir.ui.view">
<field name="name">equipment.form.server.inherit</field>
<field name="model">maintenance.equipment</field>
<field name="inherit_id" ref="maintenance.hr_equipment_view_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='effective_date']/.." position="after">
<group name="server_data" string="Server data">
<field name="server_ip" />
<field name="hosting_city" />
<field name="distribution_id" />
<field name="nb_cores" />
<field name="ram" />
<field name="disk_storage" />
</group>
<group name="backup_data" string="Backup data">
<field name="backup_activated" />
<field name="backup_server_id" />
<field name="backup_ok" />
</group>
</xpath>
<xpath expr="//notebook" position="inside">
<page name="services" string="Services">
<field name="service_ids" nolabel="1">
<tree create="true" delete="true" editable="top">
<field name="service_id" />
<field name="version_id" domain="[('service_id', '=', service_id)]" />
<field name="service_url" />
</tree>
</field>
</page>
</xpath>
</field>
</record>
<record id="equipment_view_tree_server_inherit" model="ir.ui.view">
<field name="name">equipment.tree.server.inherit</field>
<field name="model">maintenance.equipment</field>
<field name="inherit_id" ref="maintenance.hr_equipment_view_tree" />
<field name="arch" type="xml">
<xpath expr="//field[@name='category_id']" position="after">
<field name="server_ip" optional="hide" />
<field name="hosting_city" optional="hide" />
<field name="distribution_id" optional="hide" />
<field name="nb_cores" optional="hide" />
<field name="ram" optional="hide" />
<field name="disk_storage" optional="hide" />
<field name="backup_activated" optional="hide" />
<field name="backup_server_id" optional="hide" />
<field name="backup_ok" optional="hide" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="os_distribution_view_tree" model="ir.ui.view">
<field name="name">os.distribution.view.tree</field>
<field name="model">os.distribution</field>
<field name="arch" type="xml">
<tree string="OS Distributions" editable="top">
<field name="distrib_name" />
<field name="distrib_version" />
</tree>
</field>
</record>
<record id="os_distribution_action" model="ir.actions.act_window">
<field name="name">OS Distribution</field>
<field name="res_model">os.distribution</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="os_distribution_view_tree" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Add a new OS Distribution
</p>
</field>
</record>
<menuitem
id="menu_maintenance_os_distribution"
name="OS Distributions"
parent="maintenance.menu_maintenance_configuration"
action="os_distribution_action"
sequence="3" />
</odoo>

View File

@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- VIEWS -->
<record id="service_view_tree" model="ir.ui.view">
<field name="name">service.view.tree</field>
<field name="model">service</field>
<field name="arch" type="xml">
<tree string="Services" editable="top">
<field name="name" />
</tree>
</field>
</record>
<record id="service_version_view_tree" model="ir.ui.view">
<field name="name">service.version.view.tree</field>
<field name="model">service.version</field>
<field name="arch" type="xml">
<tree string="Service versions" editable="top">
<field name="service_id" />
<field name="name" />
<field name="is_last_version" />
</tree>
</field>
</record>
<record id="backup_server_view_tree" model="ir.ui.view">
<field name="name">backup.server.view.tree</field>
<field name="model">backup.server</field>
<field name="arch" type="xml">
<tree string="Backup Servers" editable="top">
<field name="name" />
</tree>
</field>
</record>
<!-- ACTIONS -->
<record id="service_action" model="ir.actions.act_window">
<field name="name">Service</field>
<field name="res_model">service</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="service_view_tree" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Add a new Service
</p>
</field>
</record>
<record id="service_version_action" model="ir.actions.act_window">
<field name="name">Service Version</field>
<field name="res_model">service.version</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="service_version_view_tree" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Add a new Service Version
</p>
</field>
</record>
<record id="backup_server_action" model="ir.actions.act_window">
<field name="name">Backup server</field>
<field name="res_model">backup.server</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="backup_server_view_tree" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Add a new Backup Server
</p>
</field>
</record>
<!-- MENUS -->
<menuitem
id="menu_maintenance_service"
name="Services"
parent="maintenance.menu_maintenance_configuration"
action="service_action"
sequence="4" />
<menuitem
id="menu_maintenance_service_version"
name="Service Versions"
parent="maintenance.menu_maintenance_configuration"
action="service_version_action"
sequence="5" />
<menuitem
id="menu_maintenance_backup_server"
name="Backup Servers"
parent="maintenance.menu_maintenance_configuration"
action="backup_server_action"
sequence="5" />
</odoo>