Browse Source

[ADD] dead_mans_switch_client (#460)

* [ADD] dead_mans_switch_client, dead_mans_switch_server

* OCA Transbot updated translations from Transifex

* Add demo system parameter and some fixes to README. Fix #314.

* Add timeout to urlopen in order to avoid "freeze" of the cron job

* Use default timeout in get_param directly

* OCA Transbot updated translations from Transifex

* [IMP] count all child processes' resources

* [FIX] only look at parent if workers are configured

* [ADD] tell the server that we don't know a value

* [FIX] pass timeout as keyword argument

* [ADD] hints for coveralls

* OCA Transbot updated translations from Transifex

* OCA Transbot updated translations from Transifex

* OCA Transbot updated translations from Transifex

* OCA Transbot updated translations from Transifex

* OCA Transbot updated translations from Transifex

* OCA Transbot updated translations from Transifex

* [ADD] migrate dead_mans_switch_client

* [IMP] better readme, s/8.0/9.0/
pull/445/merge
Holger Brunn 8 years ago
committed by Moises Lopez - https://www.vauxoo.com/
parent
commit
bebac1417a
  1. 74
      dead_mans_switch_client/README.rst
  2. 4
      dead_mans_switch_client/__init__.py
  3. 21
      dead_mans_switch_client/__openerp__.py
  4. 13
      dead_mans_switch_client/data/ir_actions.xml
  5. 13
      dead_mans_switch_client/data/ir_cron.xml
  6. 5
      dead_mans_switch_client/demo/dead_mans_switch_client_demo.yml
  7. 29
      dead_mans_switch_client/i18n/de.po
  8. 38
      dead_mans_switch_client/i18n/en.po
  9. 47
      dead_mans_switch_client/i18n/es.po
  10. 45
      dead_mans_switch_client/i18n/fi.po
  11. 46
      dead_mans_switch_client/i18n/fr.po
  12. 28
      dead_mans_switch_client/i18n/it.po
  13. 47
      dead_mans_switch_client/i18n/pt_BR.po
  14. 48
      dead_mans_switch_client/i18n/sl.po
  15. 29
      dead_mans_switch_client/i18n/tr.po
  16. 28
      dead_mans_switch_client/i18n/zh_CN.po
  17. 4
      dead_mans_switch_client/models/__init__.py
  18. 101
      dead_mans_switch_client/models/dead_mans_switch_client.py
  19. BIN
      dead_mans_switch_client/static/description/icon.png
  20. 4
      dead_mans_switch_client/tests/__init__.py
  21. 17
      dead_mans_switch_client/tests/test_dead_mans_switch_client.py

74
dead_mans_switch_client/README.rst

@ -0,0 +1,74 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:alt: License: AGPL-3
==========================
Dead man's switch (client)
==========================
This module is the client part of `dead_mans_switch_server`. It is responsible
of sending the server status updates, which in turn takes action if those
updates don't come in time.
Configuration
=============
After installing this module, you need to fill in the system parameter
``dead_mans_switch_client.url``. This must be the full URL to the server's
controller, usually of the form ``https://your.server/dead_mans_switch/alive``.
This module attempts to send CPU and RAM statistics to the server. While this
is not mandatory, it's helpful for assessing a server's health. If you want
this, you need to install ``psutil``.
You can also have the number of currently online users logged, but this only
works if the ``bus`` module is installed and longpolling configured correctly.
Usage
=====
This module doesn't have any visible effect on the client.
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/149/9.0
For further information, please visit:
* https://www.odoo.com/forum/help-1
Known issues / Roadmap
======================
* certificate pinning would be nice
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-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
`here <https://github.com/OCA/server-tools/issues/new?body=module:%20dead_mans_switch_client%0Aversion:%209.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits
=======
Contributors
------------
* Holger Brunn <hbrunn@therp.nl>
* Jairo Llopis <yajo.sk8@gmail.com>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit https://odoo-community.org.

4
dead_mans_switch_client/__init__.py

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# © 2015 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models

21
dead_mans_switch_client/__openerp__.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# © 2015-2016 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Dead man's switch (client)",
"version": "9.0.1.0.1",
"author": "Therp BV,Odoo Community Association (OCA)",
"license": "AGPL-3",
"category": "Monitoring",
"summary": "Be notified when customers' odoo instances go down",
"depends": [
'base',
],
"data": [
"data/ir_actions.xml",
"data/ir_cron.xml",
],
"demo": [
"demo/dead_mans_switch_client_demo.yml",
],
}

13
dead_mans_switch_client/data/ir_actions.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<act_window id="action_setup" res_model="ir.config_parameter"
name="Configure the dead man's switch server" view_mode="form"
context="{'default_key': 'dead_mans_switch_client.url'}"/>
<record id="todo_setup" model="ir.actions.todo">
<field name="name">Configure the dead man's switch server</field>
<field name="type">automatic</field>
<field name="action_id" ref="action_setup" />
</record>
</data>
</openerp>

13
dead_mans_switch_client/data/ir_cron.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data noupdate="1">
<record id="cron_client" model="ir.cron">
<field name="name">Dead man&apos;s switch client</field>
<field name="interval_number">5</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="model">dead.mans.switch.client</field>
<field name="function">alive</field>
</record>
</data>
</openerp>

5
dead_mans_switch_client/demo/dead_mans_switch_client_demo.yml

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# © 2015 Grupo ESOC Ingeniería de Servicios, S.L.U. - Jairo Llopis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
- !function {model: dead.mans.switch.client, name: _install_default_url}

29
dead_mans_switch_client/i18n/de.po

@ -0,0 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dead_mans_switch_client
#
# Translators:
# Rudolf Schnapka <rs@techno-flex.de>, 2016
msgid ""
msgstr ""
"Project-Id-Version: server-tools (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-19 14:44+0000\n"
"PO-Revision-Date: 2016-01-18 13:53+0000\n"
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>\n"
"Language-Team: German (http://www.transifex.com/oca/OCA-server-tools-8-0/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: dead_mans_switch_client
#: model:ir.actions.act_window,name:dead_mans_switch_client.action_setup
msgid "Configure the dead man's switch server"
msgstr "Konfigurieren Sie den 'dead man's switch -Server'"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,id:0
msgid "ID"
msgstr "ID"

38
dead_mans_switch_client/i18n/en.po

@ -0,0 +1,38 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dead_mans_switch_client
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: server-tools (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-06 02:41+0000\n"
"PO-Revision-Date: 2016-05-04 19:17+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: English (http://www.transifex.com/oca/OCA-server-tools-8-0/language/en/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: en\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: dead_mans_switch_client
#: model:ir.actions.act_window,name:dead_mans_switch_client.action_setup
msgid "Configure the dead man's switch server"
msgstr "Configure the dead man's switch server"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,display_name:0
msgid "Display Name"
msgstr "Display Name"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,id:0
msgid "ID"
msgstr "ID"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,__last_update:0
msgid "Last Modified on"
msgstr "Last Modified on"

47
dead_mans_switch_client/i18n/es.po

@ -0,0 +1,47 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dead_mans_switch_client
#
# Translators:
# Carles Antoli <carlesantoli@hotmail.com>, 2015
# danimaribeiro <danimaribeiro@gmail.com>, 2016
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012-2013
# Hotellook, 2014
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015-2016
# Paolo Valier, 2016
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2015
# Rudolf Schnapka <rs@techno-flex.de>, 2016
# UAB "Draugiški sprendimai" <transifex@draugiskisprendimai.lt>, 2015
msgid ""
msgstr ""
"Project-Id-Version: server-tools (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-28 02:41+0000\n"
"PO-Revision-Date: 2016-05-27 15:24+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-server-tools-8-0/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: dead_mans_switch_client
#: model:ir.actions.act_window,name:dead_mans_switch_client.action_setup
msgid "Configure the dead man's switch server"
msgstr ""
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,display_name:0
msgid "Display Name"
msgstr "Nombre a mostrar"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,id:0
msgid "ID"
msgstr "ID"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,__last_update:0
msgid "Last Modified on"
msgstr "Última actualización por"

45
dead_mans_switch_client/i18n/fi.po

@ -0,0 +1,45 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dead_mans_switch_client
#
# Translators:
# Antonio Trueba, 2016
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010,2012-2014
# Hotellook, 2014
# Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>, 2016
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015-2016
# Paolo Valier, 2016
# Rudolf Schnapka <rs@techno-flex.de>, 2016
msgid ""
msgstr ""
"Project-Id-Version: server-tools (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-09 18:30+0000\n"
"PO-Revision-Date: 2016-06-06 13:35+0000\n"
"Last-Translator: Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>\n"
"Language-Team: Finnish (http://www.transifex.com/oca/OCA-server-tools-8-0/language/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: dead_mans_switch_client
#: model:ir.actions.act_window,name:dead_mans_switch_client.action_setup
msgid "Configure the dead man's switch server"
msgstr "Konfiguroi \"kuolleen miehen kytkin\"-palvelin"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,display_name:0
msgid "Display Name"
msgstr "Nimi"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,id:0
msgid "ID"
msgstr "ID"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,__last_update:0
msgid "Last Modified on"
msgstr "Viimeksi muokattu"

46
dead_mans_switch_client/i18n/fr.po

@ -0,0 +1,46 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dead_mans_switch_client
#
# Translators:
# Ahmet Altınışık <aaltinisik@altinkaya.com.tr>, 2015-2016
# Antonio Trueba, 2016
# Armando Vulcano Junior <vulcano@uol.com.br>, 2015
# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2015
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013-2014
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2016
# Paolo Valier, 2016
# Rudolf Schnapka <rs@techno-flex.de>, 2016
msgid ""
msgstr ""
"Project-Id-Version: server-tools (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-12 14:34+0000\n"
"PO-Revision-Date: 2016-05-08 15:26+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-server-tools-8-0/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: dead_mans_switch_client
#: model:ir.actions.act_window,name:dead_mans_switch_client.action_setup
msgid "Configure the dead man's switch server"
msgstr ""
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,display_name:0
msgid "Display Name"
msgstr "Nom affiché"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,id:0
msgid "ID"
msgstr "ID"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,__last_update:0
msgid "Last Modified on"
msgstr "Dernière modification le"

28
dead_mans_switch_client/i18n/it.po

@ -0,0 +1,28 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dead_mans_switch_client
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: server-tools (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-27 14:01+0000\n"
"PO-Revision-Date: 2015-11-26 12:51+0000\n"
"Last-Translator: <>\n"
"Language-Team: Italian (http://www.transifex.com/oca/OCA-server-tools-8-0/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: dead_mans_switch_client
#: model:ir.actions.act_window,name:dead_mans_switch_client.action_setup
msgid "Configure the dead man's switch server"
msgstr ""
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,id:0
msgid "ID"
msgstr "ID"

47
dead_mans_switch_client/i18n/pt_BR.po

@ -0,0 +1,47 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dead_mans_switch_client
#
# Translators:
# Ahmet Altınışık <aaltinisik@altinkaya.com.tr>, 2016
# Antonio Trueba, 2016
# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2015
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012
# Hotellook, 2014
# Isabelle RICHARD <isabellerichard89@gmail.com>, 2015
# Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>, 2016
# LS Development <ls.development.nc@gmail.com>, 2016
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015-2016
msgid ""
msgstr ""
"Project-Id-Version: server-tools (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-12 14:34+0000\n"
"PO-Revision-Date: 2016-05-11 16:42+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-server-tools-8-0/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: dead_mans_switch_client
#: model:ir.actions.act_window,name:dead_mans_switch_client.action_setup
msgid "Configure the dead man's switch server"
msgstr ""
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,display_name:0
msgid "Display Name"
msgstr "Nome para Mostrar"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,id:0
msgid "ID"
msgstr "Identificação"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,__last_update:0
msgid "Last Modified on"
msgstr "Última atualização em"

48
dead_mans_switch_client/i18n/sl.po

@ -0,0 +1,48 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dead_mans_switch_client
#
# Translators:
# Ahmet Altınışık <aaltinisik@altinkaya.com.tr>, 2016
# Antonio Trueba, 2016
# Carles Antoli <carlesantoli@hotmail.com>, 2015
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013-2014
# Giacomo <giacomo.spettoli@gmail.com>, 2015
# Hotellook, 2014
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015-2016
# Miku Laitinen <miku.laitinen@gmail.com>, 2015
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2015
# Rudolf Schnapka <rs@techno-flex.de>, 2015-2016
msgid ""
msgstr ""
"Project-Id-Version: server-tools (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-05-06 02:41+0000\n"
"PO-Revision-Date: 2016-05-05 05:57+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-server-tools-8-0/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: dead_mans_switch_client
#: model:ir.actions.act_window,name:dead_mans_switch_client.action_setup
msgid "Configure the dead man's switch server"
msgstr "Nastavitev strežnika varnostnega stikala"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,display_name:0
msgid "Display Name"
msgstr "Prikazni naziv"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,id:0
msgid "ID"
msgstr "ID"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,__last_update:0
msgid "Last Modified on"
msgstr "Zadnjič spremenjeno"

29
dead_mans_switch_client/i18n/tr.po

@ -0,0 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dead_mans_switch_client
#
# Translators:
# Ahmet Altınışık <aaltinisik@altinkaya.com.tr>, 2016
msgid ""
msgstr ""
"Project-Id-Version: server-tools (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-19 14:44+0000\n"
"PO-Revision-Date: 2016-01-31 14:58+0000\n"
"Last-Translator: Ahmet Altınışık <aaltinisik@altinkaya.com.tr>\n"
"Language-Team: Turkish (http://www.transifex.com/oca/OCA-server-tools-8-0/language/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: dead_mans_switch_client
#: model:ir.actions.act_window,name:dead_mans_switch_client.action_setup
msgid "Configure the dead man's switch server"
msgstr "Ölü adam tetiği sunucusunu ayarla"
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,id:0
msgid "ID"
msgstr "ID"

28
dead_mans_switch_client/i18n/zh_CN.po

@ -0,0 +1,28 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * dead_mans_switch_client
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: server-tools (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-14 07:02+0000\n"
"PO-Revision-Date: 2015-11-26 12:51+0000\n"
"Last-Translator: <>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/oca/OCA-server-tools-8-0/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: dead_mans_switch_client
#: model:ir.actions.act_window,name:dead_mans_switch_client.action_setup
msgid "Configure the dead man's switch server"
msgstr ""
#. module: dead_mans_switch_client
#: field:dead.mans.switch.client,id:0
msgid "ID"
msgstr "ID"

4
dead_mans_switch_client/models/__init__.py

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# © 2015 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import dead_mans_switch_client

101
dead_mans_switch_client/models/dead_mans_switch_client.py

@ -0,0 +1,101 @@
# -*- coding: utf-8 -*-
# © 2015-2016 Therp BV <http://therp.nl>
# © 2015 Grupo ESOC Ingeniería de Servicios, S.L.U. - Jairo Llopis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import json
import logging
import os
try:
import psutil
except ImportError: # pragma: no cover
psutil = None
import urllib2
from openerp import api, models
from openerp.tools.config import config
SEND_TIMEOUT = 60
class DeadMansSwitchClient(models.AbstractModel):
_name = 'dead.mans.switch.client'
_register = True
@api.model
def _get_data(self):
ram = 0
cpu = 0
if psutil:
process = psutil.Process(os.getpid())
# psutil changed its api through versions
processes = [process]
if config.get('workers') and process.parent: # pragma: no cover
if hasattr(process.parent, '__call__'):
process = process.parent()
else:
process = process.parent
if hasattr(process, 'children'):
processes += process.children(True)
elif hasattr(process, 'get_children'):
processes += process.get_children(True)
for process in processes:
if hasattr(process, 'memory_percent'):
ram += process.memory_percent()
else: # pragma: no cover
ram = None
if hasattr(process, 'cpu_percent'):
cpu += process.cpu_percent()
else: # pragma: no cover
cpu = None
user_count = 0
if 'bus.presence' in self.env.registry:
user_count = self.env['bus.presence'].search_count([
('status', '=', 'online'),
])
return {
'database_uuid': self.env['ir.config_parameter'].get_param(
'database.uuid'),
'cpu': cpu,
'ram': ram,
'user_count': user_count,
}
@api.model
def alive(self):
url = self.env['ir.config_parameter'].get_param(
'dead_mans_switch_client.url')
logger = logging.getLogger(__name__)
if not url:
logger.error('No server configured!')
return
timeout = self.env['ir.config_parameter'].get_param(
'dead_mans_switch_client.send_timeout', SEND_TIMEOUT)
data = self._get_data()
logger.debug('sending %s', data)
urllib2.urlopen(
urllib2.Request(
url,
json.dumps({
'jsonrpc': '2.0',
'method': 'call',
'params': data,
}),
{
'Content-Type': 'application/json',
}),
timeout=timeout)
@api.model
def _install_default_url(self):
"""Set up a default URL."""
conf = self.env["ir.config_parameter"]
name = "dead_mans_switch_client.url"
param = conf.get_param(name)
if not param:
url = "{}/dead_mans_switch/alive".format(
conf.get_param(
"report.url",
conf.get_param(
"web.base.url",
"http://localhost")))
conf.set_param(name, url)

BIN
dead_mans_switch_client/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 9.2 KiB

4
dead_mans_switch_client/tests/__init__.py

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# © 2015 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_dead_mans_switch_client

17
dead_mans_switch_client/tests/test_dead_mans_switch_client.py

@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
# © 2015 Therp BV <http://therp.nl>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp.tests.common import TransactionCase
class TestDeadMansSwitchClient(TransactionCase):
def test_dead_mans_switch_client(self):
# test unconfigured case
self.env['ir.config_parameter'].search([
('key', '=', 'dead_mans_switch_client.url')]).unlink()
self.env['dead.mans.switch.client'].alive()
# test configured case
self.env['ir.config_parameter'].set_param(
'dead_mans_switch_client.url', 'fake_url')
with self.assertRaises(ValueError):
self.env['dead.mans.switch.client'].alive()
Loading…
Cancel
Save