diff --git a/server/src/com/cloud/api/BaseListCmd.java b/server/src/com/cloud/api/BaseListCmd.java index efc7441e973..bed689b72bd 100644 --- a/server/src/com/cloud/api/BaseListCmd.java +++ b/server/src/com/cloud/api/BaseListCmd.java @@ -2,6 +2,8 @@ package com.cloud.api; public abstract class BaseListCmd extends BaseCmd { + private static final long DEFAULT_PAGE_SIZE = 50; + ///////////////////////////////////////////////////// /////////// BaseList API parameters ///////////////// ///////////////////////////////////////////////////// @@ -31,4 +33,25 @@ public abstract class BaseListCmd extends BaseCmd { public Integer getPageSize() { return pageSize; } + + public Long getPageSizeVal() { + Long pageSize = DEFAULT_PAGE_SIZE; + Integer pageSizeInt = getPageSize(); + if (pageSizeInt != null) { + pageSize = pageSizeInt.longValue(); + } + return pageSize; + } + + public Long getStartIndex() { + Long startIndex = Long.valueOf(0); + Long pageSizeVal = getPageSizeVal(); + if (page != null) { + int pageNum = page.intValue(); + if (pageNum > 0) { + startIndex = Long.valueOf(pageSizeVal * (pageNum-1)); + } + } + return startIndex; + } } diff --git a/server/src/com/cloud/api/commands/ListCapacityCmd.java b/server/src/com/cloud/api/commands/ListCapacityCmd.java index 08659ee7b3c..a48f87f292e 100644 --- a/server/src/com/cloud/api/commands/ListCapacityCmd.java +++ b/server/src/com/cloud/api/commands/ListCapacityCmd.java @@ -30,31 +30,25 @@ import java.util.StringTokenizer; import org.apache.log4j.Logger; import com.cloud.api.BaseCmd; +import com.cloud.api.BaseListCmd; +import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; +import com.cloud.api.response.CapacityResponse; import com.cloud.capacity.CapacityVO; +import com.cloud.serializer.SerializerHelper; import com.cloud.server.Criteria; import com.cloud.storage.Storage.StoragePoolType; import com.cloud.storage.StoragePoolVO; import com.cloud.utils.Pair; - -public class ListCapacityCmd extends BaseCmd{ + +@Implementation(method="listCapacities") +public class ListCapacityCmd extends BaseListCmd { public static final Logger s_logger = Logger.getLogger(ListCapacityCmd.class.getName()); private static final DecimalFormat s_percentFormat = new DecimalFormat("####.##"); private static final String s_name = "listcapacityresponse"; - private static final List> s_properties = new ArrayList>(); - - static { - s_properties.add(new Pair(BaseCmd.Properties.HOST_ID, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.POD_ID, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.TYPE, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.ZONE_ID, Boolean.FALSE)); - - s_properties.add(new Pair(BaseCmd.Properties.PAGE, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.PAGESIZE, Boolean.FALSE)); - } ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// @@ -97,86 +91,54 @@ public class ListCapacityCmd extends BaseCmd{ /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; - } - public List> getProperties() { - return s_properties; - } - - public List> execute(Map params) { - Long zoneId = (Long)params.get(BaseCmd.Properties.ZONE_ID.getName()); - Long podId = (Long)params.get(BaseCmd.Properties.POD_ID.getName()); - Long hostId = (Long)params.get(BaseCmd.Properties.HOST_ID.getName()); - String type = (String)params.get(BaseCmd.Properties.TYPE.getName()); - Integer page = (Integer)params.get(BaseCmd.Properties.PAGE.getName()); - Integer pageSize = (Integer)params.get(BaseCmd.Properties.PAGESIZE.getName()); + } - Long startIndex = Long.valueOf(0); - int pageSizeNum = 1000000; - if (pageSize != null) { - pageSizeNum = pageSize.intValue(); - } - if (page != null) { - int pageNum = page.intValue(); - if (pageNum > 0) { - startIndex = Long.valueOf(pageSizeNum * (pageNum-1)); - } - } - - Criteria c = new Criteria ("capacityType", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum)); - c.addCriteria(Criteria.DATACENTERID, zoneId); - c.addCriteria(Criteria.PODID, podId); - c.addCriteria(Criteria.HOSTID, hostId); - c.addCriteria(Criteria.TYPE, type); - - List capacities = getManagementServer().listCapacities(c); - - if (capacities == null ) { - throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "unable to get capacity statistic"); - } - - List summedCapacities = sumCapacities(capacities); - List> capacitiesTags = new ArrayList>(); - Object[] cTag = new Object[summedCapacities.size()]; - int i=0; - - for (CapacityVO capacity : summedCapacities) { - List> capacityData = new ArrayList>(); - capacityData.add(new Pair(BaseCmd.Properties.TYPE.getName(), capacity.getCapacityType())); - capacityData.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), capacity.getDataCenterId())); - capacityData.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), getManagementServer().getDataCenterBy(capacity.getDataCenterId()).getName())); - if (capacity.getPodId() != null) { - capacityData.add(new Pair(BaseCmd.Properties.POD_ID.getName(), capacity.getPodId())); - capacityData.add(new Pair(BaseCmd.Properties.POD_NAME.getName(), (capacity.getPodId() > 0) ? getManagementServer().findHostPodById(capacity.getPodId()).getName() : "All")); - } - capacityData.add(new Pair(BaseCmd.Properties.CAPACITY_USED.getName(), Long.valueOf(capacity.getUsedCapacity()).toString())); - capacityData.add(new Pair(BaseCmd.Properties.CAPACITY_TOTAL.getName(), Long.valueOf(capacity.getTotalCapacity()).toString())); - try { - if (capacity.getTotalCapacity() != 0) { - float percent = (float)capacity.getUsedCapacity()/(float)capacity.getTotalCapacity()*100; - capacityData.add(new Pair(BaseCmd.Properties.PERCENT_USED.getName(), s_percentFormat.format(percent))); - } - else { - capacityData.add(new Pair(BaseCmd.Properties.PERCENT_USED.getName(), s_percentFormat.format(0))); - } - } catch (Exception ex) { - throw new ServerApiException (BaseCmd.INTERNAL_ERROR, "unable to get capacity statistic"); - } - cTag[i++] = capacityData; - } - - Pair capacityTag = new Pair("capacity", cTag); - capacitiesTags.add(capacityTag); - return capacitiesTags; + @Override + public Long getPageSizeVal() { + Long pageSizeVal = 1000000L; + Integer pageSize = getPageSize(); + if (pageSize != null) { + pageSizeVal = pageSize.longValue(); + } + return pageSizeVal; + } + + @Override @SuppressWarnings("unchecked") + public String getResponse() { + List capacities = (List)getResponseObject(); + + List summedCapacities = sumCapacities(capacities); + List response = new ArrayList(); + for (CapacityVO summedCapacity : summedCapacities) { + CapacityResponse capacityResponse = new CapacityResponse(); + capacityResponse.setCapacityTotal(summedCapacity.getTotalCapacity()); + capacityResponse.setCapacityType(summedCapacity.getCapacityType()); + capacityResponse.setCapacityUsed(summedCapacity.getUsedCapacity()); + capacityResponse.setPodId(summedCapacity.getPodId()); + capacityResponse.setZoneId(summedCapacity.getDataCenterId()); + // TODO: implement +// capacityResponse.setPodName(podName); +// capacityResponse.setZoneName(zoneName); + if (summedCapacity.getTotalCapacity() != 0) { + capacityResponse.setPercentUsed(s_percentFormat.format(summedCapacity.getUsedCapacity() / summedCapacity.getTotalCapacity())); + } else { + capacityResponse.setPercentUsed(s_percentFormat.format(0L)); + } + } + + return SerializerHelper.toSerializedString(response); } - public List sumCapacities(List hostCapacities) { + private List sumCapacities(List hostCapacities) { Map totalCapacityMap = new HashMap(); Map usedCapacityMap = new HashMap(); Set poolIdsToIgnore = new HashSet(); Criteria c = new Criteria(); + // TODO: implement List allStoragePools = getManagementServer().searchForStoragePools(c); for (StoragePoolVO pool : allStoragePools) { StoragePoolType poolType = pool.getPoolType(); diff --git a/server/src/com/cloud/api/commands/ListCfgsByCmd.java b/server/src/com/cloud/api/commands/ListCfgsByCmd.java index e42f6eba497..44e4771ed39 100644 --- a/server/src/com/cloud/api/commands/ListCfgsByCmd.java +++ b/server/src/com/cloud/api/commands/ListCfgsByCmd.java @@ -20,31 +20,21 @@ package com.cloud.api.commands; import java.util.ArrayList; import java.util.List; -import java.util.Map; import org.apache.log4j.Logger; -import com.cloud.api.BaseCmd; +import com.cloud.api.BaseListCmd; +import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.ServerApiException; +import com.cloud.api.response.ConfigurationResponse; import com.cloud.configuration.ConfigurationVO; -import com.cloud.server.Criteria; -import com.cloud.utils.Pair; +import com.cloud.serializer.SerializerHelper; -public class ListCfgsByCmd extends BaseCmd { +@Implementation(method="searchForConfigurations") +public class ListCfgsByCmd extends BaseListCmd { public static final Logger s_logger = Logger.getLogger(ListCfgsByCmd.class.getName()); private static final String s_name = "listconfigurationsresponse"; - private static final List> s_properties = new ArrayList>(); - - static { - s_properties.add(new Pair(BaseCmd.Properties.NAME, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.CATEGORY, Boolean.FALSE)); - - s_properties.add(new Pair(BaseCmd.Properties.KEYWORD, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.PAGE, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.PAGESIZE, Boolean.FALSE)); - } ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// @@ -74,61 +64,26 @@ public class ListCfgsByCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - public List> getProperties() { - return s_properties; - } - @Override - public List> execute(Map params) { - String name = (String) params.get(BaseCmd.Properties.NAME.getName()); - String category = (String) params.get(BaseCmd.Properties.CATEGORY.getName()); - String keyword = (String)params.get(BaseCmd.Properties.KEYWORD.getName()); - Integer page = (Integer)params.get(BaseCmd.Properties.PAGE.getName()); - Integer pageSize = (Integer)params.get(BaseCmd.Properties.PAGESIZE.getName()); - - Long startIndex = Long.valueOf(0); - int pageSizeNum = 100; - if (pageSize != null) { - pageSizeNum = pageSize.intValue(); - } - if (page != null) { - int pageNum = page.intValue(); - if (pageNum > 0) { - startIndex = Long.valueOf(pageSizeNum * (pageNum-1)); - } + @Override @SuppressWarnings("unchecked") + public String getResponse() { + List configurations = (List)getResponseObject(); + + List response = new ArrayList(); + for (ConfigurationVO cfg : configurations) { + ConfigurationResponse cfgResponse = new ConfigurationResponse(); + cfgResponse.setCategory(cfg.getCategory()); + cfgResponse.setDescription(cfg.getDescription()); + cfgResponse.setName(cfg.getName()); + cfgResponse.setValue(cfg.getValue()); + + response.add(cfgResponse); } - - Criteria c = new Criteria ("name", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum)); - if (keyword != null) { - c.addCriteria(Criteria.KEYWORD, keyword); - } else { - c.addCriteria(Criteria.NAME, name); - c.addCriteria(Criteria.CATEGORY, category); - } - - List configs = getManagementServer().searchForConfigurations(c, false); - - if (configs == null) { - throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Unable to find configuration values for specified search criteria."); - } - - List> cfgTags = new ArrayList>(); - Object[] cfgDataTags = new Object[configs.size()]; - - int i = 0; - for (ConfigurationVO config : configs) { - List> cfgData = new ArrayList>(); - cfgData.add(new Pair(BaseCmd.Properties.CATEGORY.getName(), config.getCategory())); - cfgData.add(new Pair(BaseCmd.Properties.NAME.getName(), config.getName())); - cfgData.add(new Pair(BaseCmd.Properties.VALUE.getName(), config.getValue())); - cfgData.add(new Pair(BaseCmd.Properties.DESCRIPTION.getName(), config.getDescription())); - cfgDataTags[i++] = cfgData; - } - Pair cfgTag = new Pair("configuration", cfgDataTags); - cfgTags.add(cfgTag); - return cfgTags; + + return SerializerHelper.toSerializedString(response); } } diff --git a/server/src/com/cloud/api/commands/ListClustersCmd.java b/server/src/com/cloud/api/commands/ListClustersCmd.java index 4c5ca1efdd6..6e1764fb927 100644 --- a/server/src/com/cloud/api/commands/ListClustersCmd.java +++ b/server/src/com/cloud/api/commands/ListClustersCmd.java @@ -20,34 +20,21 @@ package com.cloud.api.commands; import java.util.ArrayList; import java.util.List; -import java.util.Map; import org.apache.log4j.Logger; -import com.cloud.api.BaseCmd; +import com.cloud.api.BaseListCmd; +import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.ServerApiException; +import com.cloud.api.response.ClusterResponse; import com.cloud.dc.ClusterVO; -import com.cloud.dc.DataCenterVO; -import com.cloud.dc.HostPodVO; -import com.cloud.server.Criteria; -import com.cloud.utils.Pair; +import com.cloud.serializer.SerializerHelper; -public class ListClustersCmd extends BaseCmd { +@Implementation(method="searchForClusters") +public class ListClustersCmd extends BaseListCmd { public static final Logger s_logger = Logger.getLogger(ListServiceOfferingsCmd.class.getName()); private static final String s_name = "listclustersresponse"; - private static final List> s_properties = new ArrayList>(); - - static { - s_properties.add(new Pair(BaseCmd.Properties.ID, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.NAME, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.POD_ID, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.ZONE_ID, Boolean.FALSE)); - - s_properties.add(new Pair(BaseCmd.Properties.PAGE, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.PAGESIZE, Boolean.FALSE)); - } ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// @@ -90,68 +77,29 @@ public class ListClustersCmd extends BaseCmd { /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// + @Override public String getName() { return s_name; } - public List> getProperties() { - return s_properties; - } - @Override - public List> execute(Map params) { - Long id = (Long) params.get(BaseCmd.Properties.ID.getName()); - String name = (String) params.get(BaseCmd.Properties.NAME.getName()); - Long podId = (Long) params.get(BaseCmd.Properties.POD_ID.getName()); - Long zoneId = (Long) params.get(BaseCmd.Properties.ZONE_ID.getName()); - Integer page = (Integer) params.get(BaseCmd.Properties.PAGE.getName()); - Integer pageSize = (Integer) params.get(BaseCmd.Properties.PAGESIZE.getName()); - - Long startIndex = Long.valueOf(0); - int pageSizeNum = 50; - if (pageSize != null) { - pageSizeNum = pageSize.intValue(); - } - if (page != null) { - int pageNum = page.intValue(); - if (pageNum > 0) { - startIndex = Long.valueOf(pageSizeNum * (pageNum-1)); - } - } - Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum)); - c.addCriteria(Criteria.ID, id); - c.addCriteria(Criteria.NAME, name); - c.addCriteria(Criteria.PODID, podId); - c.addCriteria(Criteria.DATACENTERID, zoneId); + @Override @SuppressWarnings("unchecked") + public String getResponse() { + List clusters = (List)getResponseObject(); - List clusters = getManagementServer().searchForClusters(c); - - if (clusters == null) { - throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "unable to find clusters"); - } - - List> clusterTags = new ArrayList>(); - Object[] cTag = new Object[clusters.size()]; - int i = 0; + List response = new ArrayList(); for (ClusterVO cluster : clusters) { - List> clusterData = new ArrayList>(); - - clusterData.add(new Pair(BaseCmd.Properties.ID.getName(), cluster.getId())); - clusterData.add(new Pair(BaseCmd.Properties.NAME.getName(), cluster.getName())); - - HostPodVO pod = getManagementServer().findHostPodById(cluster.getPodId()); - clusterData.add(new Pair(BaseCmd.Properties.POD_ID.getName(), pod.getId())); - clusterData.add(new Pair(BaseCmd.Properties.POD_NAME.getName(), pod.getName())); - - DataCenterVO zone = getManagementServer().findDataCenterById(cluster.getDataCenterId()); - clusterData.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), zone.getId())); - clusterData.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), zone.getName())); - - cTag[i++] = clusterData; + ClusterResponse clusterResponse = new ClusterResponse(); + clusterResponse.setId(cluster.getId()); + clusterResponse.setName(cluster.getName()); + clusterResponse.setPodId(cluster.getPodId()); + clusterResponse.setZoneId(cluster.getDataCenterId()); + // TODO: implement +// HostPodVO pod = getManagementServer().findHostPodById(cluster.getPodId()); +// clusterResponse.setPodName(podName); +// DataCenterVO zone = getManagementServer().findDataCenterById(cluster.getDataCenterId()); +// clusterResponse.setZoneName(zoneName); } - - Pair clusterTag = new Pair("cluster", cTag); - clusterTags.add(clusterTag); - - return clusterTags; + + return SerializerHelper.toSerializedString(response); } } diff --git a/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java b/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java index c3c3363bc84..c9c27691868 100644 --- a/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java +++ b/server/src/com/cloud/api/commands/ListDiskOfferingsCmd.java @@ -20,34 +20,22 @@ package com.cloud.api.commands; import java.util.ArrayList; import java.util.List; -import java.util.Map; import org.apache.log4j.Logger; -import com.cloud.api.BaseCmd; +import com.cloud.api.BaseListCmd; +import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.server.Criteria; +import com.cloud.api.response.DiskOfferingResponse; +import com.cloud.serializer.SerializerHelper; import com.cloud.storage.DiskOfferingVO; -import com.cloud.utils.Pair; - -public class ListDiskOfferingsCmd extends BaseCmd { + +@Implementation(method="searchForDiskOfferings") +public class ListDiskOfferingsCmd extends BaseListCmd { public static final Logger s_logger = Logger.getLogger(ListDiskOfferingsCmd.class.getName()); private static final String s_name = "listdiskofferingsresponse"; - private static final List> s_properties = new ArrayList>(); - - static { - s_properties.add(new Pair(BaseCmd.Properties.ACCOUNT_OBJ, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.DOMAIN_ID, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.ID, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.NAME, Boolean.FALSE)); - - s_properties.add(new Pair(BaseCmd.Properties.KEYWORD, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.PAGE, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.PAGESIZE, Boolean.FALSE)); - } - ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// ///////////////////////////////////////////////////// @@ -86,62 +74,28 @@ public class ListDiskOfferingsCmd extends BaseCmd { @Override public String getName() { return s_name; - } - @Override - public List> getProperties() { - return s_properties; - } + } - @Override - public List> execute(Map params) { - Long id = (Long)params.get(BaseCmd.Properties.ID.getName()); - Long domainId = (Long)params.get(BaseCmd.Properties.DOMAIN_ID.getName()); - String name = (String)params.get(BaseCmd.Properties.NAME.getName()); - String keyword = (String)params.get(BaseCmd.Properties.KEYWORD.getName()); - Integer page = (Integer)params.get(BaseCmd.Properties.PAGE.getName()); - Integer pageSize = (Integer)params.get(BaseCmd.Properties.PAGESIZE.getName()); - - Long startIndex = Long.valueOf(0); - int pageSizeNum = 50; - if (pageSize != null) { - pageSizeNum = pageSize.intValue(); - } - if (page != null) { - int pageNum = page.intValue(); - if (pageNum > 0) { - startIndex = Long.valueOf(pageSizeNum * (pageNum-1)); - } - } - - Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum)); - if (keyword != null) { - c.addCriteria(Criteria.KEYWORD, keyword); - }else { - c.addCriteria(Criteria.ID, id); - c.addCriteria(Criteria.NAME, name); - c.addCriteria(Criteria.DOMAINID, domainId); - } - - List offerings = getManagementServer().searchForDiskOfferings(c); - - List> offeringTags = new ArrayList>(); - Object[] diskOffTag = new Object[offerings.size()]; - int i = 0; - for (DiskOfferingVO offering : offerings) { - List> offeringData = new ArrayList>(); - - offeringData.add(new Pair(BaseCmd.Properties.ID.getName(), Long.toString(offering.getId()))); - offeringData.add(new Pair(BaseCmd.Properties.DOMAIN_ID.getName(), offering.getDomainId())); - offeringData.add(new Pair(BaseCmd.Properties.DOMAIN.getName(), getManagementServer().findDomainIdById(offering.getDomainId()).getName())); - offeringData.add(new Pair(BaseCmd.Properties.NAME.getName(), offering.getName())); - offeringData.add(new Pair(BaseCmd.Properties.DISPLAY_TEXT.getName(), offering.getDisplayText())); - offeringData.add(new Pair(BaseCmd.Properties.DISK_SIZE.getName(), offering.getDiskSizeInBytes())); - offeringData.add(new Pair(BaseCmd.Properties.IS_MIRRORED.getName(), offering.isMirrored())); - offeringData.add(new Pair(BaseCmd.Properties.TAGS.getName(), offering.getTags())); - diskOffTag[i++] = offeringData; - } - Pair offeringTag = new Pair("diskoffering", diskOffTag); - offeringTags.add(offeringTag); - return offeringTags; + @Override @SuppressWarnings("unchecked") + public String getResponse() { + List offerings = (List)getResponseObject(); + + List response = new ArrayList(); + for (DiskOfferingVO offering : offerings) { + DiskOfferingResponse diskOffResp = new DiskOfferingResponse(); + diskOffResp.setCreated(offering.getCreated()); + diskOffResp.setDiskSize(offering.getDiskSize()); + diskOffResp.setDisplayText(offering.getDisplayText()); + diskOffResp.setDomainId(offering.getDomainId()); + diskOffResp.setId(offering.getId()); + diskOffResp.setName(offering.getName()); + diskOffResp.setTags(offering.getTags()); + // TODO: implement +// getManagementServer().findDomainIdById(offering.getDomainId()).getName() +// diskOffResp.setDomain(domain); + + } + + return SerializerHelper.toSerializedString(response); } } diff --git a/server/src/com/cloud/api/response/CapacityResponse.java b/server/src/com/cloud/api/response/CapacityResponse.java new file mode 100644 index 00000000000..b29b9548419 --- /dev/null +++ b/server/src/com/cloud/api/response/CapacityResponse.java @@ -0,0 +1,94 @@ +package com.cloud.api.response; + +import com.cloud.api.ResponseObject; +import com.cloud.serializer.Param; + +public class CapacityResponse implements ResponseObject { + @Param(name="type") + private Short capacityType; + + @Param(name="zoneid") + private Long zoneId; + + @Param(name="zonename") + private String zoneName; + + @Param(name="podid") + private Long podId; + + @Param(name="podname") + private String podName; + + @Param(name="capacityused") + private Long capacityUsed; + + @Param(name="capacityTotal") + private Long capacityTotal; + + @Param(name="percentused") + private String percentUsed; + + public Short getCapacityType() { + return capacityType; + } + + public void setCapacityType(Short capacityType) { + this.capacityType = capacityType; + } + + public Long getZoneId() { + return zoneId; + } + + public void setZoneId(Long zoneId) { + this.zoneId = zoneId; + } + + public String getZoneName() { + return zoneName; + } + + public void setZoneName(String zoneName) { + this.zoneName = zoneName; + } + + public Long getPodId() { + return podId; + } + + public void setPodId(Long podId) { + this.podId = podId; + } + + public String getPodName() { + return podName; + } + + public void setPodName(String podName) { + this.podName = podName; + } + + public Long getCapacityUsed() { + return capacityUsed; + } + + public void setCapacityUsed(Long capacityUsed) { + this.capacityUsed = capacityUsed; + } + + public Long getCapacityTotal() { + return capacityTotal; + } + + public void setCapacityTotal(Long capacityTotal) { + this.capacityTotal = capacityTotal; + } + + public String getPercentUsed() { + return percentUsed; + } + + public void setPercentUsed(String percentUsed) { + this.percentUsed = percentUsed; + } +} diff --git a/server/src/com/cloud/api/response/ClusterResponse.java b/server/src/com/cloud/api/response/ClusterResponse.java new file mode 100644 index 00000000000..f51b5bf2c1a --- /dev/null +++ b/server/src/com/cloud/api/response/ClusterResponse.java @@ -0,0 +1,72 @@ +package com.cloud.api.response; + +import com.cloud.api.ResponseObject; +import com.cloud.serializer.Param; + +public class ClusterResponse implements ResponseObject { + @Param(name="id") + private Long id; + + @Param(name="name") + private String name; + + @Param(name="podid") + private Long podId; + + @Param(name="podname") + private String podName; + + @Param(name="zoneid") + private Long zoneId; + + @Param(name="zonename") + private String zoneName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Long getPodId() { + return podId; + } + + public void setPodId(Long podId) { + this.podId = podId; + } + + public String getPodName() { + return podName; + } + + public void setPodName(String podName) { + this.podName = podName; + } + + public Long getZoneId() { + return zoneId; + } + + public void setZoneId(Long zoneId) { + this.zoneId = zoneId; + } + + public String getZoneName() { + return zoneName; + } + + public void setZoneName(String zoneName) { + this.zoneName = zoneName; + } +} diff --git a/server/src/com/cloud/api/response/ConfigurationResponse.java b/server/src/com/cloud/api/response/ConfigurationResponse.java new file mode 100644 index 00000000000..18d9fccada6 --- /dev/null +++ b/server/src/com/cloud/api/response/ConfigurationResponse.java @@ -0,0 +1,50 @@ +package com.cloud.api.response; + +import com.cloud.api.ResponseObject; +import com.cloud.serializer.Param; + +public class ConfigurationResponse implements ResponseObject { + @Param(name="category") + private String category; + + @Param(name="name") + private String name; + + @Param(name="value") + private String value; + + @Param(name="description") + private String description; + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/server/src/com/cloud/server/ManagementServer.java b/server/src/com/cloud/server/ManagementServer.java index 66b62ad801f..995bd250601 100644 --- a/server/src/com/cloud/server/ManagementServer.java +++ b/server/src/com/cloud/server/ManagementServer.java @@ -33,6 +33,10 @@ import com.cloud.api.commands.EnableUserCmd; import com.cloud.api.commands.GetCloudIdentifierCmd; import com.cloud.api.commands.ListAlertsCmd; import com.cloud.api.commands.ListAsyncJobsCmd; +import com.cloud.api.commands.ListCapacityCmd; +import com.cloud.api.commands.ListCfgsByCmd; +import com.cloud.api.commands.ListClustersCmd; +import com.cloud.api.commands.ListDiskOfferingsCmd; import com.cloud.api.commands.LockAccountCmd; import com.cloud.api.commands.LockUserCmd; import com.cloud.api.commands.RebootSystemVmCmd; @@ -837,7 +841,7 @@ public interface ManagementServer { * returns the a map of the names/values in the configuraton table * @return map of configuration name/values */ - List searchForConfigurations(Criteria c, boolean showHidden); + List searchForConfigurations(ListCfgsByCmd c); /** * returns the instance id of this management server. @@ -866,7 +870,7 @@ public interface ManagementServer { * @param c * @return */ - List searchForClusters(Criteria c); + List searchForClusters(ListClustersCmd c); /** * Searches for Pods by the specified search criteria @@ -1526,10 +1530,10 @@ public interface ManagementServer { /** * list all the capacity rows in capacity operations table - * @param c + * @param cmd * @return List of capacities */ - List listCapacities(Criteria c); + List listCapacities(ListCapacityCmd cmd); public long getMemoryUsagebyHost(Long hostId); @@ -1636,12 +1640,11 @@ public interface ManagementServer { /** * Search for disk offerings based on search criteria - * @param c the criteria to use for searching for disk offerings + * @param cmd the command containing the criteria to use for searching for disk offerings * @return a list of disk offerings that match the given criteria */ - List searchForDiskOfferings(Criteria c); - - + List searchForDiskOfferings(ListDiskOfferingsCmd cmd); + /** * * @param jobId async-call job id diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 5cc490e75cb..28652b7a78b 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -72,6 +72,10 @@ import com.cloud.api.commands.EnableUserCmd; import com.cloud.api.commands.GetCloudIdentifierCmd; import com.cloud.api.commands.ListAlertsCmd; import com.cloud.api.commands.ListAsyncJobsCmd; +import com.cloud.api.commands.ListCapacityCmd; +import com.cloud.api.commands.ListCfgsByCmd; +import com.cloud.api.commands.ListClustersCmd; +import com.cloud.api.commands.ListDiskOfferingsCmd; import com.cloud.api.commands.LockAccountCmd; import com.cloud.api.commands.LockUserCmd; import com.cloud.api.commands.PrepareForMaintenanceCmd; @@ -3859,14 +3863,14 @@ public class ManagementServerImpl implements ManagementServer { } @Override - public List searchForClusters(Criteria c) { - Filter searchFilter = new Filter(ClusterVO.class, c.getOrderBy(), c.getAscending(), c.getOffset(), c.getLimit()); + public List searchForClusters(ListClustersCmd cmd) { + Filter searchFilter = new Filter(ClusterVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal()); SearchCriteria sc = _clusterDao.createSearchCriteria(); - Object id = c.getCriteria(Criteria.ID); - Object name = c.getCriteria(Criteria.NAME); - Object podId = c.getCriteria(Criteria.PODID); - Object zoneId = c.getCriteria(Criteria.DATACENTERID); + Object id = cmd.getId(); + Object name = cmd.getName(); + Object podId = cmd.getPodId(); + Object zoneId = cmd.getZoneId(); if (id != null) { sc.addAnd("id", SearchCriteria.Op.EQ, id); @@ -4073,13 +4077,13 @@ public class ManagementServerImpl implements ManagementServer { } @Override - public List searchForConfigurations(Criteria c, boolean showHidden) { - Filter searchFilter = new Filter(ConfigurationVO.class, c.getOrderBy(), c.getAscending(), c.getOffset(), c.getLimit()); + public List searchForConfigurations(ListCfgsByCmd cmd) { + Filter searchFilter = new Filter(ConfigurationVO.class, "name", true, cmd.getStartIndex(), cmd.getPageSizeVal()); SearchCriteria sc = _configDao.createSearchCriteria(); - Object name = c.getCriteria(Criteria.NAME); - Object category = c.getCriteria(Criteria.CATEGORY); - Object keyword = c.getCriteria(Criteria.KEYWORD); + Object name = cmd.getConfigName(); + Object category = cmd.getCategory(); + Object keyword = cmd.getKeyword(); if (keyword != null) { SearchCriteria ssc = _configDao.createSearchCriteria(); @@ -4101,9 +4105,8 @@ public class ManagementServerImpl implements ManagementServer { sc.addAnd("category", SearchCriteria.Op.EQ, category); } - if (!showHidden) { - sc.addAnd("category", SearchCriteria.Op.NEQ, "Hidden"); - } + // hidden configurations are not displayed using the search API + sc.addAnd("category", SearchCriteria.Op.NEQ, "Hidden"); return _configDao.search(sc, searchFilter); } @@ -6302,21 +6305,7 @@ public class ManagementServerImpl implements ManagementServer { @Override public List searchForAlerts(ListAlertsCmd cmd) { - Integer page = cmd.getPage(); - Integer pageSize = cmd.getPageSize(); - Long startIndex = Long.valueOf(0); - long pageSizeNum = 50; - if (pageSize != null) { - pageSizeNum = pageSize.intValue(); - } - if (page != null) { - int pageNum = page.intValue(); - if (pageNum > 0) { - startIndex = pageSizeNum * (pageNum - 1L); - } - } - - Filter searchFilter = new Filter(AlertVO.class, "lastSent", false, startIndex, pageSizeNum); + Filter searchFilter = new Filter(AlertVO.class, "lastSent", false, cmd.getStartIndex(), cmd.getPageSizeVal()); SearchCriteria sc = _alertDao.createSearchCriteria(); @@ -6338,20 +6327,20 @@ public class ManagementServerImpl implements ManagementServer { } @Override - public List listCapacities(Criteria c) { + public List listCapacities(ListCapacityCmd cmd) { // make sure capacity is accurate before displaying it anywhere // NOTE: listCapacities is currently called by the UI only, so this // shouldn't be called much since it checks all hosts/VMs // to figure out what has been allocated. _alertMgr.recalculateCapacity(); - Filter searchFilter = new Filter(CapacityVO.class, c.getOrderBy(), c.getAscending(), c.getOffset(), c.getLimit()); + Filter searchFilter = new Filter(CapacityVO.class, "capacityType", true, cmd.getStartIndex(), cmd.getPageSizeVal()); SearchCriteria sc = _capacityDao.createSearchCriteria(); - Object type = c.getCriteria(Criteria.TYPE); - Object zoneId = c.getCriteria(Criteria.DATACENTERID); - Object podId = c.getCriteria(Criteria.PODID); - Object hostId = c.getCriteria(Criteria.HOSTID); + Object type = cmd.getType(); + Object zoneId = cmd.getZoneId(); + Object podId = cmd.getPodId(); + Object hostId = cmd.getHostId(); if (type != null) { sc.addAnd("capacityType", SearchCriteria.Op.EQ, type); @@ -6715,16 +6704,15 @@ public class ManagementServerImpl implements ManagementServer { } @Override - public List searchForDiskOfferings(Criteria c) { - Filter searchFilter = new Filter(DiskOfferingVO.class, c.getOrderBy(), c.getAscending(), c.getOffset(), c.getLimit()); + public List searchForDiskOfferings(ListDiskOfferingsCmd cmd) { + Filter searchFilter = new Filter(DiskOfferingVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal()); SearchBuilder sb = _diskOfferingDao.createSearchBuilder(); // SearchBuilder and SearchCriteria are now flexible so that the search builder can be built with all possible // search terms and only those with criteria can be set. The proper SQL should be generated as a result. - Object name = c.getCriteria(Criteria.NAME); - //Object domainId = c.getCriteria(Criteria.DOMAINID); - Object id = c.getCriteria(Criteria.ID); - Object keyword = c.getCriteria(Criteria.KEYWORD); + Object name = cmd.getDiskOfferingName(); + Object id = cmd.getId(); + Object keyword = cmd.getKeyword(); sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE); sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ); @@ -7645,21 +7633,7 @@ public class ManagementServerImpl implements ManagementServer { @Override public List searchForAsyncJobs(ListAsyncJobsCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { - Integer pageSize = cmd.getPageSize(); - Integer page = cmd.getPage(); - Long startIndex = Long.valueOf(0); - int pageSizeNum = 50; - if (pageSize != null) { - pageSizeNum = pageSize.intValue(); - } - if (page != null) { - int pageNum = page.intValue(); - if (pageNum > 0) { - startIndex = Long.valueOf(pageSizeNum * (pageNum-1)); - } - } - - Filter searchFilter = new Filter(AsyncJobVO.class, "id", true, startIndex, Long.valueOf(pageSizeNum)); + Filter searchFilter = new Filter(AsyncJobVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal()); SearchBuilder sb = _jobDao.createSearchBuilder(); Object accountId = null; @@ -8025,19 +7999,12 @@ public class ManagementServerImpl implements ManagementServer { User user = findUserById(userId); if ((user == null) || (user.getRemoved() != null)) throw new InvalidParameterValueException("Unable to find active user by id " + userId); - - Criteria c = new Criteria (); - c.addCriteria(Criteria.NAME, "cloud.identifier"); - List configs = searchForConfigurations(c, true); - - String cloudIdentifier; - if (configs == null || configs.size() != 1) { - cloudIdentifier = ""; - } else { - cloudIdentifier = configs.get(0).getValue(); + String cloudIdentifier = _configDao.getValue("cloud.identifier"); + if (cloudIdentifier == null) { + cloudIdentifier = ""; } - + String signature = ""; try { //get the user obj to get his secret key