Proxmox servers added with API

This commit is contained in:
Mario
2024-08-04 21:13:21 +02:00
parent 8a16fd6751
commit 62b516bf25
9 changed files with 87 additions and 1 deletions

BIN
ow_vm_management/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -15,6 +15,7 @@
'views/vps_server_views.xml', 'views/vps_server_views.xml',
'views/res_partner_views.xml', 'views/res_partner_views.xml',
'views/portal_templates.xml', 'views/portal_templates.xml',
'views/proxmox_server_views.xml',
], ],
'installable': True, 'installable': True,
'application': False, 'application': False,

BIN
ow_vm_management/models/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -1,2 +1,3 @@
from . import vps_server from . import vps_server
from . import res_partner from . import res_partner
from . import proxmox_server

View File

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

View File

@@ -1,3 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 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_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_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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_vps_server_user vps.server.user model_vps_server base.group_user 1 1 1 1
3 access_vps_server_portal vps.server.portal model_vps_server base.group_portal 1 0 0 0
4 access_proxmox_server_user proxmox.server.user model_proxmox_server base.group_user 1 1 1 1

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_proxmox_server_tree" model="ir.ui.view">
<field name="name">proxmox.server.tree</field>
<field name="model">proxmox.server</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="url"/>
</tree>
</field>
</record>
<record id="view_proxmox_server_form" model="ir.ui.view">
<field name="name">proxmox.server.form</field>
<field name="model">proxmox.server</field>
<field name="arch" type="xml">
<form>
<header>
<button name="action_test_connection" string="Test Connection" type="object" class="oe_highlight"/>
</header>
<sheet>
<group>
<field name="name"/>
<field name="url"/>
<field name="api_token_id"/>
<field name="api_token_secret" password="True"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_proxmox_server" model="ir.actions.act_window">
<field name="name">Proxmox Servers</field>
<field name="res_model">proxmox.server</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_proxmox_server"
name="Proxmox Servers"
action="action_proxmox_server"
parent="menu_ow_vm_management"
sequence="20"/>
</odoo>