Summary: resizeVolume needs to be available in UI Detail: Adds UI element for resizing a volume
BUG-ID: CLOUDSTACK-644 Reported-by: [email protected] Signed-off-by: Marcus Sorensen <[email protected]> 1360091087 -0700 Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/4f274d0b Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/4f274d0b Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/4f274d0b Branch: refs/heads/storage_refactor Commit: 4f274d0b8ed9ad57bd9621bb0c9fc46c10990534 Parents: 750fb2c Author: Marcus Sorensen <[email protected]> Authored: Tue Feb 5 12:04:47 2013 -0700 Committer: Marcus Sorensen <[email protected]> Committed: Tue Feb 5 12:04:47 2013 -0700 ---------------------------------------------------------------------- .../WEB-INF/classes/resources/messages.properties | 6 + .../classes/resources/messages_fr_FR.properties | 6 + .../classes/resources/messages_ja.properties | 8 +- .../classes/resources/messages_pt_BR.properties | 6 + .../classes/resources/messages_ru_RU.properties | 8 ++ .../classes/resources/messages_zh_CN.properties | 6 + ui/css/cloudstack3.css | 2 + ui/dictionary.jsp | 6 +- ui/scripts/storage.js | 99 +++++++++++++++ 9 files changed, 145 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f274d0b/client/WEB-INF/classes/resources/messages.properties ---------------------------------------------------------------------- diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties index eda0778..bb845d8 100644 --- a/client/WEB-INF/classes/resources/messages.properties +++ b/client/WEB-INF/classes/resources/messages.properties @@ -1545,3 +1545,9 @@ label.nicira.controller.address=Controller Address label.nicira.transportzoneuuid=Transport Zone Uuid label.nicira.l3gatewayserviceuuid=L3 Gateway Service Uuid +#resizeVolumes +label.resize.new.size=New Size(GB) +label.action.resize.volume=Resize Volume +label.action.resize.volume.processing=Resizing Volume.... +label.resize.new.offering.id=New Offering +label.resize.shrink.ok=Shrink OK \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f274d0b/client/WEB-INF/classes/resources/messages_fr_FR.properties ---------------------------------------------------------------------- diff --git a/client/WEB-INF/classes/resources/messages_fr_FR.properties b/client/WEB-INF/classes/resources/messages_fr_FR.properties index 4ba3c72..51bf95f 100644 --- a/client/WEB-INF/classes/resources/messages_fr_FR.properties +++ b/client/WEB-INF/classes/resources/messages_fr_FR.properties @@ -1510,3 +1510,9 @@ error.menu.select=Echec de l\'action car il n\'y a aucun error.mgmt.server.inaccessible=Le serveur de management est indisponible. Essayez plus tard. error.session.expired=Votre session a expir�. error.unresolved.internet.name=Votre nom internet ne peut pas �tre r�solu. +#resizeVolumes +label.resize.new.size=New Size(GB) +label.action.resize.volume=Resize Volume +label.action.resize.volume.processing=Resizing Volume.... +label.resize.new.offering.id=New Offering +label.resize.shrink.ok=Shrink OK \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f274d0b/client/WEB-INF/classes/resources/messages_ja.properties ---------------------------------------------------------------------- diff --git a/client/WEB-INF/classes/resources/messages_ja.properties b/client/WEB-INF/classes/resources/messages_ja.properties index 7555b83..8397a8d 100644 --- a/client/WEB-INF/classes/resources/messages_ja.properties +++ b/client/WEB-INF/classes/resources/messages_ja.properties @@ -1509,4 +1509,10 @@ error.login=ã¦ã¼ã¶ã¼å/ãã¹ã¯ã¼ããè¨é²ã¨ä¸è´ãã¾ããã error.menu.select=é ç®ã鏿ããã¦ããªãããæä½ãå®è¡ã§ãã¾ããã error.mgmt.server.inaccessible=管çãµã¼ãã¼ã«ã¢ã¯ã»ã¹ã§ãã¾ãããå¾ã§åå®è¡ãã¦ãã ããã error.session.expired=ã»ãã·ã§ã³ã®æå¹æéãåãã¾ããã -error.unresolved.internet.name=ã¤ã³ã¿ã¼ãããåã解決ã§ãã¾ããã + +#resizeVolumes +label.resize.new.size=New Size(GB) +label.action.resize.volume=Resize Volume +label.action.resize.volume.processing=Resizing Volume.... +label.resize.new.offering.id=New Offering +label.resize.shrink.ok=Shrink OK \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f274d0b/client/WEB-INF/classes/resources/messages_pt_BR.properties ---------------------------------------------------------------------- diff --git a/client/WEB-INF/classes/resources/messages_pt_BR.properties b/client/WEB-INF/classes/resources/messages_pt_BR.properties index 3bc435b..23ba5b9 100644 --- a/client/WEB-INF/classes/resources/messages_pt_BR.properties +++ b/client/WEB-INF/classes/resources/messages_pt_BR.properties @@ -1510,3 +1510,9 @@ error.menu.select=N error.mgmt.server.inaccessible=O servidor de gerenciamento está inacessÃvel. Tente novamente mais tarde. error.session.expired=Sua sessão expirou. error.unresolved.internet.name=ImpossÃvel resolver DNS +#resizeVolumes +label.resize.new.size=New Size(GB) +label.action.resize.volume=Resize Volume +label.action.resize.volume.processing=Resizing Volume.... +label.resize.new.offering.id=New Offering +label.resize.shrink.ok=Shrink OK \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f274d0b/client/WEB-INF/classes/resources/messages_ru_RU.properties ---------------------------------------------------------------------- diff --git a/client/WEB-INF/classes/resources/messages_ru_RU.properties b/client/WEB-INF/classes/resources/messages_ru_RU.properties index dd7e746..024b552 100644 --- a/client/WEB-INF/classes/resources/messages_ru_RU.properties +++ b/client/WEB-INF/classes/resources/messages_ru_RU.properties @@ -1510,3 +1510,11 @@ error.menu.select=Ðе ÑдаеÑÑÑ Ð²ÑполниÑÑ Ð´ÐµÐ¹ÑÑвие из- error.mgmt.server.inaccessible=СеÑÐ²ÐµÑ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ´Ð¾ÑÑÑпна. ÐопÑобÑйÑе обÑаÑиÑÑÑÑ Ðº Ð½ÐµÐ¼Ñ Ð¿Ð¾Ð·Ð¶Ðµ. error.session.expired=ÐаÑа ÑеÑÑÐ¸Ñ Ð±Ñла завеÑÑена error.unresolved.internet.name=ÐаÑе инÑеÑнеÑ-Ð¸Ð¼Ñ Ð¾Ð¿ÑеделиÑÑ Ð½Ðµ ÑдалоÑÑ + +#resizeVolumes +label.resize.new.size=New Size(GB) +label.action.resize.volume=Resize Volume +label.action.resize.volume.processing=Resizing Volume.... +label.resize.new.offering.id=New Offering +label.resize.shrink.ok=Shrink OK + http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f274d0b/client/WEB-INF/classes/resources/messages_zh_CN.properties ---------------------------------------------------------------------- diff --git a/client/WEB-INF/classes/resources/messages_zh_CN.properties b/client/WEB-INF/classes/resources/messages_zh_CN.properties index 62160d9..2e2e725 100644 --- a/client/WEB-INF/classes/resources/messages_zh_CN.properties +++ b/client/WEB-INF/classes/resources/messages_zh_CN.properties @@ -1511,3 +1511,9 @@ error.mgmt.server.inaccessible=æ æ³è®¿é®ç®¡çæå¡å¨ã请ç¨ååè¯ã error.session.expired=æ¨çä¼è¯å·²è¿æã error.unresolved.internet.name=æ æ³è§£ææ¨ç Internet åç§°ã +#resizeVolumes +label.resize.new.size=New Size(GB) +label.action.resize.volume=Resize Volume +label.action.resize.volume.processing=Resizing Volume.... +label.resize.new.offering.id=New Offering +label.resize.shrink.ok=Shrink OK \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f274d0b/ui/css/cloudstack3.css ---------------------------------------------------------------------- diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index eb42843..6cb82f2 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -11159,10 +11159,12 @@ div.ui-dialog div.autoscaler div.field-group div.form-container form div.form-it background-position: -100px -614px; } +.resize .icon, .updateResourceCount .icon { background-position: -167px -66px; } +.resize:hover .icon, .updateResourceCount:hover .icon { background-position: -167px -648px; } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f274d0b/ui/dictionary.jsp ---------------------------------------------------------------------- diff --git a/ui/dictionary.jsp b/ui/dictionary.jsp index 77dfdc9..d2cb67f 100644 --- a/ui/dictionary.jsp +++ b/ui/dictionary.jsp @@ -1432,6 +1432,10 @@ dictionary = { 'label.delete.NiciraNvp': '<fmt:message key="label.delete.NiciraNvp" />', 'label.nicira.controller.address': '<fmt:message key="label.nicira.controller.address" />', 'label.nicira.transportzoneuuid': '<fmt:message key="label.nicira.transportzoneuuid" />', -'label.nicira.l3gatewayserviceuuid': '<fmt:message key="label.nicira.l3gatewayserviceuuid" />' +'label.nicira.l3gatewayserviceuuid': '<fmt:message key="label.nicira.l3gatewayserviceuuid" />', +'label.resize.new.size': '<fmt:message key="label.resize.new.size" />', +'label.action.resize.volume': '<fmt:message key="label.action.resize.volume" />', +'label.resize.new.offering.id': '<fmt:message key="label.resize.new.offering.id" />', +'label.resize.shrink.ok': '<fmt:message key="label.resize.shrink.ok" />' }; </script> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/4f274d0b/ui/scripts/storage.js ---------------------------------------------------------------------- diff --git a/ui/scripts/storage.js b/ui/scripts/storage.js index dd81378..73a496e 100644 --- a/ui/scripts/storage.js +++ b/ui/scripts/storage.js @@ -1005,6 +1005,102 @@ args.complete(); } } + }, + + resize: { + label: 'label.action.resize.volume', + messages: { + notification: function(args) { + return 'label.action.resize.volume'; + } + }, + createForm: { + title: 'label.action.resize.volume', + fields: { + newdiskoffering: { + label: 'label.resize.new.offering.id', + select: function(args) { + $.ajax({ + url: createURL("listDiskOfferings"), + dataType: "json", + async: false, + success: function(json) { + diskofferingObjs = json.listdiskofferingsresponse.diskoffering; + var items = []; + $(diskofferingObjs).each(function(){ + items.push({id: this.id, description: this.displaytext}); + }); + args.response.success({data: items}); + } + }); + + args.$select.change(function() { + var diskOfferingId = $(this).val(); + $(diskofferingObjs).each(function(){ + if(this.id == diskOfferingId) { + selectedDiskOfferingObj = this; + return false; //break the $.each() loop + } + }); + if(selectedDiskOfferingObj == null) + return; + + var $form = $(this).closest('form'); + var $newsize = $form.find('.form-item[rel=newsize]'); + if (selectedDiskOfferingObj.iscustomized == true) { + $newsize.css('display', 'inline-block'); + } + else { + $newsize.hide(); + } + }); + } + }, + newsize: { + label: 'label.resize.new.size', + validation: { required: true, number: true }, + isHidden: true + }, + shrinkok: {label: 'label.resize.shrink.ok', isBoolean: true, isChecked: false} + } + }, + action: function(args){ + var array1 = []; + array1.push("&shrinkok=" + (args.data.shrinkok == "on")); + var newDiskOffering = args.data.newdiskoffering; + var newSize; + if (selectedDiskOfferingObj.iscustomized == true) { + newSize = args.data.newsize; + } + if (newDiskOffering != null && newDiskOffering.length > 0){ + array1.push("&diskofferingid=" + todb(newDiskOffering)); + } + if (newSize != null && newSize.length > 0){ + array1.push("&size=" + todb(newSize)); + } + $.ajax({ + url: createURL("resizeVolume&id=" + args.context.volumes[0].id + array1.join("")), + dataType: "json", + async: true, + success: function(json){ + var jid = json.resizevolumeresponse.jobid; + args.response.success( + {_custom: + {jobId: jid, + getUpdatedItem: function(json) { + return json.queryasyncjobresultresponse.jobresult.volume; + }, + getActionFilter: function() { + return volumeActionfilter; + } + } + }); + } + }); + }, + notification: { + poll: pollAsyncJobResult + } } }, tabs: { @@ -1430,6 +1526,9 @@ if(jsonObj.hypervisor != "Ovm" && jsonObj.state == "Ready") { allowedActions.push("takeSnapshot"); allowedActions.push("recurringSnapshot"); + if((jsonObj.hypervisor == "XenServer" || jsonObj.hypervisor == "KVM" || jsonObj.hypervisor == "VMware") && jsonObj.type == "DATADISK") { + allowedActions.push("resize"); + } } if(jsonObj.state != "Allocated") { if((jsonObj.vmstate == "Stopped" || jsonObj.virtualmachineid == null) && jsonObj.state == "Ready") {
