diff --git a/engine/schema/src/main/resources/META-INF/db/schema-41200to41300.sql b/engine/schema/src/main/resources/META-INF/db/schema-41200to41300.sql index d4de8c4a993..dc088be3a97 100644 --- a/engine/schema/src/main/resources/META-INF/db/schema-41200to41300.sql +++ b/engine/schema/src/main/resources/META-INF/db/schema-41200to41300.sql @@ -19,3 +19,6 @@ -- Schema upgrade from 4.12.0.0 to 4.13.0.0 --; +-- Move domain_id to disk offering details and drop the domain_id column +INSERT INTO `cloud`.`disk_offering_details` (offering_id, name, value) SELECT id, 'domainids', domain_id FROM `cloud`.`disk_offering` WHERE domain_id IS NOT NULL; +ALTER TABLE `cloud`.`disk_offering` DROP COLUMN `domain_id`; diff --git a/server/src/main/java/com/cloud/api/ApiDBUtils.java b/server/src/main/java/com/cloud/api/ApiDBUtils.java index dbcb5ab84a9..a24bb9af12e 100644 --- a/server/src/main/java/com/cloud/api/ApiDBUtils.java +++ b/server/src/main/java/com/cloud/api/ApiDBUtils.java @@ -1915,7 +1915,7 @@ public class ApiDBUtils { public static DiskOfferingResponse newDiskOfferingResponse(DiskOfferingJoinVO offering) { DiskOfferingResponse diskOfferingResponse = s_diskOfferingJoinDao.newDiskOfferingResponse(offering); if (diskOfferingResponse != null) { - Map details = s_diskOfferingDetailsDao.listDetailsKeyPairs(offering.getId(), false); + Map details = s_diskOfferingDetailsDao.listDetailsKeyPairs(offering.getId(), true); if (MapUtils.isNotEmpty(details)) { // Domains String[] domainIds = details.getOrDefault(ApiConstants.DOMAIN_ID_LIST, "").split(","); @@ -1928,7 +1928,7 @@ public class ApiDBUtils { String[] zoneIds = details.getOrDefault(ApiConstants.ZONE_ID_LIST, "").split(","); final Map zones = new HashMap<>(); for (DataCenterVO zone : s_zoneDao.list(zoneIds)) { - domains.put(zone.getName(), zone.getUuid()); + zones.put(zone.getName(), zone.getUuid()); } diskOfferingResponse.putDetail(ApiConstants.ZONE, zones); } diff --git a/ui/scripts/configuration.js b/ui/scripts/configuration.js index a81baa39d48..d061d6dd10b 100644 --- a/ui/scripts/configuration.js +++ b/ui/scripts/configuration.js @@ -2149,28 +2149,28 @@ }, select: function(args) { $.ajax({ - url: createURL("listZones&available=true"), + url: createURL("listZones"), + data: {available: 'true'}, dataType: "json", async: true, success: function(json) { - var zoneObjs = []; - var items = json.listzonesresponse.zone; - if (items != null) { - for (var i = 0; i < items.length; i++) { - zoneObjs.push({ - id: items[i].id, - description: items[i].name - }); - } - } - if (isAdmin()) { - zoneObjs.unshift({ - id: -1, - description: "All Zones" + var items = []; + var zoneObjs = json.listzonesresponse.zone; + $(zoneObjs).each(function() { + items.push({ + id: this.id, + description: this.name }); - } + }); + items.sort(function(a, b) { + return a.description.localeCompare(b.description); + }); + items.unshift({ + id: -1, + description: "All Zones" + }); args.response.success({ - data: zoneObjs + data: items }); } }); @@ -2255,39 +2255,16 @@ } if (args.data.isPublic != "on") { - var domains = ""; - if (Object.prototype.toString.call(args.data.domain) === '[object Array]') { - domains = args.data.domain.join(","); - } else { - if (args.data.domain != null) { - domains = args.data.domain; - } - } - if (domains != "") { + var domains = (args.data.domain && Array.isArray(args.data.domain)) ? args.data.domain.join(',') : args.data.domain; + if (domains) { $.extend(data, { domainids: domains }); } } - var zones = ""; - if (Object.prototype.toString.call(args.data.zone) === '[object Array]') { - var allZonesSelected = false; - args.data.zone.forEach(function (zone) { - if (zone === null) { - allZonesSelected = true; - break; - } - }); - if(!allZonesSelected) { - zones = args.data.zone.join(","); - } - } else { - if (args.data.zone != null) { - zones = args.data.zone; - } - } - if (zones != "") { + var zones = (args.data.zone && Array.isArray(args.data.zone)) ? args.data.zone.join(',') : args.data.zone; + if (zones) { $.extend(data, { zoneids: zones }); @@ -2483,23 +2460,22 @@ isRecursive: true, data: data }; - var diskOfferings = cloudStack.listDiskOfferings(listDiskOfferingsOptions); - var diskOffering = diskOfferings[0] - if(diskOffering.details) { - if(diskOffering.details.domainnames) { + var diskOffering = cloudStack.listDiskOfferings(listDiskOfferingsOptions)[0]; + if (diskOffering.details) { + if (diskOffering.details.domain) { $.extend(diskOffering, { - domains: diskOffering.details.domainnames + domains: Object.keys(diskOffering.details.domain).join(', ') }); } - if(diskOffering.details.zonenames) { + if (diskOffering.details.zone) { $.extend(diskOffering, { - zones: diskOffering.details.zonenames + zones: Object.keys(diskOffering.details.zone).join(', ') }); } } args.response.success({ actionFilter: diskOfferingActionfilter, - data: diskOfferings[0] + data: diskOffering }); } }