This is an automated email from the ASF dual-hosted git repository. rohit pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/master by this push: new f653e61 server: support sort_key for vpc_offerings table (#3268) f653e61 is described below commit f653e6149c53c9316bcccaf23f407c1be19eecb3 Author: Anurag Awasthi <anurag.awas...@shapeblue.com> AuthorDate: Wed Jun 26 08:02:19 2019 +0530 server: support sort_key for vpc_offerings table (#3268) Fixes #2742 UI Supported ordering VPC Offerings but the API did not have that support implemented. This makes the change in updateVPCOfferings and listVPCOfferings API calls, along with necessary database changes for supporting sorting of VPC Offerings. --- .../cloud/network/vpc/VpcProvisioningService.java | 12 ++++++---- .../command/admin/vpc/UpdateVPCOfferingCmd.java | 10 +++++++- .../java/com/cloud/network/vpc/VpcOfferingVO.java | 11 +++++++++ .../resources/META-INF/db/schema-41200to41300.sql | 4 +++- .../java/com/cloud/network/vpc/VpcManagerImpl.java | 27 ++++++++++++++++++++-- 5 files changed, 55 insertions(+), 9 deletions(-) diff --git a/api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.java b/api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.java index cce2850..e682d9f 100644 --- a/api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.java +++ b/api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.java @@ -20,6 +20,8 @@ package com.cloud.network.vpc; import java.util.List; import java.util.Map; +import org.apache.cloudstack.api.command.admin.vpc.UpdateVPCOfferingCmd; + import com.cloud.utils.Pair; public interface VpcProvisioningService { @@ -40,13 +42,13 @@ public interface VpcProvisioningService { */ public boolean deleteVpcOffering(long offId); + @Deprecated + public VpcOffering updateVpcOffering(long vpcOffId, String vpcOfferingName, String displayText, String state); + /** - * @param vpcOffId - * @param vpcOfferingName - * @param displayText - * @param state + * @param vpcOfferingCmd * @return */ - public VpcOffering updateVpcOffering(long vpcOffId, String vpcOfferingName, String displayText, String state); + public VpcOffering updateVpcOffering(final UpdateVPCOfferingCmd vpcOfferingCmd); } diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCOfferingCmd.java index 5af47d3..f681ca9 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCOfferingCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCOfferingCmd.java @@ -52,6 +52,9 @@ public class UpdateVPCOfferingCmd extends BaseAsyncCmd { @Parameter(name = ApiConstants.STATE, type = CommandType.STRING, description = "update state for the VPC offering; " + "supported states - Enabled/Disabled") private String state; + @Parameter(name = ApiConstants.SORT_KEY, type = CommandType.INTEGER, description = "sort key of the VPC offering, integer") + private Integer sortKey; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -72,6 +75,11 @@ public class UpdateVPCOfferingCmd extends BaseAsyncCmd { return state; } + public Integer getSortKey() { + return sortKey; + } + + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// @@ -87,7 +95,7 @@ public class UpdateVPCOfferingCmd extends BaseAsyncCmd { @Override public void execute() { - VpcOffering result = _vpcProvSvc.updateVpcOffering(getId(), getVpcOfferingName(), getDisplayText(), getState()); + VpcOffering result = _vpcProvSvc.updateVpcOffering(this); if (result != null) { VpcOfferingResponse response = _responseGenerator.createVpcOfferingResponse(result); response.setResponseName(getCommandName()); diff --git a/engine/schema/src/main/java/com/cloud/network/vpc/VpcOfferingVO.java b/engine/schema/src/main/java/com/cloud/network/vpc/VpcOfferingVO.java index 62e8cf3..60961e5 100644 --- a/engine/schema/src/main/java/com/cloud/network/vpc/VpcOfferingVO.java +++ b/engine/schema/src/main/java/com/cloud/network/vpc/VpcOfferingVO.java @@ -76,6 +76,9 @@ public class VpcOfferingVO implements VpcOffering { @Column(name = "redundant_router_service") boolean redundantRouter = false; + @Column(name = "sort_key") + int sortKey; + public VpcOfferingVO() { this.uuid = UUID.randomUUID().toString(); } @@ -183,4 +186,12 @@ public class VpcOfferingVO implements VpcOffering { return this.redundantRouter; } + public void setSortKey(int key) { + sortKey = key; + } + + public int getSortKey() { + return sortKey; + } + } 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 97e9fac..c0b0751 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 @@ -26,6 +26,8 @@ INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervis -- DPDK client and server mode support ALTER TABLE `cloud`.`service_offering_details` CHANGE COLUMN `value` `value` TEXT NOT NULL; +ALTER TABLE `cloud`.`vpc_offerings` ADD COLUMN `sort_key` int(32) NOT NULL default 0 COMMENT 'sort key used for customising sort method'; + -- Add `sort_key` column to data_center ALTER TABLE `cloud`.`data_center` ADD COLUMN `sort_key` INT(32) NOT NULL DEFAULT 0; @@ -67,4 +69,4 @@ CREATE VIEW `cloud`.`data_center_view` AS left join `cloud`.`dedicated_resources` ON data_center.id = dedicated_resources.data_center_id left join - `cloud`.`affinity_group` ON dedicated_resources.affinity_group_id = affinity_group.id; + `cloud`.`affinity_group` ON dedicated_resources.affinity_group_id = affinity_group.id; \ No newline at end of file diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java index a4ea50d..33ae1cc 100644 --- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java @@ -39,6 +39,7 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import org.apache.cloudstack.acl.ControlledEntity.ACLType; +import org.apache.cloudstack.api.command.admin.vpc.UpdateVPCOfferingCmd; import org.apache.cloudstack.api.command.user.vpc.ListPrivateGatewaysCmd; import org.apache.cloudstack.api.command.user.vpc.ListStaticRoutesCmd; import org.apache.cloudstack.context.CallContext; @@ -579,7 +580,9 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @Override public Pair<List<? extends VpcOffering>, Integer> listVpcOfferings(final Long id, final String name, final String displayText, final List<String> supportedServicesStr, final Boolean isDefault, final String keyword, final String state, final Long startIndex, final Long pageSizeVal) { - final Filter searchFilter = new Filter(VpcOfferingVO.class, "created", false, null, null); + Boolean isAscending = Boolean.parseBoolean(_configDao.getValue("sortkey.algorithm")); + isAscending = isAscending == null ? Boolean.TRUE : isAscending; + final Filter searchFilter = new Filter(VpcOfferingVO.class, "sortKey", isAscending, null, null); final SearchCriteria<VpcOfferingVO> sc = _vpcOffDao.createSearchCriteria(); if (keyword != null) { @@ -692,7 +695,23 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @Override @ActionEvent(eventType = EventTypes.EVENT_VPC_OFFERING_UPDATE, eventDescription = "updating vpc offering") - public VpcOffering updateVpcOffering(final long vpcOffId, final String vpcOfferingName, final String displayText, final String state) { + public VpcOffering updateVpcOffering(long vpcOffId, String vpcOfferingName, String displayText, String state) { + return updateVpcOfferingInternal(vpcOffId, vpcOfferingName, displayText, state, null); + } + + @Override + @ActionEvent(eventType = EventTypes.EVENT_VPC_OFFERING_UPDATE, eventDescription = "updating vpc offering") + public VpcOffering updateVpcOffering(final UpdateVPCOfferingCmd vpcOfferingCmd) { + final long vpcOffId = vpcOfferingCmd.getId(); + final String vpcOfferingName = vpcOfferingCmd.getVpcOfferingName(); + final String displayText = vpcOfferingCmd.getDisplayText(); + final String state = vpcOfferingCmd.getState(); + final Integer sortKey = vpcOfferingCmd.getSortKey(); + + return updateVpcOfferingInternal(vpcOffId, vpcOfferingName, displayText, state, sortKey); + } + + private VpcOffering updateVpcOfferingInternal(long vpcOffId, String vpcOfferingName, String displayText, String state, Integer sortKey) { CallContext.current().setEventDetails(" Id: " + vpcOffId); // Verify input parameters @@ -724,6 +743,10 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } } + if (sortKey != null) { + offering.setSortKey(sortKey); + } + if (_vpcOffDao.update(vpcOffId, offering)) { s_logger.debug("Updated VPC offeirng id=" + vpcOffId); return _vpcOffDao.findById(vpcOffId);