From: Socorro Stoppler <socorrob(a)us.ibm.com>
Signed-off-by: Socorro Stoppler <socorrob(a)us.ibm.com>
---
ui/css/theme-default/button.css | 10 +++++
ui/css/theme-default/list.css | 4 +-
ui/js/src/kimchi.guest_main.js | 95 ++++++++++++++++++++++++++++++++++++++++-
ui/pages/guest.html.tmpl | 3 ++
4 files changed, 109 insertions(+), 3 deletions(-)
diff --git a/ui/css/theme-default/button.css b/ui/css/theme-default/button.css
index 0df53a6..08845a8 100644
--- a/ui/css/theme-default/button.css
+++ b/ui/css/theme-default/button.css
@@ -226,6 +226,16 @@
center no-repeat;
}
+.icon.pause {
+ background: url(../images/theme-default/icon-pause.png) center
+ center no-repeat;
+}
+
+.icon.resume {
+ background: url(../images/theme-default/icon-resume.png) center
+ center no-repeat;
+}
+
.icon.search {
background: url(../images/theme-default/icon-search.png) no-repeat
center center;
diff --git a/ui/css/theme-default/list.css b/ui/css/theme-default/list.css
index e51912d..6b8993b 100644
--- a/ui/css/theme-default/list.css
+++ b/ui/css/theme-default/list.css
@@ -149,8 +149,8 @@
}
.guest-actions {
- width: 125px;
- min-width: 125px;
+ width: 160px;
+ min-width: 160px;
}
.guest-handle {
diff --git a/ui/js/src/kimchi.guest_main.js b/ui/js/src/kimchi.guest_main.js
index 260e907..d4f4916 100644
--- a/ui/js/src/kimchi.guest_main.js
+++ b/ui/js/src/kimchi.guest_main.js
@@ -15,6 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
kimchi.sampleGuestObject = {
"name": "",
"uuid": "",
@@ -65,6 +66,62 @@ kimchi.vmstart = function(event) {
}
};
+//Socorro
+kimchi.vmpause = function(event) {
+ var button=$(this);
+ if (!button.hasClass('loading')) {
+ button.addClass('loading');
+ var vm=$(this).closest('li[name=guest]');
+ var vm_id=vm.attr("id");
+ //Socorro - change this to kimchi.pauseVM but where is this defined? -- in kimchi.api.js
-- need to get latest one from Aline if it's already checked in
+ //Socorro
+ alert('Before entering .pauseVM - Pause button pushed');
+ vmPausedBool=true;
+ //kimchi.pauseVM(vm_id, function(result) {
+ //button.removeClass('loading');
+ //kimchi.listVmsAuto();
+ //Socorro
+ //alert('Pause button pushed');
+ //}, function(err) {
+ //button.removeClass('loading');
+ //kimchi.message.error(err.responseJSON.reason);
+ //}
+ //);
+ } else {
+ event.preventDefault();
+ event.stopPropagation();
+ return;
+ }
+};
+
+//Socorro
+kimchi.vmresume = function(event) {
+ var button=$(this);
+ if (!button.hasClass('loading')) {
+ button.addClass('loading');
+ var vm=$(this).closest('li[name=guest]');
+ var vm_id=vm.attr("id");
+ //Socorro - change this to kimchi.resumeVM but where is this defined? -- in
kimchi.api.js -- need to get latest one from Aline if it's already checked in
+ //Socorro
+ alert('Before entering .resumeVM - Resume button pushed');
+ //kimchi.resumeVM(vm_id, function(result) {
+ //button.removeClass('loading');
+ //kimchi.listVmsAuto();
+ //Socorro
+ alert('Resume button pushed');
+ //}, function(err) {
+ //button.removeClass('loading');
+ //kimchi.message.error(err.responseJSON.reason);
+ //}
+ //);
+ } else {
+ event.preventDefault();
+ event.stopPropagation();
+ return;
+ }
+};
+
+
kimchi.vmpoweroff = function(event) {
var button=$(this);
if (!button.hasClass('loading')) {
@@ -268,6 +325,9 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu)
{
//Setup the VM list entry
var vmRunningBool=(vmObject.state=="running");
+//Socorro
+var vmPausedBool=false; //(vmObject.state=="paused");
+var vmResumedBool=true; //(vmObject.state=="resumed");
var vmPersistent = (vmObject.persistent == true);
result.attr('id',vmObject.name);
result.data(vmObject);
@@ -301,12 +361,24 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu)
{
if (vmRunningBool) {
liveTile.off("click", kimchi.vmstart);
liveTile.on("click", kimchi.openVmConsole);
- }
+//Socorro - add pause/resume scenario
+ if (vmPausedBool) {
+ liveTile.off("click", kimchi.vmpause);
+ liveTile.on("click", kimchi.vmresume);
+ }
+ else if (vmResumedBool) {
+ liveTile.off("click", kimchi.vmresume);
+ liveTile.on("click", kimchi.vmpause);
+ }
+//end Socorro
+ }
else {
liveTile.off("click", kimchi.openVmConsole);
liveTile.on("click", kimchi.vmstart);
liveTile.hover(function(event){$(this).find('.overlay').show()},
function(event){$(this).find('.overlay').hide()});
}
+
+
}
@@ -326,14 +398,32 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu)
{
guestActions.find(".running-disabled").prop("disabled",
vmRunningBool);
guestActions.find(".non-persistent-disabled").prop("disabled",
!vmPersistent);
guestActions.find(".reset-disabled").prop("disabled",
!vmRunningBool || !vmPersistent);
+//Socorro -- disable pause initially - no need to do it for resume since it's either
one or the other showing, not both
+ guestActions.find(".pause-hidden").prop("disabled",
!vmRunningBool || !vmPersistent);
if (vmRunningBool) {
guestActions.find(".running-hidden").hide();
+ //Socorro -- since VM is running, assuming it is playing as well
+ guestActions.find(".resume-hidden").hide();
+ // Check if 'paused'
+ if (vmPausedBool) {
+ guestActions.find(".pause-hidden").hide();
+ }
}
else {
guestActions.find(".shutoff-hidden").hide();
+ //Socorro
+ guestActions.find(".resume-hidden").hide();
+ guestActions.find(".pause-hidden").hide();
}
+//Socorro
+ //if (vmPausedBool) {
+ //guestActions.find(".pause-hidden").hide();
+ //} else if (vmResumedBool) {
+ // Socorro -- add hiding of Resume button here
+ //}
+
var consoleActions=guestActions.find("[name=vm-console]");
if ((vmObject.graphics['type'] == 'vnc') ||
(vmObject.graphics['type'] == 'spice')) {
@@ -348,6 +438,9 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu)
{
if(!(vmObject.isCloning || vmObject.isCreating)){
guestActions.find("[name=vm-start]").on({click : kimchi.vmstart});
guestActions.find("[name=vm-poweroff]").on({click :
kimchi.vmpoweroff});
+//Socorro Pause-Resume
+guestActions.find("[name=vm-pause]").on({click : kimchi.vmpause});
+guestActions.find("[name=vm-resume]").on({click : kimchi.vmresume});
if (vmRunningBool) { //If the guest is not running, do not enable reset
guestActions.find("[name=vm-reset]").on({click : kimchi.vmreset});
}
diff --git a/ui/pages/guest.html.tmpl b/ui/pages/guest.html.tmpl
index 8896ac5..d2ebef0 100644
--- a/ui/pages/guest.html.tmpl
+++ b/ui/pages/guest.html.tmpl
@@ -53,6 +53,9 @@
<button class="btn reset-disabled"
name="vm-reset" href="javascript:void(0);"
title="$_("Reset")"><span class="icon
reset"></span></button>
<button class="btn running-hidden"
name="vm-start" href="javascript:void(0);"
title="$_("Start")"><span class="icon
power-down"></span></button>
<button class="btn shutoff-hidden"
name="vm-poweroff" href="javascript:void(0);"
title="$_("Power Off")"><span class="icon
power-up"></span></button>
+<button class="btn pause-hidden" name="vm-pause"
href="javascript:void(0);" title="$_("Pause")"><span
class="icon pause"></span></button>
+<button class="btn resume-hidden" name="vm-pause"
href="javascript:void(0);" title="$_("Resume")"><span
class="icon resume"></span></button>
+
</div>
<div class="bottom">
<div name="actionmenu" class="btn dropdown popable
vm-action" style="width: 70px">
--
1.9.1