[Kimchi-devel] [PATCH 6/6] Create VMs Asynchronously: UI
Christy Perez
christy at linux.vnet.ibm.com
Wed Apr 29 21:40:38 UTC 2015
Reviewed-By: Christy Perez <christy at linux.vnet.ibm.com>
Tested-By: Christy Perez <christy at linux.vnet.ibm.com>
Thanks Aline!
On 04/29/2015 04:36 PM, Aline Manera wrote:
> Signed-off-by: Christy Perez <christy at linux.vnet.ibm.com>
> Signed-off-by: Aline Manera <alinefm at linux.vnet.ibm.com>
> ---
> ui/css/theme-default/list.css | 8 ++++----
> ui/js/src/kimchi.guest_main.js | 28 +++++++++++++++++++++++++---
> ui/pages/guest.html.tmpl | 4 ++--
> ui/pages/i18n.json.tmpl | 1 +
> 4 files changed, 32 insertions(+), 9 deletions(-)
>
> diff --git a/ui/css/theme-default/list.css b/ui/css/theme-default/list.css
> index 7b32ea6..e51912d 100644
> --- a/ui/css/theme-default/list.css
> +++ b/ui/css/theme-default/list.css
> @@ -1,7 +1,7 @@
> /*
> * Project Kimchi
> *
> - * Copyright IBM, Corp. 2013-2014
> + * Copyright IBM, Corp. 2013-2015
> *
> * Licensed under the Apache License, Version 2.0 (the "License");
> * you may not use this file except in compliance with the License.
> @@ -289,11 +289,11 @@
> padding-left: 10px;
> }
>
> -.guest-clone {
> +.guest-pending {
> margin: 10px;
> }
>
> -.guest-clone .icon {
> +.guest-pending .icon {
> background: url('../../images/theme-default/kimchi-loading15x15.gif') no-repeat;
> display: inline-block;
> width: 20px;
> @@ -301,7 +301,7 @@
> vertical-align: middle;
> }
>
> -.guest-clone .text {
> +.guest-pending .text {
> color: #666666;
> margin-left: 5px;
> text-shadow: -1px -1px 1px #CCCCCC, 1px 1px 1px #FFFFFF;
> diff --git a/ui/js/src/kimchi.guest_main.js b/ui/js/src/kimchi.guest_main.js
> index c712bb4..260e907 100644
> --- a/ui/js/src/kimchi.guest_main.js
> +++ b/ui/js/src/kimchi.guest_main.js
> @@ -201,6 +201,21 @@ kimchi.listVmsAuto = function() {
> if (kimchi.vmTimeout) {
> clearTimeout(kimchi.vmTimeout);
> }
> + var getCreatingGuests = function(){
> + var guests = [];
> + kimchi.getTasksByFilter('status=running&target_uri='+encodeURIComponent('^/vms/[^/]+$'), function(tasks) {
> + for(var i=0;i<tasks.length;i++){
> + var guestUri = tasks[i].target_uri;
> + var guestName = guestUri.split('/')[2]
> + guests.push($.extend({}, kimchi.sampleGuestObject, {name: guestName, isCreating: true}));
> + if(kimchi.trackingTasks.indexOf(tasks[i].id)==-1)
> + kimchi.trackTask(tasks[i].id, null, function(err){
> + kimchi.message.error(err.message);
> + }, null);
> + }
> + }, null, true);
> + return guests;
> + };
> var getCloningGuests = function(){
> var guests = [];
> kimchi.getTasksByFilter('status=running&target_uri='+encodeURIComponent('^/vms/.+/clone'), function(tasks) {
> @@ -219,6 +234,7 @@ kimchi.listVmsAuto = function() {
> kimchi.listVMs(function(result, textStatus, jqXHR) {
> if (result && textStatus=="success") {
> result = getCloningGuests().concat(result);
> + result = getCreatingGuests().concat(result);
> if(result.length) {
> var listHtml = '';
> var guestTemplate = kimchi.guestTemplate;
> @@ -281,7 +297,7 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu) {
> imgLoad.attr('src',load_src);
>
> //Link the stopped tile to the start action, the running tile to open the console
> - if(!vmObject.isCloning){
> + if(!(vmObject.isCloning || vmObject.isCreating)){
> if (vmRunningBool) {
> liveTile.off("click", kimchi.vmstart);
> liveTile.on("click", kimchi.openVmConsole);
> @@ -329,7 +345,7 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu) {
> }
>
> //Setup action event handlers
> - if(!vmObject.isCloning){
> + if(!(vmObject.isCloning || vmObject.isCreating)){
> guestActions.find("[name=vm-start]").on({click : kimchi.vmstart});
> guestActions.find("[name=vm-poweroff]").on({click : kimchi.vmpoweroff});
> if (vmRunningBool) { //If the guest is not running, do not enable reset
> @@ -362,8 +378,14 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu) {
>
> }else{
> guestActions.find('.btn').attr('disabled', true);
> - result.find('.guest-clone').removeClass('hide-content');
> $('.popover', guestActions.find("div[name=actionmenu]")).remove();
> +
> + result.find('.guest-pending').removeClass('hide-content');
> + pendingText = result.find('.guest-pending .text')
> + if(vmObject.isCloning)
> + pendingText.text(i18n['KCHAPI6009M']);
> + else
> + pendingText.text(i18n['KCHAPI6008M']);
> }
>
> return result;
> diff --git a/ui/pages/guest.html.tmpl b/ui/pages/guest.html.tmpl
> index 17d41ac..8896ac5 100644
> --- a/ui/pages/guest.html.tmpl
> +++ b/ui/pages/guest.html.tmpl
> @@ -26,8 +26,8 @@
> <div class="guest-general">
> <h2 class="title" title="{name}">{name}</h2>
> </div>
> - <div class="guest-clone hide-content">
> - <span class="icon"></span><span class="text">$_("Cloning")...</span>
> + <div class="guest-pending hide-content">
> + <span class="icon"></span><span class="text"></span>
> </div>
> </div>
> <div name="cpu_utilization" class="sortable">
> diff --git a/ui/pages/i18n.json.tmpl b/ui/pages/i18n.json.tmpl
> index a6e3f5b..675d9a6 100644
> --- a/ui/pages/i18n.json.tmpl
> +++ b/ui/pages/i18n.json.tmpl
> @@ -48,6 +48,7 @@
> "KCHAPI6006M": "$_("Warning")",
> "KCHAPI6007M": "$_("Save")",
> "KCHAPI6008M": "$_("Creating...")",
> + "KCHAPI6009M": "$_("Cloning...")",
>
> "KCHGRD6001M": "$_("Loading...")",
> "KCHGRD6002M": "$_("An error occurred while retrieving system information.")",
>
More information about the Kimchi-devel
mailing list