diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties index eda07782196..bb845d8e8e4 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 diff --git a/client/WEB-INF/classes/resources/messages_fr_FR.properties b/client/WEB-INF/classes/resources/messages_fr_FR.properties index 4ba3c725892..51bf95fe349 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 rsolu. +#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 diff --git a/client/WEB-INF/classes/resources/messages_ja.properties b/client/WEB-INF/classes/resources/messages_ja.properties index 7555b83dd78..8397a8dc59d 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 diff --git a/client/WEB-INF/classes/resources/messages_pt_BR.properties b/client/WEB-INF/classes/resources/messages_pt_BR.properties index 3bc435b9717..23ba5b9402d 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 diff --git a/client/WEB-INF/classes/resources/messages_ru_RU.properties b/client/WEB-INF/classes/resources/messages_ru_RU.properties index dd7e7460744..024b552df7c 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 + diff --git a/client/WEB-INF/classes/resources/messages_zh_CN.properties b/client/WEB-INF/classes/resources/messages_zh_CN.properties index 62160d98488..2e2e725d190 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 diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index eb4284374de..6cb82f2ea25 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; } diff --git a/ui/dictionary.jsp b/ui/dictionary.jsp index 77dfdc9055f..d2cb67fc8a5 100644 --- a/ui/dictionary.jsp +++ b/ui/dictionary.jsp @@ -1432,6 +1432,10 @@ dictionary = { 'label.delete.NiciraNvp': '', 'label.nicira.controller.address': '', 'label.nicira.transportzoneuuid': '', -'label.nicira.l3gatewayserviceuuid': '' +'label.nicira.l3gatewayserviceuuid': '', +'label.resize.new.size': '', +'label.action.resize.volume': '', +'label.resize.new.offering.id': '', +'label.resize.shrink.ok': '' }; diff --git a/ui/scripts/storage.js b/ui/scripts/storage.js index dd813781522..73a496e4df6 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") {