Set domR access details (name, privateIp) for various commands - PF/LB/IPAssoc

This commit is contained in:
alena 2010-12-20 17:04:56 -08:00
parent 769b89b530
commit b228ae6acb
5 changed files with 28 additions and 27 deletions

View File

@ -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;
} }

View File

@ -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();
} }

View File

@ -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 {

View File

@ -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";
} }

View File

@ -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