mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-04 00:02:37 +01:00 
			
		
		
		
	Set domR access details (name, privateIp) for various commands - PF/LB/IPAssoc
This commit is contained in:
		
							parent
							
								
									769b89b530
								
							
						
					
					
						commit
						b228ae6acb
					
				@ -25,37 +25,21 @@ import com.cloud.agent.api.to.IpAddressTO;
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class IPAssocCommand extends RoutingCommand {
 | 
					public class IPAssocCommand extends RoutingCommand {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
	private String routerName;
 | 
					 | 
				
			||||||
	private String routerIp;
 | 
					 | 
				
			||||||
	IpAddressTO[] ipAddresses;
 | 
						IpAddressTO[] ipAddresses;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	protected IPAssocCommand() {
 | 
						protected IPAssocCommand() {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public IPAssocCommand(String routerName, String privateIpAddress, IpAddressTO[] ips) {
 | 
						public IPAssocCommand(IpAddressTO[] ips) {
 | 
				
			||||||
		this.setRouterName(routerName);
 | 
					 | 
				
			||||||
		this.routerIp = privateIpAddress;
 | 
					 | 
				
			||||||
		this.ipAddresses = ips;
 | 
							this.ipAddresses = ips;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public String getRouterIp() {
 | 
					 | 
				
			||||||
		return routerIp;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public boolean executeInSequence() {
 | 
					    public boolean executeInSequence() {
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public void setRouterName(String routerName) {
 | 
					 | 
				
			||||||
		this.routerName = routerName;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getRouterName() {
 | 
					 | 
				
			||||||
		return routerName;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public IpAddressTO[] getIpAddresses() {
 | 
					    public IpAddressTO[] getIpAddresses() {
 | 
				
			||||||
        return ipAddresses;
 | 
					        return ipAddresses;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -24,6 +24,9 @@ import com.cloud.agent.api.Command;
 | 
				
			|||||||
public abstract class RoutingCommand extends Command {
 | 
					public abstract class RoutingCommand extends Command {
 | 
				
			||||||
    HashMap<String, String> accessDetails = new HashMap<String, String>(0);
 | 
					    HashMap<String, String> accessDetails = new HashMap<String, String>(0);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    public static final String ROUTER_NAME = "router.name";
 | 
				
			||||||
 | 
					    public static final String ROUTER_IP = "router.ip";
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    protected RoutingCommand() {
 | 
					    protected RoutingCommand() {
 | 
				
			||||||
        super();
 | 
					        super();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -48,6 +48,7 @@ import com.cloud.agent.api.routing.DhcpEntryCommand;
 | 
				
			|||||||
import com.cloud.agent.api.routing.IPAssocCommand;
 | 
					import com.cloud.agent.api.routing.IPAssocCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.IpAssocAnswer;
 | 
					import com.cloud.agent.api.routing.IpAssocAnswer;
 | 
				
			||||||
import com.cloud.agent.api.routing.LoadBalancerCfgCommand;
 | 
					import com.cloud.agent.api.routing.LoadBalancerCfgCommand;
 | 
				
			||||||
 | 
					import com.cloud.agent.api.routing.RoutingCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.SavePasswordCommand;
 | 
					import com.cloud.agent.api.routing.SavePasswordCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.VmDataCommand;
 | 
					import com.cloud.agent.api.routing.VmDataCommand;
 | 
				
			||||||
import com.cloud.agent.api.to.IpAddressTO;
 | 
					import com.cloud.agent.api.to.IpAddressTO;
 | 
				
			||||||
@ -209,8 +210,10 @@ public class VirtualRoutingResource implements Manager {
 | 
				
			|||||||
        String[] results = new String[cmd.getIpAddresses().length];
 | 
					        String[] results = new String[cmd.getIpAddresses().length];
 | 
				
			||||||
        int i = 0;
 | 
					        int i = 0;
 | 
				
			||||||
        String result = null;
 | 
					        String result = null;
 | 
				
			||||||
 | 
					        String routerName = cmd.getAccessDetail(RoutingCommand.ROUTER_NAME);
 | 
				
			||||||
 | 
					        String routerIp = cmd.getAccessDetail(RoutingCommand.ROUTER_IP);
 | 
				
			||||||
        for (IpAddressTO ip : ips) {
 | 
					        for (IpAddressTO ip : ips) {
 | 
				
			||||||
            result = assignPublicIpAddress(cmd.getRouterName(), cmd.getRouterIp(), ip.getPublicIp(), ip.isAdd(), ip.isSourceNat(), ip.getVlanId(), ip.getVlanGateway(), ip.getVlanNetmask());
 | 
					            result = assignPublicIpAddress(routerName, routerIp, ip.getPublicIp(), ip.isAdd(), ip.isSourceNat(), ip.getVlanId(), ip.getVlanGateway(), ip.getVlanNetmask());
 | 
				
			||||||
            if (result != null) {
 | 
					            if (result != null) {
 | 
				
			||||||
                results[i++] = IpAssocAnswer.errorResult;
 | 
					                results[i++] = IpAssocAnswer.errorResult;
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
 | 
				
			|||||||
@ -126,6 +126,7 @@ import com.cloud.agent.api.routing.IPAssocCommand;
 | 
				
			|||||||
import com.cloud.agent.api.routing.IpAssocAnswer;
 | 
					import com.cloud.agent.api.routing.IpAssocAnswer;
 | 
				
			||||||
import com.cloud.agent.api.routing.LoadBalancerCfgCommand;
 | 
					import com.cloud.agent.api.routing.LoadBalancerCfgCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
 | 
					import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
 | 
				
			||||||
 | 
					import com.cloud.agent.api.routing.RoutingCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.SavePasswordCommand;
 | 
					import com.cloud.agent.api.routing.SavePasswordCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.SetPortForwardingRulesAnswer;
 | 
					import com.cloud.agent.api.routing.SetPortForwardingRulesAnswer;
 | 
				
			||||||
import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
 | 
					import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
 | 
				
			||||||
@ -171,7 +172,6 @@ import com.cloud.utils.Ternary;
 | 
				
			|||||||
import com.cloud.utils.component.ComponentLocator;
 | 
					import com.cloud.utils.component.ComponentLocator;
 | 
				
			||||||
import com.cloud.utils.exception.CloudRuntimeException;
 | 
					import com.cloud.utils.exception.CloudRuntimeException;
 | 
				
			||||||
import com.cloud.utils.net.NetUtils;
 | 
					import com.cloud.utils.net.NetUtils;
 | 
				
			||||||
import com.cloud.utils.script.Script;
 | 
					 | 
				
			||||||
import com.cloud.vm.DiskProfile;
 | 
					import com.cloud.vm.DiskProfile;
 | 
				
			||||||
import com.cloud.vm.State;
 | 
					import com.cloud.vm.State;
 | 
				
			||||||
import com.cloud.vm.VirtualMachine;
 | 
					import com.cloud.vm.VirtualMachine;
 | 
				
			||||||
@ -191,9 +191,9 @@ import com.xensource.xenapi.SR;
 | 
				
			|||||||
import com.xensource.xenapi.Session;
 | 
					import com.xensource.xenapi.Session;
 | 
				
			||||||
import com.xensource.xenapi.Types;
 | 
					import com.xensource.xenapi.Types;
 | 
				
			||||||
import com.xensource.xenapi.Types.BadServerResponse;
 | 
					import com.xensource.xenapi.Types.BadServerResponse;
 | 
				
			||||||
 | 
					import com.xensource.xenapi.Types.IpConfigurationMode;
 | 
				
			||||||
import com.xensource.xenapi.Types.VmPowerState;
 | 
					import com.xensource.xenapi.Types.VmPowerState;
 | 
				
			||||||
import com.xensource.xenapi.Types.XenAPIException;
 | 
					import com.xensource.xenapi.Types.XenAPIException;
 | 
				
			||||||
import com.xensource.xenapi.Types.IpConfigurationMode;
 | 
					 | 
				
			||||||
import com.xensource.xenapi.VBD;
 | 
					import com.xensource.xenapi.VBD;
 | 
				
			||||||
import com.xensource.xenapi.VDI;
 | 
					import com.xensource.xenapi.VDI;
 | 
				
			||||||
import com.xensource.xenapi.VIF;
 | 
					import com.xensource.xenapi.VIF;
 | 
				
			||||||
@ -933,9 +933,8 @@ public abstract class CitrixResourceBase implements ServerResource {
 | 
				
			|||||||
    protected SetPortForwardingRulesAnswer execute(SetPortForwardingRulesCommand cmd) {
 | 
					    protected SetPortForwardingRulesAnswer execute(SetPortForwardingRulesCommand cmd) {
 | 
				
			||||||
        Connection conn = getConnection();
 | 
					        Connection conn = getConnection();
 | 
				
			||||||
        String args;
 | 
					        String args;
 | 
				
			||||||
        String routerIp = cmd.getAccessDetail("router.ip");
 | 
					        String routerName = cmd.getAccessDetail(RoutingCommand.ROUTER_NAME);
 | 
				
			||||||
        String routerName = cmd.getAccessDetail("router.name");
 | 
					        String routerIp = cmd.getAccessDetail(RoutingCommand.ROUTER_IP);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        String[] results = new String[cmd.getRules().length];
 | 
					        String[] results = new String[cmd.getRules().length];
 | 
				
			||||||
        int i = 0;
 | 
					        int i = 0;
 | 
				
			||||||
        for (PortForwardingRuleTO rule : cmd.getRules()) {
 | 
					        for (PortForwardingRuleTO rule : cmd.getRules()) {
 | 
				
			||||||
@ -1252,10 +1251,13 @@ public abstract class CitrixResourceBase implements ServerResource {
 | 
				
			|||||||
        Connection conn = getConnection();
 | 
					        Connection conn = getConnection();
 | 
				
			||||||
        String[] results = new String[cmd.getIpAddresses().length];
 | 
					        String[] results = new String[cmd.getIpAddresses().length];
 | 
				
			||||||
        int i = 0;
 | 
					        int i = 0;
 | 
				
			||||||
 | 
					        String routerName = cmd.getAccessDetail(RoutingCommand.ROUTER_NAME);
 | 
				
			||||||
 | 
					        String routerIp = cmd.getAccessDetail(RoutingCommand.ROUTER_IP);
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            IpAddressTO[] ips = cmd.getIpAddresses();   
 | 
					            IpAddressTO[] ips = cmd.getIpAddresses(); 
 | 
				
			||||||
            for (IpAddressTO ip : ips) {
 | 
					            for (IpAddressTO ip : ips) {
 | 
				
			||||||
                assignPublicIpAddress(conn, cmd.getRouterName(), cmd.getRouterIp(), ip.getPublicIp(), ip.isAdd(), ip.isFirstIP(), ip.isSourceNat(), ip.getVlanId(),
 | 
					                
 | 
				
			||||||
 | 
					                assignPublicIpAddress(conn, routerName, routerIp, ip.getPublicIp(), ip.isAdd(), ip.isFirstIP(), ip.isSourceNat(), ip.getVlanId(),
 | 
				
			||||||
                        ip.getVlanGateway(), ip.getVlanNetmask(), ip.getVifMacAddress(), ip.getGuestIp());
 | 
					                        ip.getVlanGateway(), ip.getVlanNetmask(), ip.getVifMacAddress(), ip.getGuestIp());
 | 
				
			||||||
                results[i++] = ip.getPublicIp() + " - success";
 | 
					                results[i++] = ip.getPublicIp() + " - success";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -52,6 +52,7 @@ import com.cloud.agent.api.routing.DhcpEntryCommand;
 | 
				
			|||||||
import com.cloud.agent.api.routing.IPAssocCommand;
 | 
					import com.cloud.agent.api.routing.IPAssocCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
 | 
					import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
 | 
					import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
 | 
				
			||||||
 | 
					import com.cloud.agent.api.routing.RoutingCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.SavePasswordCommand;
 | 
					import com.cloud.agent.api.routing.SavePasswordCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
 | 
					import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
 | 
				
			||||||
import com.cloud.agent.api.routing.VmDataCommand;
 | 
					import com.cloud.agent.api.routing.VmDataCommand;
 | 
				
			||||||
@ -2040,7 +2041,10 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute
 | 
				
			|||||||
                 ipsToSend[i++] = ip;
 | 
					                 ipsToSend[i++] = ip;
 | 
				
			||||||
                 firstIP = false;
 | 
					                 firstIP = false;
 | 
				
			||||||
             }
 | 
					             }
 | 
				
			||||||
             cmds.addCommand("IPAssocCommand", new IPAssocCommand(router.getInstanceName(), router.getPrivateIpAddress(), ipsToSend));
 | 
					             IPAssocCommand cmd = new IPAssocCommand(ipsToSend);
 | 
				
			||||||
 | 
					             cmd.setAccessDetail(RoutingCommand.ROUTER_IP, router.getPrivateIpAddress());
 | 
				
			||||||
 | 
					             cmd.setAccessDetail(RoutingCommand.ROUTER_NAME, router.getInstanceName());
 | 
				
			||||||
 | 
					             cmds.addCommand("IPAssocCommand", cmd);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
         return cmds;
 | 
					         return cmds;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -2083,6 +2087,7 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute
 | 
				
			|||||||
            Commands cmds = new Commands(OnError.Continue);
 | 
					            Commands cmds = new Commands(OnError.Continue);
 | 
				
			||||||
            //We have to resend all already associated ip addresses
 | 
					            //We have to resend all already associated ip addresses
 | 
				
			||||||
            cmds = getAssociateIPCommands(router, ipAddress, cmds, 0);
 | 
					            cmds = getAssociateIPCommands(router, ipAddress, cmds, 0);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
            return sendCommandsToRouter(router, cmds);
 | 
					            return sendCommandsToRouter(router, cmds);
 | 
				
			||||||
        } else if (router.getState() == State.Stopped || router.getState() == State.Stopping){
 | 
					        } else if (router.getState() == State.Stopped || router.getState() == State.Stopping){
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
@ -2112,6 +2117,8 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            LoadBalancerConfigCommand cmd = new LoadBalancerConfigCommand(lbs);
 | 
					            LoadBalancerConfigCommand cmd = new LoadBalancerConfigCommand(lbs);
 | 
				
			||||||
 | 
					            cmd.setAccessDetail(RoutingCommand.ROUTER_IP, router.getPrivateIpAddress());
 | 
				
			||||||
 | 
					            cmd.setAccessDetail(RoutingCommand.ROUTER_NAME, router.getInstanceName());
 | 
				
			||||||
            cmds.addCommand(cmd);
 | 
					            cmds.addCommand(cmd);
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            //Send commands to router
 | 
					            //Send commands to router
 | 
				
			||||||
@ -2129,6 +2136,8 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute
 | 
				
			|||||||
            pfs.add(pf);
 | 
					            pfs.add(pf);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        SetPortForwardingRulesCommand cmd = new SetPortForwardingRulesCommand(pfs);
 | 
					        SetPortForwardingRulesCommand cmd = new SetPortForwardingRulesCommand(pfs);
 | 
				
			||||||
 | 
					        cmd.setAccessDetail(RoutingCommand.ROUTER_IP, router.getPrivateIpAddress());
 | 
				
			||||||
 | 
					        cmd.setAccessDetail(RoutingCommand.ROUTER_NAME, router.getInstanceName());
 | 
				
			||||||
        cmds.addCommand(cmd);
 | 
					        cmds.addCommand(cmd);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        //Send commands to router
 | 
					        //Send commands to router
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user