bug 7509: adding search by id for security groups, also refactoring a few method names to use the new scheme

status 7509: resolved fixed
This commit is contained in:
abhishek 2010-12-16 16:47:04 -08:00
parent 4a6933fa9e
commit d73e06a938
2 changed files with 23 additions and 7 deletions

View File

@ -51,6 +51,9 @@ public class ListSecurityGroupsCmd extends BaseListCmd {
@Parameter(name=ApiConstants.VIRTUAL_MACHINE_ID, type=CommandType.LONG, description="lists security groups by virtual machine id")
private Long virtualMachineId;
@Parameter(name=ApiConstants.ID, type=CommandType.LONG, description="list the security group by the id provided")
private Long id;
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
@ -70,6 +73,10 @@ public class ListSecurityGroupsCmd extends BaseListCmd {
public Long getVirtualMachineId() {
return virtualMachineId;
}
public Long getId(){
return id;
}
/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////

View File

@ -1203,6 +1203,7 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG
Long instanceId = cmd.getVirtualMachineId();
String networkGroup = cmd.getSecurityGroupName();
Boolean recursive = Boolean.FALSE;
Long id = cmd.getId();
// permissions check
if ((account == null) || isAdmin(account.getType())) {
@ -1253,6 +1254,15 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG
}
}
List<SecurityGroupRulesVO> securityRulesList = new ArrayList<SecurityGroupRulesVO>();
if(id != null){
SecurityGroupRulesVO secGrp = _securityGroupRulesDao.findById(id);
if(secGrp != null)
securityRulesList.add(secGrp);
return securityRulesList;
}
Filter searchFilter = new Filter(SecurityGroupVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
Object keyword = cmd.getKeyword();
@ -1288,20 +1298,19 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG
}
}
List<SecurityGroupVO> networkGroups = _securityGroupDao.search(sc, searchFilter);
List<SecurityGroupRulesVO> networkRulesList = new ArrayList<SecurityGroupRulesVO>();
for (SecurityGroupVO group : networkGroups) {
networkRulesList.addAll(_securityGroupRulesDao.listSecurityRulesByGroupId(group.getId()));
List<SecurityGroupVO> securityGroups = _securityGroupDao.search(sc, searchFilter);
for (SecurityGroupVO group : securityGroups) {
securityRulesList.addAll(_securityGroupRulesDao.listSecurityRulesByGroupId(group.getId()));
}
if (instanceId != null) {
return listNetworkGroupRulesByVM(instanceId.longValue());
return listSecurityGroupRulesByVM(instanceId.longValue());
}
return networkRulesList;
return securityRulesList;
}
private List<SecurityGroupRulesVO> listNetworkGroupRulesByVM(long vmId) {
private List<SecurityGroupRulesVO> listSecurityGroupRulesByVM(long vmId) {
List<SecurityGroupRulesVO> results = new ArrayList<SecurityGroupRulesVO>();
List<SecurityGroupVMMapVO> networkGroupMappings = _securityGroupVMMapDao.listByInstanceId(vmId);
if (networkGroupMappings != null) {