[NEW] maintenance_server_monitoring_equipment_status

This commit is contained in:
clementthomas
2024-04-09 11:14:25 +02:00
parent ce57a34fe2
commit b8172d5f96
9 changed files with 185 additions and 15 deletions

View File

@@ -59,7 +59,7 @@ class MaintenanceEquipment(models.Model):
"""Class to make the tests
"""
WARNING = "warning"
ERROR = "error"
ERROR = "error"
def __init__(self, name):
self.name = name # name of the test
@@ -208,22 +208,40 @@ class MaintenanceEquipment(models.Model):
existing_not_done_warning_request = equipment.warning_maintenance_request
if (error and not existing_not_done_error_request) \
or (warning and not existing_not_done_warning_request and not existing_not_done_error_request):
maintenance_request = self.env['maintenance.request'].create({
"name":f'[{"ERROR" if error else "WARNING"}] {equipment.name}',
"equipment_id":equipment.id,
"user_id":equipment.technician_user_id.id,
"maintenance_team_id":equipment.maintenance_team_id.id or self.env["maintenance.team"].search([], limit=1),
"priority":'2' if error else '3',
"maintenance_type":"corrective" if error else "preventive",
"description":new_log
})
if error:
equipment.error_maintenance_request = maintenance_request
else:
equipment.warning_maintenance_request = maintenance_request
equipment.create_maintenance_request(self.MonitoringTest.ERROR if error else self.MonitoringTest.WARNING, new_log)
else:
self.no_error()
def create_maintenance_request(self, error_level, description):
"""create a maintenance request for equipment (self)
Args:
error_level (string): MonitoringTest.ERROR or MonitoringTest.WARNING
description (string): description of maintenance request
"""
maintenance_request = self.env['maintenance.request'].create({
"name":f'[{error_level.upper()}] {self.name}',
"equipment_id":self.id,
"user_id":self.technician_user_id.id,
"maintenance_team_id":self.maintenance_team_id.id or self.env["maintenance.team"].search([], limit=1),
"priority":'2' if error_level == self.MonitoringTest.ERROR else '3',
"maintenance_type":"corrective" if error_level == self.MonitoringTest.ERROR else "preventive",
"description":description
})
if error_level == self.MonitoringTest.ERROR:
self.error_maintenance_request = maintenance_request
self.warning_maintenance_request = None
else:
self.warning_maintenance_request = maintenance_request
self.error_maintenance_request = None
def no_error(self):
"""set error and warning maintenance request to None
"""
self.error_maintenance_request = None
self.warning_maintenance_request = None
def install_dependencies(self):
"""
install dependencies needed to do all tests, as python or shell programs

View File

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

View File

@@ -0,0 +1,44 @@
======================================
maintenance_server_monitoring
======================================
Monitor some data on remote hosts
Installation
============
Use Odoo normal module installation procedure to install
``maintenance_server_monitoring``.
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
------------
* Clément Thomas
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,38 @@
# Copyright 2023 Stéphan Sainléger (Elabore)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "maintenance_server_monitoring_maintenance_equipment_status",
"version": "14.0.1.0.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Clément Thomas",
"license": "AGPL-3",
"category": "Tools",
"summary": "Monitor some data on remote hosts",
# any module necessary for this one to work correctly
"depends": [
"base",
"maintenance_server_monitoring",
"maintenance_equipment_status"
],
"qweb": [
# "static/src/xml/*.xml",
],
"external_dependencies": {
"python": [],
},
# always loaded
"data": [
"views/maintenance_equipment_status_views.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": True,
"application": False,
}

View File

@@ -0,0 +1,2 @@
from . import maintenance_equipment
from . import maintenance_equipment_status

View File

@@ -0,0 +1,23 @@
from odoo import fields, models, api
class MaintenanceEquipment(models.Model):
_inherit = 'maintenance.equipment'
def create_maintenance_request(self, error_level, description):
res = super(MaintenanceEquipment, self).create_maintenance_request(error_level, description)
if self.error_maintenance_request:
error_status = self.env["maintenance.equipment.status"].search([("is_error_status",'=',True),'|', ('category_ids', 'in', [self.category_id.id]), ('category_ids', '=', False)])
if error_status:
self.status_id = error_status
else:
warning_status = self.env["maintenance.equipment.status"].search([("is_warning_status",'=',True),'|', ('category_ids', 'in', [self.category_id.id]), ('category_ids', '=', False)])
if warning_status:
self.status_id = warning_status
return res
def no_error(self):
res = super(MaintenanceEquipment, self).no_error()
ok_status = self.env["maintenance.equipment.status"].search([("is_error_status",'=',False),("is_warning_status",'=',False),'|', ('category_ids', 'in', [self.category_id.id]), ('category_ids', '=', False)])
self.status_id = ok_status
return res

View File

@@ -0,0 +1,11 @@
from odoo import fields, models, api
import subprocess
import sys
import psutil
from io import StringIO
class MaintenanceEquipmentStatus(models.Model):
_inherit = "maintenance.equipment.status"
is_warning_status = fields.Boolean('Is warning status')
is_error_status = fields.Boolean('Is error status')

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="maintenance_equipment_status_view_form_inherit" model="ir.ui.view">
<field name="name">maintenance.equipment.status.form.inherit</field>
<field name="model">maintenance.equipment.status</field>
<field name="inherit_id" ref="maintenance_equipment_status.maintenance_equipment_status_view_form" />
<field name="arch" type="xml">
<group name="notes" position="after">
<group name="monitoring">
<field name="is_warning_status" />
<field name="is_error_status" />
</group>
</group>
</field>
</record>
<record id="maintenance_equipment_status_view_tree_inherit" model="ir.ui.view">
<field name="name">maintenance.equipment.status.tree.inherit</field>
<field name="model">maintenance.equipment.status</field>
<field name="inherit_id" ref="maintenance_equipment_status.maintenance_equipment_status_view_tree" />
<field name="arch" type="xml">
<field name="category_ids" position="after">
<field name="is_warning_status" />
<field name="is_error_status" />
</field>
</field>
</record>
</odoo>