mirror of
https://github.com/apache/cloudstack.git
synced 2025-12-16 10:32:34 +01:00
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:
parent
7ccd174471
commit
8caafe2859
@ -19,515 +19,21 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork;
|
package com.cloud.agent.resource.virtualnetwork;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
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.NetworkElementCommand;
|
||||||
import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
|
import com.cloud.agent.resource.virtualnetwork.facade.AbstractConfigItemFacade;
|
||||||
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;
|
|
||||||
|
|
||||||
|
|
||||||
public class ConfigHelper {
|
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) {
|
public static List<ConfigItem> generateCommandCfg(final NetworkElementCommand cmd) {
|
||||||
List<ConfigItem> cfg;
|
/*
|
||||||
if (cmd instanceof SetPortForwardingRulesVpcCommand) {
|
* [TODO] Still have to migrate LoadBalancerConfigCommand and BumpUpPriorityCommand
|
||||||
cfg = generateConfig((SetPortForwardingRulesVpcCommand)cmd); // Migrated
|
* [FIXME] Have a look at SetSourceNatConfigItem
|
||||||
} 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));
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return cfg;
|
final AbstractConfigItemFacade configItemFacade = AbstractConfigItemFacade.getInstance(cmd.getClass());
|
||||||
|
|
||||||
|
return configItemFacade.generateConfig(cmd);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
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;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -19,20 +19,44 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork.facade;
|
package com.cloud.agent.resource.virtualnetwork.facade;
|
||||||
|
|
||||||
|
import java.util.Hashtable;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
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.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.ConfigItem;
|
||||||
import com.cloud.agent.resource.virtualnetwork.FileConfigItem;
|
import com.cloud.agent.resource.virtualnetwork.FileConfigItem;
|
||||||
import com.cloud.agent.resource.virtualnetwork.ScriptConfigItem;
|
import com.cloud.agent.resource.virtualnetwork.ScriptConfigItem;
|
||||||
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
||||||
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
import com.google.gson.FieldNamingPolicy;
|
import com.google.gson.FieldNamingPolicy;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
|
|
||||||
public abstract class AbstractConfigItemFacade {
|
public abstract class AbstractConfigItemFacade {
|
||||||
|
|
||||||
protected final static Gson gson;
|
protected final static Gson gson;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
@ -41,6 +65,42 @@ public abstract class AbstractConfigItemFacade {
|
|||||||
|
|
||||||
protected String destinationFile;
|
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) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
final List<ConfigItem> cfg = new LinkedList<>();
|
final List<ConfigItem> cfg = new LinkedList<>();
|
||||||
|
|
||||||
|
|||||||
@ -19,16 +19,23 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork.facade;
|
package com.cloud.agent.resource.virtualnetwork.facade;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
import com.cloud.agent.api.routing.NetworkElementCommand;
|
||||||
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
|
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;
|
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
||||||
|
|
||||||
public class BumUpPriorityConfigItem extends AbstractConfigItemFacade {
|
public class BumpUpPriorityConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
@ -19,20 +19,39 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork.facade;
|
package com.cloud.agent.resource.virtualnetwork.facade;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
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.api.routing.NetworkElementCommand;
|
||||||
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
|
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.ConfigBase;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.model.IpAddressAlias;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.model.IpAliases;
|
||||||
|
|
||||||
public class CreateIpAliasConfigItem extends AbstractConfigItemFacade {
|
public class CreateIpAliasConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.IP_ALIAS_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -19,20 +19,46 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork.facade;
|
package com.cloud.agent.resource.virtualnetwork.facade;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
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.api.routing.NetworkElementCommand;
|
||||||
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
|
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.ConfigBase;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.model.IpAddressAlias;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.model.IpAliases;
|
||||||
|
|
||||||
public class DeleteIpAliasConfigItem extends AbstractConfigItemFacade {
|
public class DeleteIpAliasConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.IP_ALIAS_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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.ConfigBase;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.VmDhcpConfig;
|
import com.cloud.agent.resource.virtualnetwork.model.VmDhcpConfig;
|
||||||
|
|
||||||
public class DhcpEntryConfigItem extends AbstractConfigItemFacade{
|
public class DhcpEntryConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
||||||
|
|||||||
@ -19,20 +19,38 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork.facade;
|
package com.cloud.agent.resource.virtualnetwork.facade;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.cloud.agent.api.routing.DnsMasqConfigCommand;
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
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.ConfigItem;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
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 {
|
public class DnsMasqConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.DHCP_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -19,20 +19,41 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork.facade;
|
package com.cloud.agent.resource.virtualnetwork.facade;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.cloud.agent.api.routing.IpAssocCommand;
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
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.ConfigItem;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
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 {
|
public class IpAssociationConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.IP_ASSOCIATION_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -32,7 +32,7 @@ import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
|||||||
import com.cloud.network.HAProxyConfigurator;
|
import com.cloud.network.HAProxyConfigurator;
|
||||||
import com.cloud.network.LoadBalancerConfigurator;
|
import com.cloud.network.LoadBalancerConfigurator;
|
||||||
|
|
||||||
public class LoadBalancerConfigItem extends AbstractConfigItemFacade{
|
public class LoadBalancerConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
||||||
|
|||||||
@ -22,17 +22,27 @@ package com.cloud.agent.resource.virtualnetwork.facade;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
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.ConfigItem;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
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
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.REMOTE_ACCESS_VPN_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -19,20 +19,40 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork.facade;
|
package com.cloud.agent.resource.virtualnetwork.facade;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
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.ConfigItem;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
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{
|
public class SetFirewallRulesConfigItem extends AbstractConfigItemFacade{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.FIREWALL_RULES_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -21,18 +21,48 @@ package com.cloud.agent.resource.virtualnetwork.facade;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.cloud.agent.api.SetupGuestNetworkCommand;
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
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.ConfigItem;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
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
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.GUEST_NETWORK_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -22,17 +22,26 @@ package com.cloud.agent.resource.virtualnetwork.facade;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
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.ConfigItem;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
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
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.MONITOR_SERVICE_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -19,20 +19,77 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork.facade;
|
package com.cloud.agent.resource.virtualnetwork.facade;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
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.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.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 {
|
public class SetNetworkAclConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.NETWORK_ACL_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -25,7 +25,7 @@ import com.cloud.agent.api.routing.NetworkElementCommand;
|
|||||||
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
|
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
||||||
|
|
||||||
public class SetPortForwardingRulusConfigItem extends AbstractConfigItemFacade {
|
public class SetPortForwardingRulesConfigItem extends AbstractConfigItemFacade {
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
||||||
return null;
|
return null;
|
||||||
@ -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.ForwardingRule;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ForwardingRules;
|
import com.cloud.agent.resource.virtualnetwork.model.ForwardingRules;
|
||||||
|
|
||||||
public class SetPortForwardingRulusVpcConfigItem extends AbstractConfigItemFacade {
|
public class SetPortForwardingRulesVpcConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
||||||
@ -19,16 +19,32 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork.facade;
|
package com.cloud.agent.resource.virtualnetwork.facade;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
import com.cloud.agent.api.routing.NetworkElementCommand;
|
||||||
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
|
import com.cloud.agent.resource.virtualnetwork.ConfigItem;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
||||||
|
|
||||||
public class SetSourceNatConfigItem extends AbstractConfigItemFacade{
|
public class SetSourceNatConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
|
|||||||
@ -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.StaticNatRule;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.StaticNatRules;
|
import com.cloud.agent.resource.virtualnetwork.model.StaticNatRules;
|
||||||
|
|
||||||
public class SetStaticNatRulesConfigItem extends AbstractConfigItemFacade{
|
public class SetStaticNatRulesConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
||||||
|
|||||||
@ -32,7 +32,7 @@ import com.cloud.agent.resource.virtualnetwork.model.StaticRoutes;
|
|||||||
import com.cloud.network.vpc.StaticRouteProfile;
|
import com.cloud.network.vpc.StaticRouteProfile;
|
||||||
import com.cloud.utils.net.NetUtils;
|
import com.cloud.utils.net.NetUtils;
|
||||||
|
|
||||||
public class SetStaticRouteConfigItem extends AbstractConfigItemFacade{
|
public class SetStaticRouteConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
||||||
|
|||||||
@ -22,17 +22,28 @@ package com.cloud.agent.resource.virtualnetwork.facade;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
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.ConfigItem;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
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
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.SITE_2_SITE_VPN_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -22,17 +22,27 @@ package com.cloud.agent.resource.virtualnetwork.facade;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
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.ConfigItem;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.model.VmData;
|
||||||
|
|
||||||
public class VmDataConfigItem extends AbstractConfigItemFacade {
|
public class VmDataConfigItem extends AbstractConfigItemFacade {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.VM_METADATA_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -19,20 +19,36 @@
|
|||||||
|
|
||||||
package com.cloud.agent.resource.virtualnetwork.facade;
|
package com.cloud.agent.resource.virtualnetwork.facade;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
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.ConfigItem;
|
||||||
|
import com.cloud.agent.resource.virtualnetwork.VRScripts;
|
||||||
import com.cloud.agent.resource.virtualnetwork.model.ConfigBase;
|
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
|
@Override
|
||||||
public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) {
|
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
|
@Override
|
||||||
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
protected List<ConfigItem> generateConfigItems(final ConfigBase configuration) {
|
||||||
return null;
|
destinationFile = VRScripts.VPN_USER_LIST_CONFIG;
|
||||||
|
|
||||||
|
return super.generateConfigItems(configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user