[Kimchi-devel] [PATCH] Guest disk hot plug UI
Wen Wang
wenwang at linux.vnet.ibm.com
Tue Nov 4 09:42:37 UTC 2014
From: Wen Wang <wenwang at linux.vnet.ibm.com>
V3 -> v4:
Disable CDROM hotplug due to back-end limitatiions
V2 -> V3:
Minor changes according to JQuery rules.
V1 -> V2:
Enable CDROM hot plug including detaching.
Enable users add and detach disk when vm is running.
Signed-off-by: Wen Wang <wenwang at linux.vnet.ibm.com>
---
ui/js/src/kimchi.guest_edit_main.js | 30 ++++++++++++---------------
ui/js/src/kimchi.guest_storage_add.main.js | 18 +++++++++++++---
2 files changed, 27 insertions(+), 21 deletions(-)
diff --git a/ui/js/src/kimchi.guest_edit_main.js b/ui/js/src/kimchi.guest_edit_main.js
index ed8c689..9d87a73 100644
--- a/ui/js/src/kimchi.guest_edit_main.js
+++ b/ui/js/src/kimchi.guest_edit_main.js
@@ -57,16 +57,14 @@ kimchi.guest_edit_main = function() {
text: false
});
- if(kimchi.thisVMState != "running") {
- $('.detach', container).button({
- icons: {
- primary: 'ui-icon-trash'
- },
- text: false
- });
-
- } else {
- $('.detach', container).remove();
+ $('.detach', container).button({
+ icons: {
+ primary: 'ui-icon-trash'
+ },
+ text: false
+ });
+ if (kimchi.thisVMState === 'running') {
+ $('.detach[data-type="cdrom"]', container).remove();
}
$('.save', container).button({
@@ -467,14 +465,8 @@ kimchi.guest_edit_main = function() {
guest['icon'] = guest['icon'] || 'images/icon-vm.png';
$('#form-guest-edit-general').fillWithObject(guest);
kimchi.thisVMState = guest['state'];
-
refreshCDROMs();
- if(kimchi.thisVMState === "running") {
- $("#form-guest-edit-general input").prop("disabled", "disabled");
- $("#guest-edit-attach-cdrom-button").remove();
- $("#form-guest-edit-interface .header button").remove();
- } else {
- $('#guest-edit-attach-cdrom-button').button({
+ $('#guest-edit-attach-cdrom-button').button({
icons: {
primary: "ui-icon-plusthick"
},
@@ -483,6 +475,10 @@ kimchi.guest_edit_main = function() {
event.preventDefault();
kimchi.window.open("guest-storage-add.html");
});
+ if(kimchi.thisVMState === "running") {
+ $("#form-guest-edit-general input").prop("disabled", true);
+ $("#form-guest-edit-interface .header button").remove();
+ } else {
$("#action-button-container").removeClass("hidden");
}
diff --git a/ui/js/src/kimchi.guest_storage_add.main.js b/ui/js/src/kimchi.guest_storage_add.main.js
index 57eed6a..5df5625 100644
--- a/ui/js/src/kimchi.guest_storage_add.main.js
+++ b/ui/js/src/kimchi.guest_storage_add.main.js
@@ -24,7 +24,10 @@ kimchi.guest_storage_add_main = function() {
label: 'disk',
value: 'disk',
}];
- kimchi.select('guest-storage-type-list', types);
+ var typesRunning = [{
+ label: 'disk',
+ value: 'disk'
+ }];
var storageAddForm = $('#form-guest-storage-add');
var submitButton = $('#guest-storage-button-add');
@@ -32,10 +35,8 @@ kimchi.guest_storage_add_main = function() {
var pathTextbox = $('input[name="path"]', storageAddForm);
var poolTextbox = $('input[name="pool"]', storageAddForm);
var volTextbox = $('input[name="vol"]', storageAddForm);
- var selectType = $(typeTextbox).val();
typeTextbox.change(function() {
- $('#guest-storage-bus').selectMenu();
var pathObject = {'cdrom': ".path-section", 'disk': '.volume-section'}
selectType = $(this).val();
$.each(pathObject, function(type, value) {
@@ -84,7 +85,7 @@ kimchi.guest_storage_add_main = function() {
options.push({
label: value.name,
value: value.name
- });
+ });
}
});
if (options.length) {
@@ -109,6 +110,15 @@ kimchi.guest_storage_add_main = function() {
});
});
+ if (kimchi.thisVMState === 'running') {
+ types =typesRunning;
+ $(typeTextbox).val('disk');
+ typeTextbox.change();
+ poolTextbox.change();
+ }
+ var selectType = $(typeTextbox).val();
+ kimchi.select('guest-storage-type-list', types);
+
var validateCDROM = function(settings) {
if (/^((https|http|ftp|ftps|tftp|\/).*)+$/.test(settings['path']))
return true;
--
1.7.1
More information about the Kimchi-devel
mailing list