]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/Utils.js
sdn: add subnet/ipam/sdn management
[pve-manager.git] / www / manager6 / Utils.js
index b2066fca2576b313f13cad043a40f7bb5f7a250b..581d204091503e942036fb8ca83d45eadcc1759e 100644 (file)
@@ -186,6 +186,54 @@ Ext.define('PVE.Utils', {
        'HEALTH_ERR': 'critical',
     },
 
+    render_sdn_pending: function(rec,value,key, index) {
+       if (rec.data.state === undefined || rec.data.state === null) {
+           return value;
+       }
+
+       if (rec.data.state === 'deleted') {
+           if (value === undefined) {
+               return ' ';
+           } else {
+               return '<div style="text-decoration: line-through;">'+ value +'</div>';
+           }
+       } else {
+
+           if (rec.data.pending[key] !== undefined && rec.data.pending[key] !== null) {
+               if (rec.data.pending[key] === 'deleted') {
+                   return ' ';
+               } else {
+                   return rec.data.pending[key];
+               }
+           } else {
+               return value;
+           }
+       }
+       return value;
+    },
+
+    render_sdn_pending_state: function(rec,value) {
+
+       if (value === undefined || value === null) {
+           return ' ';
+       }
+
+       let icon = `<i class="fa fa-fw fa-refresh warning"></i>`;
+
+       if (value === 'deleted') {
+           return '<span>' + icon + value + '</span>';
+       }
+
+       let tip = 'Pending apply: <br>';
+
+       for (const [key, keyvalue] of Object.entries(rec.data.pending)) {
+           if (((rec.data[key] !== undefined && rec.data.pending[key] !== rec.data[key]) || rec.data[key] === undefined)) {
+               tip = tip + `${key}: ${keyvalue} <br>`;
+           }
+       }
+       return '<span data-qtip="' + tip + '">'+ icon + value + '</span>';
+    },
+
     render_ceph_health: function(healthObj) {
        var state = {
            iconCls: PVE.Utils.get_health_icon(),
@@ -862,6 +910,46 @@ Ext.define('PVE.Utils', {
            ipanel: 'EvpnInputPanel',
            faIcon: 'crosshairs',
        },
+       bgp: {
+           name: 'bgp',
+           ipanel: 'BgpInputPanel',
+           faIcon: 'crosshairs'
+       },
+    },
+
+    sdnipamSchema: {
+       ipam: {
+            name: 'ipam',
+            hideAdd: true
+       },
+       pve: {
+           name: 'PVE',
+           ipanel: 'PVEIpamInputPanel',
+           faIcon: 'th',
+           hideAdd: true
+       },
+       netbox: {
+           name: 'Netbox',
+           ipanel: 'NetboxInputPanel',
+           faIcon: 'th'
+       },
+       phpipam: {
+           name: 'PhpIpam',
+           ipanel: 'PhpIpamInputPanel',
+           faIcon: 'th'
+       },
+    },
+
+    sdndnsSchema: {
+       dns: {
+            name: 'dns',
+            hideAdd: true
+       },
+       powerdns: {
+           name: 'powerdns',
+           ipanel: 'PowerdnsInputPanel',
+           faIcon: 'th'
+       },
     },
 
     format_sdnvnet_type: function(value, md, record) {
@@ -888,6 +976,22 @@ Ext.define('PVE.Utils', {
        return Proxmox.Utils.unknownText;
     },
 
+    format_sdnipam_type: function(value, md, record) {
+       var schema = PVE.Utils.sdnipamSchema[value];
+       if (schema) {
+           return schema.name;
+       }
+       return Proxmox.Utils.unknownText;
+    },
+
+    format_sdndns_type: function(value, md, record) {
+       var schema = PVE.Utils.sdndnsSchema[value];
+       if (schema) {
+           return schema.name;
+       }
+       return Proxmox.Utils.unknownText;
+    },
+
     format_storage_type: function(value, md, record) {
        if (value === 'rbd') {
            value = !record || record.get('monhost') ? 'rbd' : 'pveceph';