From 12fbaf9b49aca2838357bbc88bddc12bea5affb2 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Thu, 24 Oct 2013 14:25:21 -0700 Subject: [PATCH] CLOUDSTACK-4649: UI > Edit Instance, Edit Template > fix a bug that XenServer Tools Version 6.1+ field didn't get updated correctly. --- ui/scripts/instances.js | 34 +++++++++++++++++++++++++++++++--- ui/scripts/templates.js | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 61 insertions(+), 5 deletions(-) diff --git a/ui/scripts/instances.js b/ui/scripts/instances.js index d8b997afcb2..436e1aadffe 100644 --- a/ui/scripts/instances.js +++ b/ui/scripts/instances.js @@ -820,12 +820,40 @@ url: createURL('addResourceDetail'), data: { resourceType: 'uservm', - resourceId: 3, + resourceId: args.context.instances[0].id, 'details[0].key': 'hypervisortoolsversion', 'details[0].value': (args.data.xenserverToolsVersion61plus == "on") ? 'xenserver61' : 'xenserver56' }, - success: function(json) { - //do nothing + success: function(json) { + var jobId = json.addResourceDetailresponse.jobid; + var addResourceDetailIntervalID = setInterval(function() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobid=" + jobId), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + + if (result.jobstatus == 0) { + return; //Job has not completed + } else { + clearInterval(addResourceDetailIntervalID); + + if (result.jobstatus == 1) { + //do nothing + } else if (result.jobstatus == 2) { + cloudStack.dialog.notice({ + message: "Failed to update XenServer Tools Version 6.1+ field. Error: " + _s(result.jobresult.errortext) + }); + } + } + }, + error: function(XMLHttpResponse) { + cloudStack.dialog.notice({ + message: "Failed to update XenServer Tools Version 6.1+ field. Error: " + parseXMLHttpResponse(XMLHttpResponse) + }); + } + }); + }, g_queryAsyncJobResultInterval); } }); } diff --git a/ui/scripts/templates.js b/ui/scripts/templates.js index 891d0b17c2b..e6a5fccae3d 100644 --- a/ui/scripts/templates.js +++ b/ui/scripts/templates.js @@ -665,12 +665,40 @@ url: createURL('addResourceDetail'), data: { resourceType: 'template', - resourceId: 1, + resourceId: args.context.templates[0].id, 'details[0].key': 'hypervisortoolsversion', 'details[0].value': (args.data.xenserverToolsVersion61plus == "on") ? 'xenserver61' : 'xenserver56' }, success: function(json) { - //do nothing + var jobId = json.addResourceDetailresponse.jobid; + var addResourceDetailIntervalID = setInterval(function() { + $.ajax({ + url: createURL("queryAsyncJobResult&jobid=" + jobId), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + + if (result.jobstatus == 0) { + return; //Job has not completed + } else { + clearInterval(addResourceDetailIntervalID); + + if (result.jobstatus == 1) { + //do nothing + } else if (result.jobstatus == 2) { + cloudStack.dialog.notice({ + message: "Failed to update XenServer Tools Version 6.1+ field. Error: " + _s(result.jobresult.errortext) + }); + } + } + }, + error: function(XMLHttpResponse) { + cloudStack.dialog.notice({ + message: "Failed to update XenServer Tools Version 6.1+ field. Error: " + parseXMLHttpResponse(XMLHttpResponse) + }); + } + }); + }, g_queryAsyncJobResultInterval); } }); }