package org.opennaas.itests.router.helpers; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.opennaas.extensions.router.model.ComputerSystem; import org.opennaas.extensions.router.model.EthernetPort; import org.opennaas.extensions.router.model.GRETunnelConfiguration; import org.opennaas.extensions.router.model.GRETunnelEndpoint; import org.opennaas.extensions.router.model.GRETunnelService; import org.opennaas.extensions.router.model.IPProtocolEndpoint; import org.opennaas.extensions.router.model.LogicalDevice; import org.opennaas.extensions.router.model.LogicalPort; import org.opennaas.extensions.router.model.LogicalTunnelPort; import org.opennaas.extensions.router.model.ManagedSystemElement.OperationalStatus; import org.opennaas.extensions.router.model.NetworkPort; import org.opennaas.extensions.router.model.NetworkPort.LinkTechnology; import org.opennaas.extensions.router.model.OSPFArea; import org.opennaas.extensions.router.model.OSPFArea.AreaType; import org.opennaas.extensions.router.model.OSPFAreaConfiguration; import org.opennaas.extensions.router.model.OSPFService; import org.opennaas.extensions.router.model.ProtocolEndpoint.ProtocolIFType; import org.opennaas.extensions.router.model.RouteCalculationService.AlgorithmType; import org.opennaas.extensions.router.model.Service; import org.opennaas.extensions.router.model.VLANEndpoint; import org.opennaas.extensions.router.model.VRRPGroup; import org.opennaas.extensions.router.model.VRRPProtocolEndpoint; import org.opennaas.extensions.router.model.utils.IPUtilsHelper; import org.opennaas.extensions.router.model.utils.ModelHelper; public class ParamCreationHelper { /* * test of an interface ethernet without vlan encapsulation */ public static Object newParamsInterfaceEthernet() { EthernetPort eth = new EthernetPort(); eth.setLinkTechnology(NetworkPort.LinkTechnology.ETHERNET); eth.setName("fe-0/3/2"); IPProtocolEndpoint ip = new IPProtocolEndpoint(); ip.setIPv4Address("192.168.32.1"); ip.setSubnetMask("255.255.255.0"); eth.addProtocolEndpoint(ip); return eth; } /* * test of an interface ethernet without vlan encapsulation */ public static Object newParamsInterfaceLT() { LogicalTunnelPort ltp = new LogicalTunnelPort(); ltp.setLinkTechnology(NetworkPort.LinkTechnology.ETHERNET); ltp.setName("lt-0/3/2"); ltp.setPeer_unit(101); IPProtocolEndpoint ip = new IPProtocolEndpoint(); ip.setIPv4Address("192.168.32.1"); ip.setSubnetMask("255.255.255.0"); ltp.addProtocolEndpoint(ip); return ltp; } /* * test of an interface ethernet without vlan encapsulation */ public static Object newParamsInterfaceLT_VLAN() { LogicalTunnelPort ltp = new LogicalTunnelPort(); ltp.setLinkTechnology(NetworkPort.LinkTechnology.OTHER); ltp.setName("lt-0/3/2"); ltp.setPeer_unit(101); IPProtocolEndpoint ip = new IPProtocolEndpoint(); ip.setIPv4Address("192.168.32.1"); ip.setSubnetMask("255.255.255.0"); ltp.addProtocolEndpoint(ip); VLANEndpoint vlan = new VLANEndpoint(); vlan.setVlanID(2); ltp.addProtocolEndpoint(vlan); return ltp; } public static Object newParamsInterfaceEtherVLAN() { EthernetPort eth = new EthernetPort(); eth.setLinkTechnology(NetworkPort.LinkTechnology.OTHER); eth.setName("fe-0/3/2"); eth.setPortNumber(2); IPProtocolEndpoint ip = new IPProtocolEndpoint(); ip.setIPv4Address("192.168.32.1"); ip.setSubnetMask("255.255.255.0"); eth.addProtocolEndpoint(ip); VLANEndpoint vlan = new VLANEndpoint(); vlan.setVlanID(2); eth.addProtocolEndpoint(vlan); return eth; } public static Object newParamsInterfaceGRE() { EthernetPort eth = new EthernetPort(); eth.setName("gr-0/3/2"); eth.setPortNumber(2); IPProtocolEndpoint ip = new IPProtocolEndpoint(); ip.setIPv4Address("192.168.32.1"); ip.setSubnetMask("255.255.255.0"); eth.addProtocolEndpoint(ip); return eth; } public static ComputerSystem getLogicalRouter(String lrName) { ComputerSystem lrModel = new ComputerSystem(); lrModel.setName(lrName); lrModel.setElementName(lrName); return lrModel; } /** * @return */ public static IPProtocolEndpoint getIPProtocolEndPoint() { IPProtocolEndpoint ipProtocolEndpoint = new IPProtocolEndpoint(); ipProtocolEndpoint.setIPv4Address("192.168.0.1"); ipProtocolEndpoint.setSubnetMask("255.255.255.0"); return ipProtocolEndpoint; } public static LogicalPort getLogicalPort() { LogicalPort logicalPort = new LogicalPort(); logicalPort.setName("fe-0/3/2"); logicalPort.setDescription("Description for the setSubInterfaceDescription test"); return logicalPort; } /** * @param interfaceNames * @return List<LogicalPort> * @throws Exception */ public static List<LogicalPort> getLogicalPorts(String[] interfaceNames) throws Exception { List<LogicalPort> interfaces = new ArrayList<LogicalPort>(interfaceNames.length); for (String interfaceName : interfaceNames) { interfaces.add(createInterface(interfaceName)); } return interfaces; } /** * Create an interface * * @param interfaceName * @return NetworkPort * @throws Exception */ public static NetworkPort createInterface(String interfaceName) throws Exception { String argsInterface[] = new String[2]; argsInterface = splitInterfaces(interfaceName); String name = argsInterface[0]; int port = Integer.parseInt(argsInterface[1]); NetworkPort networkPort = new NetworkPort(); networkPort.setName(name); networkPort.setPortNumber(port); networkPort.setLinkTechnology(LinkTechnology.OTHER); return networkPort; } /** * Split interfaces * * @param complexInterface * @return String[] * @throws Exception */ private static String[] splitInterfaces(String complexInterface) throws Exception { String[] argsInterface = new String[2]; argsInterface = complexInterface.split("\\."); if (argsInterface.length != 2) { Exception excep = new Exception("Invalid format in interface name."); throw excep; } return argsInterface; } /** * @param areaId * @return * @return OSPFArea * @throws IOException */ public static OSPFArea getOSPFArea(String areaId) throws IOException { OSPFArea area = new OSPFArea(); area.setAreaID(ModelHelper.ipv4StringToLong(areaId)); return area; } /** * @param routerId * @return OSPFService */ public static OSPFService getOSPFService(String routerId) { OSPFService ospfService = new OSPFService(); if (routerId != null) { ospfService.setRouterID(routerId); } return ospfService; } public static OSPFService getOSPFv3Service(String routerId) { OSPFService ospfService = new OSPFService(); if (routerId != null) { ospfService.setRouterID(routerId); } ospfService.setAlgorithmType(AlgorithmType.OSPFV3); return ospfService; } /** * @param areaId * @param selectedAreaType * @return OSPFAreaConfiguration * @throws IOException */ public static OSPFAreaConfiguration getOSPFAreaConfiguration(String areaId, AreaType selectedAreaType) throws IOException { OSPFArea area = new OSPFArea(); area.setAreaID(ModelHelper.ipv4StringToLong(areaId)); area.setAreaType(selectedAreaType); OSPFAreaConfiguration areaConfig = new OSPFAreaConfiguration(); areaConfig.setOSPFArea(area); return areaConfig; } /** * Get the GRETunnelService * * @return GRETunnelService * @throws IOException */ public static GRETunnelService getGRETunnelService(String tunnelName, String ipv4Address, String subnetMask, String ipSource, String ipDestiny) { GRETunnelService greService = new GRETunnelService(); greService.setElementName(""); greService.setName(tunnelName); GRETunnelConfiguration greConfig = new GRETunnelConfiguration(); greConfig.setSourceAddress(ipSource); greConfig.setDestinationAddress(ipDestiny); GRETunnelEndpoint gE = new GRETunnelEndpoint(); gE.setIPv4Address(ipv4Address); gE.setSubnetMask(subnetMask); gE.setProtocolIFType(ProtocolIFType.IPV6); greService.setGRETunnelConfiguration(greConfig); greService.addProtocolEndpoint(gE); return greService; } public static LogicalPort newParamsConfigureStatus(String interfaceName, OperationalStatus status) { LogicalPort logicalPort = new LogicalPort(); logicalPort.setName(interfaceName); logicalPort.setOperationalStatus(status); return logicalPort; } public static LogicalDevice getLogicalDevice(String nameInterface, ComputerSystem router) throws Exception { Iterator<LogicalDevice> iterator = router.getLogicalDevices().iterator(); while (iterator.hasNext()) { LogicalDevice logicalDevice = iterator.next(); if (logicalDevice.getName().equals(nameInterface)) return logicalDevice; } throw new Exception("Not found logical device"); } public static EthernetPort newParamsInterfaceEthernetPort(String name, int port, int vlanID) { EthernetPort eth = new EthernetPort(); eth.setLinkTechnology(NetworkPort.LinkTechnology.ETHERNET); eth.setName(name); eth.setPortNumber(port); VLANEndpoint vlanEndpoint = new VLANEndpoint(); vlanEndpoint.setVlanID(vlanID); eth.addProtocolEndpoint(vlanEndpoint); eth.setDescription("capability test"); return eth; } public static ComputerSystem newParamsLRWithInterface(String lrName) { ComputerSystem lrModel = new ComputerSystem(); lrModel.setName(lrName); lrModel.setElementName(lrName); return lrModel; } public static VRRPGroup newParamsVRRPGroupWithOneEndpoint(String virtualIPAddress, String interfaceName, String interfaceIPAddress, String interfaceSubnetMask) { // VRRPGroup VRRPGroup vrrpGroup = new VRRPGroup(); vrrpGroup.setVrrpName(201); vrrpGroup.setVirtualIPAddress(virtualIPAddress); // VRRPProtocolEndpoint VRRPProtocolEndpoint vrrProtocolEndpoint1 = new VRRPProtocolEndpoint(); vrrProtocolEndpoint1.setPriority(100); vrrProtocolEndpoint1.setService(vrrpGroup); vrrProtocolEndpoint1.setProtocolIFType(ProtocolIFType.IPV4); // IPProtocolEndpoint IPProtocolEndpoint ipProtocolEndpoint1 = new IPProtocolEndpoint(); ipProtocolEndpoint1.setIPv4Address(interfaceIPAddress); ipProtocolEndpoint1.setSubnetMask(interfaceSubnetMask); ipProtocolEndpoint1.setProtocolIFType(ProtocolIFType.IPV4); vrrProtocolEndpoint1.bindServiceAccessPoint(ipProtocolEndpoint1); // EthernetPort EthernetPort eth1 = new EthernetPort(); eth1.setLinkTechnology(NetworkPort.LinkTechnology.ETHERNET); eth1.setName(interfaceName); ipProtocolEndpoint1.addLogiaclPort(eth1); return vrrpGroup; } public static VRRPGroup newParamsVRRPGroupWithOneEndpointIPv6(String virtualIPAddress, String virtualLinkAddress, String interfaceName, String interfaceIPAddress) { // VRRPGroup VRRPGroup vrrpGroup = new VRRPGroup(); vrrpGroup.setVrrpName(201); vrrpGroup.setVirtualIPAddress(virtualIPAddress); vrrpGroup.setVirtualLinkAddress(virtualLinkAddress); // VRRPProtocolEndpoint VRRPProtocolEndpoint vrrProtocolEndpoint1 = new VRRPProtocolEndpoint(); vrrProtocolEndpoint1.setPriority(100); vrrProtocolEndpoint1.setService(vrrpGroup); vrrProtocolEndpoint1.setProtocolIFType(ProtocolIFType.IPV6); // IPProtocolEndpoint IPProtocolEndpoint ipProtocolEndpoint1 = new IPProtocolEndpoint(); ipProtocolEndpoint1.setIPv6Address(IPUtilsHelper.getAddressFromIP(interfaceIPAddress)); ipProtocolEndpoint1.setPrefixLength(Short.valueOf(IPUtilsHelper.getPrefixFromIp(interfaceIPAddress))); ipProtocolEndpoint1.setProtocolIFType(ProtocolIFType.IPV6); vrrProtocolEndpoint1.bindServiceAccessPoint(ipProtocolEndpoint1); // EthernetPort EthernetPort eth1 = new EthernetPort(); eth1.setLinkTechnology(NetworkPort.LinkTechnology.ETHERNET); eth1.setName(interfaceName); eth1.setPortNumber(1); ipProtocolEndpoint1.addLogiaclPort(eth1); return vrrpGroup; } public static GRETunnelService getGRETunnelService(String tunnelName, String ipAddress, String ipSource, String ipDestiny) { GRETunnelService greService = new GRETunnelService(); greService.setElementName(""); greService.setName(tunnelName); GRETunnelConfiguration greConfig = new GRETunnelConfiguration(); greConfig.setSourceAddress(ipSource); greConfig.setDestinationAddress(ipDestiny); GRETunnelEndpoint gE = new GRETunnelEndpoint(); if (IPUtilsHelper.isIPv4ValidAddress(ipAddress)) { gE.setIPv4Address(IPUtilsHelper.getAddressFromIP(ipAddress)); String mask = IPUtilsHelper.getPrefixFromIp(ipAddress); gE.setSubnetMask(IPUtilsHelper.parseShortToLongIpv4NetMask(mask)); gE.setProtocolIFType(ProtocolIFType.IPV4); } else { gE.setIPv6Address(IPUtilsHelper.getAddressFromIP(ipAddress)); gE.setPrefixLength(Short.valueOf(IPUtilsHelper.getPrefixFromIp(ipAddress))); gE.setProtocolIFType(ProtocolIFType.IPV6); } greService.setGRETunnelConfiguration(greConfig); greService.addProtocolEndpoint(gE); return greService; } public static Service newParamsVRRPGroupWithTwoEndpointIPv6(String virtualIPAddress, String virtualLinkAddress, String interfaceName, String interfaceIPAddress, String interfaceIPLinkAddress) { VRRPGroup vrrpGroup = new VRRPGroup(); vrrpGroup.setVrrpName(201); vrrpGroup.setVirtualIPAddress(virtualIPAddress); vrrpGroup.setVirtualLinkAddress(virtualLinkAddress); // VRRPProtocolEndpoint VRRPProtocolEndpoint vrrProtocolEndpoint1 = new VRRPProtocolEndpoint(); vrrProtocolEndpoint1.setPriority(100); vrrProtocolEndpoint1.setService(vrrpGroup); vrrProtocolEndpoint1.setProtocolIFType(ProtocolIFType.IPV6); // IPProtocolEndpoint IPProtocolEndpoint ipProtocolEndpoint1 = new IPProtocolEndpoint(); ipProtocolEndpoint1.setIPv6Address(IPUtilsHelper.getAddressFromIP(interfaceIPAddress)); ipProtocolEndpoint1.setPrefixLength(Short.valueOf(IPUtilsHelper.getPrefixFromIp(interfaceIPAddress))); ipProtocolEndpoint1.setProtocolIFType(ProtocolIFType.IPV6); vrrProtocolEndpoint1.bindServiceAccessPoint(ipProtocolEndpoint1); // Another IPProtocolEndpoint IPProtocolEndpoint ipProtocolEndpoint2 = new IPProtocolEndpoint(); ipProtocolEndpoint2.setIPv6Address(IPUtilsHelper.getAddressFromIP(interfaceIPLinkAddress)); ipProtocolEndpoint2.setPrefixLength(Short.valueOf(IPUtilsHelper.getPrefixFromIp(interfaceIPLinkAddress))); ipProtocolEndpoint2.setProtocolIFType(ProtocolIFType.IPV6); vrrProtocolEndpoint1.bindServiceAccessPoint(ipProtocolEndpoint2); // EthernetPort EthernetPort eth1 = new EthernetPort(); eth1.setLinkTechnology(NetworkPort.LinkTechnology.ETHERNET); eth1.setName(interfaceName); eth1.setPortNumber(1); ipProtocolEndpoint1.addLogiaclPort(eth1); return vrrpGroup; } public static Service newParamsVRRPGroupWithThreeEndpointIPv6(String virtualIPAddress, String virtualLinkAddress, String interfaceName, String interfaceIPAddress, String interfaceIPLinkAddress, String advertisementPrefix) { VRRPGroup vrrpGroup = new VRRPGroup(); vrrpGroup.setVrrpName(201); vrrpGroup.setVirtualIPAddress(virtualIPAddress); vrrpGroup.setVirtualLinkAddress(virtualLinkAddress); // VRRPProtocolEndpoint VRRPProtocolEndpoint vrrProtocolEndpoint1 = new VRRPProtocolEndpoint(); vrrProtocolEndpoint1.setPriority(100); vrrProtocolEndpoint1.setService(vrrpGroup); vrrProtocolEndpoint1.setProtocolIFType(ProtocolIFType.IPV6); // IPProtocolEndpoint IPProtocolEndpoint ipProtocolEndpoint1 = new IPProtocolEndpoint(); ipProtocolEndpoint1.setIPv6Address(IPUtilsHelper.getAddressFromIP(interfaceIPAddress)); ipProtocolEndpoint1.setPrefixLength(Short.valueOf(IPUtilsHelper.getPrefixFromIp(interfaceIPAddress))); ipProtocolEndpoint1.setProtocolIFType(ProtocolIFType.IPV6); vrrProtocolEndpoint1.bindServiceAccessPoint(ipProtocolEndpoint1); // Another IPProtocolEndpoint IPProtocolEndpoint ipProtocolEndpoint2 = new IPProtocolEndpoint(); ipProtocolEndpoint2.setIPv6Address(IPUtilsHelper.getAddressFromIP(interfaceIPLinkAddress)); ipProtocolEndpoint2.setPrefixLength(Short.valueOf(IPUtilsHelper.getPrefixFromIp(interfaceIPLinkAddress))); ipProtocolEndpoint2.setProtocolIFType(ProtocolIFType.IPV6); vrrProtocolEndpoint1.bindServiceAccessPoint(ipProtocolEndpoint2); // Another IPprotocolEndpoint containing router-advertisement IPProtocolEndpoint ipProtocolEndpoint3 = new IPProtocolEndpoint(); ipProtocolEndpoint3.setIPv6Address(IPUtilsHelper.getAddressFromIP(advertisementPrefix)); ipProtocolEndpoint3.setPrefixLength(Short.valueOf(IPUtilsHelper.getPrefixFromIp(advertisementPrefix))); ipProtocolEndpoint3.setProtocolIFType(ProtocolIFType.IPV6); vrrProtocolEndpoint1.bindServiceAccessPoint(ipProtocolEndpoint3); // EthernetPort EthernetPort eth1 = new EthernetPort(); eth1.setLinkTechnology(NetworkPort.LinkTechnology.ETHERNET); eth1.setName(interfaceName); eth1.setPortNumber(1); ipProtocolEndpoint1.addLogiaclPort(eth1); return vrrpGroup; } public static IPProtocolEndpoint getIPProtocolEndPointIPv6() { IPProtocolEndpoint ipProtocolEndpoint = new IPProtocolEndpoint(); ipProtocolEndpoint.setIPv6Address("fedc:34:ff::af"); ipProtocolEndpoint.setPrefixLength((short) 64); return ipProtocolEndpoint; } }