mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-8133 Added Virtualmachine count and ID's to listSecurityGroups response.
See issue CLOUDSTACK-8133 for more information. Added null check by comment of Koushik Das. Added brackets by comment of Wido den Hollander. Removed a call to findById() by comment of Koushik Das. Signed-off-by: Wido den Hollander <wido@widodh.nl>
This commit is contained in:
parent
792c27c9bd
commit
03f48872d6
|
|
@ -271,6 +271,7 @@ public class ApiConstants {
|
|||
public static final String VIRTUAL_MACHINE_ID = "virtualmachineid";
|
||||
public static final String VIRTUAL_MACHINE_IDS = "virtualmachineids";
|
||||
public static final String VIRTUAL_MACHINE_ID_IP = "vmidipmap";
|
||||
public static final String VIRTUAL_MACHINE_COUNT = "virtualmachinecount";
|
||||
public static final String USAGE_ID = "usageid";
|
||||
|
||||
public static final String VLAN = "vlan";
|
||||
|
|
|
|||
|
|
@ -19,14 +19,13 @@ package org.apache.cloudstack.api.response;
|
|||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.api.BaseResponse;
|
||||
import org.apache.cloudstack.api.EntityReference;
|
||||
|
||||
import com.cloud.network.security.SecurityGroup;
|
||||
import com.cloud.serializer.Param;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@EntityReference(value = SecurityGroup.class)
|
||||
|
|
@ -76,7 +75,16 @@ public class SecurityGroupResponse extends BaseResponse implements ControlledVie
|
|||
@Param(description = "the list of resource tags associated with the rule", responseObject = ResourceTagResponse.class)
|
||||
private Set<ResourceTagResponse> tags;
|
||||
|
||||
@SerializedName(ApiConstants.VIRTUAL_MACHINE_COUNT)
|
||||
@Param(description = "the number of virtualmachines associated with this securitygroup", since = "4.6.0")
|
||||
private Integer virtualMachineCount;
|
||||
|
||||
@SerializedName(ApiConstants.VIRTUAL_MACHINE_IDS)
|
||||
@Param(description = "the list of virtualmachine ids associated with this securitygroup", since = "4.6.0")
|
||||
private Set<String> virtualMachineIds;
|
||||
|
||||
public SecurityGroupResponse() {
|
||||
this.virtualMachineIds = new LinkedHashSet<String>();
|
||||
this.ingressRules = new LinkedHashSet<SecurityGroupRuleResponse>();
|
||||
this.egressRules = new LinkedHashSet<SecurityGroupRuleResponse>();
|
||||
this.tags = new LinkedHashSet<ResourceTagResponse>();
|
||||
|
|
@ -176,4 +184,16 @@ public class SecurityGroupResponse extends BaseResponse implements ControlledVie
|
|||
public void addTag(ResourceTagResponse tag) {
|
||||
this.tags.add(tag);
|
||||
}
|
||||
|
||||
public void setVirtualMachineCount(Integer virtualMachineCount) {
|
||||
this.virtualMachineCount = virtualMachineCount;
|
||||
}
|
||||
|
||||
public void setVirtualMachineIds(Set<String> virtualMachineIds) {
|
||||
this.virtualMachineIds = virtualMachineIds;
|
||||
}
|
||||
|
||||
public void addVirtualMachineId(String virtualMachineId) {
|
||||
this.virtualMachineIds.add(virtualMachineId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,25 +24,28 @@ import java.util.Set;
|
|||
import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import com.cloud.server.ResourceTag;
|
||||
import org.apache.cloudstack.api.response.ResourceTagResponse;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import org.apache.cloudstack.api.response.SecurityGroupResponse;
|
||||
import org.apache.cloudstack.api.response.SecurityGroupRuleResponse;
|
||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.api.ApiDBUtils;
|
||||
import com.cloud.api.ApiResponseHelper;
|
||||
import com.cloud.api.query.vo.ResourceTagJoinVO;
|
||||
import com.cloud.api.query.vo.SecurityGroupJoinVO;
|
||||
import com.cloud.network.security.SecurityGroup;
|
||||
import com.cloud.network.security.SecurityGroupVMMapVO;
|
||||
import com.cloud.network.security.SecurityRule.SecurityRuleType;
|
||||
import com.cloud.network.security.dao.SecurityGroupVMMapDao;
|
||||
import com.cloud.server.ResourceTag;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.vm.UserVmVO;
|
||||
import com.cloud.vm.dao.UserVmDao;
|
||||
|
||||
@Component
|
||||
@Local(value = {SecurityGroupJoinDao.class})
|
||||
|
|
@ -51,9 +54,12 @@ public class SecurityGroupJoinDaoImpl extends GenericDaoBase<SecurityGroupJoinVO
|
|||
|
||||
@Inject
|
||||
private ConfigurationDao _configDao;
|
||||
|
||||
@Inject
|
||||
private ResourceTagJoinDao _resourceTagJoinDao;
|
||||
@Inject
|
||||
private SecurityGroupVMMapDao _securityGroupVMMapDao;
|
||||
@Inject
|
||||
private UserVmDao _userVmDao;
|
||||
|
||||
private final SearchBuilder<SecurityGroupJoinVO> sgSearch;
|
||||
|
||||
|
|
@ -125,6 +131,17 @@ public class SecurityGroupJoinDaoImpl extends GenericDaoBase<SecurityGroupJoinVO
|
|||
}
|
||||
}
|
||||
|
||||
List<SecurityGroupVMMapVO> securityGroupVmMap = _securityGroupVMMapDao.listBySecurityGroup(vsg.getId());
|
||||
s_logger.debug("newSecurityGroupResponse() -> virtualmachine count: " + securityGroupVmMap.size());
|
||||
sgResponse.setVirtualMachineCount(securityGroupVmMap.size());
|
||||
|
||||
for(SecurityGroupVMMapVO securityGroupVMMapVO : securityGroupVmMap) {
|
||||
final UserVmVO userVmVO = _userVmDao.findById(securityGroupVMMapVO.getInstanceId());
|
||||
if (userVmVO != null) {
|
||||
sgResponse.addVirtualMachineId(userVmVO.getUuid());
|
||||
}
|
||||
}
|
||||
|
||||
// update tag information
|
||||
Long tag_id = vsg.getTagId();
|
||||
if (tag_id != null && tag_id.longValue() > 0) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue