Proxmox servers added with API
This commit is contained in:
BIN
ow_vm_management/.DS_Store
vendored
Normal file
BIN
ow_vm_management/.DS_Store
vendored
Normal file
Binary file not shown.
@@ -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
BIN
ow_vm_management/models/.DS_Store
vendored
Normal file
Binary file not shown.
@@ -1,2 +1,3 @@
|
|||||||
from . import vps_server
|
from . import vps_server
|
||||||
from . import res_partner
|
from . import res_partner
|
||||||
|
from . import proxmox_server
|
||||||
Binary file not shown.
Binary file not shown.
38
ow_vm_management/models/proxmox_server.py
Normal file
38
ow_vm_management/models/proxmox_server.py
Normal 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))
|
||||||
@@ -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
|
||||||
|
45
ow_vm_management/views/proxmox_server_views.xml
Normal file
45
ow_vm_management/views/proxmox_server_views.xml
Normal 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>
|
||||||
Reference in New Issue
Block a user