[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