]>
git.proxmox.com Git - pve-manager.git/blob - www/manager/qemu/HDEdit.js
1 // fixme: howto avoid jslint type confusion?
2 /*jslint confusion: true */
3 Ext
.define('PVE.qemu.HDInputPanel', {
4 extend
: 'PVE.panel.InputPanel',
5 alias
: 'widget.PVE.qemu.HDInputPanel',
9 unused
: false, // ADD usused disk imaged
11 vmconfig
: {}, // used to select usused disks
13 onGetValues: function(values
) {
16 var confid
= me
.confid
|| (values
.controller
+ values
.deviceid
);
19 me
.drive
.file
= me
.vmconfig
[values
.unusedId
];
20 confid
= values
.controller
+ values
.deviceid
;
21 } else if (me
.create
) {
23 me
.drive
.file
= values
.hdimage
;
25 me
.drive
.file
= values
.hdstorage
+ ":" + values
.disksize
;
27 me
.drive
.format
= values
.diskformat
;
31 me
.drive
.cache
= values
.cache
;
33 delete me
.drive
.cache
;
36 if (values
.nobackup
) {
37 me
.drive
.backup
= 'no';
39 delete me
.drive
.backup
;
44 params
[confid
] = PVE
.Parser
.printQemuDrive(me
.drive
);
49 setVMConfig: function(vmconfig
) {
52 me
.vmconfig
= vmconfig
;
55 me
.bussel
.setVMConfig(vmconfig
, true);
59 Ext
.Object
.each(vmconfig
, function(key
, value
) {
60 if (key
.match(/^unused\d+$/)) {
61 disklist
.push([key
, value
]);
64 me
.unusedDisks
.store
.loadData(disklist
);
65 me
.unusedDisks
.setValue(me
.confid
);
69 setDrive: function(drive
) {
75 var match
= drive
.file
.match(/^([^:]+):/);
77 values
.hdstorage
= match
[1];
80 values
.hdimage
= drive
.file
;
81 values
.nobackup
= (drive
.backup
=== 'no');
82 values
.diskformat
= drive
.format
|| 'raw';
83 values
.cache
= drive
.cache
|| '';
88 setNodename: function(nodename
) {
90 me
.hdstoragesel
.setNodename(nodename
);
91 me
.hdfilesel
.setStorage(undefined, nodename
);
94 initComponent : function() {
102 if (!me
.confid
|| me
.unused
) {
103 me
.bussel
= Ext
.createWidget('PVE.form.ControllerSelector', {
104 // boot from scsi does not work in kvm 1.0
105 noScsi
: me
.insideWizard
? true : false,
106 vmconfig
: me
.insideWizard
? {ide2
: 'cdrom'} : {}
108 me
.column1
.push(me
.bussel
);
112 me
.unusedDisks
= Ext
.create('PVE.form.KVComboBox', {
114 fieldLabel
: gettext('Disk image'),
115 matchFieldWidth
: false,
122 me
.column1
.push(me
.unusedDisks
);
123 } else if (me
.create
) {
124 me
.hdfilesel
= Ext
.create('PVE.form.FileSelector', {
126 nodename
: me
.nodename
,
127 storageContent
: 'images',
128 fieldLabel
: gettext('Disk image'),
134 me
.hdsizesel
= Ext
.createWidget('numberfield', {
139 fieldLabel
: gettext('Disk size') + ' (GB)',
143 me
.hdstoragesel
= Ext
.create('PVE.form.StorageSelector', {
145 nodename
: me
.nodename
,
146 fieldLabel
: gettext('Storage'),
147 storageContent
: 'images',
148 autoSelect
: me
.insideWizard
,
151 change: function(f
, value
) {
152 var rec
= f
.store
.getById(value
);
153 if (rec
.data
.type
=== 'iscsi') {
154 me
.hdfilesel
.setStorage(value
);
155 me
.hdfilesel
.setDisabled(false);
156 me
.hdfilesel
.setVisible(true);
157 me
.hdsizesel
.setDisabled(true);
158 me
.hdsizesel
.setVisible(false);
160 me
.hdfilesel
.setDisabled(true);
161 me
.hdfilesel
.setVisible(false);
162 me
.hdsizesel
.setDisabled(false);
163 me
.hdsizesel
.setVisible(true);
168 me
.column1
.push(me
.hdstoragesel
);
169 me
.column1
.push(me
.hdfilesel
);
170 me
.column1
.push(me
.hdsizesel
);
173 xtype
: 'displayfield',
174 fieldLabel
: gettext('Disk image'),
180 if (me
.create
&& !me
.unused
) {
182 xtype
: 'PVE.form.DiskFormatSelector',
184 fieldLabel
: gettext('Format'),
191 xtype
: 'CacheTypeSelector',
197 if (!me
.insideWizard
) {
199 xtype
: 'pvecheckbox',
200 fieldLabel
: gettext('No backup'),
209 Ext
.define('PVE.qemu.HDEdit', {
210 extend
: 'PVE.window.Edit',
214 initComponent : function() {
217 var nodename
= me
.pveSelNode
.data
.node
;
219 throw "no node name specified";
222 var unused
= me
.confid
&& me
.confid
.match(/^unused\d+$/);
224 me
.create
= me
.confid
? unused
: true;
226 var ipanel
= Ext
.create('PVE.qemu.HDInputPanel', {
235 me
.subject
= gettext('Unused Disk');
236 } else if (me
.create
) {
237 me
.subject
= gettext('Hard Disk');
239 me
.subject
= gettext('Hard Disk') + ' (' + me
.confid
+ ')';
242 me
.items
= [ ipanel
];
247 success: function(response
, options
) {
248 ipanel
.setVMConfig(response
.result
.data
);
250 var value
= response
.result
.data
[me
.confid
];
251 var drive
= PVE
.Parser
.parseQemuDrive(me
.confid
, value
);
253 Ext
.Msg
.alert('Error', 'Unable to parse drive options');
257 ipanel
.setDrive(drive
);
258 me
.isValid(); // trigger validation