]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/Migrate.js
adds a help button to the migration window
[pve-manager.git] / www / manager6 / window / Migrate.js
1 Ext.define('PVE.window.Migrate', {
2 extend: 'Ext.window.Window',
3
4 resizable: false,
5
6 migrate: function(target, online) {
7 var me = this;
8 var params = {
9 target: target
10 };
11
12 if (me.vmtype === 'qemu') {
13 params.online = online;
14 } else {
15 params.restart = online;
16 }
17
18 PVE.Utils.API2Request({
19 params: params,
20 url: '/nodes/' + me.nodename + '/' + me.vmtype + '/' + me.vmid + "/migrate",
21 waitMsgTarget: me,
22 method: 'POST',
23 failure: function(response, opts) {
24 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
25 },
26 success: function(response, options) {
27 var upid = response.result.data;
28
29 var win = Ext.create('PVE.window.TaskViewer', {
30 upid: upid
31 });
32 win.show();
33 me.close();
34 }
35 });
36 },
37
38 initComponent : function() {
39 var me = this;
40
41 if (!me.nodename) {
42 throw "no node name specified";
43 }
44
45 if (!me.vmid) {
46 throw "no VM ID specified";
47 }
48
49 if (!me.vmtype) {
50 throw "no VM type specified";
51 }
52
53 var running = false;
54 var vmrec = PVE.data.ResourceStore.findRecord('vmid', me.vmid,
55 0, false, false, true);
56 if (vmrec && vmrec.data && vmrec.data.running) {
57 running = true;
58 }
59
60 me.formPanel = Ext.create('Ext.form.Panel', {
61 bodyPadding: 10,
62 border: false,
63 fieldDefaults: {
64 labelWidth: 100,
65 anchor: '100%'
66 },
67 items: [
68 {
69 xtype: 'pveNodeSelector',
70 name: 'target',
71 fieldLabel: gettext('Target node'),
72 allowBlank: false,
73 disallowedNodes: [me.nodename],
74 onlineValidator: true
75 },
76 {
77 xtype: 'pvecheckbox',
78 name: 'online',
79 uncheckedValue: 0,
80 defaultValue: 0,
81 checked: running,
82 fieldLabel: me.vtype === 'qemu' ? gettext('Online') : gettext('Restart Mode')
83 }
84 ]
85 });
86
87 var form = me.formPanel.getForm();
88
89 var submitBtn = Ext.create('Ext.Button', {
90 text: gettext('Migrate'),
91 handler: function() {
92 var values = form.getValues();
93 me.migrate(values.target, values.online);
94 }
95 });
96
97 var helpConfig;
98 // fixme:
99 // the onlinehelp parser needs
100 // that every id is explicitely written
101 // can we do this better?
102 if (me.vmtype === 'qemu') {
103 helpConfig = {
104 onlineHelp: 'qm_migration',
105 listenToGlobalEvent: false,
106 hidden: false
107 };
108 } else {
109 helpConfig = {
110 onlineHelp: 'pct_migration',
111 listenToGlobalEvent: false,
112 hidden: false
113 };
114 }
115
116 var helpBtn = Ext.create('PVE.button.Help', helpConfig);
117
118 Ext.apply(me, {
119 title: gettext('Migrate') + ((me.vmtype === 'qemu')?' VM ':' CT ') + me.vmid,
120 width: 350,
121 modal: true,
122 layout: 'auto',
123 border: false,
124 items: [ me.formPanel ],
125 buttons: [ helpBtn, '->', submitBtn ]
126 });
127
128 me.callParent();
129 }
130 });