]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/window/Migrate.js
Allow to set the onlineHelp via a config Object
[pve-manager.git] / www / manager6 / window / Migrate.js
CommitLineData
04c32bed
DM
1Ext.define('PVE.window.Migrate', {
2 extend: 'Ext.window.Window',
3
4 resizable: false,
5
6 migrate: function(target, online) {
7 var me = this;
18fdf0bc
DC
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
04c32bed 18 PVE.Utils.API2Request({
18fdf0bc 19 params: params,
04c32bed
DM
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;
d0ad472c 28 var extraTitle = Ext.String.format(' ({0} ---> {1})', me.nodename, target);
04c32bed 29
d0ad472c
EK
30 var win = Ext.create('PVE.window.TaskViewer', {
31 upid: upid,
32 extraTitle: extraTitle
04c32bed
DM
33 });
34 win.show();
35 me.close();
36 }
37 });
38 },
39
40 initComponent : function() {
41 var me = this;
42
43 if (!me.nodename) {
44 throw "no node name specified";
45 }
46
47 if (!me.vmid) {
48 throw "no VM ID specified";
49 }
50
51 if (!me.vmtype) {
52 throw "no VM type specified";
53 }
54
55 var running = false;
56 var vmrec = PVE.data.ResourceStore.findRecord('vmid', me.vmid,
57 0, false, false, true);
58 if (vmrec && vmrec.data && vmrec.data.running) {
59 running = true;
60 }
61
62 me.formPanel = Ext.create('Ext.form.Panel', {
63 bodyPadding: 10,
64 border: false,
65 fieldDefaults: {
66 labelWidth: 100,
67 anchor: '100%'
68 },
69 items: [
70 {
d46faa2c 71 xtype: 'pveNodeSelector',
04c32bed
DM
72 name: 'target',
73 fieldLabel: gettext('Target node'),
74 allowBlank: false,
766998b1 75 disallowedNodes: [me.nodename],
04c32bed
DM
76 onlineValidator: true
77 },
78 {
79 xtype: 'pvecheckbox',
80 name: 'online',
81 uncheckedValue: 0,
82 defaultValue: 0,
83 checked: running,
6b43f8f1 84 fieldLabel: me.vmtype === 'qemu' ? gettext('Online') : gettext('Restart Mode')
04c32bed
DM
85 }
86 ]
87 });
88
89 var form = me.formPanel.getForm();
90
91 var submitBtn = Ext.create('Ext.Button', {
92 text: gettext('Migrate'),
93 handler: function() {
94 var values = form.getValues();
95 me.migrate(values.target, values.online);
96 }
97 });
98
209daf22
DC
99 var helpConfig;
100 // fixme:
101 // the onlinehelp parser needs
102 // that every id is explicitely written
103 // can we do this better?
104 if (me.vmtype === 'qemu') {
105 helpConfig = {
106 onlineHelp: 'qm_migration',
107 listenToGlobalEvent: false,
108 hidden: false
109 };
110 } else {
111 helpConfig = {
112 onlineHelp: 'pct_migration',
113 listenToGlobalEvent: false,
114 hidden: false
115 };
116 }
117
118 var helpBtn = Ext.create('PVE.button.Help', helpConfig);
119
04c32bed 120 Ext.apply(me, {
87d7df96 121 title: gettext('Migrate') + ((me.vmtype === 'qemu')?' VM ':' CT ') + me.vmid,
04c32bed
DM
122 width: 350,
123 modal: true,
124 layout: 'auto',
125 border: false,
126 items: [ me.formPanel ],
209daf22 127 buttons: [ helpBtn, '->', submitBtn ]
04c32bed
DM
128 });
129
130 me.callParent();
8f3600b6
DC
131
132 me.mon(me.formPanel, 'validitychange', function(fp, isValid) {
133 submitBtn.setDisabled(!isValid);
134 });
135
136 me.formPanel.isValid();
04c32bed
DM
137 }
138});