]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - node/NetworkView.js
follouwp: code cleanup for bond_mode_array
[proxmox-widget-toolkit.git] / node / NetworkView.js
index 22265b9cd1efc9295f0ed06f385461046df747e6..af2da87447b7b3d5ce3e604a28473d54daaf7f80 100644 (file)
@@ -5,6 +5,7 @@ Ext.define('proxmox-networks', {
        'bridge_ports', 'slaves',
        'address', 'netmask', 'gateway',
        'address6', 'netmask6', 'gateway6',
+       'cidr', 'cidr6',
        'comments'
     ],
     idProperty: 'iface'
@@ -15,6 +16,10 @@ Ext.define('Proxmox.node.NetworkView', {
 
     alias: ['widget.proxmoxNodeNetworkView'],
 
+    // defines what types of network devices we want to create
+    // order is always the same
+    types: ['bridge', 'bond', 'ovs'],
+
     initComponent : function() {
        var me = this;
 
@@ -43,8 +48,9 @@ Ext.define('Proxmox.node.NetworkView', {
            Proxmox.Utils.API2Request({
                url: baseUrl,
                failure: function(response, opts) {
-                   changeitem.update(gettext('Error') + ': ' + response.htmlStatus);
                    store.loadData({});
+                   Proxmox.Utils.setErrorMask(me, response.htmlStatus);
+                   changeitem.update('');
                    changeitem.setHidden(true);
                },
                success: function(response, opts) {
@@ -121,8 +127,6 @@ Ext.define('Proxmox.node.NetworkView', {
            del_btn.setDisabled(!rec);
        };
 
-       Proxmox.Utils.monStoreErrors(me, store);
-
        var render_ports = function(value, metaData, record) {
            if (value === 'bridge') {
                return record.data.bridge_ports;
@@ -145,75 +149,104 @@ Ext.define('Proxmox.node.NetworkView', {
            return prefix + next.toString();
        };
 
+       var menu_items = [];
+
+       if (me.types.indexOf('bridge') !== -1) {
+           menu_items.push({
+               text: Proxmox.Utils.render_network_iface_type('bridge'),
+               handler: function() {
+                   var win = Ext.create('Proxmox.node.NetworkEdit', {
+                       nodename: me.nodename,
+                       iftype: 'bridge',
+                       iface_default: find_next_iface_id('vmbr')
+                   });
+                   win.on('destroy', reload);
+                   win.show();
+               }
+           });
+       }
+
+       if (me.types.indexOf('bond') !== -1) {
+           menu_items.push({
+               text: Proxmox.Utils.render_network_iface_type('bond'),
+               handler: function() {
+                   var win = Ext.create('Proxmox.node.NetworkEdit', {
+                       nodename: me.nodename,
+                       iftype: 'bond',
+                       iface_default: find_next_iface_id('bond')
+                   });
+                   win.on('destroy', reload);
+                   win.show();
+               }
+           });
+       }
+
+       if (me.types.indexOf('ovs') !== -1) {
+           if (menu_items.length > 0) {
+               menu_items.push({ xtype: 'menuseparator' });
+           }
+
+           menu_items.push(
+               {
+                   text: Proxmox.Utils.render_network_iface_type('OVSBridge'),
+                   handler: function() {
+                       var win = Ext.create('Proxmox.node.NetworkEdit', {
+                           nodename: me.nodename,
+                           iftype: 'OVSBridge',
+                           iface_default: find_next_iface_id('vmbr')
+                       });
+                       win.on('destroy', reload);
+                       win.show();
+                   }
+               },
+               {
+                   text: Proxmox.Utils.render_network_iface_type('OVSBond'),
+                   handler: function() {
+                       var win = Ext.create('Proxmox.node.NetworkEdit', {
+                           nodename: me.nodename,
+                           iftype: 'OVSBond',
+                           iface_default: find_next_iface_id('bond')
+                       });
+                       win.on('destroy', reload);
+                       win.show();
+                   }
+               },
+               {
+                   text: Proxmox.Utils.render_network_iface_type('OVSIntPort'),
+                   handler: function() {
+                       var win = Ext.create('Proxmox.node.NetworkEdit', {
+                           nodename: me.nodename,
+                           iftype: 'OVSIntPort'
+                       });
+                       win.on('destroy', reload);
+                       win.show();
+                   }
+               }
+           );
+       }
+
+       var renderer_generator = function(fieldname) {
+           return function(val, metaData, rec) {
+               var tmp = [];
+               if (rec.data[fieldname]) {
+                   tmp.push(rec.data[fieldname]);
+               }
+               if (rec.data[fieldname + '6']) {
+                   tmp.push(rec.data[fieldname + '6']);
+               }
+               return tmp.join('<br>') || '';
+           };
+       };
+
        Ext.apply(me, {
            layout: 'border',
            tbar: [
                {
                    text: gettext('Create'),
-                   menu: new Ext.menu.Menu({
+                   menu: {
                        plain: true,
-                       items: [
-                           {
-                               text: Proxmox.Utils.render_network_iface_type('bridge'),
-                               handler: function() {
-                                   var win = Ext.create('Proxmox.node.NetworkEdit', {
-                                       nodename: me.nodename,
-                                       iftype: 'bridge',
-                                       iface_default: find_next_iface_id('vmbr')
-                                   });
-                                   win.on('destroy', reload);
-                                   win.show();
-                               }
-                           },
-                           {
-                               text: Proxmox.Utils.render_network_iface_type('bond'),
-                               handler: function() {
-                                   var win = Ext.create('Proxmox.node.NetworkEdit', {
-                                       nodename: me.nodename,
-                                       iftype: 'bond',
-                                       iface_default: find_next_iface_id('bond')
-                                   });
-                                   win.on('destroy', reload);
-                                   win.show();
-                               }
-                           }, '-',
-                           {
-                               text: Proxmox.Utils.render_network_iface_type('OVSBridge'),
-                               handler: function() {
-                                   var win = Ext.create('Proxmox.node.NetworkEdit', {
-                                       nodename: me.nodename,
-                                       iftype: 'OVSBridge',
-                                       iface_default: find_next_iface_id('vmbr')
-                                   });
-                                   win.on('destroy', reload);
-                                   win.show();
-                               }
-                           },
-                           {
-                               text: Proxmox.Utils.render_network_iface_type('OVSBond'),
-                               handler: function() {
-                                   var win = Ext.create('Proxmox.node.NetworkEdit', {
-                                       nodename: me.nodename,
-                                       iftype: 'OVSBond',
-                                       iface_default: find_next_iface_id('bond')
-                                   });
-                                   win.on('destroy', reload);
-                                   win.show();
-                               }
-                           },
-                           {
-                               text: Proxmox.Utils.render_network_iface_type('OVSIntPort'),
-                               handler: function() {
-                                   var win = Ext.create('Proxmox.node.NetworkEdit', {
-                                       nodename: me.nodename,
-                                       iftype: 'OVSIntPort'
-                                   });
-                                   win.on('destroy', reload);
-                                   win.show();
-                               }
-                           }
-                       ]
-                   })
+                       items: menu_items
+                   }
                }, ' ',
                {
                    text: gettext('Revert'),
@@ -261,9 +294,9 @@ Ext.define('Proxmox.node.NetworkView', {
                            width: 80,
                            sortable: true,
                            dataIndex: 'active',
-                           trueText: 'Yes',
-                           falseText: 'No',
-                           undefinedText: 'No'
+                           trueText: Proxmox.Utils.yesText,
+                           falseText: Proxmox.Utils.noText,
+                           undefinedText: Proxmox.Utils.noText,
                        },
                        {
                            xtype: 'booleancolumn',
@@ -271,51 +304,64 @@ Ext.define('Proxmox.node.NetworkView', {
                            width: 80,
                            sortable: true,
                            dataIndex: 'autostart',
-                           trueText: 'Yes',
-                           falseText: 'No',
-                           undefinedText: 'No'
+                           trueText: Proxmox.Utils.yesText,
+                           falseText: Proxmox.Utils.noText,
+                           undefinedText: Proxmox.Utils.noText
+                       },
+                       {
+                           xtype: 'booleancolumn',
+                           header: gettext('VLAN aware'),
+                           width: 80,
+                           sortable: true,
+                           dataIndex: 'bridge_vlan_aware',
+                           trueText: Proxmox.Utils.yesText,
+                           falseText: Proxmox.Utils.noText,
+                           undefinedText: Proxmox.Utils.noText
                        },
                        {
                            header: gettext('Ports/Slaves'),
                            dataIndex: 'type',
                            renderer: render_ports
                        },
+                       {
+                           header: gettext('Bond Mode'),
+                           dataIndex: 'bond_mode',
+                           renderer: Proxmox.Utils.render_bond_mode,
+                       },
+                       {
+                           header: gettext('Hash Policy'),
+                           hidden: true,
+                           dataIndex: 'bond_xmit_hash_policy',
+                       },
                        {
                            header: gettext('IP address'),
                            sortable: true,
                            width: 120,
+                           hidden: true,
                            dataIndex: 'address',
-                           renderer: function(value, metaData, rec) {
-                               if (rec.data.address && rec.data.address6) {
-                                   return rec.data.address + "<br>"
-                                          + rec.data.address6 + '/' + rec.data.netmask6;
-                               } else if (rec.data.address6) {
-                                   return rec.data.address6 + '/' + rec.data.netmask6;
-                               } else {
-                                   return rec.data.address;
-                               }
-                           }
+                           renderer: renderer_generator('address'),
                        },
                        {
                            header: gettext('Subnet mask'),
                            width: 120,
                            sortable: true,
-                           dataIndex: 'netmask'
+                           hidden: true,
+                           dataIndex: 'netmask',
+                           renderer: renderer_generator('netmask'),
+                       },
+                       {
+                           header: gettext('CIDR'),
+                           width: 120,
+                           sortable: true,
+                           dataIndex: 'cidr',
+                           renderer: renderer_generator('cidr'),
                        },
                        {
                            header: gettext('Gateway'),
                            width: 120,
                            sortable: true,
                            dataIndex: 'gateway',
-                           renderer: function(value, metaData, rec) {
-                               if (rec.data.gateway && rec.data.gateway6) {
-                                   return rec.data.gateway + "<br>" + rec.data.gateway6;
-                               } else if (rec.data.gateway6) {
-                                   return rec.data.gateway6;
-                               } else {
-                                   return rec.data.gateway;
-                               }
-                           }
+                           renderer: renderer_generator('gateway'),
                        },
                        {
                            header: gettext('Comment'),
@@ -345,11 +391,9 @@ Ext.define('Proxmox.node.NetworkView', {
                    html: gettext("No changes")
                }
            ],
-           listeners: {
-               activate: reload
-           }
        });
 
        me.callParent();
+       reload();
     }
 });