From 62b516bf25a2756f05514b849bf434a6ea64dea2 Mon Sep 17 00:00:00 2001 From: Mario Date: Sun, 4 Aug 2024 21:13:21 +0200 Subject: [PATCH] Proxmox servers added with API --- ow_vm_management/.DS_Store | Bin 0 -> 6148 bytes ow_vm_management/__manifest__.py | 1 + ow_vm_management/models/.DS_Store | Bin 0 -> 6148 bytes ow_vm_management/models/__init__.py | 3 +- .../__pycache__/__init__.cpython-39.pyc | Bin 213 -> 250 bytes .../__pycache__/proxmox_server.cpython-39.pyc | Bin 0 -> 1546 bytes ow_vm_management/models/proxmox_server.py | 38 +++++++++++++++ ow_vm_management/security/ir.model.access.csv | 1 + .../views/proxmox_server_views.xml | 45 ++++++++++++++++++ 9 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 ow_vm_management/.DS_Store create mode 100644 ow_vm_management/models/.DS_Store create mode 100644 ow_vm_management/models/__pycache__/proxmox_server.cpython-39.pyc create mode 100644 ow_vm_management/models/proxmox_server.py create mode 100644 ow_vm_management/views/proxmox_server_views.xml diff --git a/ow_vm_management/.DS_Store b/ow_vm_management/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..40049958de1ee017395153d827d0b24786b9f12d GIT binary patch literal 6148 zcmeHKJFWsT4733~A<4-ZW$e#hzg+>KFt-uXF6%~*G literal 0 HcmV?d00001 diff --git a/ow_vm_management/__manifest__.py b/ow_vm_management/__manifest__.py index 26fd8c4..68cf405 100644 --- a/ow_vm_management/__manifest__.py +++ b/ow_vm_management/__manifest__.py @@ -15,6 +15,7 @@ 'views/vps_server_views.xml', 'views/res_partner_views.xml', 'views/portal_templates.xml', + 'views/proxmox_server_views.xml', ], 'installable': True, 'application': False, diff --git a/ow_vm_management/models/.DS_Store b/ow_vm_management/models/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e66682e193ce3892d06aec04e5520a83604948d7 GIT binary patch literal 6148 zcmeHKJ8r`;3?&;62C`(#s4L_Kf{~se2XOO6hXO88bm-byH+KZS$1PhQ@$xy@wVzW(b^W*>t@G$Z)0sy9i B7yAGJ delta 70 zcmeyxc$JYik(ZZ?0SI{3uS+wU$ScbzGf`WHl{uI}lVxIrl7yco^DTxVCZK{MW+1VW Sp@}Dnv@7%Mib9$;;sK|XJ*^1 zm2e=v_7k*~(hCw25+8xjz;&*O17D${f;YC)1Z??v-n=*O&HMe{3>yqW1kazp|2qAx zgU}yVx%{}Gd;y>O8U#liXDG)p&PhyiCw6i-cCno&Sts{muO2&@ANw%pWI-H!g}BQ* z4-xMOJnNo1ambw=H1__2cxdbzFE6>sl<}si$ha~No2LfTF*e;hO2`c2P-}jxb!#nXwUBpt_z=ZC-h&PH&0t%W zM|pX)BjkM{tKqy+*I-w*-kPJ<-fRBR7R$x%m>5rKnHC2okmBAVm4a8j^A&e)e^d2u zZf{1rM+!vY8>r_-hJ4+Y~ws_K1uo$5>&KZi){Kv-_m+cZz@ppGTSDo*#;NHw(BT*z2yGmQX8Hg<)wa=S%FXCPg9y-QW+Yjv1f7=;*xY--b~Ij|uN7C$5T0XRJWbdnc(B963V*BIwuosfxYkd;4HNPmE8exjZns9{lDKN;d=M5&H3ShrDJ~g8N$`@| zHtrd>Be{{mU?zDNK7 literal 0 HcmV?d00001 diff --git a/ow_vm_management/models/proxmox_server.py b/ow_vm_management/models/proxmox_server.py new file mode 100644 index 0000000..c1f1796 --- /dev/null +++ b/ow_vm_management/models/proxmox_server.py @@ -0,0 +1,38 @@ +from odoo import models, fields, api, _ +from odoo.exceptions import UserError +import requests +import urllib3 + +class ProxmoxServer(models.Model): + _name = 'proxmox.server' + _description = 'Proxmox Server' + + name = fields.Char(string='Server Name', required=True) + url = fields.Char(string='Proxmox URL', required=True) + api_token_id = fields.Char(string='API Token ID', required=True) + api_token_secret = fields.Char(string='API Token Secret', required=True) + + def action_test_connection(self): + self.ensure_one() + try: + urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + response = requests.get( + f"{self.url}/api2/json/nodes", + verify=False, + headers={ + "Authorization": f"PVEAPIToken={self.api_token_id}={self.api_token_secret}" + } + ) + response.raise_for_status() + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': _('Connection Successful'), + 'message': _('Successfully connected to the Proxmox server.'), + 'sticky': False, + 'type': 'success', + } + } + except requests.exceptions.RequestException as e: + raise UserError(_("Failed to connect to Proxmox server: %s") % str(e)) \ No newline at end of file diff --git a/ow_vm_management/security/ir.model.access.csv b/ow_vm_management/security/ir.model.access.csv index f81e7c6..414b654 100644 --- a/ow_vm_management/security/ir.model.access.csv +++ b/ow_vm_management/security/ir.model.access.csv @@ -1,3 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_vps_server_user,vps.server.user,model_vps_server,base.group_user,1,1,1,1 access_vps_server_portal,vps.server.portal,model_vps_server,base.group_portal,1,0,0,0 +access_proxmox_server_user,proxmox.server.user,model_proxmox_server,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/ow_vm_management/views/proxmox_server_views.xml b/ow_vm_management/views/proxmox_server_views.xml new file mode 100644 index 0000000..de42af1 --- /dev/null +++ b/ow_vm_management/views/proxmox_server_views.xml @@ -0,0 +1,45 @@ + + + + proxmox.server.tree + proxmox.server + + + + + + + + + + proxmox.server.form + proxmox.server + +
+
+
+ + + + + + + + +
+
+
+ + + Proxmox Servers + proxmox.server + tree,form + + + +
\ No newline at end of file