bemade-addons/k8s_odoo_manager/views/k8s_odoo_instance_views.xml
2025-04-04 15:11:15 -04:00

216 lines
13 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Tree View -->
<record id="view_k8s_odoo_instance_tree" model="ir.ui.view">
<field name="name">k8s.odoo.instance.tree</field>
<field name="model">k8s.odoo.instance</field>
<field name="arch" type="xml">
<tree string="Odoo Instances" decoration-success="k8s_status=='running'" decoration-info="k8s_status=='pending'" decoration-warning="k8s_status=='upgrading'" decoration-danger="k8s_status=='error'">
<field name="name"/>
<field name="cluster_id"/>
<field name="namespace"/>
<field name="image"/>
<field name="k8s_status" string="Status"/>
<field name="k8s_exists"/>
<field name="k8s_pods_count"/>
<field name="k8s_ready_pods_count"/>
<field name="odoo_url" widget="url"/>
<field name="last_status_check"/>
</tree>
</field>
</record>
<!-- Form View -->
<record id="view_k8s_odoo_instance_form" model="ir.ui.view">
<field name="name">k8s.odoo.instance.form</field>
<field name="model">k8s.odoo.instance</field>
<field name="arch" type="xml">
<form string="Odoo Instance">
<header>
<button name="action_deploy" string="Deploy" type="object" class="oe_highlight" invisible="status not in ('draft', 'error')"/>
<button name="action_apply_changes" string="Apply Changes" type="object" class="oe_highlight" invisible="status not in ('running', 'error')"/>
<button name="action_refresh_status" string="Refresh Status" type="object" invisible="status == 'draft'"/>
<button name="action_view_upgrades" string="View Upgrades" type="object" invisible="status not in ('running', 'error')"/>
<field name="status" widget="statusbar" statusbar_visible="draft,pending,running,error,upgrading"/>
<field name="k8s_read_failed" invisible="1"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="action_view_upgrades" type="object" class="oe_stat_button" icon="fa-refresh" invisible="status not in ('running', 'error')">
<field name="upgrade_ids" widget="statinfo" string="Upgrades"/>
</button>
</div>
<div class="alert alert-danger" role="alert" invisible="not k8s_read_failed">
<p>
<strong>Warning:</strong> Unable to read current configuration from Kubernetes. The current configuration values are not available. Please check your connection and click "Refresh Status" to try again.</p>
</div>
<div class="oe_title">
<h1>
<field name="name" placeholder="Instance Name"/>
</h1>
</div>
<group>
<group>
<field name="cluster_id" options="{'no_create': True}"/>
<field name="namespace"/>
<field name="description"/>
<field name="active"/>
</group>
<group>
<field name="odoo_url" widget="url"/>
<field name="status_message" readonly="1"/>
<field name="last_status_check" readonly="1"/>
<field name="master_password" password="True" placeholder="Set password for deployment and updates"/>
</group>
</group>
<notebook>
<page string="Docker Image">
<group>
<group string="Desired Configuration">
<field name="image" readonly="status not in ('draft', 'running', 'error')"/>
<field name="image_pull_secret" readonly="status not in ('draft', 'running', 'error')"/>
</group>
<group string="Current Kubernetes Configuration">
<field name="k8s_image" readonly="1"/>
<field name="k8s_image_pull_secret" readonly="1"/>
</group>
</group>
<div class="alert alert-info" role="alert" invisible="status not in ('running', 'error')">
<p>
<strong>Note:</strong> Edit the desired configuration fields and click "Apply Changes" to update the Kubernetes instance.</p>
</div>
</page>
<page string="Resources">
<group>
<group string="Desired CPU">
<field name="cpu_request" readonly="status not in ('draft', 'running', 'error')"/>
<field name="cpu_limit" readonly="status not in ('draft', 'running', 'error')"/>
</group>
<group string="Current CPU">
<field name="k8s_cpu_request" readonly="1"/>
<field name="k8s_cpu_limit" readonly="1"/>
</group>
</group>
<group>
<group string="Desired Memory">
<field name="memory_request" readonly="status not in ('draft', 'running', 'error')"/>
<field name="memory_limit" readonly="status not in ('draft', 'running', 'error')"/>
</group>
<group string="Current Memory">
<field name="k8s_memory_request" readonly="1"/>
<field name="k8s_memory_limit" readonly="1"/>
</group>
</group>
<group>
<group string="Desired Filestore">
<field name="filestore_size" readonly="status not in ('draft', 'running', 'error')"/>
<field name="filestore_storage_class" readonly="status not in ('draft', 'running', 'error')"/>
</group>
<group string="Current Filestore">
<field name="k8s_filestore_size" readonly="1"/>
<field name="k8s_filestore_storage_class" readonly="1"/>
</group>
</group>
<div class="alert alert-info" role="alert" invisible="status not in ('running', 'error')">
<p>
<strong>Note:</strong> Edit the desired configuration fields and click "Apply Changes" to update the Kubernetes instance.</p>
</div>
</page>
<page string="Ingress">
<group>
<group string="Desired Ingress Configuration">
<field name="host_names" readonly="status not in ('draft', 'running', 'error')"/>
<field name="tls_issuer" readonly="status not in ('draft', 'running', 'error')" placeholder="Uses cluster's default if empty"/>
</group>
<group string="Current Ingress Configuration">
<field name="k8s_host_names" readonly="1"/>
<field name="k8s_tls_issuer" readonly="1"/>
</group>
</group>
<div class="alert alert-info" role="alert" invisible="status not in ('running', 'error')">
<p>
<strong>Note:</strong> Edit the desired configuration fields and click "Apply Changes" to update the Kubernetes instance.</p>
</div>
</page>
<page string="Configuration">
<group>
<group string="Desired Odoo Configuration" colspan="1">
<field name="config_options" widget="ace" options="{'mode': 'yaml'}" readonly="status not in ('draft', 'running', 'error')"/>
</group>
<group string="Current Odoo Configuration" colspan="1">
<field name="k8s_config_options" widget="ace" options="{'mode': 'yaml'}" readonly="1"/>
</group>
</group>
<div class="alert alert-info" role="alert" invisible="status not in ('running', 'error')">
<p>
<strong>Note:</strong> Edit the desired configuration fields and click "Apply Changes" to update the Kubernetes instance.</p>
</div>
</page>
<page string="Kubernetes Status">
<group>
<group string="Current Status">
<field name="k8s_exists" readonly="1"/>
<field name="k8s_status" readonly="1"/>
<field name="k8s_status_message" readonly="1"/>
</group>
<group string="Pods">
<field name="k8s_pods_count" readonly="1"/>
<field name="k8s_ready_pods_count" readonly="1"/>
</group>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Search View -->
<record id="view_k8s_odoo_instance_search" model="ir.ui.view">
<field name="name">k8s.odoo.instance.search</field>
<field name="model">k8s.odoo.instance</field>
<field name="arch" type="xml">
<search string="Search Odoo Instances">
<field name="name"/>
<field name="cluster_id"/>
<field name="namespace"/>
<field name="image"/>
<separator/>
<filter string="Draft" name="draft" domain="[('status', '=', 'draft')]"/>
<filter string="Pending" name="pending" domain="[('status', '=', 'pending')]"/>
<filter string="Running" name="running" domain="[('status', '=', 'running')]"/>
<filter string="Error" name="error" domain="[('status', '=', 'error')]"/>
<filter string="Upgrading" name="upgrading" domain="[('status', '=', 'upgrading')]"/>
<group expand="0" string="Group By">
<filter string="Cluster" name="group_by_cluster" context="{'group_by': 'cluster_id'}"/>
<filter string="Namespace" name="group_by_namespace" context="{'group_by': 'namespace'}"/>
<filter string="Status" name="group_by_status" context="{'group_by': 'status'}"/>
</group>
</search>
</field>
</record>
<!-- Action -->
<record id="action_k8s_odoo_instance" model="ir.actions.act_window">
<field name="name">Odoo Instances</field>
<field name="res_model">k8s.odoo.instance</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_k8s_odoo_instance_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new Odoo instance
</p>
<p>
Create and manage Odoo instances running on Kubernetes.
</p>
</field>
</record>
<!-- Menu Item -->
<menuitem id="menu_k8s_odoo_instance" name="Odoo Instances" parent="menu_k8s_odoo_manager_root" action="action_k8s_odoo_instance" sequence="20"/>
</odoo>