mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	bug 7389: made ip optinal for list pf rules, all rules for the account will be listed when ip is not available
status 7389: resolved fixed
This commit is contained in:
		
							parent
							
								
									6dbf6fe67a
								
							
						
					
					
						commit
						02ae55cc96
					
				| @ -40,7 +40,7 @@ public class ListPortForwardingRulesCmd extends BaseListCmd { | ||||
|     //////////////// API parameters ///////////////////// | ||||
|     ///////////////////////////////////////////////////// | ||||
| 
 | ||||
|     @Parameter(name=ApiConstants.IP_ADDRESS, type=CommandType.STRING, required=true, description="the IP address of the port forwarding services") | ||||
|     @Parameter(name=ApiConstants.IP_ADDRESS, type=CommandType.STRING, description="the IP address of the port forwarding services") | ||||
|     private String ipAddress; | ||||
| 
 | ||||
|     ///////////////////////////////////////////////////// | ||||
|  | ||||
| @ -345,17 +345,22 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager { | ||||
|      | ||||
|     @Override | ||||
|     public List<? extends PortForwardingRule> listPortForwardingRules(ListPortForwardingRulesCmd cmd) { | ||||
|         Ip ipAddress = new Ip(cmd.getIpAddress()); | ||||
|         Account caller = UserContext.current().getCaller(); | ||||
| 
 | ||||
|         IPAddressVO ipAddressVO = _ipAddressDao.findById(ipAddress); | ||||
|         if (ipAddressVO == null || !ipAddressVO.readyToUse()) { | ||||
|             throw new InvalidParameterValueException("Ip address not ready for port forwarding rules yet: " + ipAddress); | ||||
|         } | ||||
| 
 | ||||
|         List<PortForwardingRuleVO> rules = _forwardingDao.listByIp(ipAddress); | ||||
|         _accountMgr.checkAccess(caller, rules.toArray(new PortForwardingRuleVO[rules.size()])); | ||||
|         List<PortForwardingRuleVO> rules = null; | ||||
|          | ||||
|         if(cmd.getIpAddress() != null){ | ||||
|             Ip ipAddress = new Ip(cmd.getIpAddress()); | ||||
|             IPAddressVO ipAddressVO = _ipAddressDao.findById(ipAddress); | ||||
|             if (ipAddressVO == null || !ipAddressVO.readyToUse()) { | ||||
|                 throw new InvalidParameterValueException("Ip address not ready for port forwarding rules yet: " + ipAddress); | ||||
|             } | ||||
| 
 | ||||
|             rules = _forwardingDao.listByIp(ipAddress); | ||||
|             _accountMgr.checkAccess(caller, rules.toArray(new PortForwardingRuleVO[rules.size()])); | ||||
|         } else { | ||||
|             rules = _forwardingDao.listByAccount(caller.getAccountId()); | ||||
|         } | ||||
|         return rules; | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -41,4 +41,6 @@ public interface PortForwardingRulesDao extends GenericDao<PortForwardingRuleVO, | ||||
| 	List<PortForwardingRuleVO> listByVm(Long vmId); | ||||
| 	 | ||||
| 	List<PortForwardingRuleVO> listByNetworkId(long networkId); | ||||
| 	 | ||||
| 	List<PortForwardingRuleVO> listByAccount(long accountId); | ||||
| } | ||||
|  | ||||
| @ -38,6 +38,7 @@ public class PortForwardingRulesDaoImpl extends GenericDaoBase<PortForwardingRul | ||||
|     protected final SearchBuilder<PortForwardingRuleVO> ApplicationSearch; | ||||
|     protected final SearchBuilder<PortForwardingRuleVO> ActiveRulesSearch; | ||||
|     protected final SearchBuilder<PortForwardingRuleVO> AllRulesSearchByVM; | ||||
|     protected final SearchBuilder<PortForwardingRuleVO> ActiveRulesSearchByAccount; | ||||
|      | ||||
|     protected PortForwardingRulesDaoImpl() { | ||||
|         super(); | ||||
| @ -61,6 +62,11 @@ public class PortForwardingRulesDaoImpl extends GenericDaoBase<PortForwardingRul | ||||
|         AllRulesSearchByVM = createSearchBuilder(); | ||||
|         AllRulesSearchByVM.and("vmId", AllRulesSearchByVM.entity().getVirtualMachineId(), Op.EQ); | ||||
|         AllRulesSearchByVM.done(); | ||||
|          | ||||
|         ActiveRulesSearchByAccount = createSearchBuilder(); | ||||
|         ActiveRulesSearchByAccount.and("accountId", ActiveRulesSearchByAccount.entity().getAccountId(), Op.EQ); | ||||
|         ActiveRulesSearchByAccount.and("state", ActiveRulesSearchByAccount.entity().getState(), Op.NEQ); | ||||
|         ActiveRulesSearchByAccount.done(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
| @ -117,5 +123,13 @@ public class PortForwardingRulesDaoImpl extends GenericDaoBase<PortForwardingRul | ||||
|         sc.setParameters("networkId", networkId); | ||||
|         return listBy(sc); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public List<PortForwardingRuleVO> listByAccount(long accountId) { | ||||
|         SearchCriteria<PortForwardingRuleVO> sc = ActiveRulesSearchByAccount.create(); | ||||
|         sc.setParameters("accountId", accountId); | ||||
|         sc.setParameters("state", State.Revoke); | ||||
|         return listBy(sc); | ||||
|     } | ||||
|      | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user