Adding all other (13) rules to the new code design

Removed the code from ConfigHelper, which is now really clean
Added Flyweight to AbstractConfigItemFacada
Renamed 3 *ConfigItem classes that had typos in their names
This commit is contained in:
wilderrodrigues 2014-10-14 08:22:46 +02:00
parent 7ccd174471
commit 8caafe2859
22 changed files with 377 additions and 541 deletions

View File

@ -19,515 +19,21 @@
package com.cloud.agent.resource.virtualnetwork;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import com.cloud.agent.api.BumpUpPriorityCommand;
import com.cloud.agent.api.SetupGuestNetworkCommand;
import com.cloud.agent.api.routing.CreateIpAliasCommand;
import com.cloud.agent.api.routing.DeleteIpAliasCommand;
import com.cloud.agent.api.routing.DhcpEntryCommand;
import com.cloud.agent.api.routing.DnsMasqConfigCommand;
import com.cloud.agent.api.routing.IpAliasTO;
import com.cloud.agent.api.routing.IpAssocCommand;
import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
import com.cloud.agent.api.routing.SavePasswordCommand;
import com.cloud.agent.api.routing.SetFirewallRulesCommand;
import com.cloud.agent.api.routing.SetMonitorServiceCommand;
import com.cloud.agent.api.routing.SetNetworkACLCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand;
import com.cloud.agent.api.routing.SetSourceNatCommand;
import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
import com.cloud.agent.api.routing.SetStaticRouteCommand;
import com.cloud.agent.api.routing.Site2SiteVpnCfgCommand;
import com.cloud.agent.api.routing.VmDataCommand;
import com.cloud.agent.api.routing.VpnUsersCfgCommand;
import com.cloud.agent.api.to.DhcpTO;
import com.cloud.agent.api.to.FirewallRuleTO;
import com.cloud.agent.api.to.IpAddressTO;
import com.cloud.agent.api.to.NicTO;
import com.cloud.agent.api.to.PortForwardingRuleTO;
import com.cloud.agent.api.to.StaticNatRuleTO;
import com.cloud.agent.resource.virtualnetwork.model.AclRule;
import com.cloud.agent.resource.virtualnetwork.model.AllAclRule;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.DhcpConfig;
import com.cloud.agent.resource.virtualnetwork.model.DhcpConfigEntry;
import com.cloud.agent.resource.virtualnetwork.model.FirewallRule;
import com.cloud.agent.resource.virtualnetwork.model.FirewallRules;
import com.cloud.agent.resource.virtualnetwork.model.ForwardingRule;
import com.cloud.agent.resource.virtualnetwork.model.ForwardingRules;
import com.cloud.agent.resource.virtualnetwork.model.GuestNetwork;
import com.cloud.agent.resource.virtualnetwork.model.IcmpAclRule;
import com.cloud.agent.resource.virtualnetwork.model.IpAddress;
import com.cloud.agent.resource.virtualnetwork.model.IpAddressAlias;
import com.cloud.agent.resource.virtualnetwork.model.IpAliases;
import com.cloud.agent.resource.virtualnetwork.model.IpAssociation;
import com.cloud.agent.resource.virtualnetwork.model.MonitorService;
import com.cloud.agent.resource.virtualnetwork.model.NetworkACL;
import com.cloud.agent.resource.virtualnetwork.model.ProtocolAclRule;
import com.cloud.agent.resource.virtualnetwork.model.RemoteAccessVpn;
import com.cloud.agent.resource.virtualnetwork.model.Site2SiteVpn;
import com.cloud.agent.resource.virtualnetwork.model.StaticNatRule;
import com.cloud.agent.resource.virtualnetwork.model.StaticNatRules;
import com.cloud.agent.resource.virtualnetwork.model.StaticRoute;
import com.cloud.agent.resource.virtualnetwork.model.StaticRoutes;
import com.cloud.agent.resource.virtualnetwork.model.TcpAclRule;
import com.cloud.agent.resource.virtualnetwork.model.UdpAclRule;
import com.cloud.agent.resource.virtualnetwork.model.VmData;
import com.cloud.agent.resource.virtualnetwork.model.VmDhcpConfig;
import com.cloud.agent.resource.virtualnetwork.model.VmPassword;
import com.cloud.agent.resource.virtualnetwork.model.VpnUser;
import com.cloud.agent.resource.virtualnetwork.model.VpnUserList;
import com.cloud.network.HAProxyConfigurator;
import com.cloud.network.LoadBalancerConfigurator;
import com.cloud.network.vpc.StaticRouteProfile;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.net.NetUtils;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.cloud.agent.resource.virtualnetwork.facade.AbstractConfigItemFacade;
public class ConfigHelper {
private final static Gson gson;
static {
gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
}
public static List<ConfigItem> generateCommandCfg(final NetworkElementCommand cmd) {
List<ConfigItem> cfg;
if (cmd instanceof SetPortForwardingRulesVpcCommand) {
cfg = generateConfig((SetPortForwardingRulesVpcCommand)cmd); // Migrated
} else if (cmd instanceof SetPortForwardingRulesCommand) {
cfg = generateConfig((SetPortForwardingRulesCommand)cmd); // Migrated
} else if (cmd instanceof SetStaticRouteCommand) {
cfg = generateConfig((SetStaticRouteCommand)cmd); // Migrated
} else if (cmd instanceof SetStaticNatRulesCommand) {
cfg = generateConfig((SetStaticNatRulesCommand)cmd); // Migrated
} else if (cmd instanceof LoadBalancerConfigCommand) {
cfg = generateConfig((LoadBalancerConfigCommand)cmd);
} else if (cmd instanceof SavePasswordCommand) {
cfg = generateConfig((SavePasswordCommand)cmd); // Migrated
} else if (cmd instanceof DhcpEntryCommand) {
cfg = generateConfig((DhcpEntryCommand)cmd); // Migrated
} else if (cmd instanceof CreateIpAliasCommand) {
cfg = generateConfig((CreateIpAliasCommand)cmd); // Migrated
} else if (cmd instanceof DnsMasqConfigCommand) {
cfg = generateConfig((DnsMasqConfigCommand)cmd); // Migrated
} else if (cmd instanceof DeleteIpAliasCommand) {
cfg = generateConfig((DeleteIpAliasCommand)cmd); // Migrated
} else if (cmd instanceof VmDataCommand) {
cfg = generateConfig((VmDataCommand)cmd); // Migrated
} else if (cmd instanceof SetFirewallRulesCommand) {
cfg = generateConfig((SetFirewallRulesCommand)cmd);
} else if (cmd instanceof BumpUpPriorityCommand) {
cfg = generateConfig((BumpUpPriorityCommand)cmd); // Migrated (SB, TBT)
} else if (cmd instanceof RemoteAccessVpnCfgCommand) {
cfg = generateConfig((RemoteAccessVpnCfgCommand)cmd); // Migrated (SB, TBT)
} else if (cmd instanceof VpnUsersCfgCommand) {
cfg = generateConfig((VpnUsersCfgCommand)cmd); // Migrated (SB, TBT)
} else if (cmd instanceof Site2SiteVpnCfgCommand) {
cfg = generateConfig((Site2SiteVpnCfgCommand)cmd); // Migrated (SB)
} else if (cmd instanceof SetMonitorServiceCommand) {
cfg = generateConfig((SetMonitorServiceCommand)cmd); // Migrated (SB, TBT)
} else if (cmd instanceof SetupGuestNetworkCommand) {
cfg = generateConfig((SetupGuestNetworkCommand)cmd); // Migrated
} else if (cmd instanceof SetNetworkACLCommand) {
cfg = generateConfig((SetNetworkACLCommand)cmd); // Migrated
} else if (cmd instanceof SetSourceNatCommand) {
cfg = generateConfig((SetSourceNatCommand)cmd); // Migrated - ignored
} else if (cmd instanceof IpAssocCommand) {
cfg = generateConfig((IpAssocCommand)cmd); // Migrated
} else {
return null;
}
return cfg;
}
private static List<ConfigItem> generateConfig(final VpnUsersCfgCommand cmd) {
final List<VpnUser> vpnUsers = new LinkedList<VpnUser>();
for (final VpnUsersCfgCommand.UsernamePassword userpwd : cmd.getUserpwds()) {
vpnUsers.add(new VpnUser(userpwd.getUsername(), userpwd.getPassword(), userpwd.isAdd()));
}
final VpnUserList vpnUserList = new VpnUserList(vpnUsers);
return generateConfigItems(vpnUserList);
}
private static List<ConfigItem> generateConfig(final RemoteAccessVpnCfgCommand cmd) {
final RemoteAccessVpn remoteAccessVpn = new RemoteAccessVpn(cmd.isCreate(), cmd.getIpRange(), cmd.getPresharedKey(), cmd.getVpnServerIp(), cmd.getLocalIp(), cmd.getLocalCidr(),
cmd.getPublicInterface());
return generateConfigItems(remoteAccessVpn);
}
private static List<ConfigItem> generateConfig(final SetFirewallRulesCommand cmd) {
final List<FirewallRule> rules = new ArrayList<FirewallRule>();
for (final FirewallRuleTO rule : cmd.getRules()) {
final FirewallRule fwRule = new FirewallRule(rule.getId(), rule.getSrcVlanTag(), rule.getSrcIp(), rule.getProtocol(), rule.getSrcPortRange(), rule.revoked(),
rule.isAlreadyAdded(), rule.getSourceCidrList(), rule.getPurpose().toString(), rule.getIcmpType(), rule.getIcmpCode(), rule.getTrafficType().toString(),
rule.getGuestCidr(), rule.isDefaultEgressPolicy());
rules.add(fwRule);
}
final FirewallRules ruleSet = new FirewallRules(rules.toArray(new FirewallRule[rules.size()]));
return generateConfigItems(ruleSet);
}
private static List<ConfigItem> generateConfig(final SetPortForwardingRulesCommand cmd) {
final List<ForwardingRule> rules = new ArrayList<ForwardingRule>();
for (final PortForwardingRuleTO rule : cmd.getRules()) {
final ForwardingRule fwdRule = new ForwardingRule(rule.revoked(), rule.getProtocol().toLowerCase(), rule.getSrcIp(), rule.getStringSrcPortRange(), rule.getDstIp(),
rule.getStringDstPortRange());
rules.add(fwdRule);
}
final ForwardingRules ruleSet = new ForwardingRules(rules.toArray(new ForwardingRule[rules.size()]));
return generateConfigItems(ruleSet);
}
private static List<ConfigItem> generateConfig(final SetStaticNatRulesCommand cmd) {
final LinkedList<StaticNatRule> rules = new LinkedList<>();
for (final StaticNatRuleTO rule : cmd.getRules()) {
final StaticNatRule staticNatRule = new StaticNatRule(rule.revoked(), rule.getProtocol(), rule.getSrcIp(), rule.getStringSrcPortRange(), rule.getDstIp());
rules.add(staticNatRule);
}
final StaticNatRules staticNatRules = new StaticNatRules(rules);
return generateConfigItems(staticNatRules);
}
private static List<ConfigItem> generateConfig(final LoadBalancerConfigCommand cmd) {
final LinkedList<ConfigItem> cfg = new LinkedList<>();
final String routerIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
final LoadBalancerConfigurator cfgtr = new HAProxyConfigurator();
final String[] config = cfgtr.generateConfiguration(cmd);
final StringBuffer buff = new StringBuffer();
for (int i = 0; i < config.length; i++) {
buff.append(config[i]);
buff.append("\n");
}
final String tmpCfgFilePath = "/etc/haproxy/";
final String tmpCfgFileName = "haproxy.cfg.new." + String.valueOf(System.currentTimeMillis());
cfg.add(new FileConfigItem(tmpCfgFilePath, tmpCfgFileName, buff.toString()));
final String[][] rules = cfgtr.generateFwRules(cmd);
final String[] addRules = rules[LoadBalancerConfigurator.ADD];
final String[] removeRules = rules[LoadBalancerConfigurator.REMOVE];
final String[] statRules = rules[LoadBalancerConfigurator.STATS];
String args = " -f " + tmpCfgFilePath + tmpCfgFileName;
StringBuilder sb = new StringBuilder();
if (addRules.length > 0) {
for (int i = 0; i < addRules.length; i++) {
sb.append(addRules[i]).append(',');
}
args += " -a " + sb.toString();
}
sb = new StringBuilder();
if (removeRules.length > 0) {
for (int i = 0; i < removeRules.length; i++) {
sb.append(removeRules[i]).append(',');
}
args += " -d " + sb.toString();
}
sb = new StringBuilder();
if (statRules.length > 0) {
for (int i = 0; i < statRules.length; i++) {
sb.append(statRules[i]).append(',');
}
args += " -s " + sb.toString();
}
if (cmd.getVpcId() == null) {
args = " -i " + routerIp + args;
cfg.add(new ScriptConfigItem(VRScripts.LB, args));
} else {
args = " -i " + cmd.getNic().getIp() + args;
cfg.add(new ScriptConfigItem(VRScripts.VPC_LB, args));
}
return cfg;
}
private static List<ConfigItem> generateConfig(final SavePasswordCommand cmd) {
final VmPassword vmPassword = new VmPassword(cmd.getVmIpAddress(), cmd.getPassword());
return generateConfigItems(vmPassword);
}
private static List<ConfigItem> generateConfig(final DhcpEntryCommand cmd) {
final VmDhcpConfig vmDhcpConfig = new VmDhcpConfig(cmd.getVmName(), cmd.getVmMac(), cmd.getVmIpAddress(), cmd.getVmIp6Address(), cmd.getDuid(), cmd.getDefaultDns(),
cmd.getDefaultRouter(), cmd.getStaticRoutes(), cmd.isDefault());
return generateConfigItems(vmDhcpConfig);
}
private static List<ConfigItem> generateConfig(final CreateIpAliasCommand cmd) {
final List<IpAddressAlias> ipAliases = new LinkedList<IpAddressAlias>();
final List<IpAliasTO> ipAliasTOs = cmd.getIpAliasList();
for (final IpAliasTO ipaliasto : ipAliasTOs) {
final IpAddressAlias alias = new IpAddressAlias(false, ipaliasto.getRouterip(), ipaliasto.getNetmask(), Long.parseLong(ipaliasto.getAlias_count()));
ipAliases.add(alias);
}
final IpAliases ipAliasList = new IpAliases(ipAliases);
return generateConfigItems(ipAliasList);
}
private static List<ConfigItem> generateConfig(final DeleteIpAliasCommand cmd) {
final List<IpAddressAlias> ipAliases = new LinkedList<IpAddressAlias>();
final List<IpAliasTO> revokedIpAliasTOs = cmd.getDeleteIpAliasTos();
for (final IpAliasTO ipAliasTO : revokedIpAliasTOs) {
final IpAddressAlias alias = new IpAddressAlias(true, ipAliasTO.getRouterip(), ipAliasTO.getNetmask(), Long.parseLong(ipAliasTO.getAlias_count()));
ipAliases.add(alias);
}
final List<IpAliasTO> activeIpAliasTOs = cmd.getCreateIpAliasTos();
for (final IpAliasTO ipAliasTO : activeIpAliasTOs) {
final IpAddressAlias alias = new IpAddressAlias(false, ipAliasTO.getRouterip(), ipAliasTO.getNetmask(), Long.parseLong(ipAliasTO.getAlias_count()));
ipAliases.add(alias);
}
final IpAliases ipAliasList = new IpAliases(ipAliases);
return generateConfigItems(ipAliasList);
}
private static List<ConfigItem> generateConfig(final DnsMasqConfigCommand cmd) {
final LinkedList<DhcpConfigEntry> entries = new LinkedList<DhcpConfigEntry>();
for (final DhcpTO dhcpTo : cmd.getIps()) {
final DhcpConfigEntry entry = new DhcpConfigEntry(dhcpTo.getRouterIp(), dhcpTo.getGateway(), dhcpTo.getNetmask(), dhcpTo.getStartIpOfSubnet());
entries.add(entry);
}
return generateConfigItems(new DhcpConfig(entries));
}
private static List<ConfigItem> generateConfig(final BumpUpPriorityCommand cmd) {
final LinkedList<ConfigItem> cfg = new LinkedList<>();
cfg.add(new ScriptConfigItem(VRScripts.RVR_BUMPUP_PRI, null));
return cfg;
}
private static List<ConfigItem> generateConfig(final VmDataCommand cmd) {
final VmData vmData = new VmData(cmd.getVmIpAddress(), cmd.getVmData());
return generateConfigItems(vmData);
}
private static List<ConfigItem> generateConfig(final Site2SiteVpnCfgCommand cmd) {
final Site2SiteVpn site2siteVpn = new Site2SiteVpn(cmd.getLocalPublicIp(), cmd.getLocalGuestCidr(), cmd.getLocalPublicGateway(), cmd.getPeerGatewayIp(),
cmd.getPeerGuestCidrList(), cmd.getEspPolicy(), cmd.getIkePolicy(), cmd.getIpsecPsk(), cmd.getIkeLifetime(), cmd.getEspLifetime(), cmd.isCreate(), cmd.getDpd(),
cmd.isPassive());
return generateConfigItems(site2siteVpn);
}
private static List<ConfigItem> generateConfig(final SetMonitorServiceCommand cmd) {
final MonitorService monitorService = new MonitorService(cmd.getConfiguration(), cmd.getAccessDetail(NetworkElementCommand.ROUTER_MONITORING_ENABLE));
return generateConfigItems(monitorService);
}
private static List<ConfigItem> generateConfig(final SetupGuestNetworkCommand cmd) {
final NicTO nic = cmd.getNic();
final String routerGIP = cmd.getAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP);
final String gateway = cmd.getAccessDetail(NetworkElementCommand.GUEST_NETWORK_GATEWAY);
final String cidr = Long.toString(NetUtils.getCidrSize(nic.getNetmask()));
final String netmask = nic.getNetmask();
final String domainName = cmd.getNetworkDomain();
String dns = cmd.getDefaultDns1();
if (dns == null || dns.isEmpty()) {
dns = cmd.getDefaultDns2();
} else {
final String dns2 = cmd.getDefaultDns2();
if (dns2 != null && !dns2.isEmpty()) {
dns += "," + dns2;
}
}
final GuestNetwork guestNetwork = new GuestNetwork(cmd.isAdd(), nic.getMac(), "eth" + nic.getDeviceId(), routerGIP, netmask, gateway,
cidr, dns, domainName);
return generateConfigItems(guestNetwork);
}
private static List<ConfigItem> generateConfig(final SetNetworkACLCommand cmd) {
final String privateGw = cmd.getAccessDetail(NetworkElementCommand.VPC_PRIVATE_GATEWAY);
final String[][] rules = cmd.generateFwRules();
final String[] aclRules = rules[0];
final NicTO nic = cmd.getNic();
final String dev = "eth" + nic.getDeviceId();
final String netmask = Long.toString(NetUtils.getCidrSize(nic.getNetmask()));
final List<AclRule> ingressRules = new ArrayList<AclRule>();
final List<AclRule> egressRules = new ArrayList<AclRule>();
for (int i = 0; i < aclRules.length; i++) {
AclRule aclRule;
final String[] ruleParts = aclRules[i].split(":");
switch (ruleParts[1].toLowerCase()) {
case "icmp":
aclRule = new IcmpAclRule(ruleParts[4], "ACCEPT".equals(ruleParts[5]), Integer.parseInt(ruleParts[2]), Integer.parseInt(ruleParts[3]));
break;
case "tcp":
aclRule = new TcpAclRule(ruleParts[4], "ACCEPT".equals(ruleParts[5]), Integer.parseInt(ruleParts[2]), Integer.parseInt(ruleParts[3]));
break;
case "udp":
aclRule = new UdpAclRule(ruleParts[4], "ACCEPT".equals(ruleParts[5]), Integer.parseInt(ruleParts[2]), Integer.parseInt(ruleParts[3]));
break;
case "all":
aclRule = new AllAclRule(ruleParts[4], "ACCEPT".equals(ruleParts[5]));
break;
default:
aclRule = new ProtocolAclRule(ruleParts[4], "ACCEPT".equals(ruleParts[5]), Integer.parseInt(ruleParts[1]));
}
if ("Ingress".equals(ruleParts[0])) {
ingressRules.add(aclRule);
} else {
egressRules.add(aclRule);
}
}
final NetworkACL networkACL = new NetworkACL(dev, nic.getMac(), privateGw != null, nic.getIp(), netmask, ingressRules.toArray(new AclRule[ingressRules.size()]),
egressRules.toArray(new AclRule[egressRules.size()]));
return generateConfigItems(networkACL);
}
private static List<ConfigItem> generateConfig(final SetSourceNatCommand cmd) {
final LinkedList<ConfigItem> cfg = new LinkedList<>();
/* FIXME This seems useless as we already pass this info with the ipassoc
* IpAddressTO pubIP = cmd.getIpAddress();
* String dev = "eth" + pubIP.getNicDevId();
* String args = "-A";
* args += " -l ";
* args += pubIP.getPublicIp();
* args += " -c ";
* args += dev;
* cfg.add(new ScriptConfigItem(VRScripts.VPC_SOURCE_NAT, args));
/*
* [TODO] Still have to migrate LoadBalancerConfigCommand and BumpUpPriorityCommand
* [FIXME] Have a look at SetSourceNatConfigItem
*/
return cfg;
}
private static List<ConfigItem> generateConfig(final SetStaticRouteCommand cmd) {
final LinkedList<StaticRoute> routes = new LinkedList<>();
for (final StaticRouteProfile profile : cmd.getStaticRoutes()) {
final String cidr = profile.getCidr();
final String subnet = NetUtils.getCidrSubNet(cidr);
final String cidrSize = cidr.split("\\/")[1];
final boolean keep = profile.getState() == com.cloud.network.vpc.StaticRoute.State.Active || profile.getState() == com.cloud.network.vpc.StaticRoute.State.Add;
routes.add(new StaticRoute(!keep, profile.getIp4Address(), profile.getGateway(), subnet + "/" + cidrSize));
}
return generateConfigItems(new StaticRoutes(routes));
}
private static List<ConfigItem> generateConfig(final IpAssocCommand cmd) {
new LinkedList<>();
final List<IpAddress> ips = new LinkedList<IpAddress>();
for (final IpAddressTO ip : cmd.getIpAddresses()) {
final IpAddress ipAddress = new IpAddress(ip.getPublicIp(), ip.isSourceNat(), ip.isAdd(), ip.isOneToOneNat(), ip.isFirstIP(), ip.getVlanGateway(), ip.getVlanNetmask(),
ip.getVifMacAddress(), ip.getNicDevId(), ip.isNewNic());
ips.add(ipAddress);
}
final IpAssociation ipAssociation = new IpAssociation(ips.toArray(new IpAddress[ips.size()]));
return generateConfigItems(ipAssociation);
}
private static List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
final List<ConfigItem> cfg = new LinkedList<>();
String destinationFile;
switch (configuration.getType()) {
case ConfigBase.FORWARDING_RULES:
destinationFile = VRScripts.FORWARDING_RULES_CONFIG;
break;
case ConfigBase.FIREWALL_RULES:
destinationFile = VRScripts.FIREWALL_RULES_CONFIG;
break;
case ConfigBase.GUEST_NETWORK:
destinationFile = VRScripts.GUEST_NETWORK_CONFIG;
break;
case ConfigBase.IP_ASSOCIATION:
destinationFile = VRScripts.IP_ASSOCIATION_CONFIG;
break;
case ConfigBase.NETWORK_ACL:
destinationFile = VRScripts.NETWORK_ACL_CONFIG;
break;
case ConfigBase.STATICNAT_RULES:
destinationFile = VRScripts.STATICNAT_RULES_CONFIG;
break;
case ConfigBase.VM_DHCP:
destinationFile = VRScripts.VM_DHCP_CONFIG;
break;
case ConfigBase.VM_METADATA:
destinationFile = VRScripts.VM_METADATA_CONFIG;
break;
case ConfigBase.VM_PASSWORD:
destinationFile = VRScripts.VM_PASSWORD_CONFIG;
break;
case ConfigBase.VPN_USER_LIST:
destinationFile = VRScripts.VPN_USER_LIST_CONFIG;
break;
case ConfigBase.SITE2SITEVPN:
destinationFile = VRScripts.SITE_2_SITE_VPN_CONFIG;
break;
case ConfigBase.REMOTEACCESSVPN:
destinationFile = VRScripts.REMOTE_ACCESS_VPN_CONFIG;
break;
case ConfigBase.MONITORSERVICE:
destinationFile = VRScripts.MONITOR_SERVICE_CONFIG;
case ConfigBase.STATIC_ROUTES:
destinationFile = VRScripts.STATIC_ROUTES_CONFIG;
break;
case ConfigBase.DHCP_CONFIG:
destinationFile = VRScripts.DHCP_CONFIG;
break;
case ConfigBase.IP_ALIAS_CONFIG:
destinationFile = VRScripts.IP_ALIAS_CONFIG;
break;
default:
throw new CloudRuntimeException("Unable to process the configuration for " + configuration.getType());
}
final ConfigItem configFile = new FileConfigItem(VRScripts.CONFIG_PERSIST_LOCATION, destinationFile, gson.toJson(configuration));
cfg.add(configFile);
final ConfigItem updateCommand = new ScriptConfigItem(VRScripts.UPDATE_CONFIG, destinationFile);
cfg.add(updateCommand);
return cfg;
final AbstractConfigItemFacade configItemFacade = AbstractConfigItemFacade.getInstance(cmd.getClass());
return configItemFacade.generateConfig(cmd);
}
}

View File

@ -19,20 +19,44 @@
package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;
import com.cloud.agent.api.BumpUpPriorityCommand;
import com.cloud.agent.api.SetupGuestNetworkCommand;
import com.cloud.agent.api.routing.CreateIpAliasCommand;
import com.cloud.agent.api.routing.DeleteIpAliasCommand;
import com.cloud.agent.api.routing.DhcpEntryCommand;
import com.cloud.agent.api.routing.DnsMasqConfigCommand;
import com.cloud.agent.api.routing.IpAssocCommand;
import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
import com.cloud.agent.api.routing.SavePasswordCommand;
import com.cloud.agent.api.routing.SetFirewallRulesCommand;
import com.cloud.agent.api.routing.SetMonitorServiceCommand;
import com.cloud.agent.api.routing.SetNetworkACLCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand;
import com.cloud.agent.api.routing.SetSourceNatCommand;
import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
import com.cloud.agent.api.routing.SetStaticRouteCommand;
import com.cloud.agent.api.routing.Site2SiteVpnCfgCommand;
import com.cloud.agent.api.routing.VmDataCommand;
import com.cloud.agent.api.routing.VpnUsersCfgCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.FileConfigItem;
import com.cloud.agent.resource.virtualnetwork.ScriptConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.utils.exception.CloudRuntimeException;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public abstract class AbstractConfigItemFacade {
protected final static Gson gson;
static {
@ -41,6 +65,42 @@ public abstract class AbstractConfigItemFacade {
protected String destinationFile;
private static Hashtable<Class<? extends NetworkElementCommand>, AbstractConfigItemFacade> flyweight = new Hashtable<Class<? extends NetworkElementCommand>, AbstractConfigItemFacade>();
public AbstractConfigItemFacade() {
flyweight.put(SetPortForwardingRulesVpcCommand.class, new SetPortForwardingRulesVpcConfigItem());
flyweight.put(SetPortForwardingRulesCommand.class, new SetPortForwardingRulesConfigItem());
flyweight.put(SetStaticRouteCommand.class, new SetStaticRouteConfigItem());
flyweight.put(SetStaticNatRulesCommand.class, new SetStaticNatRulesConfigItem());
flyweight.put(LoadBalancerConfigCommand.class, new LoadBalancerConfigItem());
flyweight.put(SavePasswordCommand.class, new SavePasswordConfigItem());
flyweight.put(DhcpEntryCommand.class, new DhcpEntryConfigItem());
flyweight.put(CreateIpAliasCommand.class, new CreateIpAliasConfigItem());
flyweight.put(DnsMasqConfigCommand.class, new DnsMasqConfigItem());
flyweight.put(DeleteIpAliasCommand.class, new DeleteIpAliasConfigItem());
flyweight.put(VmDataCommand.class, new VmDataConfigItem());
flyweight.put(SetFirewallRulesCommand.class, new SetFirewallRulesConfigItem());
flyweight.put(BumpUpPriorityCommand.class, new BumpUpPriorityConfigItem());
flyweight.put(RemoteAccessVpnCfgCommand.class, new RemoteAccessVpnConfigItem());
flyweight.put(VpnUsersCfgCommand.class, new VpnUsersConfigItem());
flyweight.put(Site2SiteVpnCfgCommand.class, new Site2SiteVpnConfigItem());
flyweight.put(SetMonitorServiceCommand.class, new SetMonitorServiceConfigItem());
flyweight.put(SetupGuestNetworkCommand.class, new SetGuestNetworkConfigItem());
flyweight.put(SetNetworkACLCommand.class, new SetNetworkAclConfigItem());
flyweight.put(SetSourceNatCommand.class, new SetSourceNatConfigItem());
flyweight.put(IpAssocCommand.class, new IpAssociationConfigItem());
}
public static AbstractConfigItemFacade getInstance(final Class<? extends NetworkElementCommand> key) {
if (!flyweight.containsKey(key)) {
throw new CloudRuntimeException("Unable to process the configuration for " + key.getClass().getName());
}
final AbstractConfigItemFacade instance = flyweight.get(key);
return instance;
}
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
final List<ConfigItem> cfg = new LinkedList<>();

View File

@ -19,16 +19,23 @@
package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.LinkedList;
import java.util.List;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.ScriptConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
public class BumUpPriorityConfigItem extends AbstractConfigItemFacade {
public class BumpUpPriorityConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final LinkedList<ConfigItem> cfg = new LinkedList<>();
cfg.add(new ScriptConfigItem(VRScripts.RVR_BUMPUP_PRI, null));
return cfg;
}
@Override

View File

@ -19,20 +19,39 @@
package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.LinkedList;
import java.util.List;
import com.cloud.agent.api.routing.CreateIpAliasCommand;
import com.cloud.agent.api.routing.IpAliasTO;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.IpAddressAlias;
import com.cloud.agent.resource.virtualnetwork.model.IpAliases;
public class CreateIpAliasConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final CreateIpAliasCommand command = (CreateIpAliasCommand) cmd;
final List<IpAddressAlias> ipAliases = new LinkedList<IpAddressAlias>();
final List<IpAliasTO> ipAliasTOs = command.getIpAliasList();
for (final IpAliasTO ipaliasto : ipAliasTOs) {
final IpAddressAlias alias = new IpAddressAlias(false, ipaliasto.getRouterip(), ipaliasto.getNetmask(), Long.parseLong(ipaliasto.getAlias_count()));
ipAliases.add(alias);
}
final IpAliases ipAliasList = new IpAliases(ipAliases);
return generateConfigItems(ipAliasList);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.IP_ALIAS_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -19,20 +19,46 @@
package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.LinkedList;
import java.util.List;
import com.cloud.agent.api.routing.DeleteIpAliasCommand;
import com.cloud.agent.api.routing.IpAliasTO;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.IpAddressAlias;
import com.cloud.agent.resource.virtualnetwork.model.IpAliases;
public class DeleteIpAliasConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final DeleteIpAliasCommand command = (DeleteIpAliasCommand) cmd;
final List<IpAddressAlias> ipAliases = new LinkedList<IpAddressAlias>();
final List<IpAliasTO> revokedIpAliasTOs = command.getDeleteIpAliasTos();
for (final IpAliasTO ipAliasTO : revokedIpAliasTOs) {
final IpAddressAlias alias = new IpAddressAlias(true, ipAliasTO.getRouterip(), ipAliasTO.getNetmask(), Long.parseLong(ipAliasTO.getAlias_count()));
ipAliases.add(alias);
}
final List<IpAliasTO> activeIpAliasTOs = command.getCreateIpAliasTos();
for (final IpAliasTO ipAliasTO : activeIpAliasTOs) {
final IpAddressAlias alias = new IpAddressAlias(false, ipAliasTO.getRouterip(), ipAliasTO.getNetmask(), Long.parseLong(ipAliasTO.getAlias_count()));
ipAliases.add(alias);
}
final IpAliases ipAliasList = new IpAliases(ipAliases);
return generateConfigItems(ipAliasList);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.IP_ALIAS_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -28,7 +28,7 @@ import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.VmDhcpConfig;
public class DhcpEntryConfigItem extends AbstractConfigItemFacade{
public class DhcpEntryConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {

View File

@ -19,20 +19,38 @@
package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.LinkedList;
import java.util.List;
import com.cloud.agent.api.routing.DnsMasqConfigCommand;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.to.DhcpTO;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.DhcpConfig;
import com.cloud.agent.resource.virtualnetwork.model.DhcpConfigEntry;
public class DnsMasqConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final DnsMasqConfigCommand command = (DnsMasqConfigCommand) cmd;
final LinkedList<DhcpConfigEntry> entries = new LinkedList<DhcpConfigEntry>();
for (final DhcpTO dhcpTo : command.getIps()) {
final DhcpConfigEntry entry = new DhcpConfigEntry(dhcpTo.getRouterIp(), dhcpTo.getGateway(), dhcpTo.getNetmask(), dhcpTo.getStartIpOfSubnet());
entries.add(entry);
}
return generateConfigItems(new DhcpConfig(entries));
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.DHCP_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -19,20 +19,41 @@
package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.LinkedList;
import java.util.List;
import com.cloud.agent.api.routing.IpAssocCommand;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.to.IpAddressTO;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.IpAddress;
import com.cloud.agent.resource.virtualnetwork.model.IpAssociation;
public class IpAssociationConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final IpAssocCommand command = (IpAssocCommand) cmd;
final List<IpAddress> ips = new LinkedList<IpAddress>();
for (final IpAddressTO ip : command.getIpAddresses()) {
final IpAddress ipAddress = new IpAddress(ip.getPublicIp(), ip.isSourceNat(), ip.isAdd(), ip.isOneToOneNat(), ip.isFirstIP(), ip.getVlanGateway(), ip.getVlanNetmask(),
ip.getVifMacAddress(), ip.getNicDevId(), ip.isNewNic());
ips.add(ipAddress);
}
final IpAssociation ipAssociation = new IpAssociation(ips.toArray(new IpAddress[ips.size()]));
return generateConfigItems(ipAssociation);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.IP_ASSOCIATION_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -32,7 +32,7 @@ import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.network.HAProxyConfigurator;
import com.cloud.network.LoadBalancerConfigurator;
public class LoadBalancerConfigItem extends AbstractConfigItemFacade{
public class LoadBalancerConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {

View File

@ -22,17 +22,27 @@ package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.List;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.RemoteAccessVpn;
public class RemoteAccessVpnConfigItem extends AbstractConfigItemFacade {
public class RemoteAccessVpnConfigItem extends AbstractConfigItemFacade{
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final RemoteAccessVpnCfgCommand command = (RemoteAccessVpnCfgCommand) cmd;
final RemoteAccessVpn remoteAccessVpn = new RemoteAccessVpn(command.isCreate(), command.getIpRange(), command.getPresharedKey(), command.getVpnServerIp(), command.getLocalIp(), command.getLocalCidr(),
command.getPublicInterface());
return generateConfigItems(remoteAccessVpn);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.REMOTE_ACCESS_VPN_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -19,20 +19,40 @@
package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.ArrayList;
import java.util.List;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.SetFirewallRulesCommand;
import com.cloud.agent.api.to.FirewallRuleTO;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.FirewallRule;
import com.cloud.agent.resource.virtualnetwork.model.FirewallRules;
public class SetFirewallRulesConfigItem extends AbstractConfigItemFacade{
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final SetFirewallRulesCommand command = (SetFirewallRulesCommand) cmd;
final List<FirewallRule> rules = new ArrayList<FirewallRule>();
for (final FirewallRuleTO rule : command.getRules()) {
final FirewallRule fwRule = new FirewallRule(rule.getId(), rule.getSrcVlanTag(), rule.getSrcIp(), rule.getProtocol(), rule.getSrcPortRange(), rule.revoked(),
rule.isAlreadyAdded(), rule.getSourceCidrList(), rule.getPurpose().toString(), rule.getIcmpType(), rule.getIcmpCode(), rule.getTrafficType().toString(),
rule.getGuestCidr(), rule.isDefaultEgressPolicy());
rules.add(fwRule);
}
final FirewallRules ruleSet = new FirewallRules(rules.toArray(new FirewallRule[rules.size()]));
return generateConfigItems(ruleSet);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.FIREWALL_RULES_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -21,18 +21,48 @@ package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.List;
import com.cloud.agent.api.SetupGuestNetworkCommand;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.to.NicTO;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.GuestNetwork;
import com.cloud.utils.net.NetUtils;
public class SetGuestNetworkConfigItem extends AbstractConfigItemFacade {
public class SetGuestNetworkConfigItem extends AbstractConfigItemFacade{
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final SetupGuestNetworkCommand command = (SetupGuestNetworkCommand) cmd;
final NicTO nic = command.getNic();
final String routerGIP = command.getAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP);
final String gateway = command.getAccessDetail(NetworkElementCommand.GUEST_NETWORK_GATEWAY);
final String cidr = Long.toString(NetUtils.getCidrSize(nic.getNetmask()));
final String netmask = nic.getNetmask();
final String domainName = command.getNetworkDomain();
String dns = command.getDefaultDns1();
if (dns == null || dns.isEmpty()) {
dns = command.getDefaultDns2();
} else {
final String dns2 = command.getDefaultDns2();
if (dns2 != null && !dns2.isEmpty()) {
dns += "," + dns2;
}
}
final GuestNetwork guestNetwork = new GuestNetwork(command.isAdd(), nic.getMac(), "eth" + nic.getDeviceId(), routerGIP, netmask, gateway,
cidr, dns, domainName);
return generateConfigItems(guestNetwork);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.GUEST_NETWORK_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -22,17 +22,26 @@ package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.List;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.SetMonitorServiceCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.MonitorService;
public class SetMonitorServiceConfigItem extends AbstractConfigItemFacade {
public class SetMonitorServiceConfigItem extends AbstractConfigItemFacade{
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final SetMonitorServiceCommand command = (SetMonitorServiceCommand) cmd;
final MonitorService monitorService = new MonitorService(command.getConfiguration(), cmd.getAccessDetail(NetworkElementCommand.ROUTER_MONITORING_ENABLE));
return generateConfigItems(monitorService);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.MONITOR_SERVICE_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -19,20 +19,77 @@
package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.ArrayList;
import java.util.List;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.SetNetworkACLCommand;
import com.cloud.agent.api.to.NicTO;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.AclRule;
import com.cloud.agent.resource.virtualnetwork.model.AllAclRule;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.IcmpAclRule;
import com.cloud.agent.resource.virtualnetwork.model.NetworkACL;
import com.cloud.agent.resource.virtualnetwork.model.ProtocolAclRule;
import com.cloud.agent.resource.virtualnetwork.model.TcpAclRule;
import com.cloud.agent.resource.virtualnetwork.model.UdpAclRule;
import com.cloud.utils.net.NetUtils;
public class SetNetworkAclConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final SetNetworkACLCommand command = (SetNetworkACLCommand) cmd;
final String privateGw = cmd.getAccessDetail(NetworkElementCommand.VPC_PRIVATE_GATEWAY);
final String[][] rules = command.generateFwRules();
final String[] aclRules = rules[0];
final NicTO nic = command.getNic();
final String dev = "eth" + nic.getDeviceId();
final String netmask = Long.toString(NetUtils.getCidrSize(nic.getNetmask()));
final List<AclRule> ingressRules = new ArrayList<AclRule>();
final List<AclRule> egressRules = new ArrayList<AclRule>();
for (int i = 0; i < aclRules.length; i++) {
AclRule aclRule;
final String[] ruleParts = aclRules[i].split(":");
switch (ruleParts[1].toLowerCase()) {
case "icmp":
aclRule = new IcmpAclRule(ruleParts[4], "ACCEPT".equals(ruleParts[5]), Integer.parseInt(ruleParts[2]), Integer.parseInt(ruleParts[3]));
break;
case "tcp":
aclRule = new TcpAclRule(ruleParts[4], "ACCEPT".equals(ruleParts[5]), Integer.parseInt(ruleParts[2]), Integer.parseInt(ruleParts[3]));
break;
case "udp":
aclRule = new UdpAclRule(ruleParts[4], "ACCEPT".equals(ruleParts[5]), Integer.parseInt(ruleParts[2]), Integer.parseInt(ruleParts[3]));
break;
case "all":
aclRule = new AllAclRule(ruleParts[4], "ACCEPT".equals(ruleParts[5]));
break;
default:
aclRule = new ProtocolAclRule(ruleParts[4], "ACCEPT".equals(ruleParts[5]), Integer.parseInt(ruleParts[1]));
}
if ("Ingress".equals(ruleParts[0])) {
ingressRules.add(aclRule);
} else {
egressRules.add(aclRule);
}
}
final NetworkACL networkACL = new NetworkACL(dev, nic.getMac(), privateGw != null, nic.getIp(), netmask, ingressRules.toArray(new AclRule[ingressRules.size()]),
egressRules.toArray(new AclRule[egressRules.size()]));
return generateConfigItems(networkACL);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.NETWORK_ACL_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -25,7 +25,7 @@ import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
public class SetPortForwardingRulusConfigItem extends AbstractConfigItemFacade {
public class SetPortForwardingRulesConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;

View File

@ -31,7 +31,7 @@ import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.ForwardingRule;
import com.cloud.agent.resource.virtualnetwork.model.ForwardingRules;
public class SetPortForwardingRulusVpcConfigItem extends AbstractConfigItemFacade {
public class SetPortForwardingRulesVpcConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {

View File

@ -19,16 +19,32 @@
package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.LinkedList;
import java.util.List;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
public class SetSourceNatConfigItem extends AbstractConfigItemFacade{
public class SetSourceNatConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final LinkedList<ConfigItem> cfg = new LinkedList<>();
/* FIXME This seems useless as we already pass this info with the ipassoc
* SetSourceNatCommand command = (SetSourceNatCommand) cmd;
* IpAddressTO pubIP = command.getIpAddress();
* String dev = "eth" + pubIP.getNicDevId();
* String args = "-A";
* args += " -l ";
* args += pubIP.getPublicIp();
* args += " -c ";
* args += dev;
* cfg.add(new ScriptConfigItem(VRScripts.VPC_SOURCE_NAT, args));
*/
return cfg;
}
@Override

View File

@ -31,7 +31,7 @@ import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.StaticNatRule;
import com.cloud.agent.resource.virtualnetwork.model.StaticNatRules;
public class SetStaticNatRulesConfigItem extends AbstractConfigItemFacade{
public class SetStaticNatRulesConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {

View File

@ -32,7 +32,7 @@ import com.cloud.agent.resource.virtualnetwork.model.StaticRoutes;
import com.cloud.network.vpc.StaticRouteProfile;
import com.cloud.utils.net.NetUtils;
public class SetStaticRouteConfigItem extends AbstractConfigItemFacade{
public class SetStaticRouteConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {

View File

@ -22,17 +22,28 @@ package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.List;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.Site2SiteVpnCfgCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.Site2SiteVpn;
public class Site2SiteVpnConfigItem extends AbstractConfigItemFacade {
public class Site2SiteVpnConfigItem extends AbstractConfigItemFacade{
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final Site2SiteVpnCfgCommand command = (Site2SiteVpnCfgCommand) cmd;
final Site2SiteVpn site2siteVpn = new Site2SiteVpn(command.getLocalPublicIp(), command.getLocalGuestCidr(), command.getLocalPublicGateway(), command.getPeerGatewayIp(),
command.getPeerGuestCidrList(), command.getEspPolicy(), command.getIkePolicy(), command.getIpsecPsk(), command.getIkeLifetime(), command.getEspLifetime(), command.isCreate(), command.getDpd(),
command.isPassive());
return generateConfigItems(site2siteVpn);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.SITE_2_SITE_VPN_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -22,17 +22,27 @@ package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.List;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.VmDataCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.VmData;
public class VmDataConfigItem extends AbstractConfigItemFacade {
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final VmDataCommand command = (VmDataCommand) cmd;
final VmData vmData = new VmData(command.getVmIpAddress(), command.getVmData());
return generateConfigItems(vmData);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.VM_METADATA_CONFIG;
return super.generateConfigItems(configuration);
}
}

View File

@ -19,20 +19,36 @@
package com.cloud.agent.resource.virtualnetwork.facade;
import java.util.LinkedList;
import java.util.List;
import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.VpnUsersCfgCommand;
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
import com.cloud.agent.resource.virtualnetwork.VRScripts;
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
import com.cloud.agent.resource.virtualnetwork.model.VpnUser;
import com.cloud.agent.resource.virtualnetwork.model.VpnUserList;
public class VpnUsersConfigItem extends AbstractConfigItemFacade {
public class VpnUsersConfigItem extends AbstractConfigItemFacade{
@Override
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
return null;
final VpnUsersCfgCommand command = (VpnUsersCfgCommand) cmd;
final List<VpnUser> vpnUsers = new LinkedList<VpnUser>();
for (final VpnUsersCfgCommand.UsernamePassword userpwd : command.getUserpwds()) {
vpnUsers.add(new VpnUser(userpwd.getUsername(), userpwd.getPassword(), userpwd.isAdd()));
}
final VpnUserList vpnUserList = new VpnUserList(vpnUsers);
return generateConfigItems(vpnUserList);
}
@Override
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
return null;
destinationFile = VRScripts.VPN_USER_LIST_CONFIG;
return super.generateConfigItems(configuration);
}
}