[Kimchi-devel] [PATCH] Guest disk hot plug UI

Wen Wang wenwang at linux.vnet.ibm.com
Tue Nov 4 09:47:08 UTC 2014


Sorry this didn't include the version info in the mail subject. please 
ignore this one and I will have it resend

On 11/4/2014 5:42 PM, Wen Wang wrote:
> 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;





More information about the Kimchi-devel mailing list