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
					
				@ -26,36 +26,20 @@ import com.cloud.agent.api.to.IpAddressTO;
 | 
			
		||||
 */
 | 
			
		||||
public class IPAssocCommand extends RoutingCommand {
 | 
			
		||||
    
 | 
			
		||||
	private String routerName;
 | 
			
		||||
	private String routerIp;
 | 
			
		||||
	IpAddressTO[] ipAddresses;
 | 
			
		||||
 | 
			
		||||
	protected IPAssocCommand() {
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public IPAssocCommand(String routerName, String privateIpAddress, IpAddressTO[] ips) {
 | 
			
		||||
		this.setRouterName(routerName);
 | 
			
		||||
		this.routerIp = privateIpAddress;
 | 
			
		||||
	public IPAssocCommand(IpAddressTO[] ips) {
 | 
			
		||||
		this.ipAddresses = ips;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public String getRouterIp() {
 | 
			
		||||
		return routerIp;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean executeInSequence() {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
	public void setRouterName(String routerName) {
 | 
			
		||||
		this.routerName = routerName;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public String getRouterName() {
 | 
			
		||||
		return routerName;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public IpAddressTO[] getIpAddresses() {
 | 
			
		||||
        return ipAddresses;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,9 @@ import com.cloud.agent.api.Command;
 | 
			
		||||
public abstract class RoutingCommand extends Command {
 | 
			
		||||
    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() {
 | 
			
		||||
        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.IpAssocAnswer;
 | 
			
		||||
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.VmDataCommand;
 | 
			
		||||
import com.cloud.agent.api.to.IpAddressTO;
 | 
			
		||||
@ -209,8 +210,10 @@ public class VirtualRoutingResource implements Manager {
 | 
			
		||||
        String[] results = new String[cmd.getIpAddresses().length];
 | 
			
		||||
        int i = 0;
 | 
			
		||||
        String result = null;
 | 
			
		||||
        String routerName = cmd.getAccessDetail(RoutingCommand.ROUTER_NAME);
 | 
			
		||||
        String routerIp = cmd.getAccessDetail(RoutingCommand.ROUTER_IP);
 | 
			
		||||
        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) {
 | 
			
		||||
                results[i++] = IpAssocAnswer.errorResult;
 | 
			
		||||
            } 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.LoadBalancerCfgCommand;
 | 
			
		||||
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.SetPortForwardingRulesAnswer;
 | 
			
		||||
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.exception.CloudRuntimeException;
 | 
			
		||||
import com.cloud.utils.net.NetUtils;
 | 
			
		||||
import com.cloud.utils.script.Script;
 | 
			
		||||
import com.cloud.vm.DiskProfile;
 | 
			
		||||
import com.cloud.vm.State;
 | 
			
		||||
import com.cloud.vm.VirtualMachine;
 | 
			
		||||
@ -191,9 +191,9 @@ import com.xensource.xenapi.SR;
 | 
			
		||||
import com.xensource.xenapi.Session;
 | 
			
		||||
import com.xensource.xenapi.Types;
 | 
			
		||||
import com.xensource.xenapi.Types.BadServerResponse;
 | 
			
		||||
import com.xensource.xenapi.Types.IpConfigurationMode;
 | 
			
		||||
import com.xensource.xenapi.Types.VmPowerState;
 | 
			
		||||
import com.xensource.xenapi.Types.XenAPIException;
 | 
			
		||||
import com.xensource.xenapi.Types.IpConfigurationMode;
 | 
			
		||||
import com.xensource.xenapi.VBD;
 | 
			
		||||
import com.xensource.xenapi.VDI;
 | 
			
		||||
import com.xensource.xenapi.VIF;
 | 
			
		||||
@ -933,9 +933,8 @@ public abstract class CitrixResourceBase implements ServerResource {
 | 
			
		||||
    protected SetPortForwardingRulesAnswer execute(SetPortForwardingRulesCommand cmd) {
 | 
			
		||||
        Connection conn = getConnection();
 | 
			
		||||
        String args;
 | 
			
		||||
        String routerIp = cmd.getAccessDetail("router.ip");
 | 
			
		||||
        String routerName = cmd.getAccessDetail("router.name");
 | 
			
		||||
 | 
			
		||||
        String routerName = cmd.getAccessDetail(RoutingCommand.ROUTER_NAME);
 | 
			
		||||
        String routerIp = cmd.getAccessDetail(RoutingCommand.ROUTER_IP);
 | 
			
		||||
        String[] results = new String[cmd.getRules().length];
 | 
			
		||||
        int i = 0;
 | 
			
		||||
        for (PortForwardingRuleTO rule : cmd.getRules()) {
 | 
			
		||||
@ -1252,10 +1251,13 @@ public abstract class CitrixResourceBase implements ServerResource {
 | 
			
		||||
        Connection conn = getConnection();
 | 
			
		||||
        String[] results = new String[cmd.getIpAddresses().length];
 | 
			
		||||
        int i = 0;
 | 
			
		||||
        String routerName = cmd.getAccessDetail(RoutingCommand.ROUTER_NAME);
 | 
			
		||||
        String routerIp = cmd.getAccessDetail(RoutingCommand.ROUTER_IP);
 | 
			
		||||
        try {
 | 
			
		||||
            IpAddressTO[] ips = cmd.getIpAddresses(); 
 | 
			
		||||
            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());
 | 
			
		||||
                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.LoadBalancerConfigCommand;
 | 
			
		||||
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.SetPortForwardingRulesCommand;
 | 
			
		||||
import com.cloud.agent.api.routing.VmDataCommand;
 | 
			
		||||
@ -2040,7 +2041,10 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute
 | 
			
		||||
                 ipsToSend[i++] = ip;
 | 
			
		||||
                 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;
 | 
			
		||||
    }
 | 
			
		||||
@ -2083,6 +2087,7 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute
 | 
			
		||||
            Commands cmds = new Commands(OnError.Continue);
 | 
			
		||||
            //We have to resend all already associated ip addresses
 | 
			
		||||
            cmds = getAssociateIPCommands(router, ipAddress, cmds, 0);
 | 
			
		||||
            
 | 
			
		||||
            return sendCommandsToRouter(router, cmds);
 | 
			
		||||
        } else if (router.getState() == State.Stopped || router.getState() == State.Stopping){
 | 
			
		||||
            return true;
 | 
			
		||||
@ -2112,6 +2117,8 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            LoadBalancerConfigCommand cmd = new LoadBalancerConfigCommand(lbs);
 | 
			
		||||
            cmd.setAccessDetail(RoutingCommand.ROUTER_IP, router.getPrivateIpAddress());
 | 
			
		||||
            cmd.setAccessDetail(RoutingCommand.ROUTER_NAME, router.getInstanceName());
 | 
			
		||||
            cmds.addCommand(cmd);
 | 
			
		||||
            
 | 
			
		||||
            //Send commands to router
 | 
			
		||||
@ -2129,6 +2136,8 @@ public class DomainRouterManagerImpl implements DomainRouterManager, DomainRoute
 | 
			
		||||
            pfs.add(pf);
 | 
			
		||||
        }
 | 
			
		||||
        SetPortForwardingRulesCommand cmd = new SetPortForwardingRulesCommand(pfs);
 | 
			
		||||
        cmd.setAccessDetail(RoutingCommand.ROUTER_IP, router.getPrivateIpAddress());
 | 
			
		||||
        cmd.setAccessDetail(RoutingCommand.ROUTER_NAME, router.getInstanceName());
 | 
			
		||||
        cmds.addCommand(cmd);
 | 
			
		||||
        
 | 
			
		||||
        //Send commands to router
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user