]> git.proxmox.com Git - pve-manager.git/commitdiff
improve network API - add more gettext markers
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 29 Feb 2012 11:39:12 +0000 (12:39 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 29 Feb 2012 11:39:12 +0000 (12:39 +0100)
PVE/API2/Network.pm
PVE/API2/Nodes.pm
www/manager/node/NetworkEdit.js
www/manager/node/NetworkView.js

index 33d770e850fd6b7ab9a759c363a573567aa8dc9a..979063c7817f6147ae5d40adc901e1bfa76243c1 100644 (file)
@@ -106,7 +106,13 @@ __PACKAGE__->register_method({
     code => sub {
        my ($param) = @_;
 
-       my $config = PVE::INotify::read_file('interfaces');
+       my $rpcenv = PVE::RPCEnvironment::get();
+
+       my $tmp = PVE::INotify::read_file('interfaces', 1);
+       my $config = $tmp->{data};
+       my $changes = $tmp->{changes};
+
+       $rpcenv->set_result_attrib('changes', $changes) if $changes;
 
        delete $config->{lo}; # do not list the loopback device
 
@@ -119,6 +125,30 @@ __PACKAGE__->register_method({
        return PVE::RESTHandler::hash_to_array($config, 'iface');
    }});
 
+__PACKAGE__->register_method({
+    name => 'revert_network_changes', 
+    path => '', 
+    method => 'DELETE',
+    permissions => {
+       check => ['perm', '/nodes/{node}', [ 'Sys.Modify' ]],
+    },
+    protected => 1,
+    description => "Revert network configuration changes.",
+    proxyto => 'node',
+    parameters => {
+       additionalProperties => 0,
+       properties => {
+           node => get_standard_option('pve-node'),
+       },
+    },
+    returns => { type => "null" },
+    code => sub {
+       my ($param) = @_;
+
+       unlink "/etc/network/interfaces.new";
+
+       return undef;
+    }});
 
 my $check_duplicate_gateway = sub {
     my ($config, $newiface) = @_;
index a819a815898c6049ec8c5d56804981f06f1cf878..0599bb8acecad9661ebac5630067fe436d2cd24c 100644 (file)
@@ -112,7 +112,6 @@ __PACKAGE__->register_method ({
            { name => 'vzdump' },
            { name => 'ubcfailcnt' },
            { name => 'network' },
-           { name => 'network_changes' },
            { name => 'aplinfo' },
            ];
 
@@ -186,55 +185,6 @@ __PACKAGE__->register_method({
        return $res;
     }});
 
-__PACKAGE__->register_method({
-    name => 'network_changes', 
-    path => 'network_changes', 
-    method => 'GET',
-    permissions => {
-       check => ['perm', '/nodes/{node}', [ 'Sys.Audit' ]],
-    },
-    description => "Get network configuration changes (diff) since last boot.",
-    proxyto => 'node',
-    parameters => {
-       additionalProperties => 0,
-       properties => {
-           node => get_standard_option('pve-node'),
-       },
-    },
-    returns => { type => "string" },
-    code => sub {
-       my ($param) = @_;
-
-       my $res = PVE::INotify::read_file('interfaces', 1);
-
-       return $res->{changes} || '';
-   }});
-
-__PACKAGE__->register_method({
-    name => 'revert_network_changes', 
-    path => 'network_changes', 
-    method => 'DELETE',
-    permissions => {
-       check => ['perm', '/nodes/{node}', [ 'Sys.Modify' ]],
-    },
-    protected => 1,
-    description => "Revert network configuration changes.",
-    proxyto => 'node',
-    parameters => {
-       additionalProperties => 0,
-       properties => {
-           node => get_standard_option('pve-node'),
-       },
-    },
-    returns => { type => "null" },
-    code => sub {
-       my ($param) = @_;
-
-       unlink "/etc/network/interfaces.new";
-
-       return undef;
-   }});
-
 __PACKAGE__->register_method({
     name => 'status', 
     path => 'status', 
index 33a35c8f9e3ec73c24f0b188cdc1d066094664db..509014a13076be836504d3a27988c405e455f4b4 100644 (file)
@@ -16,21 +16,16 @@ Ext.define('PVE.node.NetworkEdit', {
 
        me.create = !me.iface;
 
-       var title;
        var iface_vtype;
 
-       if (me.create) {
-           if (me.iftype === 'bridge') {
-               title = "Create Bridge";
-               iface_vtype = 'BridgeName';
-           } else if (me.iftype === 'bond') {
-               title = "Create Bond";
-               iface_vtype = 'BondName';
-           } else {
-               throw "can't create unknown device type";
-           }
+       if (me.iftype === 'bridge') {
+           me.subject = "Bridge";
+           iface_vtype = 'BridgeName';
+       } else if (me.iftype === 'bond') {
+           me.subject = "Bond";
+           iface_vtype = 'BondName';
        } else {
-           title = "Edit network device '" + me.iface + "'";
+           throw "no known network device type specified";
        }
 
        var column2 = [
@@ -78,7 +73,7 @@ Ext.define('PVE.node.NetworkEdit', {
        var column1 = [
            {
                xtype: me.create ? 'textfield' : 'displayfield',
-               fieldLabel: 'Name',
+               fieldLabel: gettext('Name'),
                height: 22, // hack: set same height as text fields
                name: 'iface',
                value: me.iface,
@@ -88,14 +83,14 @@ Ext.define('PVE.node.NetworkEdit', {
            {
                xtype: 'pvetextfield',
                deleteEmpty: !me.create,
-               fieldLabel: 'IP address',
+               fieldLabel: gettext('IP address'),
                vtype: 'IPAddress',
                name: 'address'
            },
            {
                xtype: 'pvetextfield',
                deleteEmpty: !me.create,
-               fieldLabel: 'Subnet mask',
+               fieldLabel: gettext('Subnet mask'),
                vtype: 'IPAddress',
                name: 'netmask',
                validator: function(value) {
@@ -127,7 +122,6 @@ Ext.define('PVE.node.NetworkEdit', {
        ];
 
        Ext.applyIf(me, {
-           title: title,
            url: url,
            method: method,
            items: {
@@ -147,12 +141,13 @@ Ext.define('PVE.node.NetworkEdit', {
                    var data = response.result.data;
                    if (data.type !== me.iftype) {
                        var msg = "Got unexpected device type";
-                       Ext.Msg.alert("Load failed", msg, function() {
+                       Ext.Msg.alert(gettext('Error'), msg, function() {
                            me.close();
                        });
                        return;
                    }
                    me.setValues(data);
+                   me.isValid(); // trigger validation
                }
            });
        }
index 4fec4ae0fded105291eb26f44f794c5e7da83b78..07c527f30ef52df525cf3f1051e3810fd71af8c6 100644 (file)
@@ -11,9 +11,7 @@ Ext.define('PVE.node.NetworkView', {
            throw "no node name specified";
        }
 
-       var rstore = Ext.create('PVE.data.UpdateStore', {
-           interval: 1000,
-           storeid: 'pve-networks',
+       var store = Ext.create('Ext.data.Store', {
            model: 'pve-networks',
            proxy: {
                 type: 'pve',
@@ -27,31 +25,26 @@ Ext.define('PVE.node.NetworkView', {
            ]
        });
 
-       var store = Ext.create('PVE.data.DiffStore', { rstore: rstore });
-
-       var view_changes = function() {
+       var reload = function() {
            var changeitem = me.down('#changes');
            PVE.Utils.API2Request({
-               url: '/nodes/' + nodename + '/network_changes',
+               url: '/nodes/' + nodename + '/network',
                failure: function(response, opts) {
                    changeitem.update('Error: ' + response.htmlStatus);
+                   store.loadData({});
                },
                success: function(response, opts) {
                    var result = Ext.decode(response.responseText);
-                   var data = result.data;
-                   if (data === '') {
-                       data = "no changes";
+                   store.loadData(result.data);
+                   var changes = result.changes;
+                   if (changes === undefined || changes === '') {
+                       changes = gettext("No changes");
                    }
-                   changeitem.update("<pre>" + Ext.htmlEncode(data) + "</pre>");
+                   changeitem.update("<pre>" + Ext.htmlEncode(changes) + "</pre>");
                }
            });
        };
 
-       var reload = function() {
-           rstore.load();
-           view_changes();
-       };
-
        var run_editor = function() {
            var grid = me.down('gridpanel');
            var sm = grid.getSelectionModel();
@@ -70,13 +63,13 @@ Ext.define('PVE.node.NetworkView', {
        };
 
        var edit_btn = new Ext.Button({
-           text: 'Edit',
+           text: gettext('Edit'),
            disabled: true,
            handler: run_editor
        });
 
        var del_btn = new Ext.Button({
-           text: 'Delete',
+           text: gettext('Remove'),
            disabled: true,
            handler: function(){
                var grid = me.down('gridpanel');
@@ -111,7 +104,7 @@ Ext.define('PVE.node.NetworkView', {
            del_btn.setDisabled(!rec);
        };
 
-       PVE.Utils.monStoreErrors(me, rstore);
+       PVE.Utils.monStoreErrors(me, store);
 
        var render_ports = function(value, metaData, record) {
            if (value === 'bridge') {
@@ -125,7 +118,7 @@ Ext.define('PVE.node.NetworkView', {
            layout: 'border',
            tbar: [
                {
-                   text: 'Create',
+                   text: gettext('Create'),
                    menu: new Ext.menu.Menu({
                        items: [
                            {
@@ -133,7 +126,7 @@ Ext.define('PVE.node.NetworkView', {
                                handler: function() {
                                    var next;
                                    for (next = 0; next <= 9999; next++) {
-                                       if (!rstore.data.get('vmbr' + next.toString())) {
+                                       if (!store.data.get('vmbr' + next.toString())) {
                                            break;
                                        }
                                    }
@@ -152,7 +145,7 @@ Ext.define('PVE.node.NetworkView', {
                                handler: function() {
                                    var next;
                                    for (next = 0; next <= 9999; next++) {
-                                       if (!rstore.data.get('bond' + next.toString())) {
+                                       if (!store.data.get('bond' + next.toString())) {
                                            break;
                                        }
                                    }
@@ -169,17 +162,17 @@ Ext.define('PVE.node.NetworkView', {
                    })
                }, ' ', 
                {
-                   text: 'Revert changes',
+                   text: gettext('Revert changes'),
                    handler: function() {
                        PVE.Utils.API2Request({
-                           url: '/nodes/' + nodename + '/network_changes',
+                           url: '/nodes/' + nodename + '/network',
                            method: 'DELETE',
                            waitMsgTarget: me,
                            callback: function() {
                                reload();
                            },
                            failure: function(response, opts) {
-                               Ext.Msg.alert('Error', response.htmlStatus);
+                               Ext.Msg.alert(gettext('Error'), response.htmlStatus);
                            }
                        });
                    }
@@ -196,14 +189,14 @@ Ext.define('PVE.node.NetworkView', {
                    border: false,
                    columns: [
                        {
-                           header: 'Interface Name',
+                           header: gettext('Name'),
                            width: 100,
                            sortable: true,
                            dataIndex: 'iface'
                        },
                        {
                            xtype: 'booleancolumn', 
-                           header: 'Active',
+                           header: gettext('Active'),
                            width: 80,
                            sortable: true,
                            dataIndex: 'active',
@@ -227,12 +220,12 @@ Ext.define('PVE.node.NetworkView', {
                            renderer: render_ports
                        },
                        {
-                           header: 'IP address',
+                           header: gettext('IP address'),
                            sortable: true,
                            dataIndex: 'address'
                        },
                        {
-                           header: 'Subnet mask',
+                           header: gettext('Subnet mask'),
                            sortable: true,
                            dataIndex: 'netmask'
                        },
@@ -253,12 +246,13 @@ Ext.define('PVE.node.NetworkView', {
                    autoScroll: true,
                    itemId: 'changes',
                    tbar: [ 
-                       'Pending changes (please reboot to activate changes)'
+                       gettext('Pending changes') + ' (' +
+                           gettext('Please reboot to activate changes') + ')'
                    ],
                    split: true, 
                    bodyPadding: 5,
                    flex: 0.6,
-                   html: "no changes"
+                   html: gettext("No changes")
                }
            ],
            listeners: {