diff --git a/apps/cip/BUILD b/apps/cip/BUILD deleted file mode 100644 index 2e5780e129..0000000000 --- a/apps/cip/BUILD +++ /dev/null @@ -1,10 +0,0 @@ -osgi_jar_with_tests( - deps = CORE_DEPS, -) - -onos_app( - category = "Utility", - description = "ONOS Cluster IP alias application.", - title = "Cluster IP Alias", - url = "http://onosproject.org", -) diff --git a/apps/cip/src/main/java/org/onosproject/cip/ClusterIpManager.java b/apps/cip/src/main/java/org/onosproject/cip/ClusterIpManager.java deleted file mode 100644 index fd8bb40f3a..0000000000 --- a/apps/cip/src/main/java/org/onosproject/cip/ClusterIpManager.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.cip; - -import com.google.common.io.ByteStreams; -import org.onosproject.cfg.ComponentConfigService; -import org.onosproject.cluster.ClusterService; -import org.onosproject.cluster.LeadershipEvent; -import org.onosproject.cluster.LeadershipEventListener; -import org.onosproject.cluster.LeadershipService; -import org.onosproject.cluster.NodeId; -import org.osgi.service.component.ComponentContext; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Modified; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.Dictionary; -import java.util.Objects; -import java.util.Properties; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static org.onlab.util.Tools.get; -import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_ADAPTER; -import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_ADAPTER_DEFAULT; -import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_IP; -import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_IP_DEFAULT; -import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_MASK; -import static org.onosproject.cip.OsgiPropertyConstants.ALIAS_MASK_DEFAULT; - -/** - * Manages cluster IP address alias. - * - * To use the application, simply install it on ONOS and then configure it - * with the desired alias IP/mask/adapter configuration. - * - * If you are running it using upstart, you can also add the following - * command to the /opt/onos/options file: - * - * sudo ifconfig eth0:0 down # use the desired alias adapter - * - * This will make sure that if the process is killed abruptly, the IP alias - * will be dropped upon respawn. - */ -@Component( - immediate = true, - property = { - ALIAS_IP + "=" + ALIAS_IP_DEFAULT, - ALIAS_MASK + "=" + ALIAS_MASK_DEFAULT, - ALIAS_ADAPTER + "=" + ALIAS_ADAPTER_DEFAULT - } -) -public class ClusterIpManager { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private static final String CLUSTER_IP = "cluster/ip"; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected ClusterService clusterService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected LeadershipService leadershipService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected ComponentConfigService cfgService; - - private final LeadershipEventListener listener = new InternalLeadershipListener(); - - private NodeId localId; - private boolean wasLeader = false; - - /** Alias IP address. */ - private String aliasIp = ALIAS_IP_DEFAULT; - - /** Alias IP mask. */ - private String aliasMask = ALIAS_MASK_DEFAULT; - - /** Alias IP adapter. */ - private String aliasAdapter = ALIAS_ADAPTER_DEFAULT; - - @Activate - protected void activate(ComponentContext context) { - cfgService.registerProperties(getClass()); - - localId = clusterService.getLocalNode().id(); - processLeaderChange(leadershipService.getLeader(CLUSTER_IP)); - - leadershipService.addListener(listener); - leadershipService.runForLeadership(CLUSTER_IP); - log.info("Started"); - } - - @Deactivate - protected void deactivate(ComponentContext context) { - cfgService.unregisterProperties(getClass(), false); - - removeIpAlias(aliasIp, aliasMask, aliasAdapter); - - leadershipService.removeListener(listener); - leadershipService.withdraw(CLUSTER_IP); - log.info("Stopped"); - } - - @Modified - protected void modified(ComponentContext context) { - log.info("Received configuration change..."); - Dictionary properties = context != null ? context.getProperties() : new Properties(); - String newIp = get(properties, ALIAS_IP); - String newMask = get(properties, ALIAS_MASK); - String newAdapter = get(properties, ALIAS_ADAPTER); - - // Process any changes in the parameters... - if (!Objects.equals(newIp, aliasIp) || - !Objects.equals(newMask, aliasMask) || - !Objects.equals(newAdapter, aliasAdapter)) { - synchronized (this) { - log.info("Reconfiguring with aliasIp={}, aliasMask={}, aliasAdapter={}, wasLeader={}", - newIp, newMask, newAdapter, wasLeader); - if (wasLeader) { - removeIpAlias(aliasIp, aliasMask, aliasAdapter); - addIpAlias(newIp, newMask, newAdapter); - } - aliasIp = newIp; - aliasMask = newMask; - aliasAdapter = newAdapter; - } - } - } - - private synchronized void processLeaderChange(NodeId newLeader) { - boolean isLeader = Objects.equals(newLeader, localId); - log.info("Processing leadership change; wasLeader={}, isLeader={}", wasLeader, isLeader); - if (!wasLeader && isLeader) { - // Gaining leadership, so setup the IP alias - addIpAlias(aliasIp, aliasMask, aliasAdapter); - wasLeader = true; - } else if (wasLeader && !isLeader) { - // Losing leadership, so drop the IP alias - removeIpAlias(aliasIp, aliasMask, aliasAdapter); - wasLeader = false; - } - } - - private synchronized void addIpAlias(String ip, String mask, String adapter) { - if (!isNullOrEmpty(ip) && !isNullOrEmpty(mask) && !isNullOrEmpty(adapter)) { - log.info("Adding IP alias {}/{} to {}", ip, mask, adapter); - execute("sudo ifconfig " + adapter + " " + ip + " netmask " + mask + " up", false); - execute("sudo /usr/sbin/arping -c 1 -I " + adapter + " " + ip, true); - } - } - - private synchronized void removeIpAlias(String ip, String mask, String adapter) { - if (!isNullOrEmpty(ip) && !isNullOrEmpty(mask) && !isNullOrEmpty(adapter)) { - log.info("Removing IP alias from {}", adapter, false); - execute("sudo ifconfig " + adapter + " down", true); - } - } - - private void execute(String command, boolean ignoreCode) { - try { - log.info("Executing [{}]", command); - Process process = Runtime.getRuntime().exec(command); - byte[] output = ByteStreams.toByteArray(process.getInputStream()); - byte[] error = ByteStreams.toByteArray(process.getErrorStream()); - int code = process.waitFor(); - if (code != 0 && !ignoreCode) { - log.info("Command failed: status={}, output={}, error={}", - code, new String(output), new String(error)); - } - } catch (IOException e) { - log.error("Unable to execute command {}", command, e); - } catch (InterruptedException e) { - log.error("Interrupted executing command {}", command, e); - Thread.currentThread().interrupt(); - } - } - - // Listens for leadership changes. - private class InternalLeadershipListener implements LeadershipEventListener { - - @Override - public boolean isRelevant(LeadershipEvent event) { - return CLUSTER_IP.equals(event.subject().topic()); - } - - @Override - public void event(LeadershipEvent event) { - processLeaderChange(event.subject().leaderNodeId()); - } - } - -} diff --git a/apps/cip/src/main/java/org/onosproject/cip/OsgiPropertyConstants.java b/apps/cip/src/main/java/org/onosproject/cip/OsgiPropertyConstants.java deleted file mode 100644 index c6bcb5213c..0000000000 --- a/apps/cip/src/main/java/org/onosproject/cip/OsgiPropertyConstants.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2018-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.cip; - -public final class OsgiPropertyConstants { - private OsgiPropertyConstants() { - } - - static final String ALIAS_IP = "aliasIp"; - static final String ALIAS_IP_DEFAULT = ""; - - static final String ALIAS_MASK = "aliasMask"; - static final String ALIAS_MASK_DEFAULT = "255.255.0.0"; - - static final String ALIAS_ADAPTER = "aliasAdapter"; - static final String ALIAS_ADAPTER_DEFAULT = "eth0:0"; -} diff --git a/apps/cip/src/main/java/org/onosproject/cip/package-info.java b/apps/cip/src/main/java/org/onosproject/cip/package-info.java deleted file mode 100644 index fbc9ae9ad0..0000000000 --- a/apps/cip/src/main/java/org/onosproject/cip/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Cluster IP Manager, which is responsible for managing the cluster IP - * address alias. - */ -package org.onosproject.cip; diff --git a/apps/configsync-netconf/BUILD b/apps/configsync-netconf/BUILD deleted file mode 100644 index 63c06c1ec2..0000000000 --- a/apps/configsync-netconf/BUILD +++ /dev/null @@ -1,26 +0,0 @@ -APPS = [ - "org.onosproject.configsync", - "org.onosproject.yang", - "org.onosproject.netconf", -] - -COMPILE_DEPS = CORE_DEPS + [ - "@onos_yang_model//jar", - "@onos_yang_runtime//jar", - "//protocols/netconf/api:onos-protocols-netconf-api", - "//apps/config:onos-apps-config", - "//apps/configsync:onos-apps-configsync", -] - -osgi_jar_with_tests( - test_deps = TEST_ADAPTERS, - deps = COMPILE_DEPS, -) - -onos_app( - category = "Utility", - description = "Application to support the Dynamic configuration service.", - required_apps = APPS, - title = "Dynamic Configuration Synchronizer for NETCONF", - url = "http://onosproject.org", -) diff --git a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerComponent.java b/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerComponent.java deleted file mode 100644 index d107da7a02..0000000000 --- a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerComponent.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.d.config.sync.impl.netconf; - -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.onosproject.d.config.sync.DeviceConfigSynchronizationProviderRegistry; -import org.onosproject.d.config.sync.DeviceConfigSynchronizationProviderService; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.netconf.NetconfController; -import org.onosproject.yang.model.SchemaContextProvider; -import org.onosproject.yang.runtime.YangRuntimeService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.annotations.Beta; - -/** - * Main component of Dynamic config synchronizer for NETCONF. - * - * - */ -@Component(immediate = true) -public class NetconfDeviceConfigSynchronizerComponent { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - /** - * NETCONF dynamic config synchronizer provider ID. - */ - public static final ProviderId PID = - new ProviderId("netconf", "org.onosproject.d.config.sync.netconf"); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DeviceConfigSynchronizationProviderRegistry registry; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected NetconfController netconfController; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected YangRuntimeService yangRuntimeService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected SchemaContextProvider schemaContextProvider; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DeviceService deviceService; - - private NetconfDeviceConfigSynchronizerProvider provider; - - private DeviceConfigSynchronizationProviderService providerService; - - - @Activate - protected void activate() { - provider = new NetconfDeviceConfigSynchronizerProvider(PID, new InnerNetconfContext()); - providerService = registry.register(provider); - - // TODO (Phase 2 or later) - // listen to NETCONF events (new Device appeared, etc.) - // for PASSIVE "state" synchronization upward - - // TODO listen to DeviceEvents (Offline pre-configuration scenario) - - // TODO background anti-entropy mechanism - - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - registry.unregister(provider); - log.info("Stopped"); - } - - /** - * Context object to provide reference to OSGi services, etc. - */ - @Beta - public static interface NetconfContext { - - /** - * Returns DeviceConfigSynchronizationProviderService interface. - * - * @return DeviceConfigSynchronizationProviderService - */ - DeviceConfigSynchronizationProviderService providerService(); - - SchemaContextProvider schemaContextProvider(); - - YangRuntimeService yangRuntime(); - - NetconfController netconfController(); - - } - - class InnerNetconfContext implements NetconfContext { - - @Override - public NetconfController netconfController() { - return netconfController; - } - - @Override - public YangRuntimeService yangRuntime() { - return yangRuntimeService; - } - - @Override - public SchemaContextProvider schemaContextProvider() { - return schemaContextProvider; - } - - @Override - public DeviceConfigSynchronizationProviderService providerService() { - return providerService; - } - } -} diff --git a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProvider.java b/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProvider.java deleted file mode 100644 index 2ab2bbc736..0000000000 --- a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProvider.java +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.d.config.sync.impl.netconf; - -import static com.google.common.base.Preconditions.checkNotNull; -import static java.nio.charset.StandardCharsets.UTF_8; -import static java.util.concurrent.CompletableFuture.completedFuture; -import static org.slf4j.LoggerFactory.getLogger; - -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.concurrent.CompletableFuture; -import org.onlab.util.XmlString; -import org.onosproject.d.config.ResourceIds; -import org.onosproject.d.config.sync.DeviceConfigSynchronizationProvider; -import org.onosproject.d.config.sync.impl.netconf.NetconfDeviceConfigSynchronizerComponent.NetconfContext; -import org.onosproject.d.config.sync.operation.SetRequest; -import org.onosproject.d.config.sync.operation.SetRequest.Change; -import org.onosproject.d.config.sync.operation.SetRequest.Change.Operation; -import org.onosproject.d.config.sync.operation.SetResponse; -import org.onosproject.d.config.sync.operation.SetResponse.Code; -import org.onosproject.net.DeviceId; -import org.onosproject.net.provider.AbstractProvider; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.netconf.NetconfDevice; -import org.onosproject.netconf.NetconfException; -import org.onosproject.netconf.NetconfSession; -import org.onosproject.yang.model.DataNode; -import org.onosproject.yang.model.DefaultResourceData; -import org.onosproject.yang.model.InnerNode; -import org.onosproject.yang.model.ResourceData; -import org.onosproject.yang.model.ResourceId; -import org.onosproject.yang.runtime.AnnotatedNodeInfo; -import org.onosproject.yang.runtime.Annotation; -import org.onosproject.yang.runtime.CompositeData; -import org.onosproject.yang.runtime.CompositeStream; -import org.onosproject.yang.runtime.DefaultAnnotatedNodeInfo; -import org.onosproject.yang.runtime.DefaultAnnotation; -import org.onosproject.yang.runtime.DefaultCompositeData; -import org.onosproject.yang.runtime.DefaultRuntimeContext; -import org.onosproject.yang.runtime.RuntimeContext; -import org.slf4j.Logger; -import com.google.common.io.CharStreams; - -/** - * Dynamic config synchronizer provider for NETCONF. - * - * - */ -public class NetconfDeviceConfigSynchronizerProvider - extends AbstractProvider - implements DeviceConfigSynchronizationProvider { - - private static final Logger log = getLogger(NetconfDeviceConfigSynchronizerProvider.class); - - // TODO this should probably be defined on YRT Serializer side - /** - * {@link RuntimeContext} parameter Dataformat specifying XML. - */ - private static final String DATAFORMAT_XML = "xml"; - - private static final String XMLNS_XC = "xmlns:xc"; - private static final String NETCONF_1_0_BASE_NAMESPACE = - "urn:ietf:params:xml:ns:netconf:base:1.0"; - - /** - * Annotation to add xc namespace declaration. - * {@value #XMLNS_XC}={@value #NETCONF_1_0_BASE_NAMESPACE} - */ - private static final DefaultAnnotation XMLNS_XC_ANNOTATION = - new DefaultAnnotation(XMLNS_XC, NETCONF_1_0_BASE_NAMESPACE); - - private static final String XC_OPERATION = "xc:operation"; - - - private NetconfContext context; - - protected NetconfDeviceConfigSynchronizerProvider(ProviderId id, - NetconfContext context) { - super(id); - this.context = checkNotNull(context); - } - - @Override - public CompletableFuture setConfiguration(DeviceId deviceId, - SetRequest request) { - // sanity check and handle empty change? - - // TODOs: - // - Construct convert request object into XML - // -- [FutureWork] may need to introduce behaviour for Device specific - // workaround insertion - - StringBuilder rpc = new StringBuilder(); - - // - Add NETCONF envelope - rpc.append(""); - - rpc.append(""); - rpc.append(""); - // TODO directly writing to running for now - rpc.append(""); - rpc.append("\n"); - rpc.append(""); - // TODO netconf SBI should probably be adding these envelopes once - // netconf SBI is in better shape - // TODO In such case netconf sbi need to define namespace externally visible. - // ("xc" in above instance) - // to be used to add operations on config tree nodes - - - // Convert change(s) into a DataNode tree - for (Change change : request.changes()) { - log.trace("change={}", change); - - // TODO switch statement can probably be removed - switch (change.op()) { - case REPLACE: - case UPDATE: - case DELETE: - // convert DataNode -> ResourceData - ResourceData data = toResourceData(change); - - // build CompositeData - DefaultCompositeData.Builder compositeData = - DefaultCompositeData.builder(); - - // add ResourceData - compositeData.resourceData(data); - - // add AnnotatedNodeInfo operation - compositeData.addAnnotatedNodeInfo(toAnnotatedNodeInfo(change.op(), change.path())); - - RuntimeContext yrtContext = new DefaultRuntimeContext.Builder() - .setDataFormat(DATAFORMAT_XML) - .addAnnotation(XMLNS_XC_ANNOTATION) - .build(); - CompositeData cdata = compositeData.build(); - log.trace("CompositeData:{}", cdata); - CompositeStream xml = context.yangRuntime().encode(cdata, - yrtContext); - try { - CharStreams.copy(new InputStreamReader(xml.resourceData(), UTF_8), rpc); - } catch (IOException e) { - log.error("IOException thrown", e); - // FIXME handle error - } - break; - - default: - log.error("Should never reach here. {}", change); - break; - } - } - - // - close NETCONF envelope - // TODO eventually these should be handled by NETCONF SBI side - rpc.append('\n'); - rpc.append(""); - rpc.append(""); - rpc.append(""); - - // - send requests down to the device - NetconfSession session = getNetconfSession(deviceId); - if (session == null) { - log.error("No session available for {}", deviceId); - return completedFuture(SetResponse.response(request, - Code.FAILED_PRECONDITION, - "No session for " + deviceId)); - } - try { - // FIXME Netconf async API is currently screwed up, need to fix - // NetconfSession, etc. - CompletableFuture response = session.rpc(rpc.toString()); - log.trace("raw request:\n{}", rpc); - log.trace("prettified request:\n{}", XmlString.prettifyXml(rpc)); - return response.handle((resp, err) -> { - if (err == null) { - log.trace("reply:\n{}", XmlString.prettifyXml(resp)); - // FIXME check response properly - return SetResponse.ok(request); - } else { - return SetResponse.response(request, Code.UNKNOWN, err.getMessage()); - } - }); - } catch (NetconfException e) { - // TODO Handle error - log.error("NetconfException thrown", e); - return completedFuture(SetResponse.response(request, Code.UNKNOWN, e.getMessage())); - - } - } - - // overridable for ease of testing - /** - * Returns a session for the specified deviceId. - * - * @param deviceId for which we wish to retrieve a session - * @return a NetconfSession with the specified node - * or null if this node does not have the session to the specified Device. - */ - protected NetconfSession getNetconfSession(DeviceId deviceId) { - NetconfDevice device = context.netconfController().getNetconfDevice(deviceId); - checkNotNull(device, "The specified deviceId could not be found by the NETCONF controller."); - NetconfSession session = device.getSession(); - checkNotNull(session, "A session could not be retrieved for the specified deviceId."); - return session; - } - - /** - * Creates AnnotatedNodeInfo for {@code node}. - * - * @param op operation - * @param parent resourceId - * @param node the node - * @return AnnotatedNodeInfo - */ - static AnnotatedNodeInfo annotatedNodeInfo(Operation op, - ResourceId parent, - DataNode node) { - return DefaultAnnotatedNodeInfo.builder() - .resourceId(ResourceIds.resourceId(parent, node)) - .addAnnotation(toAnnotation(op)) - .build(); - } - - /** - * Creates AnnotatedNodeInfo for specified resource path. - * - * @param op operation - * @param path resourceId - * @return AnnotatedNodeInfo - */ - static AnnotatedNodeInfo toAnnotatedNodeInfo(Operation op, - ResourceId path) { - return DefaultAnnotatedNodeInfo.builder() - .resourceId(path) - .addAnnotation(toAnnotation(op)) - .build(); - } - - /** - * Transform DataNode into a ResourceData. - * - * @param change object - * @return ResourceData - */ - static ResourceData toResourceData(Change change) { - DefaultResourceData.Builder builder = DefaultResourceData.builder(); - builder.resourceId(change.path()); - if (change.op() != Change.Operation.DELETE) { - DataNode dataNode = change.val(); - if (dataNode instanceof InnerNode) { - ((InnerNode) dataNode).childNodes().values().forEach(builder::addDataNode); - } else { - log.error("Unexpected DataNode encountered", change); - } - } - - return builder.build(); - } - - static Annotation toAnnotation(Operation op) { - switch (op) { - case DELETE: - return new DefaultAnnotation(XC_OPERATION, "remove"); - case REPLACE: - return new DefaultAnnotation(XC_OPERATION, "replace"); - case UPDATE: - return new DefaultAnnotation(XC_OPERATION, "merge"); - default: - throw new IllegalArgumentException("Unknown operation " + op); - } - } - -} diff --git a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/package-info.java b/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/package-info.java deleted file mode 100644 index bc3c75a644..0000000000 --- a/apps/configsync-netconf/src/main/java/org/onosproject/d/config/sync/impl/netconf/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of NETCONF dynamic config synchronizer provider. - */ -package org.onosproject.d.config.sync.impl.netconf; diff --git a/apps/configsync-netconf/src/test/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProviderTest.java b/apps/configsync-netconf/src/test/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProviderTest.java deleted file mode 100644 index 28fad43f2c..0000000000 --- a/apps/configsync-netconf/src/test/java/org/onosproject/d/config/sync/impl/netconf/NetconfDeviceConfigSynchronizerProviderTest.java +++ /dev/null @@ -1,379 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.d.config.sync.impl.netconf; - -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.stringContainsInOrder; -import static org.junit.Assert.*; -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.TimeUnit; -import java.util.function.BiFunction; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.apache.commons.io.input.ReaderInputStream; -import org.hamcrest.Matchers; -import org.junit.Before; -import org.junit.Test; -import org.onlab.util.XmlString; -import org.onosproject.d.config.sync.DeviceConfigSynchronizationProviderService; -import org.onosproject.d.config.sync.impl.netconf.NetconfDeviceConfigSynchronizerComponent.NetconfContext; -import org.onosproject.d.config.sync.operation.SetRequest; -import org.onosproject.d.config.sync.operation.SetResponse; -import org.onosproject.d.config.sync.operation.SetResponse.Code; -import org.onosproject.net.DeviceId; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.netconf.NetconfController; -import org.onosproject.netconf.NetconfException; -import org.onosproject.netconf.NetconfSession; -import org.onosproject.netconf.NetconfSessionAdapter; -import org.onosproject.yang.model.DataNode; -import org.onosproject.yang.model.DataNode.Type; -import org.onosproject.yang.model.InnerNode; -import org.onosproject.yang.model.LeafNode; -import org.onosproject.yang.model.ResourceData; -import org.onosproject.yang.model.ResourceId; -import org.onosproject.yang.model.SchemaContextProvider; -import org.onosproject.yang.runtime.AnnotatedNodeInfo; -import org.onosproject.yang.runtime.CompositeData; -import org.onosproject.yang.runtime.CompositeStream; -import org.onosproject.yang.runtime.DefaultAnnotatedNodeInfo; -import org.onosproject.yang.runtime.DefaultAnnotation; -import org.onosproject.yang.runtime.DefaultCompositeStream; -import org.onosproject.yang.runtime.RuntimeContext; -import org.onosproject.yang.runtime.YangRuntimeService; -import com.google.common.io.CharSource; - -public class NetconfDeviceConfigSynchronizerProviderTest { - - private static final ProviderId PID = new ProviderId("netconf", "test"); - private static final DeviceId DID = DeviceId.deviceId("netconf:testDevice"); - - private static final String XMLNS_XC = "xmlns:xc"; - private static final String NETCONF_1_0_BASE_NAMESPACE = - "urn:ietf:params:xml:ns:netconf:base:1.0"; - - private static final DefaultAnnotation XC_ANNOTATION = - new DefaultAnnotation(XMLNS_XC, NETCONF_1_0_BASE_NAMESPACE); - - private static final DefaultAnnotation AN_XC_REPLACE_OPERATION = - new DefaultAnnotation("xc:operation", "replace"); - - private static final DefaultAnnotation AN_XC_REMOVE_OPERATION = - new DefaultAnnotation("xc:operation", "remove"); - - /** - * Yang namespace for test config data. - */ - private static final String TEST_NS = "testNS"; - - private static final ResourceId RID_INTERFACES = - ResourceId.builder().addBranchPointSchema("interfaces", TEST_NS).build(); - - private NetconfDeviceConfigSynchronizerProvider sut; - - private NetconfContext ncCtx; - - - // Set following accordingly to suite test scenario - NetconfSession testNcSession; - YangRuntimeService testYangRuntime; - - - @Before - public void setUp() throws Exception { - - ncCtx = new TestNetconfContext(); - - sut = new NetconfDeviceConfigSynchronizerProvider(PID, ncCtx) { - // overriding to avoid mocking whole NetconController and all that. - @Override - protected NetconfSession getNetconfSession(DeviceId deviceId) { - assertEquals(DID, deviceId); - return testNcSession; - } - }; - } - - @Test - public void testReplaceOperation() throws Exception { - // plug drivers with assertions - testYangRuntime = onEncode((data, context) -> { - assertEquals("xml", context.getDataFormat()); - assertThat(context.getProtocolAnnotations(), hasItem(XC_ANNOTATION)); - - // assert CompositeData - ResourceData rData = data.resourceData(); - List infos = data.annotatedNodesInfo(); - - ResourceId interfacesRid = RID_INTERFACES; - AnnotatedNodeInfo intfsAnnot = DefaultAnnotatedNodeInfo.builder() - .resourceId(interfacesRid) - .addAnnotation(AN_XC_REPLACE_OPERATION) - .build(); - assertThat("interfaces has replace operation", infos, hasItem(intfsAnnot)); - - // assertion for ResourceData. - assertEquals(RID_INTERFACES, rData.resourceId()); - assertThat("has 1 child", rData.dataNodes(), hasSize(1)); - assertThat("which is interface", - rData.dataNodes().get(0).key().schemaId().name(), - is("interface")); - // todo: assert the rest of the tree if it make sense. - - // FIXME it's unclear what URI is expected here - String id = URI.create("netconf:testDevice").toString(); - - String inXml = deviceConfigAsXml("replace"); - - return toCompositeStream(id, inXml); - }); - testNcSession = new TestEditNetconfSession(); - - - // building test data - ResourceId interfacesId = RID_INTERFACES; - DataNode interfaces = deviceConfigNode(); - SetRequest request = SetRequest.builder() - .replace(interfacesId, interfaces) - .build(); - - // test start - CompletableFuture f = sut.setConfiguration(DID, request); - SetResponse response = f.get(5, TimeUnit.MINUTES); - - assertEquals(Code.OK, response.code()); - assertEquals(request.subjects(), response.subjects()); - } - - - @Test - public void testDeleteOperation() throws Exception { - // plug drivers with assertions - testYangRuntime = onEncode((data, context) -> { - assertEquals("xml", context.getDataFormat()); - assertThat(context.getProtocolAnnotations(), hasItem(XC_ANNOTATION)); - - // assert CompositeData - ResourceData rData = data.resourceData(); - List infos = data.annotatedNodesInfo(); - - ResourceId interfacesRid = RID_INTERFACES; - AnnotatedNodeInfo intfsAnnot = DefaultAnnotatedNodeInfo.builder() - .resourceId(interfacesRid) - .addAnnotation(AN_XC_REMOVE_OPERATION) - .build(); - assertThat("interfaces has replace operation", infos, hasItem(intfsAnnot)); - - // assertion for ResourceData. - assertEquals(RID_INTERFACES, rData.resourceId()); - assertThat("has no child", rData.dataNodes(), hasSize(0)); - - // FIXME it's unclear what URI is expected here - String id = URI.create("netconf:testDevice").toString(); - - String inXml = deviceConfigAsXml("remove"); - - return toCompositeStream(id, inXml); - }); - testNcSession = new TestEditNetconfSession(); - - // building test data - ResourceId interfacesId = RID_INTERFACES; - SetRequest request = SetRequest.builder() - .delete(interfacesId) - .build(); - - // test start - CompletableFuture f = sut.setConfiguration(DID, request); - - SetResponse response = f.get(5, TimeUnit.MINUTES); - assertEquals(Code.OK, response.code()); - assertEquals(request.subjects(), response.subjects()); - } - - /** - * DataNode for testing. - * - *
-     *   +-interfaces
-     *      |
-     *      +- interface{intf-name="en0"}
-     *           |
-     *           +- speed = "10G"
-     *           +- state = "up"
-     *
-     * 
- * @return DataNode - */ - private DataNode deviceConfigNode() { - InnerNode.Builder intfs = InnerNode.builder("interfaces", TEST_NS); - intfs.type(Type.SINGLE_INSTANCE_NODE); - InnerNode.Builder intf = intfs.createChildBuilder("interface", TEST_NS); - intf.type(Type.SINGLE_INSTANCE_LEAF_VALUE_NODE); - intf.addKeyLeaf("name", TEST_NS, "Ethernet0/0"); - LeafNode.Builder speed = intf.createChildBuilder("mtu", TEST_NS, "1500"); - speed.type(Type.SINGLE_INSTANCE_LEAF_VALUE_NODE); - - intf.addNode(speed.build()); - intfs.addNode(intf.build()); - return intfs.build(); - } - - /** - * {@link #deviceConfigNode()} as XML. - * - * @param operation xc:operation value on {@code interfaces} node - * @return XML - */ - private String deviceConfigAsXml(String operation) { - return "\n" + - " \n" + - " Ethernet0/0\n" + - " 1500\n" + - " \n" + - ""; - } - - private String rpcReplyOk(int messageid) { - return "\n" + - " \n" + - ""; - } - - private int fetchMessageId(String request) { - int messageid; - Pattern msgId = Pattern.compile("message-id=['\"]([0-9]+)['\"]"); - Matcher matcher = msgId.matcher(request); - if (matcher.find()) { - messageid = Integer.parseInt(matcher.group(1)); - } else { - messageid = -1; - } - return messageid; - } - - - protected CompositeStream toCompositeStream(String id, String inXml) { - try { - InputStream xml = new ReaderInputStream( - CharSource.wrap(inXml) - .openStream()); - - return new DefaultCompositeStream(id, xml); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - /** - * Asserts that it received edit-config message and reply Ok. - */ - private class TestEditNetconfSession extends NetconfSessionAdapter { - @Override - public CompletableFuture rpc(String request) - throws NetconfException { - System.out.println("TestEditNetconfSession received:"); - System.out.println(XmlString.prettifyXml(request)); - - // Extremely naive request rpc message check - assertThat(request, stringContainsInOrder(Arrays.asList( - "", - "", - ""))); - - assertThat("XML namespace decl exists", - request, Matchers.containsString("xmlns:xc")); - - assertThat("netconf operation exists", - request, Matchers.containsString("xc:operation")); - - return CompletableFuture.completedFuture(rpcReplyOk(fetchMessageId(request))); - } - } - - /** - * Creates mock YangRuntimeService. - * - * @param body to execute when {@link YangRuntimeService#encode(CompositeData, RuntimeContext)} was called. - * @return YangRuntimeService instance - */ - TestYangRuntimeService onEncode(BiFunction body) { - return new TestYangRuntimeService() { - @Override - public CompositeStream encode(CompositeData internal, - RuntimeContext context) { - return body.apply(internal, context); - } - }; - } - - private abstract class TestYangRuntimeService implements YangRuntimeService { - - @Override - public CompositeStream encode(CompositeData internal, - RuntimeContext context) { - fail("stub not implemented"); - return null; - } - @Override - public CompositeData decode(CompositeStream external, - RuntimeContext context) { - fail("stub not implemented"); - return null; - } - } - - private final class TestNetconfContext implements NetconfContext { - @Override - public DeviceConfigSynchronizationProviderService providerService() { - fail("Add stub driver as necessary"); - return null; - } - - @Override - public SchemaContextProvider schemaContextProvider() { - fail("Add stub driver as necessary"); - return null; - } - - @Override - public YangRuntimeService yangRuntime() { - return testYangRuntime; - } - - @Override - public NetconfController netconfController() { - fail("Add stub driver as necessary"); - return null; - } - } - -} diff --git a/apps/configsync/BUILD b/apps/configsync/BUILD deleted file mode 100644 index 38b4fe717c..0000000000 --- a/apps/configsync/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -APPS = [ - # dynamic config - "org.onosproject.config", -] - -COMPILE_DEPS = CORE_DEPS + ONOS_YANG + [ - "//apps/config:onos-apps-config", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) - -onos_app( - category = "Utility", - description = "Application to support the Dynamic configuration service.", - required_apps = APPS, - title = "Dynamic Configuration Synchronizer", - url = "http://onosproject.org", -) diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProvider.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProvider.java deleted file mode 100644 index eed008f0eb..0000000000 --- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProvider.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.d.config.sync; - -import java.util.concurrent.CompletableFuture; - -import org.onosproject.d.config.sync.operation.SetRequest; -import org.onosproject.d.config.sync.operation.SetResponse; -import org.onosproject.net.DeviceId; -import org.onosproject.net.provider.Provider; - -import com.google.common.annotations.Beta; - -// TODO might want to remove Device~ prefix, class name too long. -/** - * Abstraction of a device config synchronization provider. - *

- * Provides a mean for propagating dynamic config triggered change down to - * the device. - */ -@Beta -public interface DeviceConfigSynchronizationProvider extends Provider { - - // TODO API to propagate dynamic config subsystem side change down to the - // device - - /** - * Requests a device to set configuration as specified. - * - * @param deviceId target Device identifier - * @param request configuration requests - * @return result - */ - CompletableFuture setConfiguration(DeviceId deviceId, SetRequest request); - - // TODO API for Get from Device - // CompletableFuture getConfiguration(DeviceId deviceId, GetRequest request); - -} diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderRegistry.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderRegistry.java deleted file mode 100644 index edf1eba5e0..0000000000 --- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderRegistry.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.d.config.sync; - -import org.onosproject.net.provider.ProviderRegistry; - -/** - * Abstraction of a device config synchronization provider registry. - */ -public interface DeviceConfigSynchronizationProviderRegistry - extends ProviderRegistry { - -} diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderService.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderService.java deleted file mode 100644 index 8fa0ee33a9..0000000000 --- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/DeviceConfigSynchronizationProviderService.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.d.config.sync; - -import org.onosproject.net.provider.ProviderService; - -import com.google.common.annotations.Beta; - -/** - * Service which configuration synchronization provider can interact - * with the service. - *

- * Provides a mean to propagate device triggered change event upward to - * dynamic config subsystem. - */ -@Beta -public interface DeviceConfigSynchronizationProviderService - extends ProviderService { - - // TODO API to propagate device detected change upwards - // e.g., in reaction to NETCONF async notification, - // report polling result up to DynConfig subsystem -} diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizer.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizer.java deleted file mode 100644 index 1236364452..0000000000 --- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizer.java +++ /dev/null @@ -1,397 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.d.config.sync.impl; - -import com.google.common.annotations.Beta; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import org.onlab.util.Tools; -import org.onosproject.config.DynamicConfigEvent; -import org.onosproject.config.DynamicConfigEvent.Type; -import org.onosproject.config.DynamicConfigListener; -import org.onosproject.config.DynamicConfigService; -import org.onosproject.config.Filter; -import org.onosproject.d.config.DataNodes; -import org.onosproject.d.config.DeviceResourceIds; -import org.onosproject.d.config.ResourceIds; -import org.onosproject.d.config.sync.DeviceConfigSynchronizationProvider; -import org.onosproject.d.config.sync.DeviceConfigSynchronizationProviderRegistry; -import org.onosproject.d.config.sync.DeviceConfigSynchronizationProviderService; -import org.onosproject.d.config.sync.operation.SetRequest; -import org.onosproject.d.config.sync.operation.SetResponse; -import org.onosproject.d.config.sync.operation.SetResponse.Code; -import org.onosproject.net.DeviceId; -import org.onosproject.net.config.NetworkConfigService; -import org.onosproject.net.provider.AbstractProviderRegistry; -import org.onosproject.net.provider.AbstractProviderService; -import org.onosproject.store.primitives.TransactionId; -import org.onosproject.yang.model.DataNode; -import org.onosproject.yang.model.ResourceId; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.time.Duration; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; - -import static java.util.concurrent.CompletableFuture.completedFuture; -import static org.onosproject.d.config.DeviceResourceIds.isUnderDeviceRootNode; -import static org.onosproject.d.config.DeviceResourceIds.toDeviceId; -import static org.onosproject.d.config.DeviceResourceIds.toResourceId; -import static org.onosproject.d.config.sync.operation.SetResponse.response; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Component to bridge Dynamic Config store and the Device configuration state. - * - *

    - *
  • Propagate DynamicConfig service change downward to Device side via provider. - *
  • Propagate Device triggered change event upward to DyamicConfig service. - *
- */ -@Beta -@Component(immediate = true, service = DeviceConfigSynchronizationProviderRegistry.class) -public class DynamicDeviceConfigSynchronizer - extends AbstractProviderRegistry - implements DeviceConfigSynchronizationProviderRegistry { - - private static final Logger log = getLogger(DynamicDeviceConfigSynchronizer.class); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DynamicConfigService dynConfigService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected NetworkConfigService netcfgService; - - private DynamicConfigListener listener = new InnerDyConListener(); - - // FIXME hack for unconsolidated event bug - private Duration quietPeriod = Duration.ofSeconds(2); - private long quietUntil = 0; - - @Activate - public void activate() { - // TODO start background task to sync Controller and Device? - dynConfigService.addListener(listener); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - dynConfigService.removeListener(listener); - log.info("Stopped"); - } - - - @Override - protected DeviceConfigSynchronizationProviderService createProviderService( - DeviceConfigSynchronizationProvider provider) { - return new InternalConfigSynchronizationServiceProvider(provider); - } - - @Override - protected DeviceConfigSynchronizationProvider defaultProvider() { - // TODO return provider instance which can deal with "general" provider? - return super.defaultProvider(); - } - - /** - * Proxy to relay Device change event for propagating running "state" - * information up to dynamic configuration service. - */ - class InternalConfigSynchronizationServiceProvider - extends AbstractProviderService - implements DeviceConfigSynchronizationProviderService { - - protected InternalConfigSynchronizationServiceProvider(DeviceConfigSynchronizationProvider provider) { - super(provider); - } - - // TODO API for passive information propagation to be added later on - } - - /** - * DynamicConfigListener to trigger active synchronization toward the device. - */ - class InnerDyConListener implements DynamicConfigListener { - - @Override - public boolean isRelevant(DynamicConfigEvent event) { - // TODO NetconfActiveComponent.isRelevant(DynamicConfigEvent) - // seems to be doing some filtering - // Logic filtering for L3VPN is probably a demo hack, - // but is there any portion of it which is really needed? - // e.g., listen only for device tree events? - - ResourceId path = event.subject(); - // TODO only device tree related event is relevant. - // 1) path is under device tree - // 2) path is root, and DataNode contains element under node - // ... - return true; - } - - @Override - public void event(DynamicConfigEvent event) { - // Note: removed accumulator in the old code assuming, - // event accumulation will happen on Device Config Event level. - - // TODO execute off event dispatch thread - processEventNonBatch(event); - } - - } - - void processEventNonBatch(DynamicConfigEvent event) { - if (System.currentTimeMillis() < quietUntil) { - log.trace("Ignoring {}. Quiet period until {}", - event, Tools.defaultOffsetDataTime(quietUntil)); - return; - } - - ResourceId path = event.subject(); - if (isUnderDeviceRootNode(path)) { - log.trace("processing event:{}", event); - - DeviceId deviceId = DeviceResourceIds.toDeviceId(path); - ResourceId deviceRootPath = DeviceResourceIds.toResourceId(deviceId); - - ResourceId absPath = ResourceIds.concat(ResourceIds.ROOT_ID, path); - ResourceId relPath = ResourceIds.relativize(deviceRootPath, absPath); - // give me everything Filter - Filter giveMeEverything = Filter.builder().build(); - - DataNode node = dynConfigService.readNode(path, giveMeEverything); - SetRequest request; - switch (event.type()) { - - case NODE_ADDED: - case NODE_REPLACED: - request = SetRequest.builder().replace(relPath, node).build(); - break; - case NODE_UPDATED: - // Event has no pay load, only thing we can do is replace. - request = SetRequest.builder().replace(relPath, node).build(); - break; - case NODE_DELETED: - request = SetRequest.builder().delete(relPath).build(); - break; - case UNKNOWN_OPRN: - default: - log.error("Unexpected event {}, aborting", event); - return; - } - - log.info("Dispatching {} request {}", deviceId, request); - CompletableFuture response = dispatchRequest(deviceId, request); - response.whenComplete((resp, e) -> { - if (e == null) { - if (resp.code() == Code.OK) { - log.info("{} for {} complete", resp, deviceId); - } else { - log.warn("{} for {} had problem", resp, deviceId); - } - } else { - log.error("Request to {} failed {}", deviceId, response, e); - } - }); - - // FIXME hack for unconsolidated event bug - quietUntil = System.currentTimeMillis() + quietPeriod.toMillis(); - } else { - log.debug("Ignored event's ResourceId: {}", event.subject()); - } - } - - - // was sketch to handle case, where event could contain batch of things... - private void processEvent(DynamicConfigEvent event) { - // TODO assuming event object will contain batch of (atomic) change event - - // What the new event will contain: - Type evtType = event.type(); - - // Transaction ID, can be null - TransactionId txId = null; - - // TODO this might change into collection of (path, val_before, val_after) - - ResourceId path = event.subject(); - // data node (can be tree) representing change, it could be incremental update - DataNode val = null; - - // build per-Device SetRequest - // val could be a tree, containing multiple Device tree, - // break them down into per-Device sub-tree - Map requests = new HashMap<>(); - - if (isUnderDeviceRootNode(path)) { - // about single device - buildDeviceRequest(requests, evtType, path, toDeviceId(path), val); - - } else if (DeviceResourceIds.isRootOrDevicesNode(path)) { - // => potentially contain changes spanning multiple Devices - Map perDevices = perDevices(path, val); - - perDevices.forEach((did, dataNode) -> { - buildDeviceRequest(requests, evtType, toResourceId(did), did, dataNode); - }); - - // TODO special care is probably required for delete cases - // especially delete all under devices - - } else { - log.warn("Event not related to a Device?"); - } - - - // TODO assuming event is a batch, - // potentially containing changes for multiple devices, - // who will process/coordinate the batch event? - - - // TODO loop through per-Device change set - List> responses = - requests.entrySet().stream() - .map(entry -> dispatchRequest(entry.getKey(), entry.getValue().build())) - .collect(Collectors.toList()); - - // wait for all responses - List allResults = Tools.allOf(responses).join(); - // TODO deal with partial failure case (multi-device coordination) - log.info("DEBUG: results: {}", allResults); - } - - // might make sense to make this public - CompletableFuture dispatchRequest(DeviceId devId, SetRequest req) { - - // determine appropriate provider for this Device - DeviceConfigSynchronizationProvider provider = this.getProvider(devId); - - if (provider == null) { - // no appropriate provider found - // return completed future with failed SetResponse - return completedFuture(response(req, - SetResponse.Code.FAILED_PRECONDITION, - "no provider found for " + devId)); - } - - // dispatch request - return provider.setConfiguration(devId, req) - .handle((resp, err) -> { - if (err == null) { - // set complete - log.info("DEBUG: Req:{}, Resp:{}", req, resp); - return resp; - } else { - // fatal error - log.error("Fatal error on {}", req, err); - return response(req, - SetResponse.Code.UNKNOWN, - "Unknown error " + err); - } - }); - } - - - // may eventually reuse with batch event - /** - * Build device request about a Device. - * - * @param requests map containing request builder to populate - * @param evtType change request type - * @param path to {@code val} - * @param did DeviceId which {@code path} is about - * @param val changed node to write - */ - private void buildDeviceRequest(Map requests, - Type evtType, - ResourceId path, - DeviceId did, - DataNode val) { - - SetRequest.Builder request = - requests.computeIfAbsent(did, d -> SetRequest.builder()); - - switch (evtType) { - case NODE_ADDED: - case NODE_REPLACED: - request.replace(path, val); - break; - - case NODE_UPDATED: - // TODO Auto-generated method stub - request.update(path, val); - break; - - case NODE_DELETED: - // TODO Auto-generated method stub - request.delete(path); - break; - - case UNKNOWN_OPRN: - default: - log.warn("Ignoring unexpected {}", evtType); - break; - } - } - - /** - * Breaks down tree {@code val} into per Device subtree. - * - * @param path pointing to {@code val} - * @param val tree which contains only 1 Device. - * @return Device node relative DataNode for each DeviceId - * @throws IllegalArgumentException - */ - private static Map perDevices(ResourceId path, DataNode val) { - if (DeviceResourceIds.isUnderDeviceRootNode(path)) { - // - if path is device root or it's subtree, path alone is sufficient - return ImmutableMap.of(DeviceResourceIds.toDeviceId(path), val); - - } else if (DeviceResourceIds.isRootOrDevicesNode(path)) { - // - if path is "/" or devices, it might be constructible from val tree - final Collection devicesChildren; - if (DeviceResourceIds.isRootNode(path)) { - // root - devicesChildren = DataNodes.childOnlyByName(val, DeviceResourceIds.DEVICES_NAME) - .map(dn -> DataNodes.children(dn)) - .orElse(ImmutableList.of()); - } else { - // devices - devicesChildren = DataNodes.children(val); - } - - return devicesChildren.stream() - // TODO use full schemaId for filtering when ready - .filter(dn -> dn.key().schemaId().name().equals(DeviceResourceIds.DEVICE_NAME)) - .collect(Collectors.toMap(dn -> DeviceResourceIds.toDeviceId(dn.key()), - dn -> dn)); - - } - throw new IllegalArgumentException(path + " not related to Device"); - } - -} diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/package-info.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/package-info.java deleted file mode 100644 index 23fa20152f..0000000000 --- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/impl/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * Implementation of dynamic config synchronizer. - */ -package org.onosproject.d.config.sync.impl; diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetRequest.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetRequest.java deleted file mode 100644 index d4d3254e69..0000000000 --- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetRequest.java +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.d.config.sync.operation; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Objects; -import java.util.Optional; - -import org.apache.commons.lang3.tuple.Pair; -import org.onosproject.d.config.sync.operation.SetRequest.Change.Operation; -import org.onosproject.yang.model.DataNode; -import org.onosproject.yang.model.ResourceId; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; - -// One SetRequest is expected to be a transaction, all-or-nothing -/** - * Collection of changes about a single Device, - * intended to be applied to the Device transactionally. - */ -@Beta -public final class SetRequest { - - private final Collection changes; - - SetRequest(Collection changes) { - this.changes = ImmutableList.copyOf(changes); - } - - public Collection changes() { - return changes; - } - - public Collection> subjects() { - return changes.stream() - .map(c -> Pair.of(c.op(), c.path())) - .collect(ImmutableList.toImmutableList()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SetRequest) { - SetRequest that = (SetRequest) obj; - return Objects.equals(this.changes, that.changes); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hash(changes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("changes", changes) - .toString(); - } - public static SetRequest.Builder builder() { - return new Builder(); - } - - public static class Builder { - private final List changes = new ArrayList<>(); - - /** - * Returns changes contained in this builder. - * - * @return unmodifiable list view of Changes - */ - public List changes() { - return Collections.unmodifiableList(changes); - } - - /** - * Adds request to remove specified {@code path}. - * - * @param path resource path relative to device root node - * @return self - */ - public SetRequest.Builder delete(ResourceId path) { - changes.add(Change.delete(path)); - return this; - } - - /** - * Adds request to replace specified {@code path} with specified {@code val}. - * - * @param path resource path relative to device root node - * @param val resource value - * @return self - */ - public SetRequest.Builder replace(ResourceId path, DataNode val) { - changes.add(Change.replace(path, val)); - return this; - } - - /** - * Adds request to update/merge specified {@code val} to the {@code path}. - * - * @param path resource path relative to device root node - * @param val resource value - * @return self - */ - public SetRequest.Builder update(ResourceId path, DataNode val) { - changes.add(Change.update(path, val)); - return this; - } - - public SetRequest build() { - return new SetRequest(changes); - } - } - - public static final class Change { - - public enum Operation { - - // Note: equivalent to remove in netconf - /** - * Request to delete specified {@code path}. - * If path does not exist, it is silently ignored. - */ - DELETE, - // Note: equivalent to replace in netconf - /** - * Request to replace specified {@code path} with specified {@code val}. - */ - REPLACE, - // Note: equivalent to merge in netconf - /** - * Request to update/merge specified {@code val} to the {@code path}. - */ - UPDATE - } - - private final Operation op; - private final ResourceId path; - private final Optional val; - - public static Change delete(ResourceId path) { - return new Change(Operation.DELETE, path, Optional.empty()); - } - - public static Change replace(ResourceId path, DataNode val) { - return new Change(Operation.REPLACE, path, Optional.of(val)); - } - - public static Change update(ResourceId path, DataNode val) { - return new Change(Operation.UPDATE, path, Optional.of(val)); - } - - Change(Operation op, ResourceId path, Optional val) { - this.op = checkNotNull(op); - this.path = checkNotNull(path); - this.val = checkNotNull(val); - } - - /** - * Returns type of change operation. - * - * @return Operation - */ - public Operation op() { - return op; - } - - /** - * Returns resource path to be changed. - * - * @return resource path relative to device root node - */ - public ResourceId path() { - return path; - } - - /** - * Returns the {@code val} specified. - * - * @return {@code val} - * @throws NoSuchElementException if this object represent {@code DELETE} op. - */ - public DataNode val() { - return val.get(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof Change) { - Change that = (Change) obj; - return Objects.equals(this.op, that.op) && - Objects.equals(this.path, that.path) && - Objects.equals(this.val, that.val); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hash(op, path, val); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("op", op) - .add("path", path) - .add("val", val) - .toString(); - } - } -} \ No newline at end of file diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetResponse.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetResponse.java deleted file mode 100644 index 0bc9502293..0000000000 --- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/SetResponse.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.d.config.sync.operation; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Collection; -import java.util.Objects; - -import org.apache.commons.lang3.tuple.Pair; -import org.onosproject.d.config.sync.operation.SetRequest.Change.Operation; -import org.onosproject.yang.model.ResourceId; - -import com.google.common.annotations.Beta; -import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableList; - - -@Beta -public final class SetResponse { - - // partially borrowed from io.grpc.Status.Code, - // might want to borrow all of them - public enum Code { - OK, - CANCELLED, - - UNKNOWN, - - INVALID_ARGUMENT, - - NOT_FOUND, - ALREADY_EXISTS, - - FAILED_PRECONDITION, - ABORTED, - UNAVAILABLE, - } - - private final Collection> subjects; - - private final SetResponse.Code code; - - // human readable error message for logging purpose - private final String message; - - SetResponse(Collection> subjects, - SetResponse.Code code, - String message) { - this.subjects = ImmutableList.copyOf(subjects); - this.code = checkNotNull(code); - this.message = checkNotNull(message); - } - - public Collection> subjects() { - return subjects; - } - - public Code code() { - return code; - } - - public String message() { - return message; - } - - - /** - * Creates SetResponse instance from request. - * - * @param request original request this response corresponds to - * @param code response status code - * @param message human readable error message for logging purpose. - * can be left empty string on OK response. - * @return SetResponse instance - */ - public static SetResponse response(SetRequest request, - Code code, - String message) { - return new SetResponse(request.subjects(), code, checkNotNull(message)); - } - - /** - * Creates successful SetResponce instance from request. - * - * @param request original request this response corresponds to - * @return SetResponse instance - */ - public static SetResponse ok(SetRequest request) { - return new SetResponse(request.subjects(), Code.OK, ""); - } - - @Override - public int hashCode() { - return Objects.hash(subjects, code, message); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SetResponse) { - SetResponse that = (SetResponse) obj; - return Objects.equals(this.subjects, that.subjects) && - Objects.equals(this.code, that.code) && - Objects.equals(this.message, that.message); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("code", code) - .add("subjects", subjects) - .add("message", message) - .toString(); - } - - - -} \ No newline at end of file diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/package-info.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/package-info.java deleted file mode 100644 index d7612e9fb5..0000000000 --- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/operation/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * Dynamic config synchronizer API related value objects. - */ -package org.onosproject.d.config.sync.operation; diff --git a/apps/configsync/src/main/java/org/onosproject/d/config/sync/package-info.java b/apps/configsync/src/main/java/org/onosproject/d/config/sync/package-info.java deleted file mode 100644 index 8da2769e9e..0000000000 --- a/apps/configsync/src/main/java/org/onosproject/d/config/sync/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * Dynamic config synchronizer API. - */ -package org.onosproject.d.config.sync; diff --git a/apps/configsync/src/test/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizerTest.java b/apps/configsync/src/test/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizerTest.java deleted file mode 100644 index bfdead6ad5..0000000000 --- a/apps/configsync/src/test/java/org/onosproject/d/config/sync/impl/DynamicDeviceConfigSynchronizerTest.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.d.config.sync.impl; - -import static org.junit.Assert.*; -import static org.onosproject.d.config.ResourceIds.ROOT_ID; - -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.function.BiFunction; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.config.DynamicConfigEvent; -import org.onosproject.config.DynamicConfigServiceAdapter; -import org.onosproject.config.Filter; -import org.onosproject.d.config.DeviceResourceIds; -import org.onosproject.d.config.ResourceIds; -import org.onosproject.d.config.sync.DeviceConfigSynchronizationProvider; -import org.onosproject.d.config.sync.operation.SetRequest; -import org.onosproject.d.config.sync.operation.SetRequest.Change; -import org.onosproject.d.config.sync.operation.SetRequest.Change.Operation; -import org.onosproject.d.config.sync.operation.SetResponse; -import org.onosproject.net.DeviceId; -import org.onosproject.net.config.NetworkConfigServiceAdapter; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.yang.model.DataNode; -import org.onosproject.yang.model.InnerNode; -import org.onosproject.yang.model.LeafNode; -import org.onosproject.yang.model.ResourceId; - -import com.google.common.collect.Iterables; - -public class DynamicDeviceConfigSynchronizerTest { - - static final String TEST_NS = "testNS"; - - static final ResourceId REL_INTERFACES = ResourceId.builder() - .addBranchPointSchema("interfaces", TEST_NS) - .build(); - - static final DeviceId DID = DeviceId.deviceId("test:device1"); - - DynamicDeviceConfigSynchronizer sut; - - TestDynamicConfigService dyConService; - - CountDownLatch providerCalled = new CountDownLatch(1); - - /** - * DynamicConfigService.readNode(ResourceId, Filter) stub. - */ - BiFunction onDcsRead; - - BiFunction> onSetConfiguration; - - @Before - public void setUp() throws Exception { - - sut = new DynamicDeviceConfigSynchronizer(); - dyConService = new TestDynamicConfigService(); - sut.dynConfigService = dyConService; - sut.netcfgService = new NetworkConfigServiceAdapter(); - - sut.activate(); - - sut.register(new MockDeviceConfigSynchronizerProvider()); - } - - @After - public void tearDown() throws Exception { - sut.deactivate(); - } - - @Test - public void testDispatchRequest() throws Exception { - - ResourceId devicePath = DeviceResourceIds.toResourceId(DID); - ResourceId cfgPath = REL_INTERFACES; - ResourceId absPath = ResourceIds.concat(devicePath, cfgPath); - ResourceId evtPath = ResourceIds.relativize(ROOT_ID, absPath); - DynamicConfigEvent event = new DynamicConfigEvent(DynamicConfigEvent.Type.NODE_REPLACED, evtPath); - - // assertions - onDcsRead = (path, filter) -> { - assertTrue(filter.isEmptyFilter()); - assertEquals("DCService get access by root relative RID", evtPath, path); - return deviceConfigNode(); - }; - - onSetConfiguration = (deviceId, request) -> { - assertEquals(DID, deviceId); - assertEquals(1, request.changes().size()); - Change change = Iterables.get(request.changes(), 0); - assertEquals("Provider get access by rel RID", REL_INTERFACES, change.path()); - assertEquals(Operation.REPLACE, change.op()); - assertEquals("interfaces", change.val().key().schemaId().name()); - // walk and test children if it adds value - - providerCalled.countDown(); - return CompletableFuture.completedFuture(SetResponse.ok(request)); - }; - - // start test run - - // imitate event from DCS - dyConService.postEvent(event); - - // assert that it reached the provider - providerCalled.await(5, TimeUnit.HOURS); - } - - /** - * DataNode for testing. - * - *
-     *   +-interfaces
-     *      |
-     *      +- interface{intf-name="en0"}
-     *           |
-     *           +- speed = "10G"
-     *           +- state = "up"
-     *
-     * 
- * @return DataNode - */ - private DataNode deviceConfigNode() { - InnerNode.Builder intfs = InnerNode.builder("interfaces", TEST_NS); - intfs.type(DataNode.Type.SINGLE_INSTANCE_NODE); - InnerNode.Builder intf = intfs.createChildBuilder("interface", TEST_NS); - intf.type(DataNode.Type.SINGLE_INSTANCE_LEAF_VALUE_NODE); - intf.addKeyLeaf("name", TEST_NS, "Ethernet0/0"); - LeafNode.Builder speed = intf.createChildBuilder("mtu", TEST_NS, "1500"); - speed.type(DataNode.Type.SINGLE_INSTANCE_LEAF_VALUE_NODE); - - intf.addNode(speed.build()); - intfs.addNode(intf.build()); - return intfs.build(); - } - - private class TestDynamicConfigService extends DynamicConfigServiceAdapter { - - public void postEvent(DynamicConfigEvent event) { - listenerRegistry.process(event); - } - - @Override - public DataNode readNode(ResourceId path, Filter filter) { - return onDcsRead.apply(path, filter); - } - } - - private class MockDeviceConfigSynchronizerProvider - implements DeviceConfigSynchronizationProvider { - - @Override - public ProviderId id() { - return new ProviderId(DID.uri().getScheme(), "test-provider"); - } - - @Override - public CompletableFuture setConfiguration(DeviceId deviceId, - SetRequest request) { - return onSetConfiguration.apply(deviceId, request); - } - } - -} diff --git a/apps/evpn-route-service/BUILD b/apps/evpn-route-service/BUILD deleted file mode 100644 index d099839500..0000000000 --- a/apps/evpn-route-service/BUILD +++ /dev/null @@ -1,11 +0,0 @@ -BUNDLES = [ - "//apps/evpn-route-service/api:onos-apps-evpn-route-service-api", - "//apps/evpn-route-service/app:onos-apps-evpn-route-service-app", -] - -onos_app( - category = "Traffic Engineering", - included_bundles = BUNDLES, - title = "EVPN Routing", - url = "http://onosproject.org", -) diff --git a/apps/evpn-route-service/api/BUILD b/apps/evpn-route-service/api/BUILD deleted file mode 100644 index f72e3bcff0..0000000000 --- a/apps/evpn-route-service/api/BUILD +++ /dev/null @@ -1,3 +0,0 @@ -osgi_jar_with_tests( - deps = CORE_DEPS, -) diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstance.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstance.java deleted file mode 100644 index 5288db7dad..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstance.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.List; -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Represents a evpn instance. - */ -public final class EvpnInstance { - - private final RouteDistinguisher rd; - private final List importRtList; - private final List exportRtList; - private final EvpnInstanceName evpnName; - - /** - * Constructor to initialize the parameters. - * - * @param rd route distinguisher - * @param importRtList import rotue targets - * @param exportRtList export rotue targets - * @param evpnName vpn instance name - */ - private EvpnInstance(RouteDistinguisher rd, - List importRtList, - List exportRtList, - EvpnInstanceName evpnName) { - checkNotNull(rd); - //checkNotNull(rt); - checkNotNull(evpnName); - this.rd = rd; - this.importRtList = importRtList; - this.exportRtList = exportRtList; - this.evpnName = evpnName; - } - - /** - * Creats the instance of EvpnInstance. - * - * @param rd route distinguisher - * @param importRtList import rotue targets - * @param exportRtList export rotue targets - * @param evpnName vpn instance name - * @return EvpnInstance - */ - public static EvpnInstance evpnInstance(RouteDistinguisher rd, - List importRtList, - List exportRtList, - EvpnInstanceName evpnName) { - return new EvpnInstance(rd, importRtList, exportRtList, evpnName); - } - - /** - * Getter of RouteDistinguisher. - * - * @return RouteDistinguisher - */ - public RouteDistinguisher routeDistinguisher() { - return rd; - } - - /** - * Returns the Route targets. - * - * @return RouteTarget List - */ - - public List importRouteTarget() { - return importRtList; - } - - /** - * Returns the Route targets. - * - * @return RouteTarget List - */ - public List exportRouteTarget() { - return exportRtList; - } - - /** - * Getter of vpn instance name. - * - * @return evpnName - */ - public EvpnInstanceName evpnName() { - return evpnName; - } - - @Override - public int hashCode() { - return Objects.hash(rd, importRtList, exportRtList, evpnName); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof EvpnInstance)) { - return false; - } - - EvpnInstance that = (EvpnInstance) other; - - return Objects.equals(this.evpnName, that.evpnName) - && Objects.equals(this.rd, that.rd) - && Objects.equals(this.importRtList, that.importRtList) - && Objects.equals(this.exportRtList, that.exportRtList); - } - - @Override - public String toString() { - return toStringHelper(this).add("evpnName", this.evpnName) - .add("rd", this.rd).add("import rt", this.importRtList) - .add("export rt", this.exportRtList).toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceName.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceName.java deleted file mode 100644 index f1ea22ac16..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceName.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Represents the EvpnInstanceName. - */ -public final class EvpnInstanceName { - private final String evpnName; - - /** - * Constructor to initialize the parameters. - * - * @param evpnName EvpnInstanceName - */ - private EvpnInstanceName(String evpnName) { - this.evpnName = evpnName; - } - - /** - * Creates instance of EvpnInstanceName. - * - * @param evpnName evpnName - * @return evpnInstanceName - */ - public static EvpnInstanceName evpnName(String evpnName) { - return new EvpnInstanceName(evpnName); - } - - /** - * Get vpn instance name. - * - * @return evpnName - */ - public String getEvpnName() { - return evpnName; - } - - @Override - public int hashCode() { - return Objects.hash(evpnName); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof EvpnInstanceName) { - EvpnInstanceName other = (EvpnInstanceName) obj; - return Objects.equals(this.evpnName, other.evpnName); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("evpnName", evpnName).toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceNextHop.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceNextHop.java deleted file mode 100644 index 49ad2c5408..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceNextHop.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Objects; - -import org.onlab.packet.IpAddress; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Represents a evpn instance nexthop. - */ -public final class EvpnInstanceNextHop { - - private final IpAddress nextHop; - private final Label label; - - /** - * Constructor to initialize the parameters. - * - * @param nextHop nexthop - * @param label label - */ - private EvpnInstanceNextHop(IpAddress nextHop, Label label) { - this.nextHop = nextHop; - this.label = label; - } - - /** - * creates instance of EvpnInstanceNextHop. - * - * @param nextHop nexthop - * @param label label - * @return evpnInstanceNexthop - */ - public static EvpnInstanceNextHop evpnNextHop(IpAddress nextHop, - Label label) { - return new EvpnInstanceNextHop(nextHop, label); - } - - /** - * Returns the next hop IP address. - * - * @return next hop - */ - public IpAddress nextHop() { - return nextHop; - } - - /** - * Returns the label. - * - * @return Label - */ - public Label label() { - return label; - } - - @Override - public int hashCode() { - return Objects.hash(nextHop, label); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof EvpnInstanceNextHop)) { - return false; - } - - EvpnInstanceNextHop that = (EvpnInstanceNextHop) other; - - return Objects.equals(this.nextHop(), that.nextHop()) - && Objects.equals(this.label, that.label); - } - - @Override - public String toString() { - return toStringHelper(this).add("nextHop", this.nextHop()) - .add("label", this.label).toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstancePrefix.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstancePrefix.java deleted file mode 100644 index 2f30538917..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstancePrefix.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Objects; - -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Represents a evpn instance prefix. - */ -public final class EvpnInstancePrefix { - - private final MacAddress macAddress; - private final IpPrefix ipPrefix; - - /** - * Constructor to initialize the parameters. - * - * @param macAddress Mac address - * @param ipPrefix IP address - */ - private EvpnInstancePrefix(MacAddress macAddress, - IpPrefix ipPrefix) { - checkNotNull(macAddress); - this.macAddress = macAddress; - this.ipPrefix = ipPrefix; - } - - /** - * Creates the instance of EvpnInstancePrefix. - * - * @param macAddress Mac address - * @param ipPrefix IP address - * @return Evpn instance prefix - */ - public static EvpnInstancePrefix evpnPrefix(MacAddress macAddress, - IpPrefix ipPrefix) { - return new EvpnInstancePrefix(macAddress, ipPrefix); - } - - /** - * Returns the MAC of the route. - * - * @return MAC address - */ - public MacAddress macAddress() { - return macAddress; - } - - /** - * Returns the IP prefix of the route. - * - * @return IP prefix - */ - public IpPrefix ipPrefix() { - return ipPrefix; - } - - @Override - public int hashCode() { - return Objects.hash(macAddress); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof EvpnInstancePrefix)) { - return false; - } - - EvpnInstancePrefix that = (EvpnInstancePrefix) other; - - return Objects.equals(this.macAddress, that.macAddress) - && Objects.equals(this.ipPrefix, that.ipPrefix); - } - - @Override - public String toString() { - return toStringHelper(this).add("macAddress", this.macAddress) - .add("ipAddress", this.ipPrefix).toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceRoute.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceRoute.java deleted file mode 100644 index ca0c8bd855..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceRoute.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.List; -import java.util.Objects; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Represents a evpn instance route. - */ -public class EvpnInstanceRoute { - - private final EvpnInstanceName evpnName; - private final RouteDistinguisher rd; - private List importRtList; - private List exportRtList; - private final EvpnInstancePrefix evpnInstancePrefix; - private final EvpnInstanceNextHop evpnInstanceNextHop; - private final IpPrefix prefix; - private final IpAddress nextHop; - private final Label label; - - /** - * Constructor to initialize the parameters. - * - * @param evpnName vpn instance name - * @param rd route distinguisher - * @param importRtList import route targets - * @param exportRtList export route targets - * @param evpnInstancePrefix evpn intance prefix - * @param evpnInstanceNextHop evpn instance nexthop - * @param prefix evpn prefix - * @param nextHop evpn nexthop - * @param label label - */ - public EvpnInstanceRoute(EvpnInstanceName evpnName, - RouteDistinguisher rd, - List importRtList, - List exportRtList, - EvpnInstancePrefix evpnInstancePrefix, - EvpnInstanceNextHop evpnInstanceNextHop, - IpPrefix prefix, - IpAddress nextHop, - Label label) { - checkNotNull(evpnName); - checkNotNull(prefix); - //checkNotNull(nextHop); //can be NULL in MP un reach - checkNotNull(rd); - - this.evpnName = evpnName; - this.rd = rd; - this.importRtList = importRtList; - this.exportRtList = exportRtList; - this.prefix = prefix; - this.nextHop = nextHop; - this.evpnInstancePrefix = evpnInstancePrefix; - this.evpnInstanceNextHop = evpnInstanceNextHop; - this.label = label; - } - - /** - * Returns the evpnName. - * - * @return EvpnInstanceName - */ - public EvpnInstanceName evpnInstanceName() { - return evpnName; - } - - /** - * Returns the route distinguisher. - * - * @return RouteDistinguisher - */ - public RouteDistinguisher routeDistinguisher() { - return rd; - } - - /** - * Returns the Route targets. - * - * @return RouteTarget List - */ - - public List importRouteTarget() { - return importRtList; - } - - /** - * Returns the Route targets. - * - * @return RouteTarget List - */ - public List exportRouteTarget() { - return exportRtList; - } - - /** - * Set import list. - * - * @param importRtList import list - */ - public void setImportRtList(List importRtList) { - this.importRtList = importRtList; - } - - /** - * Set export list. - * - * @param exportRtList export list - */ - public void setExportRtList(List exportRtList) { - this.exportRtList = exportRtList; - } - - /** - * Returns EvpnInstancePrefix of the evpn private route. - * - * @return EvpnInstancePrefix - */ - - public EvpnInstancePrefix getevpnInstancePrefix() { - return evpnInstancePrefix; - } - - /** - * Returns EvpnInstanceNextHop of the evpn private route. - * - * @return EvpnInstancePrefix - */ - - public EvpnInstanceNextHop getEvpnInstanceNextHop() { - return evpnInstanceNextHop; - } - - /** - * Returns prefix of the evpn private route. - * - * @return EvpnInstancePrefix - */ - public IpPrefix prefix() { - return prefix; - } - - /** - * Returns the label. - * - * @return EvpnInstanceName - */ - public Label getLabel() { - return label; - } - - /** - * Returns the label. - * - * @return EvpnInstanceName - */ - public IpAddress getNextHopl() { - return nextHop; - } - - @Override - public int hashCode() { - return Objects.hash(evpnName, prefix, nextHop, - rd, importRtList, exportRtList); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof EvpnInstanceRoute)) { - return false; - } - - EvpnInstanceRoute that = (EvpnInstanceRoute) other; - - return Objects.equals(prefix, that.prefix) - && Objects.equals(nextHop, that.nextHop) - && Objects.equals(evpnName, that.evpnName) - && Objects.equals(rd, that.rd) - && Objects.equals(importRtList, that.importRtList) - && Objects.equals(exportRtList, that.exportRtList); - } - - @Override - public String toString() { - return toStringHelper(this).add("prefix", prefix) - .add("nextHop", nextHop) - .add("rd", rd) - .add("import rt", importRtList) - .add("export rt", exportRtList) - .add("evpnName", evpnName) - .toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInternalRouteEvent.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInternalRouteEvent.java deleted file mode 100644 index 7a71875ed3..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInternalRouteEvent.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import org.onosproject.event.AbstractEvent; - -/** - * Route event for signalling between the store and the manager. - */ -public class EvpnInternalRouteEvent extends - AbstractEvent { - - /** - * Internal route event type. - */ - public enum Type { - /** - * Indicates a route was added to the store. - */ - ROUTE_ADDED, - - /** - * Indicates a route was removed from the store. - */ - ROUTE_REMOVED - } - - /** - * Creates a new internal route event. - * - * @param type route event type - * @param subject route set - */ - public EvpnInternalRouteEvent(Type type, EvpnRouteSet subject) { - super(type, subject); - } - - public EvpnInternalRouteEvent(Type type, EvpnRouteSet subject, long time) { - super(type, subject, time); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnNextHop.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnNextHop.java deleted file mode 100644 index ac1e06bc99..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnNextHop.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.List; -import java.util.Objects; - -import org.onlab.packet.IpAddress; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Represents a evpn next hop. - */ -public final class EvpnNextHop { - - private final IpAddress nextHop; - private final List importRtList; - private final List exportRtList; - private final Label label; - - /** - * Constructor to initialize the parameters. - * - * @param nextHop evpn next hop - * @param importRtList import route targets - * @param importRtList export route targets - * @param label label - */ - private EvpnNextHop(IpAddress nextHop, List importRtList, List exportRtList, - Label label) { - this.nextHop = nextHop; - this.importRtList = importRtList; - this.exportRtList = exportRtList; - this.label = label; - } - - /** - * Creates the Evpn Next hop with given parameters. - * - * @param nextHop Next hop of the route - * @param importRtList route target import list - * @param exportRtList route target export list - * @param label label of evpn route - * @return EvpnNextHop - */ - public static EvpnNextHop evpnNextHop(IpAddress nextHop, List importRtList, - List exportRtList, - Label label) { - return new EvpnNextHop(nextHop, importRtList, exportRtList, label); - } - - /** - * Returns the next hop IP address. - * - * @return next hop - */ - public IpAddress nextHop() { - return nextHop; - } - - /** - * Returns the Route targets. - * - * @return RouteTarget List - */ - - public List importRouteTarget() { - return importRtList; - } - - /** - * Returns the Route targets. - * - * @return RouteTarget List - */ - public List exportRouteTarget() { - return exportRtList; - } - - /** - * Returns the label of evpn route. - * - * @return Label - */ - public Label label() { - return label; - } - - @Override - public int hashCode() { - return Objects.hash(nextHop, importRtList, exportRtList, label); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof EvpnNextHop)) { - return false; - } - - EvpnNextHop that = (EvpnNextHop) other; - - return Objects.equals(this.nextHop(), that.nextHop()) - && Objects.equals(this.importRtList, that.importRtList) - && Objects.equals(this.exportRtList, that.exportRtList) - && Objects.equals(this.label, that.label); - } - - @Override - public String toString() { - return toStringHelper(this).add("nextHop", this.nextHop()) - .add("import rt list", this.importRtList).add("export rt list", this.exportRtList) - .add("label", this.label).toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnPrefix.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnPrefix.java deleted file mode 100644 index 3f70ef5722..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnPrefix.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Objects; - -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Represents a evpn prefix. - */ -public final class EvpnPrefix { - - private final RouteDistinguisher rd; - private final MacAddress macAddress; - private final IpPrefix ipAddress; - - /** - * Constructor to initialize the parameters. - * - * @param rd route distinguisher - * @param macAddress mac address - * @param ipAddress IP address - */ - public EvpnPrefix(RouteDistinguisher rd, MacAddress macAddress, - IpPrefix ipAddress) { - checkNotNull(rd); - checkNotNull(macAddress); - checkNotNull(ipAddress); - this.rd = rd; - this.macAddress = macAddress; - this.ipAddress = ipAddress; - } - - /** - * Creates the evpn prefix by given parameters. - * - * @param rd route distinguisher - * @param macAddress mac address - * @param ipAddress ip address - * @return EvpnPrefix - */ - public static EvpnPrefix evpnPrefix(RouteDistinguisher rd, - MacAddress macAddress, - IpPrefix ipAddress) { - return new EvpnPrefix(rd, macAddress, ipAddress); - } - - /** - * Returns the route distinguisher. - * - * @return RouteDistinguisher - */ - public RouteDistinguisher routeDistinguisher() { - return rd; - } - - /** - * Returns the mac address. - * - * @return MacAddress - */ - public MacAddress macAddress() { - return macAddress; - } - - /** - * Returns the IP address. - * - * @return Ip4Address - */ - public IpPrefix ipAddress() { - return ipAddress; - } - - @Override - public int hashCode() { - return Objects.hash(rd, macAddress, ipAddress); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof EvpnPrefix)) { - return false; - } - - EvpnPrefix that = (EvpnPrefix) other; - - return Objects.equals(this.macAddress(), that.macAddress()) - && Objects.equals(this.ipAddress, that.ipAddress) - && Objects.equals(this.rd, that.rd); - } - - @Override - public String toString() { - return toStringHelper(this).add("macAddress", this.macAddress()) - .add("ipAddress", this.ipAddress()).add("rd", this.rd) - .toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRoute.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRoute.java deleted file mode 100644 index 0f025d3305..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRoute.java +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.List; -import java.util.Objects; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Represents a evpn route. - */ -public class EvpnRoute { - - - /** - * Source of the route. - */ - public enum Source { - /** - * Route came from app source. - */ - LOCAL, - - /** - * Route came from remote bgp peer source. - */ - REMOTE, - } - - private final Source source; - private final MacAddress prefixMac; - private final IpPrefix prefix; - private final IpAddress nextHop; - private final RouteDistinguisher rd; - private List importRtList; - private List exportRtList; - private final Label label; - - /** - * Constructor to initialize the parameters. - * - * @param source route source - * @param prefixMac mac address - * @param prefix ip address - * @param nextHop evpn nexthop - * @param rd route distinguisher - * @param importRtList import route targets - * @param exportRtList export route targets - * @param label evpn route label - */ - public EvpnRoute(Source source, - MacAddress prefixMac, - IpPrefix prefix, - IpAddress nextHop, - RouteDistinguisher rd, - List importRtList, - List exportRtList, - Label label) { - - checkNotNull(prefixMac); - checkNotNull(prefix); - //checkNotNull(nextHop);//next hop can be null in case of MP un reach. - checkNotNull(rd); - checkNotNull(label); - this.source = checkNotNull(source); - this.prefix = prefix; - this.prefixMac = prefixMac; - this.nextHop = nextHop; - this.rd = rd; - this.importRtList = importRtList; - this.exportRtList = exportRtList; - this.label = label; - } - - /** - * Constructor to initialize the parameters. - * - * @param source route source - * @param prefixMac mac address - * @param prefix ip address - * @param nextHop evpn nexthop - * @param rdToString route distinguisher - * @param importRtList import route targets - * @param exportRtList export route targets - * @param labelToInt evpn route label - */ - public EvpnRoute(Source source, - MacAddress prefixMac, - IpPrefix prefix, - IpAddress nextHop, - String rdToString, - List importRtList, - List exportRtList, - int labelToInt) { - checkNotNull(prefixMac); - checkNotNull(prefix); - //checkNotNull(nextHop); //next hop can be null in case of MP un reach. - this.source = checkNotNull(source); - this.prefix = prefix; - this.prefixMac = prefixMac; - this.nextHop = nextHop; - this.rd = RouteDistinguisher.routeDistinguisher(rdToString); - this.importRtList = importRtList; - this.exportRtList = exportRtList; - this.label = Label.label(labelToInt); - } - - /** - * Returns the route source. - * - * @return route source - */ - public Source source() { - return source; - } - - /** - * Returns the address. - * - * @return MacAddress - */ - public MacAddress prefixMac() { - return prefixMac; - } - - /** - * Returns the IPv4 address. - * - * @return Ip4Address - */ - public IpPrefix prefixIp() { - return prefix; - } - - /** - * Returns the IPv4 address. - * - * @return Ip4Address - */ - public EvpnPrefix evpnPrefix() { - return new EvpnPrefix(rd, prefixMac, - prefix); - } - - - /** - * Returns the next hop IP address. - * - * @return Ip4Address - */ - public IpAddress ipNextHop() { - return nextHop; - } - - public EvpnNextHop nextHop() { - return EvpnNextHop.evpnNextHop(nextHop, - importRtList, - exportRtList, - label); - } - - /** - * Returns the routeDistinguisher. - * - * @return RouteDistinguisher - */ - public RouteDistinguisher routeDistinguisher() { - return rd; - } - - /** - * Returns the Route targets. - * - * @return RouteTarget List - */ - - public List importRouteTarget() { - return importRtList; - } - - /** - * Returns the Route targets. - * - * @return RouteTarget List - */ - public List exportRouteTarget() { - return exportRtList; - } - - /** - * Set import list. - * - * @param importRtList import list - */ - public void setImportRtList(List importRtList) { - this.importRtList = importRtList; - } - - /** - * Set export list. - * - * @param exportRtList export list - */ - public void setExportRtList(List exportRtList) { - this.exportRtList = exportRtList; - } - - /** - * Returns the label. - * - * @return Label - */ - public Label label() { - return label; - } - - @Override - public int hashCode() { - return Objects.hash(prefixMac, - prefix, - nextHop, - rd, - importRtList, - exportRtList, - label); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof EvpnRoute)) { - return false; - } - - EvpnRoute that = (EvpnRoute) other; - - return Objects.equals(prefixMac, that.prefixMac) - && Objects.equals(prefix, that.prefix) - && Objects.equals(nextHop, that.nextHop) - && Objects.equals(this.rd, that.rd) - && Objects.equals(this.importRtList, that.importRtList) - && Objects.equals(this.exportRtList, that.exportRtList) - && Objects.equals(this.label, that.label); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("prefixMac", prefixMac) - .add("prefix", prefix) - .add("nextHop", nextHop) - .add("rd", this.rd) - .add("import rt", this.importRtList) - .add("export rt", this.exportRtList) - .add("label", this.label) - .toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteAdminService.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteAdminService.java deleted file mode 100644 index cc9e20010d..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteAdminService.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Collection; - -/** - * Service allowing mutation of EVPN routing state. - */ -public interface EvpnRouteAdminService extends EvpnRouteService { - - /** - * Updates the given routes in the route service. - * - * @param routes collection of routes to update - */ - void update(Collection routes); - - /** - * Withdraws the given routes from the route service. - * - * @param routes collection of routes to withdraw - */ - void withdraw(Collection routes); -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteEvent.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteEvent.java deleted file mode 100644 index 5e7f83a421..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteEvent.java +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Collection; -import java.util.Collections; -import java.util.Objects; - -import org.onlab.util.Tools; -import org.onosproject.event.AbstractEvent; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Describes an event about a route. - */ -public class EvpnRouteEvent extends AbstractEvent { - - private final EvpnRoute prevSubject; - private final Collection alternativeRoutes; - - /** - * Route event type. - */ - public enum Type { - - /** - * Route is new and the next hop is resolved. - *

- * The subject of this event should be the route being added. - * The prevSubject of this event should be null. - *

- */ - ROUTE_ADDED, - - /** - * Route has updated information. - *

- * The subject of this event should be the new route. - * The prevSubject of this event should be the old route. - *

- */ - ROUTE_UPDATED, - - /** - * Route was removed or the next hop becomes unresolved. - *

- * The subject of this event should be the route being removed. - * The prevSubject of this event should be null. - *

- */ - ROUTE_REMOVED, - - /** - * The set of alternative routes for the subject's prefix has changed, - * but the best route is still the same. - *

- * The subject is the best route for the prefix (which has already been - * notified in a previous event). - * The prevSubject of this event is null. - * The alternatives contains the new set of alternative routes. - *

- */ - ALTERNATIVE_ROUTES_CHANGED - } - - /** - * Creates a new route event without specifying previous subject. - * - * @param type event type - * @param subject event subject - */ - public EvpnRouteEvent(Type type, EvpnRoute subject) { - this(type, subject, null, Collections.emptySet()); - } - - /** - * Creates a new route event without specifying previous subject. - * - * @param type event type - * @param subject event subject - * @param alternatives alternative routes for subject's prefix - */ - public EvpnRouteEvent(Type type, EvpnRoute subject, - Collection alternatives) { - this(type, subject, null, alternatives); - } - - /** - * Creates a new route event. - * - * @param type event type - * @param subject event subject - * @param time event time - */ - protected EvpnRouteEvent(Type type, EvpnRoute subject, long time) { - super(type, subject, time); - this.prevSubject = null; - - this.alternativeRoutes = Collections.emptySet(); - } - - /** - * Creates a new route event with previous subject. - * - * @param type event type - * @param subject event subject - * @param prevSubject previous subject - */ - public EvpnRouteEvent(Type type, EvpnRoute subject, EvpnRoute prevSubject) { - this(type, subject, prevSubject, Collections.emptySet()); - } - - /** - * Creates a new route event with a previous subject and alternative routes. - * - * @param type event type - * @param subject event subject - * @param prevSubject previous subject - * @param alternatives alternative routes for subject's prefix - */ - public EvpnRouteEvent(Type type, EvpnRoute subject, EvpnRoute prevSubject, - Collection alternatives) { - super(type, subject); - this.prevSubject = prevSubject; - this.alternativeRoutes = alternatives; - } - - /** - * Returns the previous subject of the event. - * - * @return previous subject to which this event pertains - */ - public EvpnRoute prevSubject() { - return prevSubject; - } - - /** - * Returns the set of alternative routes for the subject's prefix. - * - * @return alternative routes - */ - public Collection alternatives() { - return alternativeRoutes; - } - - @Override - public int hashCode() { - return Objects.hash(subject(), type(), prevSubject(), alternativeRoutes); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof EvpnRouteEvent)) { - return false; - } - - EvpnRouteEvent that = (EvpnRouteEvent) other; - - return Objects.equals(this.subject(), that.subject()) && - Objects.equals(this.type(), that.type()) && - Objects.equals(this.prevSubject, that.prevSubject) && - Objects.equals(this.alternativeRoutes, that.alternativeRoutes); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("time", Tools.defaultOffsetDataTime(time())) - .add("type", type()) - .add("subject", subject()) - .add("prevSubject", prevSubject) - .add("alternatives", alternativeRoutes) - .toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteListener.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteListener.java deleted file mode 100644 index 32a35c2fd4..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import org.onosproject.event.EventListener; - -/** - * Listener for route events. - */ -public interface EvpnRouteListener extends EventListener { -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteService.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteService.java deleted file mode 100644 index ca9c031254..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteService.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Collection; - -import org.onosproject.event.ListenerService; - -/** - * EVPN route service. - */ -public interface EvpnRouteService extends ListenerService { - - - /** - * Returns the set of route tables in the system. - * - * @return collection of route table IDs. - */ - Collection getRouteTables(); -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteSet.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteSet.java deleted file mode 100644 index 707df2254b..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteSet.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Objects; -import java.util.Set; - -import com.google.common.collect.ImmutableSet; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * A set of routes for a particular prefix in a route table. - */ -public class EvpnRouteSet { - private final EvpnRouteTableId tableId; - - private final EvpnPrefix prefix; - private final Set routes; - - /** - * Creates a new route set. - * - * @param tableId route table ID - * @param prefix IP prefix - * @param routes routes for the given prefix - */ - public EvpnRouteSet(EvpnRouteTableId tableId, EvpnPrefix prefix, Set - routes) { - this.tableId = checkNotNull(tableId); - this.prefix = checkNotNull(prefix); - this.routes = ImmutableSet.copyOf(checkNotNull(routes)); - } - - /** - * Returns the route table ID. - * - * @return route table ID - */ - public EvpnRouteTableId tableId() { - return tableId; - } - - /** - * Returns the IP prefix. - * - * @return IP prefix - */ - public EvpnPrefix prefix() { - return prefix; - } - - /** - * Returns the set of routes. - * - * @return routes - */ - public Set routes() { - return routes; - } - - @Override - public int hashCode() { - return Objects.hash(tableId, prefix, routes); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof EvpnRouteSet)) { - return false; - } - - EvpnRouteSet that = (EvpnRouteSet) other; - - return Objects.equals(this.tableId, that.tableId) && - Objects.equals(this.prefix, that.prefix) && - Objects.equals(this.routes, that.routes); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStore.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStore.java deleted file mode 100644 index c06704f662..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStore.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Collection; -import java.util.Set; - -import org.onlab.packet.IpAddress; -import org.onosproject.store.Store; - -/** - * EVPN route store. - */ -public interface EvpnRouteStore extends Store { - - /** - * Adds or updates the given route in the store. - * - * @param route route to add or update - */ - void updateRoute(EvpnRoute route); - - /** - * Removes the given route from the store. - * - * @param route route to remove - */ - void removeRoute(EvpnRoute route); - - /** - * Returns the IDs for all route tables in the store. - * - * @return route table IDs - */ - Set getRouteTables(); - - /** - * Returns the routes in the given route table, grouped by prefix. - * - * @param table route table ID - * @return routes - */ - Collection getRoutes(EvpnRouteTableId table); - - /** - * Returns the routes that point to the given next hop IP address. - * - * @param ip IP address of the next hop - * @return routes for the given next hop - */ - // TODO think about including route table info - Collection getRoutesForNextHop(IpAddress ip); - -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStoreDelegate.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStoreDelegate.java deleted file mode 100644 index d714adcc37..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStoreDelegate.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import org.onosproject.store.StoreDelegate; - -/** - * Route store delegate abstraction. - */ -public interface EvpnRouteStoreDelegate extends - StoreDelegate { -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteTableId.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteTableId.java deleted file mode 100644 index 846a8d1b8b..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteTableId.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Objects; - -/** - * Identifier for an EVPN routing table. - */ -public class EvpnRouteTableId { - private final String name; - - /** - * Creates a new route table ID. - * - * @param name unique name for the route table - */ - public EvpnRouteTableId(String name) { - this.name = name; - } - - /** - * Returns the name of the route table. - * - * @return table name - */ - public String name() { - return name; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof EvpnRouteTableId) { - EvpnRouteTableId that = (EvpnRouteTableId) obj; - - return Objects.equals(this.name, that.name); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hash(name); - } - - @Override - public String toString() { - return name; - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnTable.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnTable.java deleted file mode 100755 index 0b3379fce6..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnTable.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Collection; - -import org.onlab.packet.IpAddress; - -/** - * Represents a route table that stores routes. - */ -public interface EvpnTable { - - /** - * Adds a route to the route table. - * - * @param route route - */ - void update(EvpnRoute route); - - /** - * Removes a route from the route table. - * - * @param route route - */ - void remove(EvpnRoute route); - - /** - * Returns the route table ID. - * - * @return route table ID - */ - EvpnRouteTableId id(); - - /** - * Returns all routes in the route table. - * - * @return collection of routes, grouped by prefix - */ - Collection getRoutes(); - - /** - * Returns the routes in this table pertaining to a given prefix. - * - * @param prefix IP prefix - * @return routes for the prefix - */ - EvpnRouteSet getRoutes(EvpnPrefix prefix); - - /** - * Returns all routes that have the given next hop. - * - * @param nextHop next hop IP address - * @return collection of routes - */ - Collection getRoutesForNextHop(IpAddress nextHop); - - /** - * Releases route table resources held locally. - */ - void shutdown(); - - /** - * Releases route table resources across the entire cluster. - */ - void destroy(); - -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/Label.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/Label.java deleted file mode 100644 index 8d90611ff5..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/Label.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Represents label of the route. - */ -public final class Label { - private final int label; - - /** - * Constructor to initialize parameters. - * - * @param label route label - */ - private Label(int label) { - this.label = label; - } - - /** - * Creates the label for evpn route. - * - * @param label label of evpn route - * @return Label - */ - public static Label label(int label) { - return new Label(label); - } - - /** - * Returns the label. - * - * @return label - */ - public int getLabel() { - return label; - } - - @Override - public int hashCode() { - return Objects.hash(label); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof Label) { - Label other = (Label) obj; - return Objects.equals(label, other.label); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("label", label).toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/RouteDistinguisher.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/RouteDistinguisher.java deleted file mode 100644 index ca217b6495..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/RouteDistinguisher.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Represents Route Distinguisher of device in the network. - */ -public final class RouteDistinguisher { - private final String routeDistinguisher; - - /** - * Constructor to initialize parameters. - * - * @param routeDistinguisher route distinguisher - */ - private RouteDistinguisher(String routeDistinguisher) { - this.routeDistinguisher = routeDistinguisher; - } - - /** - * Creates the route distinguisher. - * - * @param routeDistinguisher route distinguisher - * @return RouteDistinguisher - */ - public static RouteDistinguisher routeDistinguisher(String routeDistinguisher) { - checkNotNull(routeDistinguisher); - return new RouteDistinguisher(routeDistinguisher); - } - - /** - * get route distinguisher. - * - * @return distinguisher - */ - public String getRouteDistinguisher() { - return routeDistinguisher; - } - - @Override - public int hashCode() { - return Objects.hash(routeDistinguisher); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof RouteDistinguisher) { - RouteDistinguisher other = (RouteDistinguisher) obj; - return Objects.equals(this.routeDistinguisher, other.routeDistinguisher); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("routeDistinguisher", this.routeDistinguisher).toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/VpnRouteTarget.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/VpnRouteTarget.java deleted file mode 100644 index 51a9a59006..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/VpnRouteTarget.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Represents Route target of vpn instance. - */ -public final class VpnRouteTarget { - private final String routeTarget; - - /** - * Constructor to initialize parameters. - * - * @param routeTarget route target - */ - private VpnRouteTarget(String routeTarget) { - this.routeTarget = routeTarget; - } - - /** - * Creates the vpn route target. - * - * @param routeTarget route target - * @return route target - */ - public static VpnRouteTarget routeTarget(String routeTarget) { - return new VpnRouteTarget(routeTarget); - } - - /** - * get the route target. - * - * @return route target - */ - public String getRouteTarget() { - return routeTarget; - } - - @Override - public int hashCode() { - return Objects.hash(routeTarget); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof VpnRouteTarget) { - VpnRouteTarget other = (VpnRouteTarget) obj; - return Objects.equals(routeTarget, other.routeTarget); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("routeTarget", routeTarget).toString(); - } -} diff --git a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/package-info.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/package-info.java deleted file mode 100644 index 3514c80097..0000000000 --- a/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Unicast routing service. - */ -package org.onosproject.evpnrouteservice; diff --git a/apps/evpn-route-service/app/BUILD b/apps/evpn-route-service/app/BUILD deleted file mode 100644 index 67867305fb..0000000000 --- a/apps/evpn-route-service/app/BUILD +++ /dev/null @@ -1,8 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + KRYO + [ - "//core/store/serializers:onos-core-serializers", - "//apps/evpn-route-service/api:onos-apps-evpn-route-service-api", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnListenerQueue.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnListenerQueue.java deleted file mode 100644 index ce3d01286a..0000000000 --- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnListenerQueue.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice.impl; - -import org.onosproject.evpnrouteservice.EvpnRouteEvent; - -/** - * Queues updates for a route listener to ensure they are received in the - * correct order. - */ -interface EvpnListenerQueue { - - /** - * Posts an event to the listener. - * - * @param event event - */ - void post(EvpnRouteEvent event); - - /** - * Initiates event delivery to the listener. - */ - void start(); - - /** - * Halts event delivery to the listener. - */ - void stop(); -} diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java deleted file mode 100644 index f13b89a14b..0000000000 --- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice.impl; - -import org.onosproject.evpnrouteservice.EvpnInternalRouteEvent; -import org.onosproject.evpnrouteservice.EvpnRoute; -import org.onosproject.evpnrouteservice.EvpnRouteAdminService; -import org.onosproject.evpnrouteservice.EvpnRouteEvent; -import org.onosproject.evpnrouteservice.EvpnRouteListener; -import org.onosproject.evpnrouteservice.EvpnRouteService; -import org.onosproject.evpnrouteservice.EvpnRouteSet; -import org.onosproject.evpnrouteservice.EvpnRouteStore; -import org.onosproject.evpnrouteservice.EvpnRouteStoreDelegate; -import org.onosproject.evpnrouteservice.EvpnRouteTableId; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.annotation.concurrent.GuardedBy; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadFactory; - -import static java.util.concurrent.Executors.newSingleThreadExecutor; -import static org.onlab.util.Tools.groupedThreads; - -/** - * Implementation of the EVPN route service. - */ -@Component(service = { EvpnRouteService.class, EvpnRouteAdminService.class }) -public class EvpnRouteManager implements EvpnRouteService, - EvpnRouteAdminService { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected EvpnRouteStore evpnRouteStore; - - @GuardedBy(value = "this") - private Map listeners = new - HashMap<>(); - - private ThreadFactory threadFactory; - - private EvpnRouteStoreDelegate evpnRouteStoreDelegate = new - InternalEvpnRouteStoreDelegate(); - - @Activate - protected void activate() { - threadFactory = groupedThreads("onos/route", "listener-%d", log); - evpnRouteStore.setDelegate(evpnRouteStoreDelegate); - - } - - @Deactivate - protected void deactivate() { - evpnRouteStore.unsetDelegate(evpnRouteStoreDelegate); - synchronized (this) { - listeners.values().forEach(EvpnListenerQueue::stop); - } - } - - /** - * {@inheritDoc} - *

- * In a departure from other services in ONOS, calling addListener will - * cause all current routes to be pushed to the listener before any new - * events are sent. This allows a listener to easily get the exact set of - * routes without worrying about missing any. - * - * @param listener listener to be added - */ - @Override - public void addListener(EvpnRouteListener listener) { - synchronized (this) { - EvpnListenerQueue l = createListenerQueue(listener); - - evpnRouteStore.getRouteTables().forEach(routeTableId - -> { - Collection routes - = evpnRouteStore.getRoutes(routeTableId); - if (routes != null) { - routes.forEach(route -> { - Collection evpnRoutes = route.routes(); - for (EvpnRoute evpnRoute : evpnRoutes) { - l.post(new EvpnRouteEvent( - EvpnRouteEvent.Type.ROUTE_ADDED, - evpnRoute, - route.routes())); - } - }); - } - }); - listeners.put(listener, l); - - l.start(); - log.debug("Route synchronization complete"); - } - } - - @Override - public void removeListener(EvpnRouteListener listener) { - synchronized (this) { - EvpnListenerQueue l = listeners.remove(listener); - if (l != null) { - l.stop(); - } - } - } - - /** - * Posts an event to all listeners. - * - * @param event event - */ - - private void post(EvpnRouteEvent event) { - if (event != null) { - log.debug("Sending event {}", event); - synchronized (this) { - listeners.values().forEach(l -> l.post(event)); - } - } - } - - - @Override - public Collection getRouteTables() { - return evpnRouteStore.getRouteTables(); - } - - @Override - public void update(Collection routes) { - synchronized (this) { - routes.forEach(route -> { - log.debug("Received update {}", route); - evpnRouteStore.updateRoute(route); - }); - } - } - - @Override - public void withdraw(Collection routes) { - synchronized (this) { - routes.forEach(route -> { - log.debug("Received withdraw {}", route); - evpnRouteStore.removeRoute(route); - }); - } - } - - /** - * Creates a new listener queue. - * - * @param listener route listener - * @return listener queue - */ - DefaultListenerQueue createListenerQueue(EvpnRouteListener listener) { - return new DefaultListenerQueue(listener); - } - - /** - * Default route listener queue. - */ - private class DefaultListenerQueue implements EvpnListenerQueue { - - private final ExecutorService executorService; - private final BlockingQueue queue; - private final EvpnRouteListener listener; - - /** - * Creates a new listener queue. - * - * @param listener route listener to queue updates for - */ - public DefaultListenerQueue(EvpnRouteListener listener) { - this.listener = listener; - queue = new LinkedBlockingQueue<>(); - executorService = newSingleThreadExecutor(threadFactory); - } - - @Override - public void post(EvpnRouteEvent event) { - queue.add(event); - } - - @Override - public void start() { - executorService.execute(this::poll); - } - - @Override - public void stop() { - executorService.shutdown(); - } - - private void poll() { - while (true) { - try { - listener.event(queue.take()); - } catch (InterruptedException e) { - log.info("Route listener event thread shutting down: {}", e.getMessage()); - Thread.currentThread().interrupt(); - break; - } catch (Exception e) { - log.warn("Exception during route event handler", e); - } - } - } - } - - /** - * Delegate to receive events from the route store. - */ - private class InternalEvpnRouteStoreDelegate implements - EvpnRouteStoreDelegate { - EvpnRouteSet routes; - - @Override - public void notify(EvpnInternalRouteEvent event) { - switch (event.type()) { - case ROUTE_ADDED: - routes = event.subject(); - if (routes != null) { - Collection evpnRoutes = routes.routes(); - for (EvpnRoute evpnRoute : evpnRoutes) { - post(new EvpnRouteEvent( - EvpnRouteEvent.Type.ROUTE_ADDED, - evpnRoute, - routes.routes())); - } - } - break; - case ROUTE_REMOVED: - routes = event.subject(); - if (routes != null) { - Collection evpnRoutes = routes.routes(); - for (EvpnRoute evpnRoute : evpnRoutes) { - post(new EvpnRouteEvent( - EvpnRouteEvent.Type.ROUTE_REMOVED, - evpnRoute, - routes.routes())); - } - } - break; - default: - break; - } - } - } - -} diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/package-info.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/package-info.java deleted file mode 100644 index 80892c930e..0000000000 --- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of route service. - */ -package org.onosproject.evpnrouteservice.impl; diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/DistributedEvpnRouteStore.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/DistributedEvpnRouteStore.java deleted file mode 100644 index 8917325733..0000000000 --- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/DistributedEvpnRouteStore.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice.store; - -import com.google.common.collect.ImmutableSet; -import org.onlab.packet.IpAddress; -import org.onlab.util.KryoNamespace; -import org.onosproject.evpnrouteservice.EvpnInternalRouteEvent; -import org.onosproject.evpnrouteservice.EvpnRoute; -import org.onosproject.evpnrouteservice.EvpnRouteSet; -import org.onosproject.evpnrouteservice.EvpnRouteStore; -import org.onosproject.evpnrouteservice.EvpnRouteStoreDelegate; -import org.onosproject.evpnrouteservice.EvpnRouteTableId; -import org.onosproject.evpnrouteservice.EvpnTable; -import org.onosproject.store.AbstractStore; -import org.onosproject.store.service.DistributedSet; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.SetEvent; -import org.onosproject.store.service.SetEventListener; -import org.onosproject.store.service.StorageService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collection; -import java.util.Collections; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import static org.onlab.util.Tools.groupedThreads; - -/** - * Route store based on distributed storage. - */ -@Component(service = EvpnRouteStore.class) -public class DistributedEvpnRouteStore extends - AbstractStore - implements EvpnRouteStore { - - private static final Logger log = LoggerFactory - .getLogger(DistributedEvpnRouteStore.class); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - public StorageService storageService; - - private static final EvpnRouteTableId EVPN_IPV4 = new EvpnRouteTableId("evpn_ipv4"); - private static final EvpnRouteTableId EVPN_IPV6 = new EvpnRouteTableId("evpn_ipv6"); - - private final SetEventListener masterRouteTableListener = - new MasterRouteTableListener(); - private final EvpnRouteStoreDelegate ourDelegate = new - InternalEvpnRouteStoreDelegate(); - - // Stores the route tables that have been created - public DistributedSet masterRouteTable; - // Local memory map to store route table object - public Map routeTables; - - private ExecutorService executor; - - - /** - * Sets up distributed route store. - */ - @Activate - public void activate() { - routeTables = new ConcurrentHashMap<>(); - executor = Executors.newSingleThreadExecutor(groupedThreads("onos/route", "store", log)); - - KryoNamespace masterRouteTableSerializer = KryoNamespace.newBuilder() - .register(EvpnRouteTableId.class) - .build(); - - masterRouteTable = storageService.setBuilder() - .withName("onos-master-route-table") - .withSerializer(Serializer.using(masterRouteTableSerializer)) - .build() - .asDistributedSet(); - - masterRouteTable.forEach(this::createRouteTable); - - masterRouteTable.addListener(masterRouteTableListener); - - // Add default tables (add is idempotent) - masterRouteTable.add(EVPN_IPV4); - masterRouteTable.add(EVPN_IPV6); - - log.info("Started"); - } - - /** - * Cleans up distributed route store. - */ - @Deactivate - public void deactivate() { - masterRouteTable.removeListener(masterRouteTableListener); - - routeTables.values().forEach(EvpnTable::shutdown); - - log.info("Stopped"); - } - - @Override - public void updateRoute(EvpnRoute route) { - getDefaultRouteTable(route).update(route); - } - - @Override - public void removeRoute(EvpnRoute route) { - getDefaultRouteTable(route).remove(route); - } - - @Override - public Set getRouteTables() { - return ImmutableSet.copyOf(masterRouteTable); - } - - @Override - public Collection getRoutes(EvpnRouteTableId table) { - EvpnTable routeTable = routeTables.get(table); - if (routeTable == null) { - return Collections.emptySet(); - } else { - return ImmutableSet.copyOf(routeTable.getRoutes()); - } - } - - @Override - public Collection getRoutesForNextHop(IpAddress ip) { - return getDefaultRouteTable(ip).getRoutesForNextHop(ip); - } - - private void createRouteTable(EvpnRouteTableId tableId) { - routeTables.computeIfAbsent(tableId, id -> new EvpnRouteTable(id, - ourDelegate, storageService, executor)); - } - - private void destroyRouteTable(EvpnRouteTableId tableId) { - EvpnTable table = routeTables.remove(tableId); - if (table != null) { - table.destroy(); - } - } - - private EvpnTable getDefaultRouteTable(EvpnRoute route) { - return getDefaultRouteTable(route.prefixIp().address()); - } - - private EvpnTable getDefaultRouteTable(IpAddress ip) { - EvpnRouteTableId routeTableId = (ip.isIp4()) ? EVPN_IPV4 : EVPN_IPV6; - return routeTables.getOrDefault(routeTableId, EmptyEvpnRouteTable - .instance()); - } - - private class InternalEvpnRouteStoreDelegate implements - EvpnRouteStoreDelegate { - @Override - public void notify(EvpnInternalRouteEvent event) { - executor.execute(() -> DistributedEvpnRouteStore - .this.notifyDelegate(event)); - } - } - - private class MasterRouteTableListener implements SetEventListener { - @Override - public void event(SetEvent event) { - switch (event.type()) { - case ADD: - executor.execute(() -> createRouteTable(event.entry())); - break; - case REMOVE: - executor.execute(() -> destroyRouteTable(event.entry())); - break; - default: - break; - } - } - } -} diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EmptyEvpnRouteTable.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EmptyEvpnRouteTable.java deleted file mode 100644 index f49a1748ff..0000000000 --- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EmptyEvpnRouteTable.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice.store; - -import org.onlab.packet.IpAddress; -import org.onosproject.evpnrouteservice.EvpnPrefix; -import org.onosproject.evpnrouteservice.EvpnRoute; -import org.onosproject.evpnrouteservice.EvpnRouteSet; -import org.onosproject.evpnrouteservice.EvpnRouteTableId; -import org.onosproject.evpnrouteservice.EvpnTable; - -import java.util.Collection; -import java.util.Collections; - -/** - * Route table that contains no routes. - */ -public final class EmptyEvpnRouteTable implements EvpnTable { - - private final EvpnRouteTableId id = new EvpnRouteTableId("empty"); - - private static final EmptyEvpnRouteTable INSTANCE = new EmptyEvpnRouteTable(); - - /** - * Returns the instance of the empty route table. - * - * @return empty route table - */ - public static EmptyEvpnRouteTable instance() { - return INSTANCE; - } - - private EmptyEvpnRouteTable() { - } - - @Override - public void update(EvpnRoute route) { - - } - - @Override - public void remove(EvpnRoute route) { - - } - - @Override - public EvpnRouteTableId id() { - return id; - } - - @Override - public Collection getRoutes() { - return Collections.emptyList(); - } - - @Override - public EvpnRouteSet getRoutes(EvpnPrefix prefix) { - return null; - } - - @Override - public Collection getRoutesForNextHop(IpAddress nextHop) { - return Collections.emptyList(); - } - - @Override - public void shutdown() { - - } - - @Override - public void destroy() { - - } -} diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EvpnRouteTable.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EvpnRouteTable.java deleted file mode 100644 index 2c3e07be59..0000000000 --- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EvpnRouteTable.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnrouteservice.store; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onlab.util.KryoNamespace; -import org.onosproject.evpnrouteservice.EvpnInternalRouteEvent; -import org.onosproject.evpnrouteservice.EvpnPrefix; -import org.onosproject.evpnrouteservice.EvpnRoute; -import org.onosproject.evpnrouteservice.EvpnRouteSet; -import org.onosproject.evpnrouteservice.EvpnRouteStoreDelegate; -import org.onosproject.evpnrouteservice.EvpnRouteTableId; -import org.onosproject.evpnrouteservice.EvpnTable; -import org.onosproject.evpnrouteservice.Label; -import org.onosproject.evpnrouteservice.RouteDistinguisher; -import org.onosproject.evpnrouteservice.VpnRouteTarget; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.ConsistentMap; -import org.onosproject.store.service.DistributedPrimitive; -import org.onosproject.store.service.MapEvent; -import org.onosproject.store.service.MapEventListener; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.Versioned; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.function.Consumer; -import java.util.stream.Collectors; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Default implementation of a route table based on a consistent map. - */ -public class EvpnRouteTable implements EvpnTable { - - private final EvpnRouteTableId id; - private final ConsistentMap> routes; - private final EvpnRouteStoreDelegate delegate; - private final ExecutorService executor; - private final RouteTableListener listener = new RouteTableListener(); - - private final Consumer statusChangeListener; - - /** - * Creates a new route table. - * - * @param id route table ID - * @param delegate route store delegate to notify of events - * @param storageService storage service - * @param executor executor service - */ - public EvpnRouteTable(EvpnRouteTableId id, EvpnRouteStoreDelegate delegate, - StorageService storageService, ExecutorService executor) { - this.delegate = checkNotNull(delegate); - this.id = checkNotNull(id); - this.routes = buildRouteMap(checkNotNull(storageService)); - this.executor = checkNotNull(executor); - - statusChangeListener = status -> { - if (status.equals(DistributedPrimitive.Status.ACTIVE)) { - executor.execute(this::notifyExistingRoutes); - } - }; - routes.addStatusChangeListener(statusChangeListener); - - notifyExistingRoutes(); - - routes.addListener(listener); - } - - private void notifyExistingRoutes() { - routes.entrySet().stream() - .map(e -> new EvpnInternalRouteEvent( - EvpnInternalRouteEvent.Type.ROUTE_ADDED, - new EvpnRouteSet(id, e.getKey(), e.getValue().value()))) - .forEach(delegate::notify); - } - - private ConsistentMap> buildRouteMap(StorageService - storageService) { - KryoNamespace routeTableSerializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API) - .register(KryoNamespaces.MISC) - .register(EvpnRoute.class) - .register(EvpnPrefix.class) - .register(RouteDistinguisher.class) - .register(MacAddress.class) - .register(IpPrefix.class) - .register(EvpnRoute.Source.class) - .register(IpAddress.class) - .register(VpnRouteTarget.class) - .register(Label.class) - .register(EvpnRouteTableId.class) - .build(); - return storageService.>consistentMapBuilder() - .withName("onos-evpn-routes-" + id.name()) - .withRelaxedReadConsistency() - .withSerializer(Serializer.using(routeTableSerializer)) - .build(); - } - - @Override - public EvpnRouteTableId id() { - return id; - } - - @Override - public void shutdown() { - routes.removeStatusChangeListener(statusChangeListener); - routes.removeListener(listener); - } - - @Override - public void destroy() { - shutdown(); - routes.destroy(); - } - - @Override - public void update(EvpnRoute route) { - routes.compute(route.evpnPrefix(), (prefix, set) -> { - if (set == null) { - set = new HashSet<>(); - } - set.add(route); - return set; - }); - } - - @Override - public void remove(EvpnRoute route) { - routes.compute(route.evpnPrefix(), (prefix, set) -> { - if (set != null) { - set.remove(route); - if (set.isEmpty()) { - return null; - } - return set; - } - return null; - }); - } - - @Override - public Collection getRoutes() { - return routes.entrySet().stream() - .map(e -> new EvpnRouteSet(id, e.getKey(), e.getValue().value())) - .collect(Collectors.toSet()); - } - - @Override - public EvpnRouteSet getRoutes(EvpnPrefix prefix) { - Versioned> routeSet = routes.get(prefix); - - if (routeSet != null) { - return new EvpnRouteSet(id, prefix, routeSet.value()); - } - return null; - } - - @Override - public Collection getRoutesForNextHop(IpAddress nextHop) { - // TODO index - return routes.values().stream() - .flatMap(v -> v.value().stream()) - .filter(r -> r.nextHop().equals(nextHop)) - .collect(Collectors.toSet()); - } - - private class RouteTableListener - implements MapEventListener> { - - private EvpnInternalRouteEvent createRouteEvent( - EvpnInternalRouteEvent.Type type, MapEvent> - event) { - Set currentRoutes = - (event.newValue() == null) ? Collections.emptySet() : event.newValue().value(); - return new EvpnInternalRouteEvent(type, new EvpnRouteSet(id, event - .key(), currentRoutes)); - } - - @Override - public void event(MapEvent> event) { - EvpnInternalRouteEvent ire = null; - switch (event.type()) { - case INSERT: - ire = createRouteEvent(EvpnInternalRouteEvent.Type.ROUTE_ADDED, event); - break; - case UPDATE: - if (event.newValue().value().size() > event.oldValue().value().size()) { - ire = createRouteEvent(EvpnInternalRouteEvent.Type.ROUTE_ADDED, event); - } else { - ire = createRouteEvent(EvpnInternalRouteEvent.Type.ROUTE_REMOVED, event); - } - break; - case REMOVE: - ire = createRouteEvent(EvpnInternalRouteEvent.Type.ROUTE_REMOVED, event); - break; - default: - break; - } - if (ire != null) { - delegate.notify(ire); - } - } - } - -} - diff --git a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/package-info.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/package-info.java deleted file mode 100644 index 52e9d6ca7f..0000000000 --- a/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the unicast routing service. - */ -package org.onosproject.evpnrouteservice.store; diff --git a/apps/evpnopenflow/BUILD b/apps/evpnopenflow/BUILD deleted file mode 100644 index 9e83f909d3..0000000000 --- a/apps/evpnopenflow/BUILD +++ /dev/null @@ -1,28 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + CLI + [ - "//apps/tunnel/api:onos-apps-tunnel-api", - "//core/store/serializers:onos-core-serializers", - "//apps/gluon:onos-apps-gluon", - "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc", - "//apps/route-service/api:onos-apps-route-service-api", - "//apps/evpn-route-service/api:onos-apps-evpn-route-service-api", -] - -osgi_jar_with_tests( - karaf_command_packages = ["org.onosproject.evpnopenflow.rsc.cli"], - deps = COMPILE_DEPS, -) - -onos_app( - category = "Traffic Engineering", - description = "Ethernet VPN (EVPN) introduces a new model for Ethernet services delivery." + - "It enables integrated Layer 2 service over Ethernet with multihoming.", - required_apps = [ - "org.onosproject.route-service", - "org.onosproject.evpn-route-service", - "org.onosproject.gluon", - "org.onosproject.tunnel", - "org.onosproject.vtn", - ], - title = "EVPN OpenFlow", - url = "http://onosproject.org", -) diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/EvpnService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/EvpnService.java deleted file mode 100644 index 5a4145457a..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/EvpnService.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.manager; - -import org.onosproject.evpnopenflow.rsc.VpnPort; -import org.onosproject.evpnrouteservice.EvpnRoute; -import org.onosproject.net.Host; - -/** - * Service for interacting with the route and host events. - */ -public interface EvpnService { - /** - * Transfer remote route to private route and set mpls flows out when - * BgpRoute update. - * - * @param route evpn route - */ - void onBgpEvpnRouteUpdate(EvpnRoute route); - - /** - * Transfer remote route to private route and delete mpls flows out when - * BgpRoute delete. - * - * @param route evpn route - */ - void onBgpEvpnRouteDelete(EvpnRoute route); - - /** - * Get VPN info from EVPN app store and create route, set flows when host - * detected. - * - * @param host host information - */ - void onHostDetected(Host host); - - /** - * Get VPN info from EVPN app store and delete route, set flows when - * host - * vanished. - * - * @param host host information - */ - void onHostVanished(Host host); - - /** - * Get VPN info from EVPN app store and create route, set flows when - * host - * detected. - * - * @param vpnPort vpnPort information - */ - void onVpnPortSet(VpnPort vpnPort); - - /** - * Get VPN info from EVPN app store and delete route, set flows when host - * vanished. - * - * @param vpnPort vpnPort information - */ - void onVpnPortDelete(VpnPort vpnPort); -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/EvpnManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/EvpnManager.java deleted file mode 100644 index edfbfd0c61..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/EvpnManager.java +++ /dev/null @@ -1,1130 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.manager.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.Sets; -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.packet.EthType; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MplsLabel; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.evpnopenflow.manager.EvpnService; -import org.onosproject.evpnopenflow.rsc.VpnAfConfig; -import org.onosproject.evpnopenflow.rsc.VpnInstance; -import org.onosproject.evpnopenflow.rsc.VpnInstanceId; -import org.onosproject.evpnopenflow.rsc.VpnPort; -import org.onosproject.evpnopenflow.rsc.VpnPortId; -import org.onosproject.evpnopenflow.rsc.baseport.BasePortService; -import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigEvent; -import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigListener; -import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigService; -import org.onosproject.evpnopenflow.rsc.vpninstance.VpnInstanceService; -import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortEvent; -import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortListener; -import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortService; -import org.onosproject.evpnrouteservice.EvpnInstanceName; -import org.onosproject.evpnrouteservice.EvpnInstanceNextHop; -import org.onosproject.evpnrouteservice.EvpnInstancePrefix; -import org.onosproject.evpnrouteservice.EvpnInstanceRoute; -import org.onosproject.evpnrouteservice.EvpnNextHop; -import org.onosproject.evpnrouteservice.EvpnRoute; -import org.onosproject.evpnrouteservice.EvpnRoute.Source; -import org.onosproject.evpnrouteservice.EvpnRouteAdminService; -import org.onosproject.evpnrouteservice.EvpnRouteEvent; -import org.onosproject.evpnrouteservice.EvpnRouteListener; -import org.onosproject.evpnrouteservice.EvpnRouteService; -import org.onosproject.evpnrouteservice.EvpnRouteSet; -import org.onosproject.evpnrouteservice.EvpnRouteStore; -import org.onosproject.evpnrouteservice.Label; -import org.onosproject.evpnrouteservice.RouteDistinguisher; -import org.onosproject.evpnrouteservice.VpnRouteTarget; -import org.onosproject.gluon.rsc.GluonConfig; -import org.onosproject.incubator.net.resource.label.LabelResource; -import org.onosproject.incubator.net.resource.label.LabelResourceAdminService; -import org.onosproject.incubator.net.resource.label.LabelResourceId; -import org.onosproject.incubator.net.resource.label.LabelResourceService; -import org.onosproject.mastership.MastershipService; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.behaviour.ExtensionTreatmentResolver; -import org.onosproject.net.config.NetworkConfigEvent; -import org.onosproject.net.config.NetworkConfigListener; -import org.onosproject.net.config.NetworkConfigService; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.driver.DriverService; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.instructions.ExtensionTreatment; -import org.onosproject.net.flow.instructions.ExtensionTreatmentType; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.net.flowobjective.Objective.Operation; -import org.onosproject.net.host.HostEvent; -import org.onosproject.net.host.HostListener; -import org.onosproject.net.host.HostService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ARP_PRIORITY; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ARP_RESPONSE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.BASEPORT; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.BGP_EVPN_ROUTE_DELETE_START; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.BGP_EVPN_ROUTE_UPDATE_START; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.BOTH; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.CANNOT_FIND_TUNNEL_PORT_DEVICE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.CANT_FIND_CONTROLLER_DEVICE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.CANT_FIND_VPN_INSTANCE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.CANT_FIND_VPN_PORT; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DELETE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_OPENFLOW_START; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_OPENFLOW_STOP; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EXPORT_EXTCOMMUNITY; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.FAILED_TO_SET_TUNNEL_DST; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.GET_PRIVATE_LABEL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.HOST_DETECT; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.HOST_VANISHED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IFACEID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IFACEID_OF_HOST_IS_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IMPORT_EXTCOMMUNITY; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INVALID_EVENT_RECEIVED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INVALID_ROUTE_TARGET_TYPE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INVALID_TARGET_RECEIVED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.MPLS_OUT_FLOWS; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.NETWORK_CONFIG_EVENT_IS_RECEIVED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.NOT_MASTER_FOR_SPECIFIC_DEVICE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RELEASE_LABEL_FAILED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_ADD_ARP_RULES; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_REMOVE_ARP_RULES; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SET; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SLASH; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SWITCH_CHANNEL_ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.TUNNEL_DST; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.UPDATE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_TARGET; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_TARGET; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_BIND; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_TARGET; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_UNBIND; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VXLAN; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Implementation of the EVPN service. - */ -@Component(immediate = true, service = EvpnService.class) -public class EvpnManager implements EvpnService { - private final Logger log = getLogger(getClass()); - private static final EthType.EtherType ARP_TYPE = EthType.EtherType.ARP; - - protected ApplicationId appId; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected HostService hostService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected EvpnRouteService evpnRouteService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected EvpnRouteStore evpnRouteStore; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DeviceService deviceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected EvpnRouteAdminService evpnRouteAdminService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected MastershipService mastershipService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected LabelResourceAdminService labelAdminService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected LabelResourceService labelService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VpnInstanceService vpnInstanceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected FlowObjectiveService flowObjectiveService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DriverService driverService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VpnPortService vpnPortService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VpnAfConfigService vpnAfConfigService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected NetworkConfigService configService; - - public Set evpnInstanceRoutes = new HashSet<>(); - private final HostListener hostListener = new InnerHostListener(); - private final VpnPortListener vpnPortListner = new InnerVpnPortListener(); - private final VpnAfConfigListener vpnAfConfigListener = new - InnerVpnAfConfigListener(); - private final InternalRouteEventListener routeListener = new - InternalRouteEventListener(); - - private final NetworkConfigListener configListener = new - InternalNetworkConfigListener(); - - @Activate - public void activate() { - appId = coreService.registerApplication(APP_ID); - hostService.addListener(hostListener); - vpnPortService.addListener(vpnPortListner); - vpnAfConfigService.addListener(vpnAfConfigListener); - configService.addListener(configListener); - evpnRouteService.addListener(routeListener); - - labelAdminService - .createGlobalPool(LabelResourceId.labelResourceId(1), - LabelResourceId.labelResourceId(1000)); - log.info(EVPN_OPENFLOW_START); - } - - @Deactivate - public void deactivate() { - hostService.removeListener(hostListener); - vpnPortService.removeListener(vpnPortListner); - vpnAfConfigService.removeListener(vpnAfConfigListener); - configService.removeListener(configListener); - log.info(EVPN_OPENFLOW_STOP); - } - - @Override - public void onBgpEvpnRouteUpdate(EvpnRoute route) { - if (EvpnRoute.Source.LOCAL.equals(route.source())) { - return; - } - log.info(BGP_EVPN_ROUTE_UPDATE_START, route); - // deal with public route and transfer to private route - if (vpnInstanceService.getInstances().isEmpty()) { - log.info("unable to get instnaces from vpninstance"); - return; - } - - vpnInstanceService.getInstances().forEach(vpnInstance -> { - log.info("got instnaces from vpninstance but not entered here"); - List vpnImportRouteRt = new - LinkedList<>(vpnInstance.getImportRouteTargets()); - List expRt = route.exportRouteTarget(); - List similar = new LinkedList<>(expRt); - similar.retainAll(vpnImportRouteRt); - - if (!similar.isEmpty()) { - EvpnInstancePrefix evpnPrefix = EvpnInstancePrefix - .evpnPrefix(route.prefixMac(), route.prefixIp()); - - EvpnInstanceNextHop evpnNextHop = EvpnInstanceNextHop - .evpnNextHop(route.ipNextHop(), route.label()); - - EvpnInstanceRoute evpnPrivateRoute = new - EvpnInstanceRoute(vpnInstance.vpnInstanceName(), - route.routeDistinguisher(), - vpnImportRouteRt, - route.exportRouteTarget(), - evpnPrefix, - evpnNextHop, - route.prefixIp(), - route.ipNextHop(), - route.label()); - - //update route in route subsystem - //TODO: added by shahid - evpnInstanceRoutes.add(evpnPrivateRoute); - - } - }); - - deviceService.getAvailableDevices(Device.Type.SWITCH) - .forEach(device -> { - log.info("switch device is found"); - Set hosts = getHostsByVpn(device, route); - for (Host h : hosts) { - addArpFlows(device.id(), - route, - Objective.Operation.ADD, - h); - ForwardingObjective.Builder objective = - getMplsOutBuilder(device.id(), - route, - h); - log.info(MPLS_OUT_FLOWS, h); - flowObjectiveService.forward(device.id(), - objective.add()); - } - }); - log.info("no switch device is found"); - } - - @Override - public void onBgpEvpnRouteDelete(EvpnRoute route) { - if (EvpnRoute.Source.LOCAL.equals(route.source())) { - return; - } - log.info(BGP_EVPN_ROUTE_DELETE_START, route); - // deal with public route deleted and transfer to private route - vpnInstanceService.getInstances().forEach(vpnInstance -> { - List vpnRouteRt = new - LinkedList<>(vpnInstance.getImportRouteTargets()); - List localRt = route.exportRouteTarget(); - List similar = new LinkedList<>(localRt); - similar.retainAll(vpnRouteRt); - - if (!similar.isEmpty()) { - EvpnInstancePrefix evpnPrefix = EvpnInstancePrefix - .evpnPrefix(route.prefixMac(), route.prefixIp()); - - EvpnInstanceNextHop evpnNextHop = EvpnInstanceNextHop - .evpnNextHop(route.ipNextHop(), route.label()); - - EvpnInstanceRoute evpnPrivateRoute = new - EvpnInstanceRoute(vpnInstance.vpnInstanceName(), - route.routeDistinguisher(), - vpnRouteRt, - route.exportRouteTarget(), - evpnPrefix, - evpnNextHop, - route.prefixIp(), - route.ipNextHop(), - route.label()); - //TODO: Added by Shahid - //evpnRouteAdminService.withdraw(Sets.newHashSet - // (evpnPrivateRoute)); - - } - }); - deviceService.getAvailableDevices(Device.Type.SWITCH) - .forEach(device -> { - Set hosts = getHostsByVpn(device, route); - for (Host h : hosts) { - addArpFlows(device.id(), - route, - Objective.Operation.REMOVE, - h); - ForwardingObjective.Builder objective - = getMplsOutBuilder(device.id(), - route, - h); - flowObjectiveService.forward(device.id(), - objective.remove()); - } - }); - } - - private void addArpFlows(DeviceId deviceId, - EvpnRoute route, - Operation type, - Host host) { - DriverHandler handler = driverService.createHandler(deviceId); - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(ARP_TYPE.ethType().toShort()) - .matchArpTpa(route.prefixIp().address().getIp4Address()) - .matchInPort(host.location().port()).build(); - - ExtensionTreatmentResolver resolver = handler - .behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment ethSrcToDst = resolver - .getExtensionInstruction(ExtensionTreatmentType - .ExtensionTreatmentTypes - .NICIRA_MOV_ETH_SRC_TO_DST - .type()); - ExtensionTreatment arpShaToTha = resolver - .getExtensionInstruction(ExtensionTreatmentType - .ExtensionTreatmentTypes - .NICIRA_MOV_ARP_SHA_TO_THA - .type()); - ExtensionTreatment arpSpaToTpa = resolver - .getExtensionInstruction(ExtensionTreatmentType - .ExtensionTreatmentTypes - .NICIRA_MOV_ARP_SPA_TO_TPA - .type()); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .extension(ethSrcToDst, deviceId).setEthSrc(route.prefixMac()) - .setArpOp(ARP_RESPONSE).extension(arpShaToTha, deviceId) - .extension(arpSpaToTpa, deviceId).setArpSha(route.prefixMac()) - .setArpSpa(route.prefixIp().address().getIp4Address()) - .setOutput(PortNumber.IN_PORT) - .build(); - - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(ForwardingObjective.Flag.SPECIFIC) - .withPriority(ARP_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - log.info(ROUTE_ADD_ARP_RULES); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.info(ROUTE_REMOVE_ARP_RULES); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - private Set getHostsByVpn(Device device, EvpnRoute route) { - Set vpnHosts = Sets.newHashSet(); - Set hosts = hostService.getConnectedHosts(device.id()); - for (Host h : hosts) { - String ifaceId = h.annotations().value(IFACEID); - if (!vpnPortService.exists(VpnPortId.vpnPortId(ifaceId))) { - continue; - } - - VpnPort vpnPort = vpnPortService - .getPort(VpnPortId.vpnPortId(ifaceId)); - VpnInstanceId vpnInstanceId = vpnPort.vpnInstanceId(); - - VpnInstance vpnInstance = vpnInstanceService - .getInstance(vpnInstanceId); - - List expRt = route.exportRouteTarget(); - List similar = new LinkedList<>(expRt); - similar.retainAll(vpnInstance.getImportRouteTargets()); - //TODO: currently checking for RT comparison. - //TODO: Need to check about RD comparison is really required. - //if (route.routeDistinguisher() - //.equals(vpnInstance.routeDistinguisher())) { - if (!similar.isEmpty()) { - vpnHosts.add(h); - } - } - return vpnHosts; - } - - private ForwardingObjective.Builder getMplsOutBuilder(DeviceId deviceId, - EvpnRoute route, - Host h) { - DriverHandler handler = driverService.createHandler(deviceId); - ExtensionTreatmentResolver resolver = handler - .behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment treatment = resolver - .getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type()); - try { - treatment.setPropertyValue(TUNNEL_DST, route.ipNextHop()); - } catch (Exception e) { - log.error(FAILED_TO_SET_TUNNEL_DST, deviceId); - } - TrafficTreatment.Builder builder = DefaultTrafficTreatment.builder(); - builder.extension(treatment, deviceId); - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(h.location().port()).matchEthSrc(h.mac()) - .matchEthDst(route.prefixMac()).build(); - - TrafficTreatment build = builder.pushMpls() - .setMpls(MplsLabel.mplsLabel(route.label().getLabel())) - .setOutput(getTunnlePort(deviceId)).build(); - - return DefaultForwardingObjective - .builder().withTreatment(build).withSelector(selector) - .fromApp(appId).withFlag(ForwardingObjective.Flag.SPECIFIC) - .withPriority(60000); - - } - - private ForwardingObjective.Builder getMplsInBuilder(DeviceId deviceId, - Host host, - Label label) { - TrafficTreatment.Builder builder = DefaultTrafficTreatment.builder(); - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(getTunnlePort(deviceId)) - .matchEthType(EthType.EtherType.MPLS_UNICAST.ethType() - .toShort()) - .matchMplsBos(true) - .matchMplsLabel(MplsLabel.mplsLabel(label.getLabel())).build(); - TrafficTreatment treatment = builder.popMpls(EthType - .EtherType - .IPV4.ethType()) - .setOutput(host.location().port()).build(); - return DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(ForwardingObjective.Flag.SPECIFIC) - .withPriority(60000); - } - - /** - * Get local tunnel ports. - * - * @param ports Iterable of Port - * @return Collection of PortNumber - */ - private Collection getLocalTunnelPorts(Iterable - ports) { - Collection localTunnelPorts = new ArrayList<>(); - if (ports != null) { - log.info("port value is not null {}", ports); - Sets.newHashSet(ports).stream() - .filter(p -> !p.number().equals(PortNumber.LOCAL)) - .forEach(p -> { - log.info("number is not matched but no vxlan port"); - if (p.annotations().value(AnnotationKeys.PORT_NAME) - .startsWith(VXLAN)) { - localTunnelPorts.add(p.number()); - } - }); - } - return localTunnelPorts; - } - - private PortNumber getTunnlePort(DeviceId deviceId) { - Iterable ports = deviceService.getPorts(deviceId); - Collection localTunnelPorts = getLocalTunnelPorts(ports); - if (localTunnelPorts.isEmpty()) { - log.error(CANNOT_FIND_TUNNEL_PORT_DEVICE, deviceId); - return null; - } - return localTunnelPorts.iterator().next(); - } - - private void setFlows(DeviceId deviceId, Host host, Label label, - List rtImport, - Operation type) { - log.info("Set the flows to OVS"); - ForwardingObjective.Builder objective = getMplsInBuilder(deviceId, - host, - label); - if (type.equals(Objective.Operation.ADD)) { - flowObjectiveService.forward(deviceId, objective.add()); - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - - // download remote flows if and only routes are present. - evpnRouteStore.getRouteTables().forEach(routeTableId -> { - Collection routes - = evpnRouteStore.getRoutes(routeTableId); - if (routes != null) { - routes.forEach(route -> { - Collection evpnRoutes = route.routes(); - for (EvpnRoute evpnRoute : evpnRoutes) { - EvpnRoute evpnRouteTem = evpnRoute; - Set hostByMac = hostService - .getHostsByMac(evpnRouteTem - .prefixMac()); - - if (!hostByMac.isEmpty() - || (!(compareLists(rtImport, evpnRouteTem - .exportRouteTarget())))) { - log.info("Route target import/export is not matched"); - continue; - } - log.info("Set the ARP flows"); - addArpFlows(deviceId, evpnRouteTem, type, host); - ForwardingObjective.Builder build = getMplsOutBuilder(deviceId, - evpnRouteTem, - host); - log.info("Set the MPLS flows"); - if (type.equals(Objective.Operation.ADD)) { - flowObjectiveService.forward(deviceId, build.add()); - } else { - flowObjectiveService.forward(deviceId, build.remove()); - } - } - }); - } - }); - } - - /** - * comparison for tow lists. - * - * @param list1 import list - * @param list2 export list - * @return true or false - */ - public static boolean compareLists(List list1, - List list2) { - if (list1 == null && list2 == null) { - return true; - } - - if (list1 != null && list2 != null) { - if (list1.size() == list2.size()) { - for (VpnRouteTarget li1Long : list1) { - boolean isEqual = false; - for (VpnRouteTarget li2Long : list2) { - if (li1Long.equals(li2Long)) { - isEqual = true; - break; - } - } - if (!isEqual) { - return false; - } - } - } else { - return false; - } - } else { - return false; - } - return true; - } - - @Override - public void onHostDetected(Host host) { - log.info(HOST_DETECT, host); - DeviceId deviceId = host.location().deviceId(); - if (!mastershipService.isLocalMaster(deviceId)) { - log.info(NOT_MASTER_FOR_SPECIFIC_DEVICE); - return; - } - - String ifaceId = host.annotations().value(IFACEID); - if (ifaceId == null) { - log.error(IFACEID_OF_HOST_IS_NULL); - return; - } - VpnPortId vpnPortId = VpnPortId.vpnPortId(ifaceId); - // Get VPN port id from EVPN app store - if (!vpnPortService.exists(vpnPortId)) { - log.info(CANT_FIND_VPN_PORT, ifaceId); - return; - } - - VpnPort vpnPort = vpnPortService.getPort(vpnPortId); - VpnInstanceId vpnInstanceId = vpnPort.vpnInstanceId(); - if (!vpnInstanceService.exists(vpnInstanceId)) { - log.info(CANT_FIND_VPN_INSTANCE, vpnInstanceId); - return; - } - - Label privateLabel = applyLabel(); - // create private route and get label - setPrivateRoute(host, vpnInstanceId, privateLabel, - Objective.Operation.ADD); - VpnInstance vpnInstance = vpnInstanceService.getInstance(vpnInstanceId); - - List rtImport - = new LinkedList<>(vpnInstance.getImportRouteTargets()); - List rtExport - = new LinkedList<>(vpnInstance.getExportRouteTargets()); - //download flows - setFlows(deviceId, host, privateLabel, rtImport, - Objective.Operation.ADD); - } - - /** - * update or withdraw evpn route from route admin service. - * - * @param host host - * @param vpnInstanceId vpn instance id - * @param privateLabel private label - * @param type operation type - */ - private void setPrivateRoute(Host host, VpnInstanceId vpnInstanceId, - Label privateLabel, - Operation type) { - DeviceId deviceId = host.location().deviceId(); - Device device = deviceService.getDevice(deviceId); - VpnInstance vpnInstance = vpnInstanceService.getInstance(vpnInstanceId); - RouteDistinguisher rd = vpnInstance.routeDistinguisher(); - Set importRouteTargets - = vpnInstance.getImportRouteTargets(); - Set exportRouteTargets - = vpnInstance.getExportRouteTargets(); - EvpnInstanceName instanceName = vpnInstance.vpnInstanceName(); - String url = device.annotations().value(SWITCH_CHANNEL_ID); - String controllerIp = url.substring(0, url.lastIndexOf(":")); - - if (controllerIp == null) { - log.error(CANT_FIND_CONTROLLER_DEVICE, device.id().toString()); - return; - } - IpAddress ipAddress = IpAddress.valueOf(controllerIp); - // create private route - EvpnInstanceNextHop evpnNextHop = EvpnInstanceNextHop - .evpnNextHop(ipAddress, privateLabel); - EvpnInstancePrefix evpnPrefix = EvpnInstancePrefix - .evpnPrefix(host.mac(), IpPrefix.valueOf(host.ipAddresses() - .iterator() - .next() - .getIp4Address(), 32)); - EvpnInstanceRoute evpnPrivateRoute - = new EvpnInstanceRoute(instanceName, - rd, - new LinkedList<>(importRouteTargets), - new LinkedList<>(exportRouteTargets), - evpnPrefix, - evpnNextHop, - IpPrefix.valueOf(host.ipAddresses() - .iterator() - .next() - .getIp4Address(), 32), - ipAddress, - privateLabel); - - // change to public route - EvpnRoute evpnRoute - = new EvpnRoute(Source.LOCAL, - host.mac(), - IpPrefix.valueOf(host.ipAddresses() - .iterator() - .next() - .getIp4Address(), 32), - ipAddress, - rd, - new LinkedList<>(importRouteTargets), - new LinkedList<>(exportRouteTargets), - privateLabel); - if (type.equals(Objective.Operation.ADD)) { - //evpnRouteAdminService.update(Sets.newHashSet(evpnPrivateRoute)); - evpnInstanceRoutes.add(evpnPrivateRoute); - evpnRouteAdminService.update(Sets.newHashSet(evpnRoute)); - - } else { - //evpnRouteAdminService.withdraw(Sets.newHashSet(evpnPrivateRoute)); - evpnInstanceRoutes.remove(evpnPrivateRoute); - evpnRouteAdminService.withdraw(Sets.newHashSet(evpnRoute)); - } - } - - /** - * Generate the label for evpn route from global pool. - */ - private Label applyLabel() { - Collection privateLabels = labelService - .applyFromGlobalPool(1); - Label privateLabel = Label.label(0); - if (!privateLabels.isEmpty()) { - privateLabel = Label.label(Integer.parseInt( - privateLabels.iterator().next() - .labelResourceId().toString())); - } - log.info(GET_PRIVATE_LABEL, privateLabel); - return privateLabel; - } - - @Override - public void onHostVanished(Host host) { - log.info(HOST_VANISHED, host); - DeviceId deviceId = host.location().deviceId(); - if (!mastershipService.isLocalMaster(deviceId)) { - return; - } - String ifaceId = host.annotations().value(IFACEID); - if (ifaceId == null) { - log.error(IFACEID_OF_HOST_IS_NULL); - return; - } - // Get info from Gluon Shim - VpnPort vpnPort = vpnPortService.getPort(VpnPortId.vpnPortId(ifaceId)); - VpnInstanceId vpnInstanceId = vpnPort.vpnInstanceId(); - if (!vpnInstanceService.exists(vpnInstanceId)) { - log.info(CANT_FIND_VPN_INSTANCE, vpnInstanceId); - return; - } - VpnInstance vpnInstance = vpnInstanceService.getInstance(vpnInstanceId); - - Label label = releaseLabel(vpnInstance, host); - // create private route and get label - setPrivateRoute(host, vpnInstanceId, label, Objective.Operation.REMOVE); - // download flows - List rtImport - = new LinkedList<>(vpnInstance.getImportRouteTargets()); - List rtExport - = new LinkedList<>(vpnInstance.getExportRouteTargets()); - setFlows(deviceId, host, label, rtImport, - Objective.Operation.REMOVE); - } - - /** - * Release the label from the evpn route. - * - * @param vpnInstance vpn instance - * @param host host - */ - private Label releaseLabel(VpnInstance vpnInstance, Host host) { - EvpnInstanceName instanceName = vpnInstance.vpnInstanceName(); - - //Get all vpn-instance routes and check for label. - Label label = null; - for (EvpnInstanceRoute evpnInstanceRoute : evpnInstanceRoutes) { - if (evpnInstanceRoute.evpnInstanceName().equals(instanceName)) { - label = evpnInstanceRoute.getLabel(); - // delete private route and get label ,change to public route - boolean isRelease - = labelService - .releaseToGlobalPool( - Sets.newHashSet( - LabelResourceId - .labelResourceId(label.getLabel()))); - if (!isRelease) { - log.error(RELEASE_LABEL_FAILED, label.getLabel()); - } - break; - } - } - return label; - } - - private class InternalRouteEventListener implements EvpnRouteListener { - - @Override - public void event(EvpnRouteEvent event) { - if (event.subject() != null) { - EvpnRoute route = (EvpnRoute) event.subject(); - if (EvpnRouteEvent.Type.ROUTE_ADDED == event.type()) { - onBgpEvpnRouteUpdate(route); - } else if (EvpnRouteEvent.Type.ROUTE_REMOVED == event.type()) { - onBgpEvpnRouteDelete(route); - } - } else { - return; - } - } - } - - private class InnerHostListener implements HostListener { - - @Override - public void event(HostEvent event) { - Host host = event.subject(); - if (HostEvent.Type.HOST_ADDED == event.type()) { - onHostDetected(host); - } else if (HostEvent.Type.HOST_REMOVED == event.type()) { - onHostVanished(host); - } - } - - } - - private class InnerVpnPortListener implements VpnPortListener { - - @Override - public void event(VpnPortEvent event) { - VpnPort vpnPort = event.subject(); - if (VpnPortEvent.Type.VPN_PORT_DELETE == event.type()) { - onVpnPortDelete(vpnPort); - } else if (VpnPortEvent.Type.VPN_PORT_SET == event.type()) { - onVpnPortSet(vpnPort); - } - } - } - - @Override - public void onVpnPortDelete(VpnPort vpnPort) { - // delete the flows of this vpn - hostService.getHosts().forEach(host -> { - VpnPortId vpnPortId = vpnPort.id(); - VpnInstanceId vpnInstanceId = vpnPort.vpnInstanceId(); - if (!vpnInstanceService.exists(vpnInstanceId)) { - log.error(CANT_FIND_VPN_INSTANCE, vpnInstanceId); - return; - } - VpnInstance vpnInstance = vpnInstanceService - .getInstance(vpnInstanceId); - List rtImport - = new LinkedList<>(vpnInstance.getImportRouteTargets()); - List rtExport - = new LinkedList<>(vpnInstance.getExportRouteTargets()); - - if (vpnPortId.vpnPortId() - .equals(host.annotations().value(IFACEID))) { - log.info(VPN_PORT_UNBIND); - Label label = releaseLabel(vpnInstance, host); - // create private route and get label - DeviceId deviceId = host.location().deviceId(); - setPrivateRoute(host, vpnInstanceId, label, - Objective.Operation.REMOVE); - // download flows - setFlows(deviceId, host, label, rtImport, - Objective.Operation.REMOVE); - } - }); - } - - @Override - public void onVpnPortSet(VpnPort vpnPort) { - // delete the flows of this vpn - hostService.getHosts().forEach(host -> { - VpnPortId vpnPortId = vpnPort.id(); - VpnInstanceId vpnInstanceId = vpnPort.vpnInstanceId(); - VpnInstance vpnInstance = vpnInstanceService - .getInstance(vpnInstanceId); - if (vpnInstance == null) { - log.info("why vpn instance is null"); - return; - } - List rtImport - = new LinkedList<>(vpnInstance.getImportRouteTargets()); -/* List rtExport - = new LinkedList<>(vpnInstance.getExportRouteTargets());*/ - - if (!vpnInstanceService.exists(vpnInstanceId)) { - log.error(CANT_FIND_VPN_INSTANCE, vpnInstanceId); - return; - } - - if (vpnPortId.vpnPortId() - .equals(host.annotations().value(IFACEID))) { - log.info(VPN_PORT_BIND); - Label label = applyLabel(); - // create private route and get label - DeviceId deviceId = host.location().deviceId(); - setPrivateRoute(host, vpnInstanceId, label, - Objective.Operation.ADD); - // download flows - setFlows(deviceId, host, label, rtImport, - Objective.Operation.ADD); - } - }); - } - - /** - * process the gluon configuration and will update the configuration into - * vpn port service. - * - * @param action action - * @param key key - * @param value json node - */ - private void processEtcdResponse(String action, String key, JsonNode - value) { - String[] list = key.split(SLASH); - String target = list[list.length - 2]; - switch (target) { - case VPN_INSTANCE_TARGET: - VpnInstanceService vpnInstanceService - = DefaultServiceDirectory - .getService(VpnInstanceService.class); - vpnInstanceService.processGluonConfig(action, key, value); - break; - case VPN_PORT_TARGET: - VpnPortService vpnPortService = DefaultServiceDirectory - .getService(VpnPortService.class); - vpnPortService.processGluonConfig(action, key, value); - break; - case VPN_AF_TARGET: - VpnAfConfigService vpnAfConfigService = - DefaultServiceDirectory.getService(VpnAfConfigService - .class); - vpnAfConfigService.processGluonConfig(action, key, value); - break; - case BASEPORT: - BasePortService basePortService = - DefaultServiceDirectory.getService(BasePortService - .class); - basePortService.processGluonConfig(action, key, value); - break; - default: - log.info("why target type is invalid {}", target); - log.info(INVALID_TARGET_RECEIVED); - break; - } - } - - /** - * parse the gluon configuration received from network config system. - * - * @param jsonNode json node - * @param key key - * @param action action - */ - private void parseEtcdResponse(JsonNode jsonNode, - String key, - String action) { - JsonNode modifyValue = null; - if (action.equals(SET)) { - modifyValue = jsonNode.get(key); - } - processEtcdResponse(action, key, modifyValue); - } - - /** - * Listener for network config events. - */ - private class InternalNetworkConfigListener implements - NetworkConfigListener { - - @Override - public void event(NetworkConfigEvent event) { - String subject; - log.info(NETWORK_CONFIG_EVENT_IS_RECEIVED, event.type()); - if (!event.configClass().equals(GluonConfig.class)) { - return; - } - log.info("Event is received from network configuration {}", event - .type()); - switch (event.type()) { - case CONFIG_UPDATED: - subject = (String) event.subject(); - GluonConfig gluonConfig = configService - .getConfig(subject, GluonConfig.class); - JsonNode jsonNode = gluonConfig.node(); - parseEtcdResponse(jsonNode, subject, SET); - break; - case CONFIG_REMOVED: - subject = (String) event.subject(); - parseEtcdResponse(null, subject, DELETE); - break; - default: - log.info(INVALID_EVENT_RECEIVED); - break; - } - } - } - - /** - * update import and export route target information in route admin service. - * - * @param evpnInstanceName evpn instance name - * @param exportRouteTargets export route targets - * @param importRouteTargets import route targets - * @param action action holds update or delete - */ - private void updateImpExpRtInRoute(EvpnInstanceName evpnInstanceName, - Set exportRouteTargets, - Set importRouteTargets, - String action) { - - for (EvpnInstanceRoute evpnInstanceRoute : evpnInstanceRoutes) { - if (evpnInstanceRoute.evpnInstanceName().equals(evpnInstanceName)) { - evpnInstanceRoute - .setExportRtList(new LinkedList<>(exportRouteTargets)); - evpnInstanceRoute - .setImportRtList(new LinkedList<>(importRouteTargets)); - if (action.equals(UPDATE)) { - evpnInstanceRoutes.add(evpnInstanceRoute); - } else if (action.equals(DELETE)) { - evpnInstanceRoutes.remove(evpnInstanceRoute); - } - //Get the public route and update route targets. - EvpnNextHop evpnNextHop = EvpnNextHop - .evpnNextHop(evpnInstanceRoute.getNextHopl(), - evpnInstanceRoute.importRouteTarget(), - evpnInstanceRoute.exportRouteTarget(), - evpnInstanceRoute.getLabel()); - Collection evpnPublicRoutes - = evpnRouteStore.getRoutesForNextHop(evpnNextHop.nextHop()); - for (EvpnRoute pubRoute : evpnPublicRoutes) { - EvpnRoute evpnPubRoute = pubRoute; - if (evpnPubRoute.label().equals(evpnInstanceRoute - .getLabel())) { - evpnPubRoute - .setExportRtList(new LinkedList<>(exportRouteTargets)); - evpnPubRoute - .setImportRtList(new LinkedList<>(importRouteTargets)); - if (action.equals(UPDATE)) { - evpnRouteAdminService.update(Sets.newHashSet(evpnPubRoute)); - } else if (action.equals(DELETE)) { - evpnRouteAdminService - .withdraw(Sets.newHashSet(evpnPubRoute)); - } - } - } - } - } - } - - /** - * update or withdraw evpn route based on vpn af configuration. - * - * @param vpnAfConfig vpn af configuration - * @param action action holds update or delete - */ - - private void processEvpnRouteUpdate(VpnAfConfig vpnAfConfig, - String action) { - Collection instances - = vpnInstanceService.getInstances(); - for (VpnInstance vpnInstance : instances) { - Set configRouteTargets - = vpnInstance.getConfigRouteTargets(); - for (VpnRouteTarget vpnRouteTarget : configRouteTargets) { - if (vpnRouteTarget.equals(vpnAfConfig.routeTarget())) { - Set exportRouteTargets - = vpnInstance.getExportRouteTargets(); - Set importRouteTargets - = vpnInstance.getImportRouteTargets(); - String routeTargetType = vpnAfConfig.routeTargetType(); - if (action.equals(UPDATE)) { - vpnInstanceService - .updateImpExpRouteTargets(routeTargetType, - exportRouteTargets, - importRouteTargets, - vpnRouteTarget); - } else if (action.equals(DELETE)) { - switch (routeTargetType) { - case EXPORT_EXTCOMMUNITY: - exportRouteTargets.remove(vpnRouteTarget); - break; - case IMPORT_EXTCOMMUNITY: - importRouteTargets.remove(vpnRouteTarget); - break; - case BOTH: - exportRouteTargets.remove(vpnRouteTarget); - importRouteTargets.remove(vpnRouteTarget); - break; - default: - log.info(INVALID_ROUTE_TARGET_TYPE); - break; - } - } - updateImpExpRtInRoute(vpnInstance.vpnInstanceName(), - exportRouteTargets, - importRouteTargets, - action); - } - } - } - } - - private class InnerVpnAfConfigListener implements VpnAfConfigListener { - - @Override - public void event(VpnAfConfigEvent event) { - VpnAfConfig vpnAfConfig = event.subject(); - if (VpnAfConfigEvent.Type.VPN_AF_CONFIG_DELETE == event.type()) { - processEvpnRouteUpdate(vpnAfConfig, DELETE); - } else if (VpnAfConfigEvent.Type.VPN_AF_CONFIG_SET - == event.type() || VpnAfConfigEvent.Type - .VPN_AF_CONFIG_UPDATE == event.type()) { - processEvpnRouteUpdate(vpnAfConfig, UPDATE); - } - } - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/package-info.java deleted file mode 100644 index 8f831614ae..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * EVPN application that process configuration and host, vpn-port, route - * events. - */ -package org.onosproject.evpnopenflow.manager.impl; diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/package-info.java deleted file mode 100644 index d93de24c8f..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * EVPN application that process configuration and host, vpn-port, route - * events. - */ -package org.onosproject.evpnopenflow.manager; diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePort.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePort.java deleted file mode 100644 index 1b2455a44c..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePort.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; - -import java.util.Collection; -import java.util.Set; - -/** - * Representation of a Base port. - */ -public interface BasePort { - /** - * Coarse classification of the type of the virtual port. - */ - enum State { - /** - * Signifies that a basePort is currently active,This state mean that - * this basePort is available. - */ - ACTIVE, - /** - * Signifies that a basePort is currently unavailable. - */ - DOWN; - } - - /** - * Returns the basePort identifier. - * - * @return basePort identifier - */ - BasePortId portId(); - - /** - * Returns the network identifier. - * - * @return tenantNetwork identifier - */ - TenantNetworkId networkId(); - - /** - * Returns the symbolic name for the basePort. - * - * @return basePort name - */ - String name(); - - /** - * Returns the administrative status of the port,which is up(true) or - * down(false). - * - * @return true if the administrative status of the port is up - */ - boolean adminStateUp(); - - /** - * Returns the state. - * - * @return state - */ - String state(); - - /** - * Returns the MAC address. - * - * @return MAC Address - */ - MacAddress macAddress(); - - /** - * Returns the port tenantId. - * - * @return port tenantId - */ - TenantId tenantId(); - - /** - * Returns the device identifier. - * - * @return deviceId - */ - DeviceId deviceId(); - - /** - * Returns the identifier of the entity that uses this port. - * - * @return deviceOwner - */ - String deviceOwner(); - - /** - * Returns the basePort allowedAddressPairs. - * - * @return basePort allowedAddressPairs - */ - Collection allowedAddressPairs(); - - /** - * Returns set of IP addresses for the port, include the IP addresses and subnet - * identity. - * - * @return FixedIps Set of fixedIp - */ - Set fixedIps(); - - /** - * Returns the basePort bindinghostId. - * - * @return basePort bindinghostId - */ - BindingHostId bindingHostId(); - - /** - * Returns the basePort bindingVnicType. - * - * @return basePort bindingVnicType - */ - String bindingVnicType(); - - /** - * Returns the basePort bindingVifType. - * - * @return basePort bindingVifType - */ - String bindingVifType(); - - /** - * Returns the basePort bindingvifDetail. - * - * @return basePort bindingvifDetail - */ - String bindingVifDetails(); - - /** - * Returns the security groups. - * - * @return port security groups - */ - Iterable securityGroups(); -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePortId.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePortId.java deleted file mode 100644 index 4eb120a2cc..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/BasePortId.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -import org.onlab.util.Identifier; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable representation of a base port identifier. - */ -public final class BasePortId extends Identifier { - // Public construction is prohibited - private BasePortId(String basePortId) { - super(checkNotNull(basePortId, "BasePortId cannot be null")); - } - - public String portId() { - return identifier; - } - - /** - * Creates a virtualPort id using the supplied portId. - * - * @param portId baseport identifier - * @return BasePortId - */ - public static BasePortId portId(String portId) { - return new BasePortId(portId); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultBasePort.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultBasePort.java deleted file mode 100644 index ec9e59ec5f..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultBasePort.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; - -import java.util.Collection; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Default implementation of Base port. - */ -public final class DefaultBasePort implements BasePort { - private final BasePortId id; - private final TenantNetworkId networkId; - private final Boolean adminStateUp; - private final String name; - private final String state; - private final MacAddress macAddress; - private final TenantId tenantId; - private final String deviceOwner; - private final DeviceId deviceId; - private final Set fixedIps; - private final BindingHostId bindingHostId; - private final String bindingVnicType; - private final String bindingVifType; - private final String bindingVifDetails; - private final Set allowedAddressPairs; - private final Set securityGroups; - - /** - * Creates a BasePort object. - * - * @param id the base port identifier - * @param networkId the network identifier - * @param adminStateUp adminStateup true or false - * @param strMap the map of properties of base port - * @param state base port state - * @param macAddress the MAC address - * @param tenantId the tenant identifier - * @param deviceId the device identifier - * @param fixedIps set of fixed IP - * @param bindingHostId the binding host identifier - * @param allowedAddressPairs the collection of allowdeAddressPairs - * @param securityGroups the collection of securityGroups - */ - public DefaultBasePort(BasePortId id, - TenantNetworkId networkId, - Boolean adminStateUp, - Map strMap, - String state, - MacAddress macAddress, - TenantId tenantId, - DeviceId deviceId, - Set fixedIps, - BindingHostId bindingHostId, - Set allowedAddressPairs, - Set securityGroups) { - this.id = id; - this.networkId = networkId; - this.adminStateUp = adminStateUp; - this.name = strMap.get("name"); - this.state = state; - this.macAddress = macAddress; - this.tenantId = tenantId; - this.deviceOwner = strMap.get("deviceOwner"); - this.deviceId = deviceId; - this.fixedIps = fixedIps; - this.bindingHostId = bindingHostId; - this.bindingVnicType = strMap.get("bindingVnicType"); - this.bindingVifType = strMap.get("bindingVifType"); - this.bindingVifDetails = strMap.get("bindingVifDetails"); - this.allowedAddressPairs = allowedAddressPairs; - this.securityGroups = securityGroups; - } - - @Override - public BasePortId portId() { - return id; - } - - @Override - public TenantNetworkId networkId() { - return networkId; - } - - @Override - public String name() { - return name; - } - - @Override - public boolean adminStateUp() { - return adminStateUp; - } - - @Override - public String state() { - return state; - } - - @Override - public MacAddress macAddress() { - return macAddress; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public DeviceId deviceId() { - return deviceId; - } - - @Override - public String deviceOwner() { - return deviceOwner; - } - - @Override - public Collection allowedAddressPairs() { - return allowedAddressPairs; - } - - @Override - public Set fixedIps() { - return fixedIps; - } - - @Override - public BindingHostId bindingHostId() { - return bindingHostId; - } - - @Override - public String bindingVnicType() { - return bindingVifType; - } - - @Override - public String bindingVifType() { - return bindingVifType; - } - - @Override - public String bindingVifDetails() { - return bindingVifDetails; - } - - @Override - public Collection securityGroups() { - return securityGroups; - } - - @Override - public int hashCode() { - return Objects.hash(id, networkId, adminStateUp, name, state, - macAddress, tenantId, deviceId, deviceOwner, - allowedAddressPairs, fixedIps, bindingHostId, - bindingVnicType, bindingVifType, bindingVifDetails, - securityGroups); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultBasePort) { - final DefaultBasePort that = (DefaultBasePort) obj; - return Objects.equals(this.id, that.id) - && Objects.equals(this.networkId, that.networkId) - && Objects.equals(this.adminStateUp, that.adminStateUp) - && Objects.equals(this.state, that.state) - && Objects.equals(this.name, that.name) - && Objects.equals(this.tenantId, that.tenantId) - && Objects.equals(this.macAddress, that.macAddress) - && Objects.equals(this.deviceId, that.deviceId) - && Objects.equals(this.deviceOwner, that.deviceOwner) - && Objects.equals(this.allowedAddressPairs, - that.allowedAddressPairs) - && Objects.equals(this.fixedIps, that.fixedIps) - && Objects.equals(this.bindingHostId, that.bindingHostId) - && Objects.equals(this.bindingVifDetails, - that.bindingVifDetails) - && Objects.equals(this.bindingVifType, that.bindingVifType) - && Objects.equals(this.bindingVnicType, - that.bindingVnicType) - && Objects.equals(this.securityGroups, that.securityGroups); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id).add("network_id", networkId) - .add("adminStateUp", adminStateUp).add("state", state) - .add("name", name).add("state", state) - .add("macAddress", macAddress).add("tenantId", tenantId) - .add("deviced", deviceId).add("deviceOwner", deviceOwner) - .add("allowedAddressPairs", allowedAddressPairs) - .add("fixedIp", fixedIps).add("bindingHostId", bindingHostId) - .add("bindingVnicType", bindingVnicType) - .add("bindingVifDetails", bindingVifDetails) - .add("bindingVifType", bindingVifType) - .add("securityGroups", securityGroups).toString(); - } - -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnAfConfig.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnAfConfig.java deleted file mode 100644 index afa32a0cac..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnAfConfig.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -import org.onosproject.evpnrouteservice.VpnRouteTarget; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID_CANNOT_BE_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RT_CANNOT_BE_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RT_TYPE_CANNOT_BE_NULL; - -/** - * Default implementation of VPN AF configuration. - */ -public class DefaultVpnAfConfig implements VpnAfConfig { - - private final String exportRoutePolicy; - private final String importRoutePolicy; - private final VpnRouteTarget routeTarget; - private final String routeTargetType; - - /** - * creates vpn af configuration object. - * - * @param exportRoutePolicy export route policy - * @param importRoutePolicy import route policy - * @param routeTarget route target value - * @param routeTargetType route target type - */ - public DefaultVpnAfConfig(String exportRoutePolicy, - String importRoutePolicy, - VpnRouteTarget routeTarget, - String routeTargetType) { - this.exportRoutePolicy = checkNotNull(exportRoutePolicy, - ID_CANNOT_BE_NULL); - this.importRoutePolicy = checkNotNull(importRoutePolicy, - ID_CANNOT_BE_NULL); - this.routeTarget = checkNotNull(routeTarget, RT_CANNOT_BE_NULL); - this.routeTargetType = checkNotNull(routeTargetType, - RT_TYPE_CANNOT_BE_NULL); - } - - @Override - public String exportRoutePolicy() { - return exportRoutePolicy; - } - - @Override - public String importRoutePolicy() { - return importRoutePolicy; - } - - @Override - public VpnRouteTarget routeTarget() { - return routeTarget; - } - - @Override - public String routeTargetType() { - return routeTargetType; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("exportRoutePolicy", exportRoutePolicy) - .add("importRoutePolicy", importRoutePolicy) - .add("routeTarget", routeTarget) - .add("routeTargetType", routeTargetType) - .toString(); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnInstance.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnInstance.java deleted file mode 100644 index 62b1a70bf2..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnInstance.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -import org.onosproject.evpnrouteservice.EvpnInstanceName; -import org.onosproject.evpnrouteservice.RouteDistinguisher; -import org.onosproject.evpnrouteservice.VpnRouteTarget; - -import java.util.Objects; -import java.util.Set; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.CONFIG_RT_CANNOT_BE_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DESCRIPTION; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DESCRIPTION_CANNOT_BE_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EXPORT_RT_CANNOT_BE_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID_CANNOT_BE_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IMPORT_RT_CANNOT_BE_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INSTANCE_NAME_CANNOT_BE_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RD_CANNOT_BE_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_DISTINGUISHER; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPNINSTANCE_NAME; - -/** - * Default implementation of VPN instance. - */ -public class DefaultVpnInstance implements VpnInstance { - private final VpnInstanceId id; - private final String description; - private final EvpnInstanceName name; - private final RouteDistinguisher routeDistinguisher; - private final Set exportRtSet; - private final Set importRtSet; - private final Set configRtSet; - - - /** - * creates vpn instance object. - * - * @param id vpn instance identifier - * @param instanceName the name of vpn instance - * @param description the description of vpn instance - * @param routeDistinguisher the routeDistinguisher of vpn instance - * @param exportRtSet the export route target information - * @param importRtSet the import route target information - * @param configRtSet the config route target information - */ - public DefaultVpnInstance(VpnInstanceId id, EvpnInstanceName instanceName, - String description, - RouteDistinguisher routeDistinguisher, - Set exportRtSet, - Set importRtSet, - Set configRtSet) { - this.id = checkNotNull(id, ID_CANNOT_BE_NULL); - this.name = checkNotNull(instanceName, INSTANCE_NAME_CANNOT_BE_NULL); - this.description = checkNotNull(description, - DESCRIPTION_CANNOT_BE_NULL); - this.routeDistinguisher = checkNotNull(routeDistinguisher, - RD_CANNOT_BE_NULL); - this.exportRtSet = checkNotNull(exportRtSet, EXPORT_RT_CANNOT_BE_NULL); - this.importRtSet = checkNotNull(importRtSet, IMPORT_RT_CANNOT_BE_NULL); - this.configRtSet = checkNotNull(configRtSet, CONFIG_RT_CANNOT_BE_NULL); - } - - @Override - public VpnInstanceId id() { - return id; - } - - @Override - public String description() { - return description; - } - - @Override - public RouteDistinguisher routeDistinguisher() { - return routeDistinguisher; - } - - @Override - public EvpnInstanceName vpnInstanceName() { - return name; - } - - @Override - public Set getExportRouteTargets() { - return exportRtSet; - } - - @Override - public Set getImportRouteTargets() { - return importRtSet; - } - - @Override - public Set getConfigRouteTargets() { - return configRtSet; - } - - @Override - public int hashCode() { - return Objects.hash(id, name, description, routeDistinguisher, - exportRtSet, importRtSet, configRtSet); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultVpnInstance) { - final DefaultVpnInstance that = (DefaultVpnInstance) obj; - return Objects.equals(this.id, that.id) - && Objects.equals(this.name, that.name) - && Objects.equals(this.description, that.description) - && Objects.equals(this.routeDistinguisher, - that.routeDistinguisher) - && Objects.equals(this.exportRtSet, that.exportRtSet) - && Objects.equals(this.importRtSet, that.importRtSet) - && Objects.equals(this.configRtSet, that.configRtSet); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add(ID, id) - .add(DESCRIPTION, description) - .add(VPNINSTANCE_NAME, name) - .add(ROUTE_DISTINGUISHER, routeDistinguisher) - .add("exportRtSet", exportRtSet) - .add("importRtSet", importRtSet) - .add("configRtSet", configRtSet) - .toString(); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnPort.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnPort.java deleted file mode 100644 index c036a5f36b..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnPort.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID_CANNOT_BE_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_ID_CANNOT_BE_NULL; - -/** - * Default implementation of VPN port. - */ -public class DefaultVpnPort implements VpnPort { - - private final VpnPortId id; - private final VpnInstanceId vpnInstanceId; - - /** - * creates vpn port object. - * - * @param id vpn port id - * @param vpnInstanceId vpn instance id - */ - public DefaultVpnPort(VpnPortId id, VpnInstanceId vpnInstanceId) { - this.id = checkNotNull(id, ID_CANNOT_BE_NULL); - this.vpnInstanceId = checkNotNull(vpnInstanceId, - VPN_INSTANCE_ID_CANNOT_BE_NULL); - } - - @Override - public VpnPortId id() { - return id; - } - - @Override - public VpnInstanceId vpnInstanceId() { - return vpnInstanceId; - } - - @Override - public int hashCode() { - return Objects.hash(id, vpnInstanceId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultVpnPort) { - final DefaultVpnPort that = (DefaultVpnPort) obj; - return Objects.equals(this.id, that.id) - && Objects.equals(this.vpnInstanceId, that.vpnInstanceId); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add(ID, id) - .add(VPN_INSTANCE_ID, vpnInstanceId).toString(); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/EvpnConstants.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/EvpnConstants.java deleted file mode 100644 index 3bb692ca50..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/EvpnConstants.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -/** - * Provides constants used in EVPN openflow application. - */ -public final class EvpnConstants { - private EvpnConstants() { - } - - public static final String APP_ID = "org.onosproject.evpnopenflow"; - public static final String EVPN_OPENFLOW_START = "evpn-openflow app is " + - "started"; - public static final String EVPN_OPENFLOW_STOP = "evpn-openflow app is " + - "stopped"; - public static final String EVPN_VPN_PORT_START = "EVPN port started"; - public static final String EVPN_VPN_PORT_STOP = "EVPN port stopped"; - public static final String EVPN_VPN_INSTANCE_START = "EVPN instance " + - "started"; - public static final String EVPN_VPN_INSTANCE_STOP = "EVPN instance " + - "stopped"; - public static final String HOST_DETECT = "Host detected {}"; - public static final String HOST_VANISHED = "Host vanished {}"; - public static final String IFACEID = "ifaceid"; - public static final String IFACEID_OF_HOST_IS_NULL = - "The ifaceId of host is null"; - public static final String CANT_FIND_VPN_PORT = "Can't find vpnport {}"; - public static final String CANT_FIND_VPN_INSTANCE = "EVPN instance {} is " + - "not exist"; - public static final String CANT_FIND_CONTROLLER_DEVICE = "Can't find " + - "controller of device: {}"; - public static final String GET_PRIVATE_LABEL = "Get private label {}"; - public static final String RELEASE_LABEL_FAILED = "Release resoure label " + - "{} failed"; - public static final String VPN_PORT_UNBIND = "On EVPN port unbind"; - public static final String VPN_PORT_BIND = "On EVPN port bind"; - public static final String SLASH = "/"; - public static final String COMMA = ","; - public static final String VPN_INSTANCE_TARGET = "VpnService"; - public static final String VPN_PORT_TARGET = "VpnBinding"; - public static final String BASEPORT = "Port"; - public static final String VPN_AF_TARGET = "VpnAfConfig"; - public static final String BGP_PEERING = "BGPPeering"; - public static final String DATA_PLANE_TUNNEL = "DataplaneTunnel"; - public static final String VPN_PORT_STORE = "evpn-port-store"; - public static final String BASE_PORT_STORE = "evpn-baseport-store"; - public static final String VPN_INSTANCE_STORE = - "evpn-instance-store"; - public static final String VPN_PORT_ID_NOT_NULL = "EVPN port ID cannot be" + - " null"; - public static final String VPN_PORT_NOT_NULL = "EVPN port cannot be null"; - public static final String RESPONSE_NOT_NULL = "JsonNode can not be null"; - public static final String LISTENER_NOT_NULL = "Listener cannot be null"; - public static final String EVENT_NOT_NULL = "Event cannot be null"; - public static final String DELETE = "delete"; - public static final String SET = "set"; - public static final String UPDATE = "update"; - public static final String VPN_PORT_ID = "EVPN port ID is {} "; - public static final String VPN_PORT_CREATION_FAILED = "The EVPN port " + - "creation is failed whose identifier is {} "; - public static final String VPN_PORT_IS_NOT_EXIST = "The EVPN port is not " + - "exist whose identifier is {}"; - public static final String VPN_PORT_UPDATE_FAILED = "The EVPN port update" + - " is failed whose identifier is {}"; - public static final String VPN_PORT_DELETE_FAILED = - "The EVPN port delete is failed whose identifier is {}"; - public static final String INTERFACE_ID = "interface_id"; - public static final String ID = "id"; - public static final String VPN_INSTANCE = "service_id"; - public static final String VPN_INSTANCE_ID_NOT_NULL = "EVPN instance ID " + - "cannot be null"; - public static final String VPN_INSTANCE_NOT_NULL = "EVPN instance cannot " + - "be null"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - public static final String INSTANCE_ID = "EVPN instance ID is {} "; - public static final String VPN_INSTANCE_CREATION_FAILED = "The " + - "EVPN instance creation is failed whose identifier is {} "; - public static final String VPN_INSTANCE_IS_NOT_EXIST = "The EVPN instance" + - " is not exist whose identifier is {}"; - public static final String VPN_INSTANCE_UPDATE_FAILED = "The EVPN " + - "instance update is failed whose identifier is {}"; - public static final String VPN_INSTANCE_DELETE_FAILED = "The EVPN " + - "instance delete is failed whose identifier is {}"; - public static final String VPN_INSTANCE_NAME = "name"; - public static final String DESCRIPTION = "description"; - public static final String ROUTE_DISTINGUISHERS = "route_distinguishers"; - public static final String IPV4_FAMILY = "ipv4_family"; - static final String ID_CANNOT_BE_NULL = "ID cannot be null"; - static final String INSTANCE_NAME_CANNOT_BE_NULL = "Instance name cannot " + - "be null"; - static final String DESCRIPTION_CANNOT_BE_NULL = "Description cannot be " + - "null"; - static final String RD_CANNOT_BE_NULL = "RouteDistinguisher cannot be null"; - static final String RT_CANNOT_BE_NULL = "RouteTarget cannot be null"; - static final String VPNINSTANCE_NAME = "vpnInstanceName"; - static final String ROUTE_DISTINGUISHER = "routeDistinguisher"; - static final String VPN_INSTANCE_ID_CANNOT_BE_NULL = "EVPN instance ID " + - "cannot be null"; - static final String VPN_INSTANCE_ID = "vpnInstanceId"; - public static final String FORMAT_VPN_INSTANCE = "Id=%s, description=%s," - + " name=%s, routeDistinguisher=%s, routeTarget=%s"; - public static final String FORMAT_VPN_PORT = " EVPN port id=%-32s, " + - "EVPN instance id=%-18s"; - public static final String FORMAT_PRIVATE_ROUTE = " %-18s %-15s %-10s"; - public static final String FORMAT_PUBLIC_ROUTE = " %-18s %-18s %-10s"; - public static final String SWITCH_CHANNEL_ID = "channelId"; - public static final String NOT_MASTER_FOR_SPECIFIC_DEVICE = "The local " + - "controller is not master for the specified deviceId"; - public static final String VPN_AF_CONFIG_STORE = - "evpn-vpn-af-config-store"; - public static final String EVPN_VPN_AF_CONFIG_START = "EVPN af config" + - " started"; - public static final String EVPN_VPN_AF_CONFIG_STOP = "EVPN af config" + - " stopped"; - static final String RT_TYPE_CANNOT_BE_NULL = "Route target type " + - "cannot be null"; - public static final String VPN_AF_CONFIG_NOT_NULL = "EVPN af config be " + - "null"; - public static final String ROUTE_TARGET_VALUE = "Route target value is {} "; - public static final String VPN_AF_CONFIG_CREATION_FAILED = "The " + - "EVPN af config creation is failed whose route target is {} "; - public static final String VPN_AF_CONFIG_UPDATE_FAILED = "The EVPN af " + - "config update is failed whose identifier is {}"; - public static final String VPN_AF_CONFIG_IS_NOT_EXIST = "The EVPN AF " + - "config is not exist whose identifier is {}"; - public static final String ROUTE_TARGET_CANNOT_NOT_NULL = "Route target " + - "value cannot be null"; - public static final String ROUTE_TARGET_DELETE_FAILED = "The route target" + - " delete is failed whose route target value is {}"; - static final String EXPORT_RT_CANNOT_BE_NULL = "export route " + - "target set cannot be null"; - static final String IMPORT_RT_CANNOT_BE_NULL = "import route " + - "target set cannot be null"; - static final String CONFIG_RT_CANNOT_BE_NULL = "import route " + - "target set cannot be null"; - public static final String EXPORT_EXTCOMMUNITY = "export_extcommunity"; - public static final String IMPORT_EXTCOMMUNITY = "import_extcommunity"; - public static final String BOTH = "both"; - public static final String INVALID_ROUTE_TARGET_TYPE - = "Invalid route target type has received"; - public static final String INVALID_EVENT_RECEIVED - = "Invalid event is received while processing network " + - "configuration event"; - public static final String NETWORK_CONFIG_EVENT_IS_RECEIVED - = "Event is received from network configuration {}"; - public static final int ARP_PRIORITY = 0xffff; - public static final short ARP_RESPONSE = 0x2; - public static final String INVALID_TARGET_RECEIVED - = "Invalid target type has received"; - public static final String INVALID_ACTION_VPN_AF_CONFIG - = "Invalid action is received while processing VPN af" + - " configuration"; - public static final String EXPORT_ROUTE_POLICY = "export_route_policy"; - public static final String IMPORT_ROUTE_POLICY = "import_route_policy"; - public static final String VRF_RT_TYPE = "vrf_rt_type"; - public static final String VRF_RT_VALUE = "vrf_rt_value"; - public static final String BGP_EVPN_ROUTE_UPDATE_START - = "bgp evpn route update start {}"; - public static final String MPLS_OUT_FLOWS = "mpls out flows --> {}"; - public static final String BGP_EVPN_ROUTE_DELETE_START - = "bgp route delete start {}"; - public static final String ROUTE_ADD_ARP_RULES = "Route ARP Rules-->ADD"; - public static final String ROUTE_REMOVE_ARP_RULES - = "Route ARP Rules-->REMOVE"; - public static final String TUNNEL_DST = "tunnelDst"; - public static final String FAILED_TO_SET_TUNNEL_DST - = "Failed to get extension instruction to set tunnel dst {}"; - public static final String VXLAN = "vxlan"; - public static final String CANNOT_FIND_TUNNEL_PORT_DEVICE = - "Can't find tunnel port in device {}"; -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnAfConfig.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnAfConfig.java deleted file mode 100644 index 83d5686326..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnAfConfig.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -import org.onosproject.evpnrouteservice.VpnRouteTarget; - -/** - * Representation of a VPN af configuration. - */ -public interface VpnAfConfig { - - /** - * Returns the export route policy information. - * - * @return export route policy - */ - String exportRoutePolicy(); - - /** - * Returns the import route policy information. - * - * @return export route policy - */ - String importRoutePolicy(); - - /** - * Returns the route target value. - * - * @return route target value - */ - VpnRouteTarget routeTarget(); - - /** - * Returns the route target type. - * - * @return route target type - */ - String routeTargetType(); -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstance.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstance.java deleted file mode 100644 index 3c2d062bcc..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstance.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -import org.onosproject.evpnrouteservice.EvpnInstanceName; -import org.onosproject.evpnrouteservice.RouteDistinguisher; -import org.onosproject.evpnrouteservice.VpnRouteTarget; - -import java.util.Set; - -/** - * Representation of a VPN instance. - */ -public interface VpnInstance { - - /** - * Returns the VPN instance identifier. - * - * @return VPN instance identifier - */ - VpnInstanceId id(); - - /** - * Returns the VPN instance description. - * - * @return VPN instance description - */ - String description(); - - /** - * Returns the VPN instance route distinguishes. - * - * @return VPN instance route distinguishes - */ - RouteDistinguisher routeDistinguisher(); - - /** - * Returns the VPN instance name. - * - * @return VPN instance name - */ - EvpnInstanceName vpnInstanceName(); - - /** - * Returns the export route target information. - * - * @return export route target information - */ - Set getExportRouteTargets(); - - /** - * Returns the import route target information. - * - * @return VPN instance ipv4 family - */ - Set getImportRouteTargets(); - - /** - * Returns the config route target information. - * - * @return config route target information. - */ - Set getConfigRouteTargets(); -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstanceId.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstanceId.java deleted file mode 100644 index 03399ed7bf..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstanceId.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -import org.onlab.util.Identifier; - -/** - * Immutable representation of a VPN instance identity. - */ -public final class VpnInstanceId extends Identifier { - // Public construction is prohibited - private VpnInstanceId(String vpnInstanceId) { - super(vpnInstanceId); - } - - /** - * Creates a VPN instance identifier. - * - * @param vpnInstanceId VPN instance identify string - * @return VPN instance identifier - */ - public static VpnInstanceId vpnInstanceId(String vpnInstanceId) { - return new VpnInstanceId(vpnInstanceId); - } - - /** - * Returns VPN instance identifier. - * - * @return the VPN instance identifier - */ - public String vpnInstanceId() { - return identifier; - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPort.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPort.java deleted file mode 100644 index 82f5336fe5..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPort.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -/** - * Representation of a VPN port. - */ -public interface VpnPort { - - /** - * Returns the VPN port identifier. - * - * @return VPN port identifier - */ - VpnPortId id(); - - /** - * Returns the VPN instance identifier. - * - * @return VPN instance identifier - */ - VpnInstanceId vpnInstanceId(); -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPortId.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPortId.java deleted file mode 100644 index f900830643..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnPortId.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc; - -import org.onlab.util.Identifier; - -/** - * Immutable representation of a VPN port identity. - */ -public final class VpnPortId extends Identifier { - // Public construction is prohibited - private VpnPortId(String vpnPortId) { - super(vpnPortId); - } - - /** - * Creates a VPN port identifier. - * - * @param vpnPortId VPN port identifier - * @return VPN port identifier - */ - public static VpnPortId vpnPortId(String vpnPortId) { - return new VpnPortId(vpnPortId); - } - - /** - * Returns VPN port identifier. - * - * @return the VPN port identifier - */ - public String vpnPortId() { - return identifier; - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortEvent.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortEvent.java deleted file mode 100644 index acb762aa25..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortEvent.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.baseport; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.evpnopenflow.rsc.BasePort; - -/** - * Describes base port event. - */ -public class BasePortEvent extends AbstractEvent { - /** - * Type of base port events. - */ - public enum Type { - /** - * Signifies that base port has been created. - */ - BASE_PORT_PUT, - /** - * Signifies that base port has been deleted. - */ - BASE_PORT_DELETE, - /** - * Signifies that base port has been updated. - */ - BASE_PORT_UPDATE - } - - /** - * Creates an event of a given type and for the specified base port. - * - * @param type base port event type - * @param basePort base port subject - */ - public BasePortEvent(Type type, BasePort basePort) { - super(type, basePort); - } - - /** - * Creates an event of a given type and for the specified base port. - * - * @param type base port event type - * @param basePort base port subject - * @param time occurrence time - */ - public BasePortEvent(Type type, BasePort basePort, long time) { - super(type, basePort, time); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortListener.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortListener.java deleted file mode 100644 index 2822bb36fd..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.baseport; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of base port related events. - */ -public interface BasePortListener extends EventListener { - -} \ No newline at end of file diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortService.java deleted file mode 100644 index c3bdb2b74f..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/BasePortService.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.baseport; - -import com.fasterxml.jackson.databind.JsonNode; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.evpnopenflow.rsc.BasePort; -import org.onosproject.evpnopenflow.rsc.BasePortId; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; - -import java.util.Collection; - - -/** - * Service for interacting with the inventory of basePort. - */ -public interface BasePortService { - /** - * Returns if the basePort is existed. - * - * @param basePortId basePort identifier - * @return true or false if one with the given identifier is not existed. - */ - boolean exists(BasePortId basePortId); - - /** - * Returns the basePort with the identifier. - * - * @param basePortId basePort ID - * @return BasePort or null if one with the given ID is not know. - */ - BasePort getPort(BasePortId basePortId); - - /** - * Returns the basePort associated with the fixedIP. - * - * @param fixedIP the fixedIP identifier - * @return basePort. - */ - BasePort getPort(FixedIp fixedIP); - - /** - * Returns the basePort associated with the mac address. - * - * @param mac the mac address - * @return basePort. - */ - BasePort getPort(MacAddress mac); - - /** - * Returns the basePort associated with the networkId and ip. - * - * @param networkId the TenantNetworkId identifier - * @param ip the ip identifier - * @return basePort. - */ - BasePort getPort(TenantNetworkId networkId, IpAddress ip); - - /** - * Returns the collection of the currently known basePort. - * - * @return collection of BasePort. - */ - Collection getPorts(); - - /** - * Returns the collection of the basePorts associated with the networkId. - * - * @param networkId the network identifer - * @return collection of basePort. - */ - Collection getPorts(TenantNetworkId networkId); - - /** - * Returns the collection of the basePorts associated with the tenantId. - * - * @param tenantId the tenant identifier - * @return collection of basePorts. - */ - Collection getPorts(TenantId tenantId); - - /** - * Returns the collection of the basePorts associated with the deviceId. - * - * @param deviceId the device identifier - * @return collection of basePort. - */ - Collection getPorts(DeviceId deviceId); - - /** - * Creates basePorts by basePorts. - * - * @param basePorts the iterable collection of basePorts - * @return true if all given identifiers created successfully. - */ - boolean createPorts(Iterable basePorts); - - /** - * Updates basePorts by basePorts. - * - * @param basePorts the iterable collection of basePorts - * @return true if all given identifiers updated successfully. - */ - boolean updatePorts(Iterable basePorts); - - /** - * Deletes basePortIds by basePortIds. - * - * @param basePortIds the iterable collection of basePort identifiers - * @return true or false if one with the given identifier to delete is - * successfully. - */ - boolean removePorts(Iterable basePortIds); - - /** - * process gluon config for vpn port information. - * - * @param action can be either update or delete - * @param key can contain the id and also target information - * @param value content of the vpn port configuration - */ - void processGluonConfig(String action, String key, JsonNode value); - - /** - * Adds the specified listener to Vpn Port manager. - * - * @param listener Vpn Port listener - */ - void addListener(BasePortListener listener); - - /** - * Removes the specified listener to Vpn Port manager. - * - * @param listener Vpn Port listener - */ - void removeListener(BasePortListener listener); -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/BasePortManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/BasePortManager.java deleted file mode 100644 index 27f9fd7ae1..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/BasePortManager.java +++ /dev/null @@ -1,437 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.baseport.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.Sets; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.evpnopenflow.rsc.BasePort; -import org.onosproject.evpnopenflow.rsc.BasePortId; -import org.onosproject.evpnopenflow.rsc.DefaultBasePort; -import org.onosproject.evpnopenflow.rsc.baseport.BasePortEvent; -import org.onosproject.evpnopenflow.rsc.baseport.BasePortListener; -import org.onosproject.evpnopenflow.rsc.baseport.BasePortService; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.MultiValuedTimestamp; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultFloatingIp; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.TenantRouter; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.BASE_PORT_STORE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.LISTENER_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RESPONSE_NOT_NULL; - -/** - * Provides implementation of the BasePort APIs. - */ -@Component(immediate = true, service = BasePortService.class) -public class BasePortManager implements BasePortService { - - private final Set listeners = Sets - .newCopyOnWriteArraySet(); - private final Logger log = LoggerFactory.getLogger(getClass()); - private static final String BASEPORT_ID_NULL = "BasePort ID cannot be " + - "null"; - private static final String BASEPORT_NOT_NULL = "BasePort cannot be " + - "null"; - private static final String TENANTID_NOT_NULL = "TenantId cannot be null"; - private static final String NETWORKID_NOT_NULL = "NetworkId cannot be null"; - private static final String DEVICEID_NOT_NULL = "DeviceId cannot be null"; - private static final String FIXEDIP_NOT_NULL = "FixedIp cannot be null"; - private static final String MAC_NOT_NULL = "Mac address cannot be null"; - private static final String IP_NOT_NULL = "Ip cannot be null"; - private static final String EVENT_NOT_NULL = "event cannot be null"; - private static final String SET = "set"; - private static final String UPDATE = "update"; - private static final String DELETE = "delete"; - private static final String SLASH = "/"; - private static final String PROTON_BASE_PORT = "Port"; - private static final String JSON_NOT_NULL = "JsonNode can not be null"; - - protected EventuallyConsistentMap vPortStore; - protected ApplicationId appId; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Activate - public void activate() { - - appId = coreService.registerApplication(APP_ID); - - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API) - .register(MultiValuedTimestamp.class) - .register(TenantNetworkId.class) - .register(Host.class) - .register(TenantNetwork.class) - .register(TenantNetworkId.class) - .register(TenantId.class) - .register(SubnetId.class) - .register(BasePortId.class) - .register(BasePort.State.class) - .register(AllowedAddressPair.class) - .register(FixedIp.class) - .register(FloatingIp.class) - .register(FloatingIpId.class) - .register(FloatingIp.Status.class) - .register(UUID.class) - .register(DefaultFloatingIp.class) - .register(BindingHostId.class) - .register(SecurityGroup.class) - .register(IpAddress.class) - .register(DefaultBasePort.class) - .register(RouterId.class) - .register(TenantRouter.class) - .register(BasePort.class); - vPortStore = storageService - .eventuallyConsistentMapBuilder() - .withName(BASE_PORT_STORE).withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - vPortStore.destroy(); - log.info("Stoppped"); - } - - @Override - public boolean exists(BasePortId vPortId) { - checkNotNull(vPortId, BASEPORT_ID_NULL); - return vPortStore.containsKey(vPortId); - } - - @Override - public BasePort getPort(BasePortId vPortId) { - checkNotNull(vPortId, BASEPORT_ID_NULL); - return vPortStore.get(vPortId); - } - - @Override - public BasePort getPort(FixedIp fixedIP) { - checkNotNull(fixedIP, FIXEDIP_NOT_NULL); - List vPorts = new ArrayList<>(); - vPortStore.values().forEach(p -> { - for (FixedIp fixedIp : p.fixedIps()) { - if (fixedIp.equals(fixedIP)) { - vPorts.add(p); - break; - } - } - }); - if (vPorts.size() == 0) { - return null; - } - return vPorts.get(0); - } - - @Override - public BasePort getPort(MacAddress mac) { - checkNotNull(mac, MAC_NOT_NULL); - List vPorts = new ArrayList<>(); - vPortStore.values().forEach(p -> { - if (p.macAddress().equals(mac)) { - vPorts.add(p); - } - }); - if (vPorts.size() == 0) { - return null; - } - return vPorts.get(0); - } - - @Override - public BasePort getPort(TenantNetworkId networkId, IpAddress ip) { - checkNotNull(networkId, NETWORKID_NOT_NULL); - checkNotNull(ip, IP_NOT_NULL); - List vPorts = new ArrayList<>(); - vPortStore.values().stream().filter(p -> p.networkId().equals(networkId)) - .forEach(p -> { - for (FixedIp fixedIp : p.fixedIps()) { - if (fixedIp.ip().equals(ip)) { - vPorts.add(p); - break; - } - } - }); - if (vPorts.size() == 0) { - return null; - } - return vPorts.get(0); - } - - @Override - public Collection getPorts() { - return Collections.unmodifiableCollection(vPortStore.values()); - } - - @Override - public Collection getPorts(TenantNetworkId networkId) { - checkNotNull(networkId, NETWORKID_NOT_NULL); - return vPortStore.values().stream().filter(d -> d.networkId().equals(networkId)) - .collect(Collectors.toList()); - } - - @Override - public Collection getPorts(TenantId tenantId) { - checkNotNull(tenantId, TENANTID_NOT_NULL); - return vPortStore.values().stream().filter(d -> d.tenantId().equals(tenantId)) - .collect(Collectors.toList()); - } - - @Override - public Collection getPorts(DeviceId deviceId) { - checkNotNull(deviceId, DEVICEID_NOT_NULL); - return vPortStore.values().stream().filter(d -> d.deviceId().equals(deviceId)) - .collect(Collectors.toList()); - } - - @Override - public boolean createPorts(Iterable vPorts) { - checkNotNull(vPorts, BASEPORT_NOT_NULL); - for (BasePort vPort : vPorts) { - log.info("vPortId is {} ", vPort.portId().toString()); - vPortStore.put(vPort.portId(), vPort); - if (!vPortStore.containsKey(vPort.portId())) { - log.info("The basePort is created failed whose identifier is" + - " {} ", - vPort.portId().toString()); - return false; - } - } - return true; - } - - @Override - public boolean updatePorts(Iterable vPorts) { - checkNotNull(vPorts, BASEPORT_NOT_NULL); - for (BasePort vPort : vPorts) { - vPortStore.put(vPort.portId(), vPort); - if (!vPortStore.containsKey(vPort.portId())) { - log.info("The basePort is not exist whose identifier is {}", - vPort.portId().toString()); - return false; - } - - vPortStore.put(vPort.portId(), vPort); - - if (!vPort.equals(vPortStore.get(vPort.portId()))) { - log.info("The basePort is updated failed whose identifier " + - "is {}", - vPort.portId().toString()); - return false; - } - } - return true; - } - - @Override - public boolean removePorts(Iterable vPortIds) { - checkNotNull(vPortIds, BASEPORT_ID_NULL); - for (BasePortId vPortId : vPortIds) { - vPortStore.remove(vPortId); - if (vPortStore.containsKey(vPortId)) { - log.info("The basePort is removed failed whose identifier is" + - " {}", - vPortId.toString()); - return false; - } - } - return true; - } - - /** - * Returns a collection of basePorts from subnetNodes. - * - * @param vPortNodes the basePort json node - * @return BasePort collection of vpn ports - */ - private Collection changeJsonToSub(JsonNode vPortNodes) { - checkNotNull(vPortNodes, JSON_NOT_NULL); - Set fixedIps = null; - TenantNetworkId tenantNetworkId = null; - Map vportMap = new HashMap<>(); - Map strMap = new HashMap<>(); - BasePortId basePortId = BasePortId.portId(vPortNodes.get("id").asText()); - String name = vPortNodes.get("name").asText(); - TenantId tenantId = TenantId - .tenantId(vPortNodes.get("tenant_id").asText()); - Boolean adminStateUp = vPortNodes.get("admin_state_up").asBoolean(); - String state = vPortNodes.get("status").asText(); - MacAddress macAddress = MacAddress - .valueOf(vPortNodes.get("mac_address").asText()); - DeviceId deviceId = DeviceId - .deviceId(vPortNodes.get("device_id").asText()); - String deviceOwner = vPortNodes.get("device_owner").asText(); - BindingHostId bindingHostId = BindingHostId - .bindingHostId(vPortNodes.get("host_id").asText()); - String bindingVnicType = vPortNodes.get("vnic_type").asText(); - String bindingVifType = vPortNodes.get("vif_type").asText(); - String bindingVifDetails = vPortNodes.get("vif_details").asText(); - strMap.put("name", name); - strMap.put("deviceOwner", deviceOwner); - strMap.put("bindingVnicType", bindingVnicType); - strMap.put("bindingVifType", bindingVifType); - strMap.put("bindingVifDetails", bindingVifDetails); - BasePort prevBasePort = getPort(basePortId); - if (prevBasePort != null) { - fixedIps = prevBasePort.fixedIps(); - tenantNetworkId = prevBasePort.networkId(); - } - BasePort vPort = new DefaultBasePort(basePortId, - tenantNetworkId, - adminStateUp, - strMap, state, - macAddress, tenantId, - deviceId, fixedIps, - bindingHostId, - null, - null); - vportMap.put(basePortId, vPort); - - return Collections.unmodifiableCollection(vportMap.values()); - } - - /** - * Returns BasePort State. - * - * @param state the base port state - * @return the basePort state - */ - private BasePort.State isState(String state) { - if (state.equals("ACTIVE")) { - return BasePort.State.ACTIVE; - } else { - return BasePort.State.DOWN; - } - - } - - /** - * process Etcd response for port information. - * - * @param action can be either update or delete - * @param key can contain the id and also target information - * @param value content of the port configuration - */ - @Override - public void processGluonConfig(String action, String key, JsonNode value) { - Collection basePorts; - switch (action) { - case DELETE: - String[] list = key.split(SLASH); - BasePortId basePortId - = BasePortId.portId(list[list.length - 1]); - Set basePortIds = Sets.newHashSet(basePortId); - removePorts(basePortIds); - break; - case SET: - checkNotNull(value, RESPONSE_NOT_NULL); - basePorts = changeJsonToSub(value); - createPorts(basePorts); - break; - case UPDATE: - checkNotNull(value, RESPONSE_NOT_NULL); - basePorts = changeJsonToSub(value); - updatePorts(basePorts); - break; - default: - log.info("Invalid action is received while processing VPN " + - "port configuration"); - } - } - - private void parseEtcdResponse(JsonNode jsonNode, - String key, - String action) { - JsonNode modifyValue = null; - if (action.equals(SET)) { - modifyValue = jsonNode.get(key); - } - String[] list = key.split(SLASH); - String target = list[list.length - 2]; - if (target.equals(PROTON_BASE_PORT)) { - processGluonConfig(action, key, modifyValue); - } - } - - @Override - public void addListener(BasePortListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.add(listener); - } - - @Override - public void removeListener(BasePortListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.remove(listener); - } - - /** - * Notifies specify event to all listeners. - * - * @param event vpn af config event - */ - private void notifyListeners(BasePortEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - listeners.forEach(listener -> listener.event(event)); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/package-info.java deleted file mode 100644 index 366dc00cbd..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VPN resources that used by l3vpn. - */ -package org.onosproject.evpnopenflow.rsc.baseport.impl; diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/package-info.java deleted file mode 100644 index 52f5d0c861..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/baseport/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VPN resources that used by l3vpn. - */ -package org.onosproject.evpnopenflow.rsc.baseport; diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java deleted file mode 100644 index d069bc3671..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.cli; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.evpnopenflow.manager.EvpnService; -import org.onosproject.evpnopenflow.manager.impl.EvpnManager; -import org.onosproject.evpnrouteservice.EvpnInstanceRoute; - -import java.util.Collection; - -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.FORMAT_PRIVATE_ROUTE; - -/** - * Support for displaying EVPN private routes. - */ -@Service -@Command(scope = "onos", name = "evpn-private-routes", description = "Lists" + - " all EVPN private routes") -public class EvpnPrivateRouteListCommand extends AbstractShellCommand { - private static final String FORMAT_HEADER = - " VPN name Prefix Next Hop"; - - @Override - protected void doExecute() { - EvpnService service = AbstractShellCommand.get(EvpnService.class); - EvpnManager evpnManager = (EvpnManager) service; - Collection evpnRoutes = evpnManager.evpnInstanceRoutes; - if (evpnRoutes != null) { - print(FORMAT_HEADER); - evpnRoutes.forEach(evpnInstanceRoute -> { - print(FORMAT_PRIVATE_ROUTE, evpnInstanceRoute.evpnInstanceName(), - evpnInstanceRoute.prefix().address().getIp4Address(), evpnInstanceRoute - .getNextHopl()); - }); - } - } - -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java deleted file mode 100644 index 809090de80..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.cli; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.evpnrouteservice.EvpnRoute; -import org.onosproject.evpnrouteservice.EvpnRouteSet; -import org.onosproject.evpnrouteservice.EvpnRouteStore; - -import java.util.Collection; - -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.FORMAT_PUBLIC_ROUTE; - -/** - * Support for displaying EVPN public routes. - */ -@Service -@Command(scope = "onos", name = "evpn-public-routes", description = "Lists" + - " all EVPN public routes") -public class EvpnPublicRouteListCommand extends AbstractShellCommand { - private static final String FORMAT_HEADER = - " MAC Prefix Next Hop"; - - @Override - protected void doExecute() { - EvpnRouteStore evpnRouteStore = AbstractShellCommand.get(EvpnRouteStore.class); - - evpnRouteStore.getRouteTables().forEach(routeTableId -> { - Collection routes - = evpnRouteStore.getRoutes(routeTableId); - if (routes != null) { - routes.forEach(route -> { - Collection evpnRoutes = route.routes(); - print(FORMAT_HEADER); - evpnRoutes.forEach(evpnRoute -> { - print(FORMAT_PUBLIC_ROUTE, evpnRoute.prefixMac(), - evpnRoute.prefixIp().address().getIp4Address(), - evpnRoute.ipNextHop()); - }); - }); - } - }); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnInstListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnInstListCommand.java deleted file mode 100644 index 33074f7871..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnInstListCommand.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.cli; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.evpnopenflow.rsc.EvpnConstants; -import org.onosproject.evpnopenflow.rsc.VpnInstance; -import org.onosproject.evpnopenflow.rsc.vpninstance.VpnInstanceService; - -import java.util.Collection; - -/** - * Support for displaying EVPN VPN instances. - */ -@Service -@Command(scope = "onos", name = "evpn-instance-list", description = "Lists " + - "all EVPN instances") -public class VpnInstListCommand extends AbstractShellCommand { - - @Override - protected void doExecute() { - VpnInstanceService service = get(VpnInstanceService.class); - Collection vpnInstances = service - .getInstances(); - vpnInstances.forEach(vpnInstance -> { - print(EvpnConstants.FORMAT_VPN_INSTANCE, vpnInstance.id(), - vpnInstance.description(), - vpnInstance.vpnInstanceName(), - vpnInstance.routeDistinguisher(), - vpnInstance.getExportRouteTargets(), - vpnInstance.getImportRouteTargets()); - }); - } - -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnPortListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnPortListCommand.java deleted file mode 100644 index a4c7da8293..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/VpnPortListCommand.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.cli; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.evpnopenflow.rsc.VpnPort; -import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortService; - -import java.util.Collection; - -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.FORMAT_VPN_PORT; - -/** - * Support for displaying EVPN VPN ports. - */ -@Service -@Command(scope = "onos", name = "evpn-port-list", description = "Lists all" + - "EVPN ports") -public class VpnPortListCommand extends AbstractShellCommand { - - @Override - protected void doExecute() { - VpnPortService portService = get(VpnPortService.class); - Collection ports = portService.getPorts(); - ports.forEach(port -> { - print(FORMAT_VPN_PORT, port.id(), port.vpnInstanceId()); - }); - } - -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/package-info.java deleted file mode 100644 index 3bc47c8370..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation CLI for EVPN services. - */ -package org.onosproject.evpnopenflow.rsc.cli; diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/package-info.java deleted file mode 100644 index c37dc81bd4..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * EVPN resource package. - */ -package org.onosproject.evpnopenflow.rsc; diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigEvent.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigEvent.java deleted file mode 100644 index 944698c1e4..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigEvent.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.vpnafconfig; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.evpnopenflow.rsc.VpnAfConfig; - -/** - * Describes network VPN af config event. - */ -public class VpnAfConfigEvent extends AbstractEvent { - - /** - * Type of VPN port events. - */ - public enum Type { - /** - * Signifies that VPN af config has been set. - */ - VPN_AF_CONFIG_SET, - /** - * Signifies that VPN af config has been deleted. - */ - VPN_AF_CONFIG_DELETE, - /** - * Signifies that VPN af config has been updated. - */ - VPN_AF_CONFIG_UPDATE - } - - /** - * Creates an event of a given type and for the specified VPN af config. - * - * @param type VPN af config type - * @param vpnAfConfig VPN af config subject - */ - public VpnAfConfigEvent(Type type, VpnAfConfig vpnAfConfig) { - super(type, vpnAfConfig); - } - - /** - * Creates an event of a given type and for the specified VPN af config. - * - * @param type VPN af config type - * @param vpnAfConfig VPN af config subject - * @param time occurrence time - */ - public VpnAfConfigEvent(Type type, VpnAfConfig vpnAfConfig, long time) { - super(type, vpnAfConfig, time); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigListener.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigListener.java deleted file mode 100644 index 42db841b91..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.vpnafconfig; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of VPN af config related events. - */ -public interface VpnAfConfigListener extends EventListener { -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigService.java deleted file mode 100644 index ecde40d862..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigService.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.vpnafconfig; - -import com.fasterxml.jackson.databind.JsonNode; -import org.onosproject.evpnopenflow.rsc.VpnAfConfig; -import org.onosproject.evpnrouteservice.VpnRouteTarget; - -import java.util.Collection; - -/** - * Service for interacting with the inventory of VPN af config instance. - */ -public interface VpnAfConfigService { - /** - * Returns if the route target is existed. - * - * @param routeTarget route target - * @return true or false if one with the given route target is not existed. - */ - boolean exists(VpnRouteTarget routeTarget); - - /** - * Returns the VPN af config with the route target. - * - * @param routeTarget route target - * @return VPN af config or null if one with the given route target is not - * know. - */ - VpnAfConfig getVpnAfConfig(VpnRouteTarget routeTarget); - - /** - * Returns the collection of the currently known VPN af configurations. - * - * @return collection of VPN af configurations. - */ - Collection getVpnAfConfigs(); - - /** - * Creates VPN af configurations by vpnAfConfigs. - * - * @param vpnAfConfigs the iterable collection of vpnAfConfigs - * @return true if all given VPN af configs created successfully - */ - boolean createVpnAfConfigs(Iterable vpnAfConfigs); - - /** - * Updates VPN af configurations by vpnAfConfigs. - * - * @param vpnAfConfigs the iterable collection of vpnAfConfigs - * @return true if all given VPN af configs created successfully. - */ - boolean updateVpnAfConfigs(Iterable vpnAfConfigs); - - /** - * Deletes vpnAfConfigs by route target. - * - * @param routeTarget the iterable collection of vpnAFConfigs - * @return true or false if one with the given route target to delete is - * successfully - */ - boolean removeVpnAfConfigs(Iterable routeTarget); - - /** - * process gluon config for vpn af configuration. - * - * @param action can be either update or delete - * @param key can contain the id and also target information - * @param value content of the route targets configuration - */ - void processGluonConfig(String action, String key, JsonNode value); - - /** - * Adds the specified listener to Vpn Port manager. - * - * @param listener vpn af config listener - */ - void addListener(VpnAfConfigListener listener); - - /** - * Removes the specified listener to vpn af config manager. - * - * @param listener vpn af config listener - */ - void removeListener(VpnAfConfigListener listener); -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/VpnAfConfigManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/VpnAfConfigManager.java deleted file mode 100644 index a2ee02ca90..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/VpnAfConfigManager.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.vpnafconfig.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.Sets; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.CoreService; -import org.onosproject.evpnopenflow.rsc.DefaultVpnAfConfig; -import org.onosproject.evpnopenflow.rsc.VpnAfConfig; -import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigEvent; -import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigListener; -import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigService; -import org.onosproject.evpnrouteservice.VpnRouteTarget; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DELETE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVENT_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_AF_CONFIG_START; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_AF_CONFIG_STOP; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EXPORT_ROUTE_POLICY; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IMPORT_ROUTE_POLICY; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INVALID_ACTION_VPN_AF_CONFIG; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.JSON_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.LISTENER_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RESPONSE_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_TARGET_CANNOT_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_TARGET_DELETE_FAILED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_TARGET_VALUE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SET; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SLASH; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.UPDATE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_CONFIG_CREATION_FAILED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_CONFIG_IS_NOT_EXIST; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_CONFIG_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_CONFIG_STORE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_AF_CONFIG_UPDATE_FAILED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_ID_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VRF_RT_TYPE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VRF_RT_VALUE; - -/** - * Provides implementation of the VPN af config APIs. - */ -@Component(immediate = true, service = VpnAfConfigService.class) -public class VpnAfConfigManager implements VpnAfConfigService { - private final Logger log = LoggerFactory.getLogger(getClass()); - private final Set listeners = Sets - .newCopyOnWriteArraySet(); - - protected EventuallyConsistentMap - vpnAfConfigStore; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Activate - public void activate() { - coreService.registerApplication(APP_ID); - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API).register(VpnAfConfig.class) - .register(VpnRouteTarget.class); - vpnAfConfigStore = storageService - .eventuallyConsistentMapBuilder() - .withName(VPN_AF_CONFIG_STORE).withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - log.info(EVPN_VPN_AF_CONFIG_START); - } - - @Deactivate - public void deactivate() { - vpnAfConfigStore.destroy(); - log.info(EVPN_VPN_AF_CONFIG_STOP); - } - - @Override - public boolean exists(VpnRouteTarget routeTarget) { - checkNotNull(routeTarget, ROUTE_TARGET_CANNOT_NOT_NULL); - return vpnAfConfigStore.containsKey(routeTarget); - } - - @Override - public VpnAfConfig getVpnAfConfig(VpnRouteTarget routeTarget) { - checkNotNull(routeTarget, ROUTE_TARGET_CANNOT_NOT_NULL); - return vpnAfConfigStore.get(routeTarget); - } - - @Override - public Collection getVpnAfConfigs() { - return Collections.unmodifiableCollection(vpnAfConfigStore.values()); - } - - @Override - public boolean createVpnAfConfigs(Iterable vpnAfConfigs) { - checkNotNull(vpnAfConfigs, VPN_AF_CONFIG_NOT_NULL); - for (VpnAfConfig vpnAfConfig : vpnAfConfigs) { - log.info(ROUTE_TARGET_VALUE, vpnAfConfig - .routeTarget().getRouteTarget()); - vpnAfConfigStore.put(vpnAfConfig.routeTarget(), vpnAfConfig); - if (!vpnAfConfigStore.containsKey(vpnAfConfig.routeTarget())) { - log.info(VPN_AF_CONFIG_CREATION_FAILED, - vpnAfConfig.routeTarget().getRouteTarget()); - return false; - } - notifyListeners(new VpnAfConfigEvent(VpnAfConfigEvent - .Type - .VPN_AF_CONFIG_SET, - vpnAfConfig)); - } - return true; - } - - @Override - public boolean updateVpnAfConfigs(Iterable vpnAfConfigs) { - checkNotNull(vpnAfConfigs, VPN_AF_CONFIG_NOT_NULL); - for (VpnAfConfig vpnAfConfig : vpnAfConfigs) { - if (!vpnAfConfigStore.containsKey(vpnAfConfig.routeTarget())) { - log.info(VPN_AF_CONFIG_IS_NOT_EXIST, - vpnAfConfig.routeTarget().getRouteTarget()); - return false; - } - vpnAfConfigStore.put(vpnAfConfig.routeTarget(), vpnAfConfig); - if (!vpnAfConfig.equals(vpnAfConfigStore - .get(vpnAfConfig.routeTarget()))) { - log.info(VPN_AF_CONFIG_UPDATE_FAILED, - vpnAfConfig.routeTarget().getRouteTarget()); - return false; - } - notifyListeners(new VpnAfConfigEvent(VpnAfConfigEvent - .Type - .VPN_AF_CONFIG_UPDATE, - vpnAfConfig)); - } - return true; - } - - @Override - public boolean removeVpnAfConfigs(Iterable routeTargets) { - checkNotNull(routeTargets, VPN_INSTANCE_ID_NOT_NULL); - for (VpnRouteTarget routeTarget : routeTargets) { - VpnAfConfig vpnAfConfig = vpnAfConfigStore.get(routeTarget); - vpnAfConfigStore.remove(routeTarget); - if (vpnAfConfigStore.containsKey(routeTarget)) { - log.info(ROUTE_TARGET_DELETE_FAILED, - routeTarget.getRouteTarget()); - return false; - } - notifyListeners(new VpnAfConfigEvent(VpnAfConfigEvent - .Type - .VPN_AF_CONFIG_DELETE, - vpnAfConfig)); - } - return true; - } - - @Override - public void processGluonConfig(String action, String key, JsonNode value) { - Collection vpnAfConfigs; - switch (action) { - case DELETE: - String[] list = key.split(SLASH); - VpnRouteTarget routeTarget = VpnRouteTarget - .routeTarget(list[list.length - 1]); - Set routeTargets - = Sets.newHashSet(routeTarget); - removeVpnAfConfigs(routeTargets); - break; - case SET: - checkNotNull(value, RESPONSE_NOT_NULL); - vpnAfConfigs = changeJsonToSub(value); - createVpnAfConfigs(vpnAfConfigs); - break; - case UPDATE: - checkNotNull(value, RESPONSE_NOT_NULL); - vpnAfConfigs = changeJsonToSub(value); - updateVpnAfConfigs(vpnAfConfigs); - break; - default: - log.info(INVALID_ACTION_VPN_AF_CONFIG); - break; - } - } - - /** - * Returns a collection of vpn af configuration. - * - * @param vpnAfConfigNode the vpn af configuration json node - * @return returns the collection of vpn af configuration - */ - private Collection changeJsonToSub(JsonNode vpnAfConfigNode) { - checkNotNull(vpnAfConfigNode, JSON_NOT_NULL); - Map vpnAfConfigMap = new HashMap<>(); - String exportRoutePolicy - = vpnAfConfigNode.get(EXPORT_ROUTE_POLICY).asText(); - String importRoutePolicy - = vpnAfConfigNode.get(IMPORT_ROUTE_POLICY).asText(); - String routeTargetType = vpnAfConfigNode.get(VRF_RT_TYPE).asText(); - VpnRouteTarget routeTarget = VpnRouteTarget - .routeTarget(vpnAfConfigNode.get(VRF_RT_VALUE).asText()); - - VpnAfConfig vpnAfConfig = new DefaultVpnAfConfig(exportRoutePolicy, - importRoutePolicy, - routeTarget, - routeTargetType); - vpnAfConfigMap.put(routeTarget, vpnAfConfig); - - return Collections.unmodifiableCollection(vpnAfConfigMap.values()); - } - - @Override - public void addListener(VpnAfConfigListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.add(listener); - } - - @Override - public void removeListener(VpnAfConfigListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.remove(listener); - } - - /** - * Notifies specify event to all listeners. - * - * @param event vpn af config event - */ - private void notifyListeners(VpnAfConfigEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - listeners.forEach(listener -> listener.event(event)); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/package-info.java deleted file mode 100644 index f2dd128674..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VPN af configuration that used by l3vpn. - */ -package org.onosproject.evpnopenflow.rsc.vpnafconfig.impl; \ No newline at end of file diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/package-info.java deleted file mode 100644 index 7c2e4f4cc3..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VPN resources that used by Evpn. - */ -package org.onosproject.evpnopenflow.rsc.vpnafconfig; diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/VpnInstanceService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/VpnInstanceService.java deleted file mode 100644 index a61a811587..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/VpnInstanceService.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.vpninstance; - -import com.fasterxml.jackson.databind.JsonNode; -import org.onosproject.evpnopenflow.rsc.VpnInstance; -import org.onosproject.evpnopenflow.rsc.VpnInstanceId; -import org.onosproject.evpnrouteservice.VpnRouteTarget; - -import java.util.Collection; -import java.util.Set; - -/** - * Service for interacting with the inventory of VPN instance. - */ -public interface VpnInstanceService { - /** - * Returns if the vpnInstance is existed. - * - * @param vpnInstanceId vpnInstance identifier - * @return true or false if one with the given identifier is not existed. - */ - boolean exists(VpnInstanceId vpnInstanceId); - - /** - * Returns the vpnInstance with the identifier. - * - * @param vpnInstanceId vpnInstance ID - * @return VpnInstance or null if one with the given ID is not know. - */ - VpnInstance getInstance(VpnInstanceId vpnInstanceId); - - /** - * Returns the collection of the currently known vpnInstance. - * - * @return collection of VpnInstance. - */ - Collection getInstances(); - - /** - * Creates vpnInstances by vpnInstances. - * - * @param vpnInstances the iterable collection of vpnInstances - * @return true if all given identifiers created successfully. - */ - boolean createInstances(Iterable vpnInstances); - - /** - * Updates vpnInstances by vpnInstances. - * - * @param vpnInstances the iterable collection of vpnInstances - * @return true if all given identifiers updated successfully. - */ - boolean updateInstances(Iterable vpnInstances); - - /** - * Deletes vpnInstanceIds by vpnInstanceIds. - * - * @param vpnInstanceIds the iterable collection of vpnInstance identifiers - * @return true or false if one with the given identifier to delete is - * successfully. - */ - boolean removeInstances(Iterable vpnInstanceIds); - - /** - * process gluon config for vpn instance information. - * - * @param action can be either update or delete - * @param key can contain the id and also target information - * @param value content of the vpn instance configuration - */ - void processGluonConfig(String action, String key, JsonNode value); - - /** - * process Etcd response for vpn instance information. - * - * @param routeTargetType route target type - * @param exportRouteTargets export route targets - * @param importRouteTargets import route targets - * @param vpnRouteTarget vpn route target - */ - void updateImpExpRouteTargets(String routeTargetType, - Set exportRouteTargets, - Set importRouteTargets, - VpnRouteTarget vpnRouteTarget); -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/VpnInstanceManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/VpnInstanceManager.java deleted file mode 100644 index 91eba1d87e..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/VpnInstanceManager.java +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.vpninstance.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.Sets; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.evpnopenflow.rsc.DefaultVpnInstance; -import org.onosproject.evpnopenflow.rsc.VpnAfConfig; -import org.onosproject.evpnopenflow.rsc.VpnInstance; -import org.onosproject.evpnopenflow.rsc.VpnInstanceId; -import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigService; -import org.onosproject.evpnopenflow.rsc.vpninstance.VpnInstanceService; -import org.onosproject.evpnrouteservice.EvpnInstanceName; -import org.onosproject.evpnrouteservice.RouteDistinguisher; -import org.onosproject.evpnrouteservice.VpnRouteTarget; -import org.onosproject.routeservice.RouteAdminService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.COMMA; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DELETE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DESCRIPTION; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_INSTANCE_START; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_INSTANCE_STOP; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INSTANCE_ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.IPV4_FAMILY; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.JSON_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RESPONSE_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ROUTE_DISTINGUISHERS; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SET; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SLASH; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.UPDATE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_CREATION_FAILED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_DELETE_FAILED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_ID_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_IS_NOT_EXIST; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_NAME; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_STORE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE_UPDATE_FAILED; - - -/** - * Provides implementation of the VpnInstance APIs. - */ -@Component(immediate = true, service = VpnInstanceService.class) -public class VpnInstanceManager implements VpnInstanceService { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - protected EventuallyConsistentMap vpnInstanceStore; - protected ApplicationId appId; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected RouteAdminService routeService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VpnAfConfigService vpnAfConfigService; - - @Activate - public void activate() { - appId = coreService.registerApplication(APP_ID); - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API).register(VpnInstance.class) - .register(VpnInstanceId.class); - vpnInstanceStore = storageService - .eventuallyConsistentMapBuilder() - .withName(VPN_INSTANCE_STORE).withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - log.info(EVPN_VPN_INSTANCE_START); - } - - @Deactivate - public void deactivate() { - vpnInstanceStore.destroy(); - log.info(EVPN_VPN_INSTANCE_STOP); - } - - @Override - public boolean exists(VpnInstanceId vpnInstanceId) { - checkNotNull(vpnInstanceId, VPN_INSTANCE_ID_NOT_NULL); - return vpnInstanceStore.containsKey(vpnInstanceId); - } - - @Override - public VpnInstance getInstance(VpnInstanceId vpnInstanceId) { - checkNotNull(vpnInstanceId, VPN_INSTANCE_ID_NOT_NULL); - return vpnInstanceStore.get(vpnInstanceId); - } - - @Override - public Collection getInstances() { - return Collections.unmodifiableCollection(vpnInstanceStore.values()); - } - - @Override - public boolean createInstances(Iterable vpnInstances) { - checkNotNull(vpnInstances, VPN_INSTANCE_NOT_NULL); - for (VpnInstance vpnInstance : vpnInstances) { - log.info(INSTANCE_ID, vpnInstance.id().toString()); - vpnInstanceStore.put(vpnInstance.id(), vpnInstance); - if (!vpnInstanceStore.containsKey(vpnInstance.id())) { - log.info(VPN_INSTANCE_CREATION_FAILED, - vpnInstance.id().toString()); - return false; - } - } - return true; - } - - @Override - public boolean updateInstances(Iterable vpnInstances) { - checkNotNull(vpnInstances, VPN_INSTANCE_NOT_NULL); - for (VpnInstance vpnInstance : vpnInstances) { - if (!vpnInstanceStore.containsKey(vpnInstance.id())) { - log.info(VPN_INSTANCE_IS_NOT_EXIST, - vpnInstance.id().toString()); - return false; - } - vpnInstanceStore.put(vpnInstance.id(), vpnInstance); - if (!vpnInstance.equals(vpnInstanceStore.get(vpnInstance.id()))) { - log.info(VPN_INSTANCE_UPDATE_FAILED, - vpnInstance.id().toString()); - return false; - } - } - return true; - } - - @Override - public boolean removeInstances(Iterable vpnInstanceIds) { - checkNotNull(vpnInstanceIds, VPN_INSTANCE_ID_NOT_NULL); - for (VpnInstanceId vpnInstanceId : vpnInstanceIds) { - vpnInstanceStore.remove(vpnInstanceId); - if (vpnInstanceStore.containsKey(vpnInstanceId)) { - log.info(VPN_INSTANCE_DELETE_FAILED, vpnInstanceId.toString()); - return false; - } - } - return true; - } - - @Override - public void processGluonConfig(String action, String key, JsonNode value) { - Collection vpnInstances; - switch (action) { - case DELETE: - String[] list = key.split(SLASH); - VpnInstanceId vpnInstanceId = VpnInstanceId - .vpnInstanceId(list[list.length - 1]); - Set vpnInstanceIds - = Sets.newHashSet(vpnInstanceId); - removeInstances(vpnInstanceIds); - break; - case SET: - checkNotNull(value, RESPONSE_NOT_NULL); - vpnInstances = changeJsonToSub(value); - createInstances(vpnInstances); - break; - case UPDATE: - checkNotNull(value, RESPONSE_NOT_NULL); - vpnInstances = changeJsonToSub(value); - updateInstances(vpnInstances); - break; - default: - log.info("Invalid action is received while processing VPN " + - "instance configuration"); - } - } - - @Override - public void updateImpExpRouteTargets(String routeTargetType, - Set exportRouteTargets, - Set importRouteTargets, - VpnRouteTarget vpnRouteTarget) { - switch (routeTargetType) { - case "export_extcommunity": - exportRouteTargets.add(vpnRouteTarget); - break; - case "import_extcommunity": - importRouteTargets.add(vpnRouteTarget); - break; - case "both": - exportRouteTargets.add(vpnRouteTarget); - importRouteTargets.add(vpnRouteTarget); - break; - default: - log.info("Invalid route target type has received"); - break; - } - } - - /** - * Returns a collection of vpnInstances from subnetNodes. - * - * @param vpnInstanceNodes the vpnInstance json node - * @return returns the collection of vpn instances - */ - private Collection changeJsonToSub(JsonNode vpnInstanceNodes) { - checkNotNull(vpnInstanceNodes, JSON_NOT_NULL); - - Set exportRouteTargets = new HashSet<>(); - Set importRouteTargets = new HashSet<>(); - Set configRouteTargets = new HashSet<>(); - - Map vpnInstanceMap = new HashMap<>(); - VpnInstanceId id = VpnInstanceId - .vpnInstanceId(vpnInstanceNodes.get(ID).asText()); - EvpnInstanceName name = EvpnInstanceName - .evpnName(vpnInstanceNodes.get(VPN_INSTANCE_NAME).asText()); - String description = vpnInstanceNodes.get(DESCRIPTION).asText(); - RouteDistinguisher routeDistinguisher = RouteDistinguisher - .routeDistinguisher(vpnInstanceNodes.get(ROUTE_DISTINGUISHERS) - .asText()); - String routeTargets = vpnInstanceNodes.get(IPV4_FAMILY).asText(); - String[] list = routeTargets.split(COMMA); - - for (String routeTarget : list) { - // Converting route target string into route target object and - // then storing into configuration route target set. - VpnRouteTarget vpnRouteTarget - = VpnRouteTarget.routeTarget(routeTarget); - configRouteTargets.add(vpnRouteTarget); - VpnAfConfig vpnAfConfig - = vpnAfConfigService.getVpnAfConfig(vpnRouteTarget); - if (vpnAfConfig == null) { - log.info("Not able to find vpn af config for the give vpn " + - "route target"); - break; - } - updateImpExpRouteTargets(vpnAfConfig.routeTargetType(), - exportRouteTargets, - importRouteTargets, - vpnRouteTarget); - } - - VpnInstance vpnInstance = new DefaultVpnInstance(id, name, description, - routeDistinguisher, - exportRouteTargets, - importRouteTargets, - configRouteTargets); - vpnInstanceMap.put(id, vpnInstance); - return Collections.unmodifiableCollection(vpnInstanceMap.values()); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/package-info.java deleted file mode 100644 index 6cfc75ecf5..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VPN resources that used by l3vpn. - */ -package org.onosproject.evpnopenflow.rsc.vpninstance.impl; diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/package-info.java deleted file mode 100644 index b68dbd06de..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * EVPN VPN instance implementation. - */ -package org.onosproject.evpnopenflow.rsc.vpninstance; diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortEvent.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortEvent.java deleted file mode 100644 index acc28db1c2..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortEvent.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.vpnport; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.evpnopenflow.rsc.VpnPort; - -/** - * Describes network VPN port event. - */ -public class VpnPortEvent extends AbstractEvent { - - /** - * Type of VPN port events. - */ - public enum Type { - /** - * Signifies that VPN port has been set. - */ - VPN_PORT_SET, - /** - * Signifies that VPN port has been deleted. - */ - VPN_PORT_DELETE, - /** - * Signifies that VPN port has been updated. - */ - VPN_PORT_UPDATE - } - - /** - * Creates an event of a given type and for the specified VPN port. - * - * @param type VPN port type - * @param vpnPort VPN port subject - */ - public VpnPortEvent(Type type, VpnPort vpnPort) { - super(type, vpnPort); - } - - /** - * Creates an event of a given type and for the specified VPN port. - * - * @param type VPN port type - * @param vpnPort VPN port subject - * @param time occurrence time - */ - public VpnPortEvent(Type type, VpnPort vpnPort, long time) { - super(type, vpnPort, time); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortListener.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortListener.java deleted file mode 100644 index 95eb797192..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.vpnport; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of VPN port related events. - */ -public interface VpnPortListener extends EventListener { -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortService.java deleted file mode 100644 index c7bce1b77d..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/VpnPortService.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.vpnport; - -import com.fasterxml.jackson.databind.JsonNode; -import org.onosproject.evpnopenflow.rsc.VpnPort; -import org.onosproject.evpnopenflow.rsc.VpnPortId; - -import java.util.Collection; - - -/** - * Service for interacting with the inventory of VPN port. - */ -public interface VpnPortService { - /** - * Returns if the vpnPort is existed. - * - * @param vpnPortId vpnPort identifier - * @return true or false if one with the given identifier is not existed. - */ - boolean exists(VpnPortId vpnPortId); - - /** - * Returns the vpnPort with the identifier. - * - * @param vpnPortId vpnPort ID - * @return VpnPort or null if one with the given ID is not know. - */ - VpnPort getPort(VpnPortId vpnPortId); - - /** - * Returns the collection of the currently known vpnPort. - * - * @return collection of VpnPort. - */ - Collection getPorts(); - - /** - * Creates vpnPorts by vpnPorts. - * - * @param vpnPorts the iterable collection of vpnPorts - * @return true if all given identifiers created successfully. - */ - boolean createPorts(Iterable vpnPorts); - - /** - * Updates vpnPorts by vpnPorts. - * - * @param vpnPorts the iterable collection of vpnPorts - * @return true if all given identifiers updated successfully. - */ - boolean updatePorts(Iterable vpnPorts); - - /** - * Deletes vpnPortIds by vpnPortIds. - * - * @param vpnPortIds the iterable collection of vpnPort identifiers - * @return true or false if one with the given identifier to delete is - * successfully. - */ - boolean removePorts(Iterable vpnPortIds); - - /** - * process gluon config for vpn port information. - * - * @param action can be either update or delete - * @param key can contain the id and also target information - * @param value content of the vpn port configuration - */ - void processGluonConfig(String action, String key, JsonNode value); - - /** - * Adds the specified listener to Vpn Port manager. - * - * @param listener Vpn Port listener - */ - void addListener(VpnPortListener listener); - - /** - * Removes the specified listener to Vpn Port manager. - * - * @param listener Vpn Port listener - */ - void removeListener(VpnPortListener listener); -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/VpnPortManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/VpnPortManager.java deleted file mode 100644 index b62d034042..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/VpnPortManager.java +++ /dev/null @@ -1,427 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.evpnopenflow.rsc.vpnport.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.Sets; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.evpnopenflow.rsc.BasePort; -import org.onosproject.evpnopenflow.rsc.BasePortId; -import org.onosproject.evpnopenflow.rsc.DefaultVpnPort; -import org.onosproject.evpnopenflow.rsc.VpnInstanceId; -import org.onosproject.evpnopenflow.rsc.VpnPort; -import org.onosproject.evpnopenflow.rsc.VpnPortId; -import org.onosproject.evpnopenflow.rsc.baseport.BasePortService; -import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortEvent; -import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortListener; -import org.onosproject.evpnopenflow.rsc.vpnport.VpnPortService; -import org.onosproject.net.DeviceId; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.AllocationPool; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultSubnet; -import org.onosproject.vtnrsc.DefaultTenantNetwork; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.HostRoute; -import org.onosproject.vtnrsc.PhysicalNetwork; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.subnet.SubnetService; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.DELETE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVENT_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_PORT_START; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.EVPN_VPN_PORT_STOP; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.INTERFACE_ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.JSON_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.LISTENER_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.RESPONSE_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SET; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.SLASH; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.UPDATE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_INSTANCE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_CREATION_FAILED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_DELETE_FAILED; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_ID; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_ID_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_IS_NOT_EXIST; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_NOT_NULL; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_STORE; -import static org.onosproject.evpnopenflow.rsc.EvpnConstants.VPN_PORT_UPDATE_FAILED; - -/** - * Provides implementation of the VpnPort service. - */ -@Component(immediate = true, service = VpnPortService.class) -public class VpnPortManager implements VpnPortService { - - private final Logger log = LoggerFactory.getLogger(getClass()); - private final Set listeners = Sets - .newCopyOnWriteArraySet(); - - protected EventuallyConsistentMap vpnPortStore; - protected ApplicationId appId; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected BasePortService basePortService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VirtualPortService virtualPortService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TenantNetworkService tenantNetworkService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected SubnetService subnetService; - - @Activate - - public void activate() { - appId = coreService.registerApplication(APP_ID); - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API).register(VpnPort.class) - .register(VpnPortId.class); - vpnPortStore = storageService - .eventuallyConsistentMapBuilder() - .withName(VPN_PORT_STORE).withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - log.info(EVPN_VPN_PORT_START); - } - - @Deactivate - public void deactivate() { - vpnPortStore.destroy(); - log.info(EVPN_VPN_PORT_STOP); - } - - @Override - public boolean exists(VpnPortId vpnPortId) { - checkNotNull(vpnPortId, VPN_PORT_ID_NOT_NULL); - return vpnPortStore.containsKey(vpnPortId); - } - - @Override - public VpnPort getPort(VpnPortId vpnPortId) { - checkNotNull(vpnPortId, VPN_PORT_ID_NOT_NULL); - return vpnPortStore.get(vpnPortId); - } - - @Override - public Collection getPorts() { - return Collections.unmodifiableCollection(vpnPortStore.values()); - } - - @Override - public boolean createPorts(Iterable vpnPorts) { - checkNotNull(vpnPorts, VPN_PORT_NOT_NULL); - for (VpnPort vpnPort : vpnPorts) { - log.info(VPN_PORT_ID, vpnPort.id().toString()); - vpnPortStore.put(vpnPort.id(), vpnPort); - if (!vpnPortStore.containsKey(vpnPort.id())) { - log.info(VPN_PORT_CREATION_FAILED, vpnPort.id().toString()); - return false; - } - notifyListeners(new VpnPortEvent(VpnPortEvent.Type.VPN_PORT_SET, - vpnPort)); - } - return true; - } - - @Override - public boolean updatePorts(Iterable vpnPorts) { - checkNotNull(vpnPorts, VPN_PORT_NOT_NULL); - for (VpnPort vpnPort : vpnPorts) { - if (!vpnPortStore.containsKey(vpnPort.id())) { - log.info(VPN_PORT_IS_NOT_EXIST, vpnPort.id().toString()); - return false; - } - vpnPortStore.put(vpnPort.id(), vpnPort); - if (!vpnPort.equals(vpnPortStore.get(vpnPort.id()))) { - log.info(VPN_PORT_UPDATE_FAILED, vpnPort.id().toString()); - return false; - } - notifyListeners(new VpnPortEvent(VpnPortEvent.Type.VPN_PORT_UPDATE, - vpnPort)); - } - return true; - } - - @Override - public boolean removePorts(Iterable vpnPortIds) { - checkNotNull(vpnPortIds, VPN_PORT_NOT_NULL); - for (VpnPortId vpnPortid : vpnPortIds) { - VpnPort vpnPort = vpnPortStore.get(vpnPortid); - vpnPortStore.remove(vpnPortid); - if (vpnPortStore.containsKey(vpnPortid)) { - log.info(VPN_PORT_DELETE_FAILED, vpnPortid.toString()); - return false; - } - notifyListeners(new VpnPortEvent(VpnPortEvent.Type.VPN_PORT_DELETE, - vpnPort)); - } - return true; - } - - @Override - public void processGluonConfig(String action, String key, JsonNode value) { - Collection vpnPorts; - switch (action) { - case DELETE: - String[] list = key.split(SLASH); - VpnPortId vpnPortId - = VpnPortId.vpnPortId(list[list.length - 1]); - Set vpnPortIds = Sets.newHashSet(vpnPortId); - removePorts(vpnPortIds); - // After removing vpn port and also remove virtual port from vtn - VirtualPortId virtualPortId - = VirtualPortId.portId(list[list.length - 1]); - Set virtualPortIds - = Sets.newHashSet(virtualPortId); - virtualPortService.removePorts(virtualPortIds); - break; - case SET: - checkNotNull(value, RESPONSE_NOT_NULL); - vpnPorts = changeJsonToSub(value); - createPorts(vpnPorts); - break; - case UPDATE: - checkNotNull(value, RESPONSE_NOT_NULL); - vpnPorts = changeJsonToSub(value); - updatePorts(vpnPorts); - break; - default: - log.info("Invalid action is received while processing VPN " + - "port configuration"); - } - } - - /** - * Creates dummy gluon network to the VTN. - * - * @param state the base port state - * @param adminStateUp the base port admin status - * @param tenantID the base port tenant ID - */ - private void createDummyGluonNetwork(boolean adminStateUp, String state, - TenantId tenantID) { - String id = "11111111-1111-1111-1111-111111111111"; - String name = "GluonNetwork"; - String segmentationID = "50"; - String physicalNetwork = "None"; - - TenantNetwork network = new DefaultTenantNetwork(TenantNetworkId.networkId(id), name, - adminStateUp, - TenantNetwork.State.valueOf(state), - false, tenantID, - false, - TenantNetwork.Type.LOCAL, - PhysicalNetwork.physicalNetwork(physicalNetwork), - SegmentationId.segmentationId(segmentationID)); - - Set networksSet = Sets.newHashSet(network); - tenantNetworkService.createNetworks(networksSet); - } - - - /** - * Creates dummy gluon subnet to the VTN. - * - * @param tenantId the base port tenant ID - */ - public void createDummySubnet(TenantId tenantId) { - String id = "22222222-2222-2222-2222-222222222222"; - String subnetName = "GluonSubnet"; - String cidr = "0.0.0.0/0"; - String gatewayIp = "0.0.0.0"; - Set hostRoutes = Sets.newHashSet(); - TenantNetworkId tenantNetworkId = null; - Set allocationPools = Sets.newHashSet(); - Iterable networks - = tenantNetworkService.getNetworks(); - - for (TenantNetwork tenantNetwork : networks) { - if (tenantNetwork.name().equals("GluonNetwork")) { - tenantNetworkId = tenantNetwork.id(); - break; - } - } - Subnet subnet = new DefaultSubnet(SubnetId.subnetId(id), subnetName, - tenantNetworkId, - tenantId, IpAddress.Version.INET, - IpPrefix.valueOf(cidr), - IpAddress.valueOf(gatewayIp), - false, false, hostRoutes, - null, - null, - allocationPools); - - Set subnetsSet = Sets.newHashSet(subnet); - subnetService.createSubnets(subnetsSet); - } - - /** - * Returns a collection of vpnPort from subnetNodes. - * - * @param vpnPortNodes the vpnPort json node - * @return list of vpnports - */ - private Collection changeJsonToSub(JsonNode vpnPortNodes) { - checkNotNull(vpnPortNodes, JSON_NOT_NULL); - Map vpnPortMap = new HashMap<>(); - String interfaceId = vpnPortNodes.get(INTERFACE_ID).asText(); - VpnPortId vpnPortId = VpnPortId.vpnPortId(interfaceId); - VpnInstanceId vpnInstanceId = VpnInstanceId - .vpnInstanceId(vpnPortNodes.get(VPN_INSTANCE).asText()); - VpnPort vpnPort = new DefaultVpnPort(vpnPortId, vpnInstanceId); - vpnPortMap.put(vpnPortId, vpnPort); - // update ip address and tenant network information in vtn - TenantNetworkId tenantNetworkId = null; - Map vPortMap = new HashMap<>(); - BasePortId basePortId = BasePortId.portId(interfaceId); - VirtualPortId virtualPortId = VirtualPortId.portId(interfaceId); - BasePort bPort = basePortService.getPort(basePortId); - if (bPort != null) { - FixedIp fixedIp = FixedIp.fixedIp(SubnetId.subnetId(basePortId.toString()), - IpAddress.valueOf(vpnPortNodes - .get("ipaddress").asText())); - Set fixedIps = new HashSet<>(); - fixedIps.add(fixedIp); - Map strMap = new HashMap<>(); - boolean adminStateUp = bPort.adminStateUp(); - strMap.put("name", bPort.name()); - strMap.put("deviceOwner", bPort.deviceOwner()); - strMap.put("bindingVnicType", bPort.bindingVnicType()); - strMap.put("bindingVifType", bPort.bindingVifType()); - strMap.put("bindingVifDetails", bPort.bindingVifDetails()); - String state = bPort.state(); - MacAddress macAddress = bPort.macAddress(); - TenantId tenantId = bPort.tenantId(); - DeviceId deviceId = bPort.deviceId(); - BindingHostId bindingHostId = bPort.bindingHostId(); - // Creates Dummy Gluon Network and Subnet - createDummyGluonNetwork(adminStateUp, state, tenantId); - createDummySubnet(tenantId); - - Iterable networks - = tenantNetworkService.getNetworks(); - - for (TenantNetwork tenantNetwork : networks) { - if (tenantNetwork.name().equals("GluonNetwork")) { - tenantNetworkId = tenantNetwork.id(); - break; - } - } - if (tenantNetworkId != null) { - - DefaultVirtualPort vPort = new DefaultVirtualPort(virtualPortId, - tenantNetworkId, - adminStateUp, - strMap, isState(state), - macAddress, tenantId, - deviceId, fixedIps, - bindingHostId, - null, - null); - vPortMap.put(virtualPortId, vPort); - Collection virtualPorts - = Collections.unmodifiableCollection(vPortMap.values()); - virtualPortService.createPorts(virtualPorts); - } - } - - return Collections.unmodifiableCollection(vpnPortMap.values()); - } - - /** - * Returns BasePort State. - * - * @param state the base port state - * @return the basePort state - */ - private VirtualPort.State isState(String state) { - if (state.equals("ACTIVE")) { - return VirtualPort.State.ACTIVE; - } else { - return VirtualPort.State.DOWN; - } - - } - - @Override - public void addListener(VpnPortListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.add(listener); - } - - @Override - public void removeListener(VpnPortListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.remove(listener); - } - - /** - * Notifies specify event to all listeners. - * - * @param event Vpn Port event - */ - private void notifyListeners(VpnPortEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - listeners.forEach(listener -> { - listener.event(event); - }); - } -} diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/package-info.java deleted file mode 100644 index 5dc98e9947..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VPN resources that used by l3vpn. - */ -package org.onosproject.evpnopenflow.rsc.vpnport.impl; diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/package-info.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/package-info.java deleted file mode 100644 index aadae584b6..0000000000 --- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnport/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VPN resources that used by evpn. - */ -package org.onosproject.evpnopenflow.rsc.vpnport; diff --git a/apps/l3vpn/BUILD b/apps/l3vpn/BUILD deleted file mode 100644 index 8e670a49d1..0000000000 --- a/apps/l3vpn/BUILD +++ /dev/null @@ -1,43 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + KRYO + ONOS_YANG + [ - "//models/l3vpn:onos-models-l3vpn", - "//apps/config:onos-apps-config", - "//core/store/serializers:onos-core-serializers", - "//apps/yang:onos-apps-yang", - "//apps/pce/app:onos-apps-pce-app", - "//apps/tunnel/api:onos-apps-tunnel-api", - "//models/common:onos-models-common", -] - -TEST_DEPS = TEST_ADAPTERS + [ - "//utils/osgi:onlab-osgi-tests", -] - -APPS = [ - "org.onosproject.yang", - "org.onosproject.yang-gui", - "org.onosproject.config", - "org.onosproject.restconf", - "org.onosproject.protocols.restconfserver", - "org.onosproject.tunnel", - "org.onosproject.netconf", - "org.onosproject.netconfsb", - "org.onosproject.models.common", - "org.onosproject.models.l3vpn", - "org.onosproject.bgpcep", - "org.onosproject.pcep", - "org.onosproject.bgp", -] - -osgi_jar_with_tests( - test_deps = TEST_DEPS, - deps = COMPILE_DEPS, -) - -onos_app( - app_name = "org.onosproject.l3vpn", - category = "Traffic Engineering", - description = "L3VPN YANG Application", - required_apps = APPS, - title = "YANG L3VPN", - url = "http://onosproject.org", -) diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/AccessInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/AccessInfo.java deleted file mode 100644 index 61f5170595..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/AccessInfo.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -import com.google.common.base.Objects; - -/** - * Representation of site network access information. - */ -public class AccessInfo { - - /** - * Site id from sites list. - */ - private String siteId; - - /** - * Site network access id from site network access list. - */ - private String accessId; - - /** - * Constructs access info with site id and access id. - * - * @param s site id - * @param a access id - */ - public AccessInfo(String s, String a) { - siteId = s; - accessId = a; - } - - /** - * Returns the site id. - * - * @return site id - */ - public String siteId() { - return siteId; - } - - /** - * Returns the access id. - * - * @return access id - */ - public String accessId() { - return accessId; - } - - @Override - public int hashCode() { - return Objects.hashCode(siteId, accessId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof AccessInfo) { - AccessInfo that = (AccessInfo) object; - return Objects.equal(siteId, that.siteId) && - Objects.equal(accessId, that.accessId); - } - return false; - } - - @Override - public String toString() { - return "Access id : " + accessId + "\nSite id : " + siteId; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpDriverInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpDriverInfo.java deleted file mode 100644 index 54ee93a119..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpDriverInfo.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -/** - * Representation of BGP configuration required for driver to process. - */ -public class BgpDriverInfo { - - /** - * Model id level of the BGP information that needed to be added in store. - */ - private ModelIdLevel modIdLevel; - - /** - * Device id required for the creation of driver model object data. - */ - private String devId; - - /** - * Constructs BGP driver info. - * - * @param m model id level for BGP - * @param d device id - */ - public BgpDriverInfo(ModelIdLevel m, String d) { - modIdLevel = m; - devId = d; - } - - /** - * Returns the model id level of the BGP information to be added. - * - * @return model id level - */ - public ModelIdLevel modIdLevel() { - return modIdLevel; - } - - /** - * Returns the device id. - * - * @return device id - */ - public String devId() { - return devId; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpInfo.java deleted file mode 100644 index a0da969e43..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpInfo.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -import java.util.HashMap; -import java.util.Map; - -/** - * Representation of BGP information which contains the protocol info and the - * VPN name. - */ -public class BgpInfo { - - /** - * Map of route protocol and the protocol info for the BGP info. - */ - private Map protocolInfo; - - /** - * VPN name, to which the BGP info belongs. - */ - private String vpnName; - - /** - * Constructs BGP info. - */ - public BgpInfo() { - } - - /** - * Returns the map of protocol info associated with the BGP info. - * - * @return protocol info map. - */ - public Map protocolInfo() { - return protocolInfo; - } - - /** - * Sets the map of protocol info with route protocol as key value. - * - * @param protocolInfo protocol info map - */ - public void protocolInfo(Map protocolInfo) { - this.protocolInfo = protocolInfo; - } - - /** - * Adds a protocol info with route protocol as key to the map. - * - * @param route route protocol - * @param info protocol info - */ - public void addProtocolInfo(RouteProtocol route, ProtocolInfo info) { - if (protocolInfo == null) { - protocolInfo = new HashMap<>(); - } - protocolInfo.put(route, info); - } - - /** - * Returns the VPN name of the BGP info. - * - * @return VPN name - */ - public String vpnName() { - return vpnName; - } - - /** - * Sets the VPN name. - * - * @param vpnName VPN name - */ - public void vpnName(String vpnName) { - this.vpnName = vpnName; - } - - @Override - public String toString() { - return "VPN name : " + vpnName; - } -} - diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/DeviceInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/DeviceInfo.java deleted file mode 100644 index 9a2c49aafd..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/DeviceInfo.java +++ /dev/null @@ -1,404 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.driver.DriverService; -import org.onosproject.yang.model.ModelObjectData; - -import java.util.LinkedList; -import java.util.List; - -/** - * Representation of standard device model, with interface, instance and its - * respective device id. - */ -public class DeviceInfo { - - /** - * Device id of the device. - */ - private final DeviceId deviceId; - - /** - * Type of the VPN. - */ - private final VpnType type; - - /** - * BGP information of the device. - */ - private BgpInfo bgpInfo; - - /** - * List of interface names of the device. - */ - private List ifNames; - - /** - * List of network access of the device. - */ - private List accesses; - - /** - * List of tunnel names belonging to the device. - */ - private List tnlNames; - - /** - * Status of tunnel policy being created for this device in this VPN. - */ - private boolean isTnlPolCreated; - - /** - * Constructs device info with a device id and VPN type. - * - * @param d device id - * @param t VPN type - */ - public DeviceInfo(DeviceId d, VpnType t) { - deviceId = d; - type = t; - } - - /** - * Returns the device id. - * - * @return device id - */ - public DeviceId deviceId() { - return deviceId; - } - - /** - * Returns the type of the VPN instance. - * - * @return VPN type - */ - public VpnType type() { - return type; - } - - /** - * Adds a interface name to the list. - * - * @param ifName interface name - */ - public void addIfName(String ifName) { - if (ifNames == null) { - ifNames = new LinkedList<>(); - } - ifNames.add(ifName); - } - - /** - * Returns the list of interface name. - * - * @return interface names - */ - public List ifNames() { - return ifNames; - } - - /** - * Sets the list of interface name. - * - * @param ifNames interface names - */ - public void ifNames(List ifNames) { - this.ifNames = ifNames; - } - - /*** - * Returns the list of tunnel names. - * - * @return tunnel names - */ - public List tnlNames() { - return tnlNames; - } - - /** - * Sets the list of tunnel names. - * - * @param tnlNames tunnel names - */ - public void tnlNames(List tnlNames) { - this.tnlNames = tnlNames; - } - - /** - * Adds a tunnel name to the list. - * - * @param tnlName tunnel name - */ - public void addTnlName(String tnlName) { - if (tnlNames == null) { - tnlNames = new LinkedList<>(); - } - tnlNames.add(tnlName); - } - - /** - * Returns true if tunnel policy is created for this device in this VPN; - * false otherwise. - * - * @return true if tunnel policy is created; false otherwise - */ - public boolean isTnlPolCreated() { - return isTnlPolCreated; - } - - /** - * Sets true if tunnel policy is created for this device in this VPN; - * false otherwise. - * - * @param tnlPolCreated status of tunnel policy creation - */ - public void setTnlPolCreated(boolean tnlPolCreated) { - isTnlPolCreated = tnlPolCreated; - } - - /** - * Returns the BGP information. - * - * @return BGP info - */ - public BgpInfo bgpInfo() { - return bgpInfo; - } - - /** - * Sets the BGP information. - * - * @param bgpInfo BGP info - */ - public void bgpInfo(BgpInfo bgpInfo) { - this.bgpInfo = bgpInfo; - } - - /** - * Returns the list of network accesses. - * - * @return network accesses - */ - public List accesses() { - return accesses; - } - - /** - * Sets the list of network accesses. - * - * @param accesses network accesses - */ - public void accesses(List accesses) { - this.accesses = accesses; - } - - /** - * Adds a access info to the network accesses list. - * - * @param accessInfo access info - */ - public void addAccessInfo(AccessInfo accessInfo) { - if (accesses == null) { - accesses = new LinkedList<>(); - } - accesses.add(accessInfo); - } - - /** - * Processes the creation of VPN instance to the driver with the model - * object data of standard device model. It returns the VPN instance of - * driver constructed model object data. - * - * @param driverSvc driver service - * @param modelData std device model object data - * @return driver instance model object data - */ - public ModelObjectData processCreateInstance(DriverService driverSvc, - ModelObjectData modelData) { - L3VpnConfig config = getL3VpnConfig(driverSvc); - return config.createInstance(modelData); - } - - /** - * Processes the creation of interface to the driver with the model - * object data of standard device model. It returns the interface of driver - * constructed model object data. - * - * @param driverSvc driver service - * @param modData std device model object data - * @return driver interface model object data - */ - public ModelObjectData processCreateInterface(DriverService driverSvc, - ModelObjectData modData) { - L3VpnConfig config = getL3VpnConfig(driverSvc); - return config.bindInterface(modData); - } - - /** - * Processes the creation of BGP info to the driver with the BGP info and - * the BGP driver configuration. It returns the BGP info of driver - * constructed model object data. - * - * @param driverSvc driver service - * @param bgpInfo BGP info - * @param driverInfo driver config details - * @return driver BGP model object data - */ - public ModelObjectData processCreateBgpInfo(DriverService driverSvc, - BgpInfo bgpInfo, - BgpDriverInfo driverInfo) { - L3VpnConfig config = getL3VpnConfig(driverSvc); - return config.createBgpInfo(bgpInfo, driverInfo); - } - - /** - * Processes the creation of tunnel tree from the devices and device - * level. It returns the tunnel info with devices and device of driver - * constructed model object data. - * - * @param driverSvc driver service - * @param tnlInfo tunnel info - * @return driver model object data of tunnel info with devices and device - */ - public ModelObjectData processCreateTnlDev(DriverService driverSvc, - TunnelInfo tnlInfo) { - L3VpnConfig config = getL3VpnConfig(driverSvc); - return config.createTnlDev(tnlInfo); - } - - /** - * Processes the creation of tunnel policy in the tree from the tunnel - * manager or tunnel policy level. It returns the tunnel info with - * tunnel policy level of driver constructed model object data. - * - * @param driverSvc driver service - * @param tnlInfo tunnel info - * @return driver model object data of tunnel info with tunnel policy - */ - public ModelObjectData processCreateTnlPol(DriverService driverSvc, - TunnelInfo tnlInfo) { - L3VpnConfig config = getL3VpnConfig(driverSvc); - return config.createTnlPol(tnlInfo); - } - - /** - * Processes the creation of tunnel in the tree from the tunnel next hops - * or only tunnel next hop. It returns the tunnel info with tunnel level - * of driver constructed model object data - * - * @param driverSvc driver service - * @param tnlInfo tunnel info - * @return driver model object data of tunnel info with tunnel - */ - public ModelObjectData processCreateTnl(DriverService driverSvc, - TunnelInfo tnlInfo) { - L3VpnConfig config = getL3VpnConfig(driverSvc); - return config.createTnl(tnlInfo); - } - - /** - * Processes the binding of tunnel policy to the VPN instance. It returns - * the VPN instance with tunnel policy of driver constructed model object - * data. - * - * @param driverSvc driver service - * @param tnlInfo tunnel info - * @return driver model object data of VPN instance with tunnel - */ - public ModelObjectData processBindTnl(DriverService driverSvc, - TunnelInfo tnlInfo) { - L3VpnConfig config = getL3VpnConfig(driverSvc); - return config.bindTnl(tnlInfo); - } - - /** - * Processes the deletion of VPN instance to the driver with the model - * object data of standard device model. It returns the VPN instance of - * driver constructed model object data. - * - * @param driverSvc driver service - * @param modData model object data - * @return driver instance model object data - */ - public ModelObjectData processDeleteInstance(DriverService driverSvc, - ModelObjectData modData) { - L3VpnConfig config = getL3VpnConfig(driverSvc); - return config.deleteInstance(modData); - } - - /** - * Processes the deletion of interface to the driver with the model - * object data of standard device model. It returns the interface of driver - * constructed model object data. - * - * @param driverSvc driver service - * @param objectData model object data - * @return driver interface model object data - */ - public ModelObjectData processDeleteInterface(DriverService driverSvc, - ModelObjectData objectData) { - // TODO: Need to call the behaviour. - return null; - } - - /** - * Processes the deletion of BGP info to the driver with the BGP info and - * the BGP driver configuration. It returns the BGP info of driver - * constructed model object data. - * - * @param driverSvc driver service - * @param bgpInfo BGP info - * @param driverInfo driver config details - * @return driver BGP model object data - */ - public ModelObjectData processDeleteBgpInfo(DriverService driverSvc, - BgpInfo bgpInfo, - BgpDriverInfo driverInfo) { - L3VpnConfig config = getL3VpnConfig(driverSvc); - return config.deleteBgpInfo(bgpInfo, driverInfo); - } - - /** - * Processes the deletion of tunnel info according to the levels it has - * to be deleted. It returns the tunnel info of driver constructed model - * object data. - * - * @param driverSvc driver service - * @param tnlInfo tunnel info - * @return driver tunnel info model object data - */ - public ModelObjectData processDeleteTnl(DriverService driverSvc, - TunnelInfo tnlInfo) { - L3VpnConfig config = getL3VpnConfig(driverSvc); - return config.deleteTnl(tnlInfo); - } - - /** - * Returns the L3VPN config instance from the behaviour. - * - * @param driverSvc driver service - * @return L3VPN config - */ - private L3VpnConfig getL3VpnConfig(DriverService driverSvc) { - DriverHandler handler = driverSvc.createHandler(deviceId); - return handler.behaviour(L3VpnConfig.class); - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/FullMeshVpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/FullMeshVpnConfig.java deleted file mode 100644 index ebfe3247cf..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/FullMeshVpnConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -/** - * Representation of the full mesh VPN configuration containing RT. - */ -public class FullMeshVpnConfig extends VpnConfig { - - /** - * Route target value. - */ - private String rt; - - /** Constructs full mesh VPN config. - * - * @param r RT value - */ - public FullMeshVpnConfig(String r) { - rt = r; - } - - /** - * Returns the RT value. - * - * @return RT value - */ - public String rt() { - return rt; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/HubSpokeVpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/HubSpokeVpnConfig.java deleted file mode 100644 index ae92e688c9..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/HubSpokeVpnConfig.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -/** - * Representation of the hub and spoke VPN configuration containing import and - * export RTs. - */ -public class HubSpokeVpnConfig extends VpnConfig { - - /** - * Hub import RT value. - */ - private String hubImpRt; - - /** - * Hub export RT value. - */ - private String hubExpRt; - - /** - * Spoke import RT value. - */ - private String spokeImpRt; - - /** - * Spoke export RT value. - */ - private String spokeExpRt; - - /** - * Creates hub and spoke VPN config. - */ - public HubSpokeVpnConfig() { - } - - /** - * Returns hub import RT value. - * - * @return RT value - */ - public String hubImpRt() { - return hubImpRt; - } - - /** - * Sets hub import RT value. - * - * @param hubImpRt RT value - */ - public void hubImpRt(String hubImpRt) { - this.hubImpRt = hubImpRt; - } - - /** - * Returns hub export RT value. - * - * @return RT value - */ - public String hubExpRt() { - return hubExpRt; - } - - /** - * Sets hub export RT value. - * - * @param hubExpRt RT value - */ - public void hubExpRt(String hubExpRt) { - this.hubExpRt = hubExpRt; - } - - /** - * Returns spoke import RT value. - * - * @return RT value - */ - public String spokeImpRt() { - return spokeImpRt; - } - - /** - * Sets spoke import RT value. - * - * @param spokeImpRt RT value - */ - public void spokeImpRt(String spokeImpRt) { - this.spokeImpRt = spokeImpRt; - } - - /** - * Returns spoke export RT value. - * - * @return RT value - */ - public String spokeExpRt() { - return spokeExpRt; - } - - /** - * Sets spoke export RT value. - * - * @param spokeExpRt RT value - */ - public void spokeExpRt(String spokeExpRt) { - this.spokeExpRt = spokeExpRt; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/InterfaceInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/InterfaceInfo.java deleted file mode 100644 index 25fa56cc83..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/InterfaceInfo.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -/** - * Representation of interface information, which has the interface name and - * its binding VPN name and the device info to which it belongs to. - */ -public class InterfaceInfo { - - /** - * Device info value. - */ - private DeviceInfo devInfo; - - /** - * Interface name. - */ - private String intName; - - /** - * VPN instance name. - */ - private String vpnName; - - /** - * Constructs interface info. - * - * @param d device info - * @param i interface name - * @param v VPN name - */ - public InterfaceInfo(DeviceInfo d, String i, String v) { - devInfo = d; - intName = i; - vpnName = v; - } - - /** - * Returns device info of the interface. - * - * @return device info - */ - public DeviceInfo devInfo() { - return devInfo; - } - - /** - * Returns the interface name. - * - * @return interface name - */ - public String intName() { - return intName; - } - - /** - * Returns the VPN name. - * - * @return VPN name - */ - public String vpnName() { - return vpnName; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/L3VpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/L3VpnConfig.java deleted file mode 100644 index bfc8164816..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/L3VpnConfig.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -import org.onosproject.net.driver.HandlerBehaviour; -import org.onosproject.yang.model.ModelObjectData; - -/** - * Behaviour for handling various drivers for l3vpn configurations. - */ -public interface L3VpnConfig extends HandlerBehaviour { - - /** - * Create virtual routing forwarding instance on requested device with - * given standard device model object data. - * - * @param objectData standard device model object data - * @return device model object data - */ - ModelObjectData createInstance(ModelObjectData objectData); - - /** - * Binds requested virtual routing forwarding instance to interface on the - * requested device with given standard device model object data. - * - * @param objectData standard device model object data - * @return device model object data - */ - ModelObjectData bindInterface(ModelObjectData objectData); - - /** - * Deletes virtual routing forwarding instance on requested device with - * given standard device model object data. - * - * @param objectData standard device model object data - * @return device model object data - */ - ModelObjectData deleteInstance(ModelObjectData objectData); - - /** - * Unbinds requested virtual routing forwarding instance to interface on the - * requested device with given standard device model object data. - * - * @param objectData standard device model object data - * @return device model object data - */ - ModelObjectData unbindInterface(ModelObjectData objectData); - - /** - * Deletes tunnel on requested device with the given tunnel info. - * - * @param tnlInfo tunnel info - * @return device model object data - */ - ModelObjectData deleteTnl(TunnelInfo tnlInfo); - - /** - * Creates BGP routing protocol info on requested device with given - * BGP info object. - * - * @param bgpInfo BGP info object - * @param bgpConfig BGP driver config - * @return device model object data - */ - ModelObjectData createBgpInfo(BgpInfo bgpInfo, BgpDriverInfo bgpConfig); - - /** - * Deletes BGP routing protocol info on requested device with given - * BGP info object. - * - * @param bgpInfo BGP info object - * @param bgpConfig BGP driver config - * @return device model object data - */ - ModelObjectData deleteBgpInfo(BgpInfo bgpInfo, BgpDriverInfo bgpConfig); - - /** - * Creates device and devices level on requested device for tunnel creation. - * - * @param tnlInfo tunnel info - * @return device model object data - */ - ModelObjectData createTnlDev(TunnelInfo tnlInfo); - - /** - * Creates tunnel policy on requested device with given tunnel info. - * - * @param tnlInfo tunnel info - * @return device model object data - */ - ModelObjectData createTnlPol(TunnelInfo tnlInfo); - - /** - * Creates tunnel on requested device with given tunnel info. - * - * @param tnlInfo tunnel info - * @return device model object data - */ - ModelObjectData createTnl(TunnelInfo tnlInfo); - - /** - * Binds requested tunnel policy name to the VPN to the requested device - * with given tunnel info. - * - * @param tnlInfo tunnel info - * @return device model object data - */ - ModelObjectData bindTnl(TunnelInfo tnlInfo); -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ModelIdLevel.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ModelIdLevel.java deleted file mode 100644 index 91bf24844c..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ModelIdLevel.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -/** - * Represents the model id level to add it in the store. - * //TODO: Further levels has to be added. - */ -public enum ModelIdLevel { - - /** - * Requested model id level is not present, representing top node. - */ - ROOT, - - /** - * Requested model id level is devices container. - */ - DEVICES, - - /** - * Requested model id level is device list. - */ - DEVICE, - - /** - * Requested model id level is VPN list. - */ - VPN, - - /** - * Requested model id level is tunnel manager. - */ - TNL_M, - - /** - * Requested model id level is tunnel policy. - */ - TNL_POL, - - /** - * Requested model id level is tunnel hop. - */ - TP_HOP -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnException.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnException.java deleted file mode 100644 index 653fa1134b..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -/** - * Representation of exception that needs to be handled by net l3 VPN. - */ -public class NetL3VpnException extends RuntimeException { - - /** - * Creates net l3 VPN exception with an exception message. - * - * @param excMsg message - */ - public NetL3VpnException(String excMsg) { - super(excMsg); - } - - /** - * Creates net l3 VPN exception with a cause for it. - * - * @param cause cause - */ - public NetL3VpnException(Throwable cause) { - super(cause); - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java deleted file mode 100644 index db926a208e..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -import org.onosproject.net.DeviceId; - -import java.util.Map; - -/** - * Abstraction of an entity providing pool of available VPN instances - * its associated devices and interface information. - */ -public interface NetL3VpnStore { - - /** - * Returns the freed ids that can be re-used for RD and RT generation. - * - * @return collection of freed ids - */ - Iterable getFreedIdList(); - - /** - * Returns the VPN instance map available in the store. - * - * @return VPN instance map - */ - Map getVpnInstances(); - - /** - * Returns the BGP info map available in the store. - * - * @return BGP info map - */ - Map getBgpInfo(); - - /** - * Returns the interface information map available in the store. - * - * @return interface info map - */ - Map getInterfaceInfo(); - - /** - * Returns the tunnel information map available in the store, for a device. - * - * @return tunnel info map - */ - Map getTunnelInfo(); - - /** - * Adds freed id to the freed list in the store. - * - * @param id id - */ - void addIdToFreeList(Long id); - - /** - * Adds the VPN name and the VPN instance, if the map does'nt have the - * value with it. - * - * @param name VPN name - * @param instance VPN instance - */ - void addVpnInsIfAbsent(String name, VpnInstance instance); - - /** - * Adds the VPN name and the VPN instance to the map. - * - * @param name VPN name - * @param instance VPN instance - */ - void addVpnIns(String name, VpnInstance instance); - - /** - * Adds the access info and the interface info to the map in store. - * - * @param accessInfo access info - * @param intInfo interface info - */ - void addInterfaceInfo(AccessInfo accessInfo, InterfaceInfo intInfo); - - /** - * Adds the BGP info and the device id to the map in store. - * - * @param bgpInfo BGP info - * @param devId device id - */ - void addBgpInfo(BgpInfo bgpInfo, DeviceId devId); - - /** - * Adds the device id and the number of tunnels created for that device. - * - * @param devId device id - * @param count number of tunnels - */ - void addTunnelInfo(DeviceId devId, Integer count); - - /** - * Removes the interface info with the key access info from the store. - * - * @param accessInfo access info - * @return true if removed; false otherwise - */ - boolean removeInterfaceInfo(AccessInfo accessInfo); - - /** - * Removes the VPN instance from the store with the key VPN name from the - * store. - * - * @param vpnName VPN name - * @return true if removed; false otherwise - */ - boolean removeVpnInstance(String vpnName); - - /** - * Removes the mentioned id from the freed list. - * - * @param id id - * @return true if removed; false otherwise - */ - boolean removeIdFromFreeList(Long id); - - /** - * Removes the device id from the store with the key BGP info from the - * store. - * - * @param bgpInfo BGP info - * @return true if removed; false otherwise - */ - boolean removeBgpInfo(BgpInfo bgpInfo); - - /** - * Removes the device id from the store with the value count of number of - * tunnels. - * - * @param id device id - * @return true if removed; false otherwise - */ - boolean removeTunnelInfo(DeviceId id); -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java deleted file mode 100644 index 0efad33506..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.l3vpn.netl3vpn; - -import java.util.LinkedList; -import java.util.List; - -/** - * Representation of protocol info of the BGP info. It contains the route - * protocol and the interfaces which are associated with the information. - */ -public class ProtocolInfo { - - /** - * Route protocol. - */ - private RouteProtocol routeProtocol; - - /** - * Interface details which uses this protocol with respect to IPV4 address. - */ - private List v4Accesses; - - /** - * Interface details which uses this protocol with respect to IPV6 address. - */ - private List v6Accesses; - - /** - * Status of IPV4 address family available. - */ - private boolean ipv4Af; - - /** - * Status of IPV6 address family available. - */ - private boolean ipv6Af; - - /** - * Process id of the protocol info. - */ - private String processId; - - /** - * Constructs protocol info. - */ - public ProtocolInfo() { - } - - /** - * Returns the route protocol. - * - * @return route protocol - */ - public RouteProtocol routeProtocol() { - return routeProtocol; - } - - /** - * Sets the route protocol. - * - * @param routeProtocol route protocol - */ - public void routeProtocol(RouteProtocol routeProtocol) { - this.routeProtocol = routeProtocol; - } - - /** - * Returns the process id. - * - * @return process id - */ - public String processId() { - return processId; - } - - /** - * Sets the process id. - * - * @param processId process id. - */ - public void processId(String processId) { - this.processId = processId; - } - - /** - * Returns true if the IPV4 address family uses the protocol info; false - * otherwise. - * - * @return true if IPV4 address family uses; false otherwise - */ - public boolean isIpv4Af() { - return ipv4Af; - } - - /** - * Sets true if the IPV4 address family uses the protocol info; false - * otherwise. - * - * @param ipv4Af true if IPV4 interface uses; false otherwise - */ - public void ipv4Af(boolean ipv4Af) { - this.ipv4Af = ipv4Af; - } - - /** - * Returns true if the IPV6 address family uses the protocol info; false - * otherwise. - * - * @return true if IPV6 address family uses; false otherwise - */ - public boolean isIpv6Af() { - return ipv6Af; - } - - /** - * Sets true if the IPV6 address family uses the protocol info; false - * otherwise. - * - * @param ipv6Af true if IPV6 interface uses; false otherwise - */ - public void ipv6Af(boolean ipv6Af) { - this.ipv6Af = ipv6Af; - } - - /** - * Returns the list of IPV4 network access information. - * - * @return IPV4 network accesses - */ - public List v4Accesses() { - return v4Accesses; - } - - /** - * Sets the list of IPV4 network access information. - * - * @param v4Accesses IPV4 network accesses - */ - public void v4Accesses(List v4Accesses) { - this.v4Accesses = v4Accesses; - } - - /** - * Adds a access info to the IPV4 network accesses. - * - * @param info IPV4 network access - */ - public void addV4Access(AccessInfo info) { - if (v4Accesses == null) { - v4Accesses = new LinkedList<>(); - } - v4Accesses.add(info); - } - - /** - * Returns the list of IPV6 network access information. - * - * @return IPV6 network accesses - */ - public List v6Accesses() { - return v6Accesses; - } - - /** - * Sets the list of IPV6 network access information. - * - * @param v6Accesses IPV6 network accesses - */ - public void v6Accesses(List v6Accesses) { - this.v4Accesses = v6Accesses; - } - - /** - * Adds a access info to the IPV6 network accesses. - * @param info IPV4 network access - */ - public void addV6Access(AccessInfo info) { - if (v6Accesses == null) { - v6Accesses = new LinkedList<>(); - } - v6Accesses.add(info); - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/RouteProtocol.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/RouteProtocol.java deleted file mode 100644 index f7c74bed66..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/RouteProtocol.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.l3vpn.netl3vpn; - -/** - * Represents the route protocol of BGP info. - */ -public enum RouteProtocol { - - /** - * Requested route protocol type is of BGP. - */ - BGP("bgp"), - - /** - * Requested route protocol type is of direct. - */ - DIRECT("direct"), - - /** - * Requested route protocol type is of OSPF. - */ - OSPF("ospf"), - - /** - * Requested route protocol type is of RIP. - */ - RIP("rip"), - - /** - * Requested route protocol type is of RIPNG. - */ - RIP_NG("ripng"), - - /** - * Requested route protocol type is of VRRP. - */ - VRRP("vrrp"), - - /** - * Requested route protocol type is of static. - */ - STATIC("yangautoprefixstatic"); - - /** - * Defined protocol type from the enum value. - */ - private final String proType; - - /** - * Constructs protocol type value from enum. - * - * @param proType value of enum - */ - RouteProtocol(String proType) { - this.proType = proType; - } - - /** - * Returns route protocol for corresponding protocol name. - * - * @param name protocol name - * @return route protocol - */ - public static RouteProtocol getProType(String name) { - for (RouteProtocol protocol : values()) { - if (protocol.proType.equals(name.toLowerCase())) { - return protocol; - } - } - throw new NetL3VpnException("There is no protocol type as " + name); - } - -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/TunnelInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/TunnelInfo.java deleted file mode 100644 index db8c9c6770..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/TunnelInfo.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -/** - * Represents the tunnel information. - */ -public class TunnelInfo { - - /** - * Destination ip address. - */ - private final String desIp; - - /** - * Tunnel name. - */ - private final String tnlName; - - /** - * Tunnel policy name. - */ - private final String polName; - - /** - * Device id. - */ - private final String devId; - - /** - * Level of the model. - */ - private ModelIdLevel level; - - /** - * Creates tunnel info with destination ip address, tunnel name, tunnel - * policy name and device id. - * - * @param dIp destination ip - * @param tName tunnel name - * @param pName tunnel policy name - * @param dId device id - */ - public TunnelInfo(String dIp, String tName, String pName, String dId) { - this.desIp = dIp; - this.tnlName = tName; - this.polName = pName; - this.devId = dId; - } - - /** - * Returns the destination ip-address. - * - * @return destination ip-address - */ - public String desIp() { - return desIp; - } - - /** - * Returns the tunnel name. - * - * @return tunnel name - */ - public String tnlName() { - return tnlName; - } - - /** - * Returns the tunnel policy name. - * - * @return tunnel policy name - */ - public String polName() { - return polName; - } - - /** - * Returns the device id. - * - * @return device id - */ - public String devId() { - return devId; - } - - /** - * Returns the model id level. - * - * @return model id level - */ - public ModelIdLevel level() { - return level; - } - - /** - * Sets the model id level. - * - * @param level model id level - */ - public void level(ModelIdLevel level) { - this.level = level; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnConfig.java deleted file mode 100644 index 743cffa726..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnConfig.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -/** - * Abstraction of VPN config which contains RD value for the VPN instance. - */ -public class VpnConfig { - - /** - * RD value for VPN instance. - */ - private String rd; - - /** - * Created VPN config. - */ - public VpnConfig() { - } - - /** - * Returns RD value. - * - * @return RD value - */ - public String rd() { - return rd; - } - - /** - * Sets the RD value. - * - * @param rd RD value - */ - public void rd(String rd) { - this.rd = rd; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java deleted file mode 100644 index 17a6ee8f9e..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -import org.onosproject.net.DeviceId; - -import java.util.HashMap; -import java.util.Map; - -/** - * Representation of stored VPN instance, which contains the configuration - * such as RD and RT, also the device info and the VPN type. - */ -public class VpnInstance { - - /** - * VPN instance name. - */ - private String vpnName; - - /** - * List of devices for the VPN. - */ - private Map devInfo; - - /** - * Type of the VPN. - */ - private VpnType type; - - /** - * VPN config information. - */ - private T vpnConfig; - - /** - * Creates VPN instance with VPN name. - * - * @param v VPN name - */ - public VpnInstance(String v) { - vpnName = v; - } - - /** - * Returns the type of the VPN instance. - * - * @return VPN type - */ - public VpnType type() { - return type; - } - - /** - * Sets the type of the VPN instance. - * - * @param type VPN type - */ - public void type(VpnType type) { - this.type = type; - } - - /** - * Returns the configuration of VPN instance. - * - * @return VPN config - */ - public T vpnConfig() { - return vpnConfig; - } - - /** - * Sets the configuration of VPN instance. - * - * @param vpnConfig VPN config - */ - public void vpnConfig(T vpnConfig) { - this.vpnConfig = vpnConfig; - } - - /** - * Returns the device info map. - * - * @return device info map - */ - public Map devInfo() { - return devInfo; - } - - /** - * Sets the device info map. - * - * @param devInfo device info map - */ - public void devInfo(Map devInfo) { - this.devInfo = devInfo; - } - - /** - * Adds the content to device info map. - * - * @param id device id - * @param info device info - */ - public void addDevInfo(DeviceId id, DeviceInfo info) { - if (devInfo == null) { - devInfo = new HashMap<>(); - } - devInfo.put(id, info); - } - - /** - * Returns the VPN instance name. - * - * @return VPN name - */ - public String vpnName() { - return vpnName; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnSiteRole.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnSiteRole.java deleted file mode 100644 index d190488e22..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnSiteRole.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -/** - * Representation of VPN instance name and its respective site role for each - * site. - */ -public class VpnSiteRole { - - /** - * VPN instance name of the site. - */ - private String name; - - /** - * Site role of the site. - */ - private VpnType role; - - /** - * Creates VPN instance site role. - * - * @param n VPN name - * @param r site role - */ - public VpnSiteRole(String n, VpnType r) { - name = n; - role = r; - } - - /** - * Returns the VPN instance name of the site. - * - * @return VPN name - */ - public String name() { - return name; - } - - /** - * Returns the site role. - * - * @return site role - */ - public VpnType role() { - return role; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnType.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnType.java deleted file mode 100644 index 78b37e552c..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnType.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn; - -/** - * Represents the type of VPN instance. - */ -public enum VpnType { - - /** - * Requested VPN type is of full mesh. - */ - ANY_TO_ANY, - - /** - * Requested VPN type is of hub. - */ - HUB, - - /** - * Requested VPN type is of spoke. - */ - SPOKE -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/BgpConstructionUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/BgpConstructionUtil.java deleted file mode 100644 index bedc4a3f70..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/BgpConstructionUtil.java +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn.impl; - -import org.onosproject.l3vpn.netl3vpn.AccessInfo; -import org.onosproject.l3vpn.netl3vpn.BgpInfo; -import org.onosproject.l3vpn.netl3vpn.DeviceInfo; -import org.onosproject.l3vpn.netl3vpn.NetL3VpnException; -import org.onosproject.l3vpn.netl3vpn.ProtocolInfo; -import org.onosproject.l3vpn.netl3vpn.RouteProtocol; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.RoutingProtocolType; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentipconnection.IpConnection; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siterouting.routingprotocols.RoutingProtocol; - -import java.util.List; -import java.util.Map; - -import static org.onosproject.l3vpn.netl3vpn.RouteProtocol.DIRECT; -import static org.onosproject.l3vpn.netl3vpn.RouteProtocol.STATIC; -import static org.onosproject.l3vpn.netl3vpn.RouteProtocol.getProType; - -/** - * Representation of utility for BGP info creation and deletion. - */ -public final class BgpConstructionUtil { - - private static final String ZERO = "0"; - - // No instantiation. - private BgpConstructionUtil() { - } - - /** - * Creates the BGP info instance, from the routing protocols available. - * It returns BGP info if for the first time, else returns null. - * - * @param routes route protocol - * @param info device info - * @param vpnName VPN name - * @param connect ip connection - * @param access access info - * @return BGP info instance - */ - public static BgpInfo createBgpInfo(List routes, - DeviceInfo info, String vpnName, - IpConnection connect, AccessInfo access) { - BgpInfo devBgp = info.bgpInfo(); - BgpInfo infoBgp = new BgpInfo(); - infoBgp.vpnName(vpnName); - if (devBgp != null) { - infoBgp = updateDevBgpInfo(devBgp, infoBgp, connect, routes, access); - } else { - infoBgp = updateDevBgpInfo(null, infoBgp, connect, routes, access); - info.bgpInfo(infoBgp); - } - if (infoBgp == null || infoBgp.protocolInfo() == null) { - return null; - } - return infoBgp; - } - - /** - * Updates the device BGP info and also creates the BGP info which has to - * be sent to driver, if it is called for the first time. - * - * @param devBgp device BGP info - * @param driBgp driver BGP info - * @param connect ip connection - * @param routes route protocols - * @param access access info - * @return driver BGP info - */ - private static BgpInfo updateDevBgpInfo(BgpInfo devBgp, BgpInfo driBgp, - IpConnection connect, - List routes, - AccessInfo access) { - for (RoutingProtocol route : routes) { - ProtocolInfo ifInfo = getRoutePro(route.type(), connect, access); - if (ifInfo != null) { - if (devBgp != null) { - ProtocolInfo info = addToDevBgp(ifInfo, devBgp, access); - ifInfo = getUpdatedProInfo(info, ifInfo); - } - if (ifInfo != null) { - driBgp.addProtocolInfo(ifInfo.routeProtocol(), ifInfo); - } - } - } - return driBgp; - } - - /** - * Returns the updated protocol info that has to be sent to driver. If - * the protocol info is for the second time or more, the driver info's - * protocol info will not be sent. It will return null if no info is - * present or nothing to be sent to driver. - * - * @param devInfo device protocol info - * @param driInfo driver protocol info - * @return updated driver protocol info - */ - private static ProtocolInfo getUpdatedProInfo(ProtocolInfo devInfo, - ProtocolInfo driInfo) { - if (driInfo.isIpv4Af() && driInfo.isIpv6Af()) { - if ((getV4Size(devInfo) > 1) && (getV6Size(devInfo) > 1)) { - return null; - } - if ((getV4Size(devInfo) > 1) && !(getV6Size(devInfo) > 1)) { - driInfo.ipv4Af(false); - } else if (!(getV4Size(devInfo) > 1) && (getV6Size(devInfo) > 1)) { - driInfo.ipv6Af(false); - } - } - if (driInfo.isIpv4Af() && !driInfo.isIpv6Af()) { - if (getV4Size(devInfo) > 1) { - return null; - } - } - if (!driInfo.isIpv4Af() && driInfo.isIpv6Af()) { - if (getV6Size(devInfo) > 1) { - return null; - } - } - return driInfo; - } - - private static int getV4Size(ProtocolInfo proInfo) { - return proInfo.v4Accesses().size(); - } - - private static int getV6Size(ProtocolInfo proInfo) { - return proInfo.v6Accesses().size(); - } - - /** - * Adds the protocol info to the device BGP info. - * - * @param proInfo protocol info - * @param devBgp device BGP - * @param access access info - * @return protocol info - */ - private static ProtocolInfo addToDevBgp(ProtocolInfo proInfo, - BgpInfo devBgp, AccessInfo access) { - Map devMap = devBgp.protocolInfo(); - ProtocolInfo devInfo = devMap.get(proInfo.routeProtocol()); - if (devInfo != null) { - if (proInfo.isIpv4Af()) { - devInfo.ipv4Af(proInfo.isIpv4Af()); - devInfo.addV4Access(access); - } - if (proInfo.isIpv6Af()) { - devInfo.ipv6Af(proInfo.isIpv6Af()); - devInfo.addV6Access(access); - } - } else { - devInfo = proInfo; - devBgp.addProtocolInfo(proInfo.routeProtocol(), devInfo); - } - return devInfo; - } - - - /** - * Returns the protocol info of BGP by taking values from the service files. - * - * @param type protocol type - * @param connect IP connection - * @param access access info - * @return protocol info - */ - private static ProtocolInfo getRoutePro(Class type, - IpConnection connect, AccessInfo access) { - ProtocolInfo protocolInfo = new ProtocolInfo(); - RouteProtocol protocol = getProType(type.getSimpleName()); - switch (protocol) { - case DIRECT: - protocolInfo.routeProtocol(DIRECT); - protocolInfo.processId(ZERO); - setAddressFamily(protocolInfo, connect, access); - return protocolInfo; - - case STATIC: - protocolInfo.routeProtocol(STATIC); - protocolInfo.processId(ZERO); - setAddressFamily(protocolInfo, connect, access); - return protocolInfo; - - case BGP: - case OSPF: - case RIP: - case RIP_NG: - case VRRP: - default: - throw new NetL3VpnException(getRouteProErr( - type.getSimpleName())); - } - } - - /** - * Returns the route protocol error message for unsupported type. - * - * @param type route protocol type - * @return error message - */ - private static String getRouteProErr(String type) { - return type + " routing protocol is not supported."; - } - - /** - * Sets the address family of the protocol info. - * - * @param proInfo protocol info - * @param connect ip connection - * @param access access info - */ - private static void setAddressFamily(ProtocolInfo proInfo, - IpConnection connect, AccessInfo access) { - if (connect.ipv4() != null && connect.ipv4().addresses() != null && - connect.ipv4().addresses().providerAddress() != null) { - proInfo.ipv4Af(true); - proInfo.addV4Access(access); - } - if (connect.ipv6() != null && connect.ipv6().addresses() != null && - connect.ipv6().addresses().providerAddress() != null) { - proInfo.ipv6Af(true); - proInfo.addV6Access(access); - } - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java deleted file mode 100644 index 5178d5e863..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.l3vpn.netl3vpn.impl; - -import com.google.common.collect.ImmutableSet; -import org.onlab.util.KryoNamespace; -import org.onosproject.l3vpn.netl3vpn.AccessInfo; -import org.onosproject.l3vpn.netl3vpn.BgpInfo; -import org.onosproject.l3vpn.netl3vpn.DeviceInfo; -import org.onosproject.l3vpn.netl3vpn.FullMeshVpnConfig; -import org.onosproject.l3vpn.netl3vpn.HubSpokeVpnConfig; -import org.onosproject.l3vpn.netl3vpn.InterfaceInfo; -import org.onosproject.l3vpn.netl3vpn.NetL3VpnStore; -import org.onosproject.l3vpn.netl3vpn.ProtocolInfo; -import org.onosproject.l3vpn.netl3vpn.RouteProtocol; -import org.onosproject.l3vpn.netl3vpn.TunnelInfo; -import org.onosproject.l3vpn.netl3vpn.VpnConfig; -import org.onosproject.l3vpn.netl3vpn.VpnInstance; -import org.onosproject.l3vpn.netl3vpn.VpnType; -import org.onosproject.net.DeviceId; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.ConsistentMap; -import org.onosproject.store.service.DistributedSet; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.onosproject.yang.model.LeafListKey; -import org.onosproject.yang.model.ListKey; -import org.onosproject.yang.model.NodeKey; -import org.onosproject.yang.model.ResourceId; -import org.onosproject.yang.model.SchemaId; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Map; -import java.util.stream.Collectors; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Manages the pool of available VPN instances and its associated devices - * and interface information. - */ -@Component(immediate = true, service = NetL3VpnStore.class) -public class DistributedNetL3VpnStore implements NetL3VpnStore { - - private static final Serializer L3VPN_SERIALIZER = Serializer - .using(new KryoNamespace.Builder().register(KryoNamespaces.API) - .register(KryoNamespaces.API) - .register(VpnInstance.class) - .register(VpnType.class) - .register(VpnConfig.class) - .register(FullMeshVpnConfig.class) - .register(HubSpokeVpnConfig.class) - .register(DeviceInfo.class) - .register(ResourceId.class) - .register(NodeKey.class) - .register(SchemaId.class) - .register(LeafListKey.class) - .register(ListKey.class) - .register(AccessInfo.class) - .register(InterfaceInfo.class) - .register(BgpInfo.class) - .register(RouteProtocol.class) - .register(ProtocolInfo.class) - .register(TunnelInfo.class) - .build()); - - private static final String FREE_ID_NULL = "Free ID cannot be null"; - private static final String VPN_NAME_NULL = "VPN name cannot be null"; - private static final String VPN_INS_NULL = "VPN instance cannot be null"; - private static final String ACCESS_INFO_NULL = "Access info cannot be null"; - private static final String BGP_INFO_NULL = "BGP info cannot be null"; - private static final String INT_INFO_NULL = "Interface info cannot be null"; - private static final String DEV_ID_NULL = "Device Id cannot be null"; - - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - /** - * Freed id list of NET L3VPN. - */ - private DistributedSet freedIdList; - - /** - * Map of interface info with access info as key. - */ - private ConsistentMap intInfoMap; - - /** - * Map of VPN instance with VPN name as key. - */ - private ConsistentMap vpnInsMap; - - /** - * Map of BGP information and the device id. - */ - private ConsistentMap bgpInfoMap; - - /** - * Map of device id and tunnel count. - */ - private ConsistentMap tunnelInfoMap; - - @Activate - protected void activate() { - vpnInsMap = storageService.consistentMapBuilder() - .withName("onos-l3vpn-instance-map") - .withSerializer(L3VPN_SERIALIZER) - .build(); - - intInfoMap = storageService - .consistentMapBuilder() - .withName("onos-l3vpn-int-info-map") - .withSerializer(L3VPN_SERIALIZER) - .build(); - - bgpInfoMap = storageService.consistentMapBuilder() - .withName("onos-l3vpn-bgp-info-map") - .withSerializer(L3VPN_SERIALIZER) - .build(); - - tunnelInfoMap = storageService.consistentMapBuilder() - .withName("onos-l3vpn-tnl-info-map") - .withSerializer(L3VPN_SERIALIZER) - .build(); - - freedIdList = storageService.setBuilder() - .withName("onos-l3vpn-id-freed-list") - .withSerializer(Serializer.using(KryoNamespaces.API)) - .build() - .asDistributedSet(); - - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - log.info("Stopped"); - } - - @Override - public Iterable getFreedIdList() { - return ImmutableSet.copyOf(freedIdList); - } - - @Override - public Map getVpnInstances() { - return vpnInsMap.entrySet().stream() - .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() - .value())); - } - - @Override - public Map getBgpInfo() { - return bgpInfoMap.entrySet().stream() - .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() - .value())); - } - - @Override - public Map getInterfaceInfo() { - return intInfoMap.entrySet().stream() - .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() - .value())); - } - - @Override - public Map getTunnelInfo() { - return tunnelInfoMap.entrySet().stream() - .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() - .value())); - } - - @Override - public void addIdToFreeList(Long id) { - checkNotNull(id, FREE_ID_NULL); - freedIdList.add(id); - } - - @Override - public void addVpnInsIfAbsent(String name, VpnInstance instance) { - checkNotNull(name, VPN_NAME_NULL); - checkNotNull(instance, VPN_INS_NULL); - vpnInsMap.putIfAbsent(name, instance); - } - - @Override - public void addVpnIns(String name, VpnInstance instance) { - checkNotNull(name, VPN_NAME_NULL); - checkNotNull(instance, VPN_INS_NULL); - vpnInsMap.put(name, instance); - } - - @Override - public void addInterfaceInfo(AccessInfo accessInfo, InterfaceInfo intInfo) { - checkNotNull(accessInfo, ACCESS_INFO_NULL); - checkNotNull(intInfo, INT_INFO_NULL); - intInfoMap.put(accessInfo, intInfo); - } - - @Override - public void addBgpInfo(BgpInfo bgpInfo, DeviceId devId) { - checkNotNull(bgpInfo, BGP_INFO_NULL); - checkNotNull(devId, DEV_ID_NULL); - bgpInfoMap.put(bgpInfo, devId); - } - - @Override - public void addTunnelInfo(DeviceId devId, Integer count) { - checkNotNull(devId, DEV_ID_NULL); - tunnelInfoMap.put(devId, count); - } - - @Override - public boolean removeInterfaceInfo(AccessInfo accessInfo) { - checkNotNull(accessInfo, ACCESS_INFO_NULL); - - if (intInfoMap.remove(accessInfo) == null) { - log.error("Interface info deletion for access info {} has failed.", - accessInfo.toString()); - return false; - } - return true; - } - - @Override - public boolean removeVpnInstance(String vpnName) { - checkNotNull(vpnName, VPN_NAME_NULL); - - if (vpnInsMap.remove(vpnName) == null) { - log.error("Vpn instance deletion for vpn name {} has failed.", - vpnName); - return false; - } - return true; - } - - @Override - public boolean removeIdFromFreeList(Long id) { - checkNotNull(id, FREE_ID_NULL); - - if (!freedIdList.remove(id)) { - log.error("Id from free id list {} deletion has failed.", - id.toString()); - return false; - } - return true; - } - - @Override - public boolean removeBgpInfo(BgpInfo bgpInfo) { - checkNotNull(bgpInfo, BGP_INFO_NULL); - - if (bgpInfoMap.remove(bgpInfo) == null) { - log.error("Device id deletion for BGP info {} has failed.", - bgpInfo.toString()); - return false; - } - return true; - } - - @Override - public boolean removeTunnelInfo(DeviceId id) { - checkNotNull(id, DEV_ID_NULL); - - if (tunnelInfoMap.remove(id) == null) { - log.error("Device id deletion in tunnel info has failed."); - return false; - } - return true; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/InsConstructionUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/InsConstructionUtil.java deleted file mode 100644 index a883ef6e95..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/InsConstructionUtil.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn.impl; - -import org.onosproject.l3vpn.netl3vpn.FullMeshVpnConfig; -import org.onosproject.l3vpn.netl3vpn.HubSpokeVpnConfig; -import org.onosproject.l3vpn.netl3vpn.VpnInstance; -import org.onosproject.l3vpn.netl3vpn.VpnSiteRole; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.devices.device.networkinstances.networkinstance.AugmentedNiNetworkInstance; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.devices.device.networkinstances.networkinstance.DefaultAugmentedNiNetworkInstance; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.devices.device.networkinstances.networkinstance.augmentedninetworkinstance.DefaultL3Vpn; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.devices.device.networkinstances.networkinstance.augmentedninetworkinstance.L3Vpn; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.DefaultIpv4; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.DefaultIpv6; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.Ipv4; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.Ipv6; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.ipv4.DefaultUnicast; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams.ipv4.Unicast; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routedistinguisherparams.DefaultRouteDistinguisher; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routedistinguisherparams.RouteDistinguisher; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetparams.DefaultRouteTargets; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetparams.RouteTargets; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetparams.routetargets.Config; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetparams.routetargets.DefaultConfig; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.DefaultRts; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.Rts; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.rts.RtTypeEnum; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentipconnection.IpConnection; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.DefaultNetworkInstances; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.NetworkInstances; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.networkinstances.DefaultNetworkInstance; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.networkinstances.NetworkInstance; - -import java.util.LinkedList; -import java.util.List; - -import static org.onosproject.l3vpn.netl3vpn.VpnType.ANY_TO_ANY; -import static org.onosproject.l3vpn.netl3vpn.VpnType.HUB; -import static org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.rts.RtTypeEnum.BOTH; -import static org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.rts.RtTypeEnum.EXPORT; -import static org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.routetargetset.rts.RtTypeEnum.IMPORT; - -/** - * Representation of utility for instance creation and deletion. - */ -public final class InsConstructionUtil { - - // No instantiation. - private InsConstructionUtil() { - } - - /** - * Creates network instance with augmented info such as RD and RT. - * - * @param vpnIns VPN instance - * @param role VPN role - * @param connect ip connection - * @return network instance - */ - public static NetworkInstances createInstance(VpnInstance vpnIns, - VpnSiteRole role, - IpConnection connect) { - NetworkInstance ins = new DefaultNetworkInstance(); - NetworkInstances instances = new DefaultNetworkInstances(); - List insList = new LinkedList<>(); - - L3Vpn l3Vpn = buildRd(vpnIns); - DefaultAugmentedNiNetworkInstance augIns = - buildRt(connect, role, l3Vpn, vpnIns); - ins.name(vpnIns.vpnName()); - insList.add(ins); - ((DefaultNetworkInstance) ins).addAugmentation(augIns); - instances.networkInstance(insList); - return instances; - } - - /** - * Builds RT from l3 VPN according to the address family VPN belongs to. - * It returns built aug network instance from l3 VPN. - * - * @param con ip connection - * @param role site VPN role - * @param l3Vpn l3 VPN - * @param ins VPN instance - * @return aug network instance - */ - private static DefaultAugmentedNiNetworkInstance buildRt(IpConnection con, - VpnSiteRole role, - L3Vpn l3Vpn, - VpnInstance ins) { - Ipv4 ipv4 = null; - Ipv6 ipv6 = null; - if (con.ipv4() != null && con.ipv4().addresses() - .providerAddress() != null) { - ipv4 = buildIpv4Rt(role, ins); - } - if (con.ipv6() != null && con.ipv6() - .addresses().providerAddress() != null) { - ipv6 = buildIpv6Rt(role, ins); - } - l3Vpn.ipv4(ipv4); - l3Vpn.ipv6(ipv6); - - AugmentedNiNetworkInstance augInst = - new DefaultAugmentedNiNetworkInstance(); - augInst.l3Vpn(l3Vpn); - return (DefaultAugmentedNiNetworkInstance) augInst; - } - - /** - * Builds ipv6 RT in the device model. - * - * @param role site VPN role - * @param vpnIns VPN instance - * @return ipv6 - */ - private static Ipv6 buildIpv6Rt(VpnSiteRole role, VpnInstance vpnIns) { - RouteTargets rts6 = new DefaultRouteTargets(); - Ipv6 v6 = new DefaultIpv6(); - org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn - .l3vpnvrfparams.ipv6.Unicast uni6 = new org.onosproject.yang - .gen.v1.ietfbgpl3vpn.rev20160909.ietfbgpl3vpn.l3vpnvrfparams - .ipv6.DefaultUnicast(); - - Config configV6 = configRouteTarget(vpnIns, role); - rts6.config(configV6); - uni6.routeTargets(rts6); - v6.unicast(uni6); - return v6; - } - - /** - * Builds ipv4 RT in the device model. - * - * @param role site VPN role - * @param vpnIns VPN instance - * @return ipv4 - */ - private static Ipv4 buildIpv4Rt(VpnSiteRole role, VpnInstance vpnIns) { - RouteTargets rts4 = new DefaultRouteTargets(); - Unicast uni4 = new DefaultUnicast(); - Ipv4 v4 = new DefaultIpv4(); - - Config configV4 = configRouteTarget(vpnIns, role); - rts4.config(configV4); - uni4.routeTargets(rts4); - v4.unicast(uni4); - return v4; - } - - /** - * Configures route target according to the site VPN role from the stored - * VPN instance. - * - * @param ins VPN instance - * @param role site VPN role - * @return route target config - */ - private static Config configRouteTarget(VpnInstance ins, - VpnSiteRole role) { - Rts rts1; - Config config = new DefaultConfig(); - List rtsList = new LinkedList<>(); - - if (ins.type() == ANY_TO_ANY) { - String rtVal = ((FullMeshVpnConfig) ins.vpnConfig()).rt(); - rts1 = getRtsVal(rtVal, BOTH); - } else { - String rtVal1; - String rtVal2; - HubSpokeVpnConfig conf = (HubSpokeVpnConfig) ins.vpnConfig(); - if (role.role() == HUB) { - rtVal1 = conf.hubImpRt(); - rtVal2 = conf.hubExpRt(); - } else { - rtVal1 = conf.spokeImpRt(); - rtVal2 = conf.spokeExpRt(); - } - rts1 = getRtsVal(rtVal1, IMPORT); - Rts rts2 = getRtsVal(rtVal2, EXPORT); - rtsList.add(rts2); - } - rtsList.add(rts1); - config.rts(rtsList); - return config; - } - - /** - * Returns the device model RT from the RT type and RT value after - * building it. - * - * @param rtVal RT value - * @param type RT type - * @return device model RT - */ - private static Rts getRtsVal(String rtVal, RtTypeEnum type) { - Rts rts = new DefaultRts(); - rts.rt(rtVal); - rts.rtType(type); - return rts; - } - - /** - * Builds RD from the stored device model VPN instance. - * - * @param vpn VPN instance - * @return l3 VPN object - */ - private static L3Vpn buildRd(VpnInstance vpn) { - String rd = vpn.vpnConfig().rd(); - org.onosproject.yang.gen.v1.ietfbgpl3vpn - .rev20160909.ietfbgpl3vpn.routedistinguisherparams - .routedistinguisher.Config config = new org.onosproject.yang - .gen.v1.ietfbgpl3vpn.rev20160909 - .ietfbgpl3vpn.routedistinguisherparams.routedistinguisher - .DefaultConfig(); - config.rd(rd); - RouteDistinguisher dist = new DefaultRouteDistinguisher(); - dist.config(config); - L3Vpn l3vpn = new DefaultL3Vpn(); - l3vpn.routeDistinguisher(dist); - return l3vpn; - } - - /** - * Constructs network instance for delete of VPN instance. - * - * @param vpnName VPN name - * @return network instances - */ - static NetworkInstances deleteInstance(String vpnName) { - NetworkInstance nwInstance = new DefaultNetworkInstance(); - List insList = new LinkedList<>(); - NetworkInstances instances = new DefaultNetworkInstances(); - nwInstance.name(vpnName); - insList.add(nwInstance); - instances.networkInstance(insList); - return instances; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/IntConstructionUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/IntConstructionUtil.java deleted file mode 100644 index 4d1c9d0788..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/IntConstructionUtil.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn.impl; - -import org.onosproject.l3vpn.netl3vpn.NetL3VpnException; -import org.onosproject.yang.gen.v1.ietfinettypes.rev20130715.ietfinettypes.Ipv4Address; -import org.onosproject.yang.gen.v1.ietfinettypes.rev20130715.ietfinettypes.Ipv4AddressNoZone; -import org.onosproject.yang.gen.v1.ietfinettypes.rev20130715.ietfinettypes.Ipv6Address; -import org.onosproject.yang.gen.v1.ietfinettypes.rev20130715.ietfinettypes.Ipv6AddressNoZone; -import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.DefaultInterfaces; -import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.Interfaces; -import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.interfaces.DefaultYangAutoPrefixInterface; -import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.interfaces.YangAutoPrefixInterface; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.AugmentedIfInterface; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.DefaultAugmentedIfInterface; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.DefaultIpv4; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.DefaultIpv6; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.Ipv4; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.Ipv6; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.ipv4.Address; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.ipv4.DefaultAddress; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.ipv4.address.Subnet; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device.interfaces.yangautoprefixinterface.augmentedifinterface.ipv4.address.subnet.DefaultPrefixLength; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentipconnection.IpConnection; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.interfaces.yangautoprefixinterface.ipv4.AugmentedIpIpv4; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.interfaces.yangautoprefixinterface.ipv4.DefaultAugmentedIpIpv4; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.interfaces.yangautoprefixinterface.ipv6.AugmentedIpIpv6; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.interfaces.yangautoprefixinterface.ipv6.DefaultAugmentedIpIpv6; -import org.onosproject.yang.model.InnerModelObject; - -import java.util.LinkedList; -import java.util.List; - -/** - * Representation of utility for interface creation and deletion. - */ -public final class IntConstructionUtil { - - private static final String IP_ADD_NULL = "Vpn binding to an interface " + - "requires ip address."; - - // No instantiation. - private IntConstructionUtil() { - } - - /** - * Creates device model interface by building its parameters with port - * name, VPN name and ip connection. - * - * @param pName port name - * @param vpnName VPN name - * @param connect ip connection - * @return interface device model - */ - public static Interfaces createInterface(String pName, String vpnName, - IpConnection connect) { - Interfaces interfaces = new DefaultInterfaces(); - List intList = new LinkedList<>(); - YangAutoPrefixInterface inter = buildInterface(vpnName, pName, connect); - intList.add(inter); - interfaces.yangAutoPrefixInterface(intList); - return interfaces; - } - - /** - * Builds augmented info of ip address to the interface. - * - * @param vpnName VPN name - * @param pName port name - * @param connect ip connection - * @return interface - */ - private static YangAutoPrefixInterface buildInterface(String vpnName, - String pName, - IpConnection connect) { - // Bind vpn name in the augmented info of interface. - org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623 - .ietfnetworkinstance.devices.device.interfaces - .yangautoprefixinterface.AugmentedIfInterface augIf = new org - .onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623 - .ietfnetworkinstance.devices.device.interfaces - .yangautoprefixinterface.DefaultAugmentedIfInterface(); - augIf.bindNetworkInstanceName(vpnName); - - // Bind ip address to the interface as augmented info. - AugmentedIfInterface intAug = buildIpAddress(connect, vpnName); - YangAutoPrefixInterface inter = new DefaultYangAutoPrefixInterface(); - inter.name(pName); - ((DefaultYangAutoPrefixInterface) inter).addAugmentation( - (InnerModelObject) augIf); - ((DefaultYangAutoPrefixInterface) inter).addAugmentation( - (InnerModelObject) intAug); - - return inter; - } - - /** - * Returns ipv6 address filled with attached VPN, ipv6 address and mask. - * - * @param vpnName VPN name - * @param mask mask - * @param ipv6Add ipv6 address - * @return device ipv6 address - */ - private static Ipv6 getIpv6Aug(String vpnName, short mask, String ipv6Add) { - AugmentedIpIpv6 augIpv6 = new DefaultAugmentedIpIpv6(); - org.onosproject.yang.gen.v1.ietfip.rev20140616.ietfip.devices.device - .interfaces.yangautoprefixinterface.augmentedifinterface.ipv6 - .Address add = new org.onosproject.yang.gen.v1.ietfip - .rev20140616.ietfip.devices.device.interfaces - .yangautoprefixinterface.augmentedifinterface.ipv6 - .DefaultAddress(); - Ipv6 ipv6 = new DefaultIpv6(); - List addList = new LinkedList<>(); - add.ip(Ipv6AddressNoZone.of(Ipv6Address.of(ipv6Add))); - augIpv6.bindNetworkInstanceName(vpnName); - add.prefixLength(mask); - addList.add(add); - ipv6.address(addList); - ((DefaultIpv6) ipv6).addAugmentation((DefaultAugmentedIpIpv6) augIpv6); - return ipv6; - } - - /** - * Returns ipv4 address filled with attached VPN, ipv4 address and mask. - * - * @param vpnName VPN name - * @param mask mask - * @param ipv4Add ipv4 address - * @return device ipv4 address - */ - private static Ipv4 getIpv4Aug(String vpnName, short mask, String ipv4Add) { - AugmentedIpIpv4 augIpv4 = new DefaultAugmentedIpIpv4(); - Subnet net = new DefaultPrefixLength(); - Address add = new DefaultAddress(); - Ipv4 ipv4 = new DefaultIpv4(); - List

addList = new LinkedList<>(); - - augIpv4.bindNetworkInstanceName(vpnName); - ((DefaultPrefixLength) net).prefixLength(mask); - add.ip(Ipv4AddressNoZone.of(Ipv4Address.of(ipv4Add))); - add.subnet(net); - addList.add(add); - ipv4.address(addList); - ((DefaultIpv4) ipv4).addAugmentation((DefaultAugmentedIpIpv4) augIpv4); - return ipv4; - } - - /** - * Builds ip address according to the existence of ip address in ip - * connection of device model. - * - * @param connect ip connection - * @param vpnName VPN name - * @return augmented interface - */ - public static AugmentedIfInterface buildIpAddress(IpConnection connect, - String vpnName) { - if (connect == null || (connect.ipv4() == null - && connect.ipv6() == null)) { - throw new NetL3VpnException(IP_ADD_NULL); - } - AugmentedIfInterface intAug = new DefaultAugmentedIfInterface(); - short mask; - if (connect.ipv4() != null) { - mask = connect.ipv4().addresses().mask(); - Ipv4Address peIpv4 = connect.ipv4().addresses().providerAddress(); - Ipv4 v4 = getIpv4Aug(vpnName, mask, peIpv4.string()); - intAug.ipv4(v4); - } - - if (connect.ipv6() != null) { - mask = connect.ipv6().addresses().mask(); - Ipv6Address peIpv6 = connect.ipv6().addresses().providerAddress(); - Ipv6 v6 = getIpv6Aug(vpnName, mask, peIpv6.string()); - intAug.ipv6(v6); - } - return intAug; - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnManager.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnManager.java deleted file mode 100644 index 7c1ccf883b..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnManager.java +++ /dev/null @@ -1,1103 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.l3vpn.netl3vpn.impl; - -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.onlab.util.AbstractAccumulator; -import org.onlab.util.Accumulator; -import org.onosproject.cluster.ClusterService; -import org.onosproject.cluster.LeadershipEvent; -import org.onosproject.cluster.LeadershipEventListener; -import org.onosproject.cluster.LeadershipService; -import org.onosproject.cluster.NodeId; -import org.onosproject.config.DynamicConfigEvent; -import org.onosproject.config.DynamicConfigListener; -import org.onosproject.config.DynamicConfigService; -import org.onosproject.config.FailedException; -import org.onosproject.config.Filter; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.core.IdGenerator; -import org.onosproject.l3vpn.netl3vpn.AccessInfo; -import org.onosproject.l3vpn.netl3vpn.BgpDriverInfo; -import org.onosproject.l3vpn.netl3vpn.BgpInfo; -import org.onosproject.l3vpn.netl3vpn.DeviceInfo; -import org.onosproject.l3vpn.netl3vpn.FullMeshVpnConfig; -import org.onosproject.l3vpn.netl3vpn.HubSpokeVpnConfig; -import org.onosproject.l3vpn.netl3vpn.InterfaceInfo; -import org.onosproject.l3vpn.netl3vpn.NetL3VpnException; -import org.onosproject.l3vpn.netl3vpn.NetL3VpnStore; -import org.onosproject.l3vpn.netl3vpn.VpnConfig; -import org.onosproject.l3vpn.netl3vpn.VpnInstance; -import org.onosproject.l3vpn.netl3vpn.VpnSiteRole; -import org.onosproject.l3vpn.netl3vpn.VpnType; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Port; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.driver.DriverService; -import org.onosproject.pce.pceservice.api.PceService; -import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.Interfaces; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.DefaultL3VpnSvc; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.L3VpnSvc; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.accessvpnpolicy.VpnAttachment; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.accessvpnpolicy.vpnattachment.AttachmentFlavor; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.accessvpnpolicy.vpnattachment.attachmentflavor.DefaultVpnId; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.DefaultSites; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.Sites; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.VpnServices; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.sites.Site; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.sites.site.SiteNetworkAccesses; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.sites.site.sitenetworkaccesses.SiteNetworkAccess; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.vpnservices.VpnSvc; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentbearer.Bearer; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentbearer.bearer.RequestedType; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siteattachmentipconnection.IpConnection; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siterouting.RoutingProtocols; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.siterouting.routingprotocols.RoutingProtocol; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.NetworkInstances; -import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.l3vpnsvc.sites.site.sitenetworkaccesses.sitenetworkaccess.bearer.DefaultAugmentedL3VpnBearer; -import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.l3vpnsvc.sites.site.sitenetworkaccesses.sitenetworkaccess.bearer.requestedtype.DefaultAugmentedL3VpnRequestedType; -import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.requestedtypegrouping.requestedtypeprofile.RequestedTypeChoice; -import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.requestedtypegrouping.requestedtypeprofile.requestedtypechoice.DefaultDot1Qcase; -import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.l3vpnsvcext.requestedtypegrouping.requestedtypeprofile.requestedtypechoice.DefaultPhysicalCase; -import org.onosproject.yang.model.DataNode; -import org.onosproject.yang.model.DefaultModelObjectData; -import org.onosproject.yang.model.ModelConverter; -import org.onosproject.yang.model.ModelObject; -import org.onosproject.yang.model.ModelObjectData; -import org.onosproject.yang.model.ModelObjectId; -import org.onosproject.yang.model.NodeKey; -import org.onosproject.yang.model.ResourceData; -import org.onosproject.yang.model.ResourceId; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Timer; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.config.DynamicConfigEvent.Type.NODE_ADDED; -import static org.onosproject.config.DynamicConfigEvent.Type.NODE_DELETED; -import static org.onosproject.l3vpn.netl3vpn.VpnType.HUB; -import static org.onosproject.l3vpn.netl3vpn.impl.BgpConstructionUtil.createBgpInfo; -import static org.onosproject.l3vpn.netl3vpn.impl.InsConstructionUtil.createInstance; -import static org.onosproject.l3vpn.netl3vpn.impl.InsConstructionUtil.deleteInstance; -import static org.onosproject.l3vpn.netl3vpn.impl.IntConstructionUtil.createInterface; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.BEARER_NULL; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.CONS_HUNDRED; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.DEVICE_INFO_NULL; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.EVENT_NULL; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.ID_LIMIT; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.ID_LIMIT_EXCEEDED; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.INT_INFO_NULL; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.IP_INT_INFO_NULL; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.MAX_BATCH_MS; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.MAX_EVENTS; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.MAX_IDLE_MS; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.PORT_NAME; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.SITE_ROLE_NULL; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.SITE_VPN_MISMATCH; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.TIMER; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.UNKNOWN_EVENT; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.VPN_ATTACHMENT_NULL; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.VPN_POLICY_NOT_SUPPORTED; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.VPN_TYPE_UNSUPPORTED; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getBgpCreateConfigObj; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getId; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getIntCreateModObj; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getIntNotAvailable; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getModIdForL3VpnSvc; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getModIdForSites; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getResourceData; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getRole; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getVpnBgpDelModObj; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getVpnCreateModObj; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getVpnDelModObj; - -/** - * The IETF net l3vpn manager implementation. - */ -@Component(immediate = true) -public class NetL3VpnManager { - - private static final String APP_ID = "org.onosproject.app.l3vpn"; - private static final String L3_VPN_ID_TOPIC = "l3vpn-id"; - private static final String TNL_ID_TOPIC = "l3vpn-tnl-id"; - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private final DynamicConfigListener configListener = - new InternalConfigListener(); - - private final Accumulator accumulator = - new InternalEventAccumulator(); - - private final InternalLeadershipListener leadershipEventListener = - new InternalLeadershipListener(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DriverService driverService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DeviceService deviceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected ModelConverter modelConverter; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DynamicConfigService configService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected NetL3VpnStore l3VpnStore; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected LeadershipService leadershipService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected ClusterService clusterService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PceService pceService; - - protected IdGenerator l3VpnIdGen; - - protected IdGenerator tnlIdGen; - - private NodeId localNodeId; - - private ApplicationId appId; - - private ResourceId id; - - private ResourceId module; - - private ResourceId sites; - - private boolean isElectedLeader; - - private NetL3VpnTunnelHandler tnlHandler; - - @Activate - protected void activate() { - appId = coreService.registerApplication(APP_ID); - l3VpnIdGen = coreService.getIdGenerator(L3_VPN_ID_TOPIC); - tnlIdGen = coreService.getIdGenerator(TNL_ID_TOPIC); - localNodeId = clusterService.getLocalNode().id(); - leadershipService.addListener(leadershipEventListener); - leadershipService.runForLeadership(appId.name()); - getResourceId(); - configService.addListener(configListener); - tnlHandler = new NetL3VpnTunnelHandler( - pceService, driverService, configService, l3VpnStore, - deviceService, tnlIdGen, modelConverter); - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - configService.removeListener(configListener); - leadershipService.withdraw(appId.name()); - leadershipService.removeListener(leadershipEventListener); - log.info("Stopped"); - } - - /** - * Returns id as string. If the id is not in the freed list a new id is - * generated else the id from the freed list is used. - * - * @return id - */ - private String getIdFromGen() { - Long value; - Iterable freeIds = l3VpnStore.getFreedIdList(); - Iterator it = freeIds.iterator(); - if (it.hasNext()) { - value = it.next(); - l3VpnStore.removeIdFromFreeList(value); - } else { - value = l3VpnIdGen.getNewId(); - } - if (value > ID_LIMIT) { - throw new IllegalStateException(ID_LIMIT_EXCEEDED); - } - return CONS_HUNDRED + String.valueOf(value); - } - - /** - * Returns the resource id, after constructing model object id and - * converting it. - */ - private void getResourceId() { - - ModelObjectId moduleId = ModelObjectId.builder().build(); - module = getResourceVal(moduleId); - - ModelObjectId svcId = getModIdForL3VpnSvc(); - id = getResourceVal(svcId); - - ModelObjectId sitesId = getModIdForSites(); - sites = getResourceVal(sitesId); - } - - /** - * Returns resource id from model converter. - * - * @param modelId model object id - * @return resource id - */ - private ResourceId getResourceVal(ModelObjectId modelId) { - DefaultModelObjectData.Builder data = DefaultModelObjectData.builder() - .identifier(modelId); - ResourceData resData = modelConverter.createDataNode(data.build()); - return resData.resourceId(); - } - - /** - * Processes create request from the store, by taking the root object. - * The root object is then used for l3VPN processing. - * - * @param storeId store resource id - * @param node data node - */ - private void processCreateFromStore(ResourceId storeId, DataNode node) { - if (isElectedLeader) { - List keys = storeId.nodeKeys(); - List objects = null; - if (keys.size() == 1) { - objects = getModelObjects(node, module); - } else if (keys.size() == 2) { - objects = getModelObjects(node, id); - } - if (objects != null) { - for (ModelObject obj : objects) { - if (obj instanceof DefaultL3VpnSvc) { - DefaultL3VpnSvc l3VpnSvc = (DefaultL3VpnSvc) obj; - createGlobalConfig(l3VpnSvc); - } else if (obj instanceof DefaultSites) { - DefaultSites sites = (DefaultSites) obj; - createInterfaceConfig(sites); - } - } - } - } - } - - /** - * Processes delete request from the store, by taking the root object. - * The root object would have got deleted from store. So all the - * configurations are removed. - * - * @param dataNode data node - */ - private void processDeleteFromStore(DataNode dataNode) { - if (isElectedLeader) { - if (dataNode == null) { - //TODO: Delete for inner nodes. - deleteGlobalConfig(null); - } - } - } - - /** - * Returns model objects of the store. The data node read from store - * gives the particular node. So the node's parent resource id is taken - * and the data node is given to model converter. - * - * @param dataNode data node from store - * @param appId parent resource id - * @return model objects - */ - public List getModelObjects(DataNode dataNode, - ResourceId appId) { - ResourceData data = getResourceData(dataNode, appId); - ModelObjectData modelData = modelConverter.createModel(data); - return modelData.modelObjects(); - } - - /** - * Returns true if the event resource id points to the root level node - * only and event is for addition and deletion; false otherwise. - * - * @param event config event - * @return true if event is supported; false otherwise - */ - public boolean isSupported(DynamicConfigEvent event) { - ResourceId rsId = event.subject(); - List storeKeys = rsId.nodeKeys(); - List regKeys = id.nodeKeys(); - List sitesKeys = sites.nodeKeys(); - if (storeKeys != null) { - int storeSize = storeKeys.size(); - if (storeSize == 1) { - return storeKeys.get(0).equals(regKeys.get(1)) && - (event.type() == NODE_ADDED || - event.type() == NODE_DELETED); - } else if (storeSize == 2) { - return (storeKeys.get(0).equals(sitesKeys.get(1))) && - storeKeys.get(1).equals(sitesKeys.get(2)) && - (event.type() == NODE_ADDED || - event.type() == NODE_DELETED); - } - } - return false; - } - - /*** - * Creates all configuration in the standard device model. - * - * @param l3VpnSvc l3VPN service object - */ - void createGlobalConfig(L3VpnSvc l3VpnSvc) { - if (l3VpnSvc.vpnServices() != null) { - createVpnServices(l3VpnSvc.vpnServices()); - } - if (l3VpnSvc.sites() != null) { - createInterfaceConfig(l3VpnSvc.sites()); - } - } - - /** - * Creates the VPN instances from the VPN services object, if only that - * VPN instance is not already created. - * - * @param vpnSvcs VPN services object - */ - private void createVpnServices(VpnServices vpnSvcs) { - if (vpnSvcs != null && vpnSvcs.vpnSvc() != null) { - List svcList = vpnSvcs.vpnSvc(); - for (VpnSvc svc : svcList) { - String vpnName = svc.vpnId().string(); - l3VpnStore.addVpnInsIfAbsent(vpnName, new VpnInstance(vpnName)); - } - } - } - - /** - * Creates interface configuration from the site network access if - * available. - * - * @param sites sites object - */ - private void createInterfaceConfig(Sites sites) { - if (sites.site() != null) { - List sitesList = sites.site(); - for (Site site : sitesList) { - if (site.siteNetworkAccesses() != null) { - SiteNetworkAccesses accesses = site.siteNetworkAccesses(); - List accessList = - accesses.siteNetworkAccess(); - for (SiteNetworkAccess access : accessList) { - createFromAccess(access, site.siteId().string()); - } - } - } - } - } - - /** - * Creates the interface and VPN related configurations from the access - * and site id value. - * - * @param access site network access - * @param siteId site id - */ - private void createFromAccess(SiteNetworkAccess access, String siteId) { - Map intMap = l3VpnStore.getInterfaceInfo(); - Map insMap = l3VpnStore.getVpnInstances(); - String accessId = access.siteNetworkAccessId().string(); - AccessInfo info = new AccessInfo(siteId, accessId); - - if (intMap.get(info) == null) { - VpnSiteRole siteRole = getSiteRole(access.vpnAttachment()); - VpnInstance instance = insMap.get(siteRole.name()); - if (instance == null) { - throw new NetL3VpnException(SITE_VPN_MISMATCH); - } - buildFromAccess(instance, info, access, siteRole); - } - } - - /** - * Returns the VPN site role from the VPN attachment. - * - * @param attach VPN attachment - * @return VPN site role - */ - private VpnSiteRole getSiteRole(VpnAttachment attach) { - if (attach == null || attach.attachmentFlavor() == null) { - throw new NetL3VpnException(VPN_ATTACHMENT_NULL); - } - AttachmentFlavor flavor = attach.attachmentFlavor(); - if (!(flavor instanceof DefaultVpnId)) { - throw new NetL3VpnException(VPN_POLICY_NOT_SUPPORTED); - } - DefaultVpnId vpnId = (DefaultVpnId) flavor; - if (vpnId.siteRole() == null) { - throw new NetL3VpnException(SITE_ROLE_NULL); - } - VpnType role = getRole(vpnId.siteRole()); - return new VpnSiteRole(String.valueOf(vpnId.vpnId()), role); - } - - /** - * Builds the required details for device standard model from the site - * network access info available. - * - * @param instance VPN instance - * @param info access info - * @param access network access - * @param role VPN site role - */ - private void buildFromAccess(VpnInstance instance, AccessInfo info, - SiteNetworkAccess access, VpnSiteRole role) { - Bearer bearer = access.bearer(); - if (bearer == null) { - throw new NetL3VpnException(BEARER_NULL); - } - - RequestedType reqType = bearer.requestedType(); - IpConnection connect = access.ipConnection(); - RoutingProtocols pro = access.routingProtocols(); - - if (reqType == null || connect == null) { - throw new NetL3VpnException(IP_INT_INFO_NULL); - } - buildDeviceDetails(instance, info, role, bearer, connect, - reqType, pro); - } - - /** - * Builds the device details such as, VPN instance value if it is for - * the first time, interface values and BGP info if available in service. - * - * @param instance VPN instance - * @param accInfo access info - * @param role VPN site role - * @param bearer bearer object - * @param connect ip connect object - * @param reqType requested type - * @param pro routing protocol - */ - private void buildDeviceDetails(VpnInstance instance, AccessInfo accInfo, - VpnSiteRole role, Bearer bearer, - IpConnection connect, RequestedType reqType, - RoutingProtocols pro) { - Map interMap = l3VpnStore.getInterfaceInfo(); - InterfaceInfo intInfo = interMap.get(accInfo); - if (intInfo != null) { - return; - } - - DeviceInfo info = buildDevVpnIns(bearer, instance, role, connect); - String portName = getInterfaceName(info, reqType); - buildDevVpnInt(info, instance, connect, portName, accInfo); - - if (pro != null && pro.routingProtocol() != null) { - buildBgpInfo(pro.routingProtocol(), info, - role.name(), connect, accInfo); - } - InterfaceInfo interInfo = new InterfaceInfo(info, portName, - instance.vpnName()); - l3VpnStore.addInterfaceInfo(accInfo, interInfo); - l3VpnStore.addVpnIns(instance.vpnName(), instance); - } - - /** - * Builds device VPN instance with the service objects. It returns - * - * @param bearer bearer object - * @param ins VPN instance - * @param role VPN site role - * @param connect ip connection - * @return return - */ - private DeviceInfo buildDevVpnIns(Bearer bearer, VpnInstance ins, - VpnSiteRole role, IpConnection connect) { - DefaultAugmentedL3VpnBearer augBearer = bearer.augmentation( - DefaultAugmentedL3VpnBearer.class); - DeviceId id = getDeviceId(augBearer); - Map devices = ins.devInfo(); - DeviceInfo info = null; - if (devices != null) { - info = devices.get(id); - } - if (info == null) { - info = createVpnInstance(id, role, ins, connect); - } - return info; - } - - /** - * Returns the device id from the bearer augment attachment of service. - * If the attachment in augment is not available it throws error. - * - * @param attach augmented bearer - * @return device id - */ - private DeviceId getDeviceId(DefaultAugmentedL3VpnBearer attach) { - if (attach == null || attach.bearerAttachment() == null || - attach.bearerAttachment().peMgmtIp() == null || - attach.bearerAttachment().peMgmtIp().string() == null) { - throw new NetL3VpnException(DEVICE_INFO_NULL); - } - String ip = attach.bearerAttachment().peMgmtIp().string(); - return getId(ip, true, deviceService.getAvailableDevices()); - } - - /** - * Creates the VPN instance by constructing standard device model of - * instances. It adds the RD and RT values to the VPN instance. - * - * @param id device id - * @param role VPN site role - * @param inst VPN instance - * @param ip ip connection - * @return device info - */ - private DeviceInfo createVpnInstance(DeviceId id, VpnSiteRole role, - VpnInstance inst, IpConnection ip) { - Map intMap = l3VpnStore.getInterfaceInfo(); - generateRdRt(inst, role); - DeviceInfo info = new DeviceInfo(id, role.role()); - - NetworkInstances instances = createInstance(inst, role, ip); - ModelObjectData devMod = getVpnCreateModObj(intMap, instances, - id.toString()); - inst.addDevInfo(id, info); - l3VpnStore.addVpnIns(inst.vpnName(), inst); - - ModelObjectData driMod = info.processCreateInstance(driverService, - devMod); - ResourceData resData = modelConverter.createDataNode(driMod); - addToStore(resData); - // TODO: Enable tunnel creation on-demand. Uncomment below after - // complete validation - //checkAndUpdateTunnel(inst, id); - return info; - } - - /** - * Checks if the tunnel can be established and creates the tunnel from - * source to destination. - * - * @param inst VPN instance - * @param id device id - */ - private void checkAndUpdateTunnel(VpnInstance inst, DeviceId id) { - Map devInfo = inst.devInfo(); - int devSize = devInfo.size(); - String vpnName = inst.vpnName(); - if (devSize != 1) { - DeviceInfo info = devInfo.get(id); - tnlHandler.createSrcInfo(vpnName, info); - for (Map.Entry device : devInfo.entrySet()) { - DeviceInfo val = device.getValue(); - if (val != info) { - tnlHandler.createSrcDesTunnel(val); - } - } - } - } - - /** - * Adds the resource data that is received from the driver, after - * converting from the model object data. - * - * @param resData resource data - */ - private void addToStore(ResourceData resData) { - if (resData != null && resData.dataNodes() != null) { - List dataNodes = resData.dataNodes(); - for (DataNode node : dataNodes) { - configService.createNode(resData.resourceId(), node); - } - } - } - - /** - * Generates RD and RT value for the VPN instance for the first time VPN - * instance creation. - * - * @param ins VPN instance - * @param role VPN site role - */ - private void generateRdRt(VpnInstance ins, VpnSiteRole role) { - ins.type(role.role()); - VpnConfig config = ins.vpnConfig(); - String rd = null; - if (config == null) { - rd = getIdFromGen(); - } - switch (ins.type()) { - case ANY_TO_ANY: - if (config == null) { - config = new FullMeshVpnConfig(rd); - config.rd(rd); - } - break; - - case HUB: - case SPOKE: - if (config == null) { - config = new HubSpokeVpnConfig(); - config.rd(rd); - } - createImpRtVal((HubSpokeVpnConfig) config, ins.type()); - createExpRtVal((HubSpokeVpnConfig) config, ins.type()); - break; - - default: - throw new NetL3VpnException(VPN_TYPE_UNSUPPORTED); - } - ins.vpnConfig(config); - } - - /** - * Creates import RT value for HUB and SPOKE, according to the type, if - * the values are not present. - * - * @param config VPN config - * @param type VPN type - */ - private void createImpRtVal(HubSpokeVpnConfig config, VpnType type) { - if (type == HUB) { - if (config.hubImpRt() != null) { - return; - } - setHubImpRt(config); - } else { - if (config.spokeImpRt() != null) { - return; - } - config.spokeImpRt(config.rd()); - } - } - - /** - * Sets the HUB import RT, from the spoke export RT. If it is not - * available a new ID is generated. - * - * @param config VPN config - */ - public void setHubImpRt(HubSpokeVpnConfig config) { - String hubImp; - if (config.spokeExpRt() != null) { - hubImp = config.spokeExpRt(); - } else { - hubImp = getIdFromGen(); - } - config.hubImpRt(hubImp); - } - - /** - * Creates export RT value for HUB and SPOKE, according to the type, if - * the values are not present. - * - * @param config VPN config - * @param type VPN type - */ - private void createExpRtVal(HubSpokeVpnConfig config, VpnType type) { - if (type == HUB) { - if (config.hubExpRt() != null) { - return; - } - config.hubExpRt(config.rd()); - } else { - if (config.spokeExpRt() != null) { - return; - } - setSpokeExpRt(config); - } - } - - /** - * Sets the SPOKE export RT, from the hub import RT. If it is not - * available a new ID is generated. - * - * @param config VPN config - */ - public void setSpokeExpRt(HubSpokeVpnConfig config) { - String spokeExp; - if (config.hubImpRt() != null) { - spokeExp = config.hubImpRt(); - } else { - spokeExp = getIdFromGen(); - } - config.spokeExpRt(spokeExp); - } - - /** - * Returns the interface name from the requested type service object. - * - * @param info device info - * @param reqType requested type - * @return interface name - */ - private String getInterfaceName(DeviceInfo info, RequestedType reqType) { - DefaultAugmentedL3VpnRequestedType req = reqType.augmentation( - DefaultAugmentedL3VpnRequestedType.class); - if (req == null || req.requestedTypeProfile() == null || - req.requestedTypeProfile().requestedTypeChoice() == null) { - throw new NetL3VpnException(INT_INFO_NULL); - } - RequestedTypeChoice reqChoice = req.requestedTypeProfile() - .requestedTypeChoice(); - return getNameFromChoice(reqChoice, info.deviceId()); - } - - /** - * Returns the interface name from the type choice provided. - * - * @param choice service choice - * @param id device id - * @return interface name - */ - private String getNameFromChoice(RequestedTypeChoice choice, DeviceId id) { - if (choice == null) { - throw new NetL3VpnException(INT_INFO_NULL); - } - String intName; - if (choice instanceof DefaultDot1Qcase) { - if (((DefaultDot1Qcase) choice).dot1q() == null || - ((DefaultDot1Qcase) choice).dot1q() - .physicalIf() == null) { - throw new NetL3VpnException(INT_INFO_NULL); - } - intName = ((DefaultDot1Qcase) choice).dot1q().physicalIf(); - } else { - if (((DefaultPhysicalCase) choice).physical() == null || - ((DefaultPhysicalCase) choice).physical() - .physicalIf() == null) { - throw new NetL3VpnException(INT_INFO_NULL); - } - intName = ((DefaultPhysicalCase) choice).physical().physicalIf(); - } - return getPortName(intName, id); - } - - /** - * Returns the port name when it the port is available in the device. - * - * @param intName interface name - * @param id device id - * @return port name - */ - private String getPortName(String intName, DeviceId id) { - List ports = deviceService.getPorts(id); - for (Port port : ports) { - String pName = port.annotations().value(PORT_NAME); - if (pName.equals(intName)) { - return intName; - } - } - throw new NetL3VpnException(getIntNotAvailable(intName)); - } - - /** - * Builds the interface for the device binding with the VPN instance. - * - * @param info device info - * @param ins VPN instance - * @param connect IP connection - * @param pName port name - * @param access access info - */ - private void buildDevVpnInt(DeviceInfo info, VpnInstance ins, - IpConnection connect, String pName, - AccessInfo access) { - Map intMap = l3VpnStore.getInterfaceInfo(); - info.addAccessInfo(access); - info.addIfName(pName); - Interfaces interfaces = createInterface(pName, ins.vpnName(), - connect); - ModelObjectData devMod = getIntCreateModObj( - info.ifNames(), interfaces, info.deviceId().toString()); - ModelObjectData driMod = info.processCreateInterface(driverService, - devMod); - ResourceData resData = modelConverter.createDataNode(driMod); - addToStore(resData); - } - - /** - * Builds the BGP information from the routes that are given from the - * service. - * - * @param routes routing protocol - * @param info device info - * @param name VPN name - * @param connect IP connection - * @param access access info - */ - private void buildBgpInfo(List routes, DeviceInfo info, - String name, IpConnection connect, - AccessInfo access) { - Map bgpMap = l3VpnStore.getBgpInfo(); - BgpInfo intBgp = createBgpInfo(routes, info, name, connect, access); - if (intBgp != null) { - intBgp.vpnName(name); - BgpDriverInfo config = getBgpCreateConfigObj( - bgpMap, info.deviceId().toString(), info.bgpInfo(), intBgp); - ModelObjectData driData = info.processCreateBgpInfo( - driverService, intBgp, config); - l3VpnStore.addBgpInfo(info.bgpInfo(), info.deviceId()); - ResourceData resData = modelConverter.createDataNode(driData); - addToStore(resData); - } - } - - /** - * Creates all configuration in the standard device model. - * - * @param l3VpnSvc l3 VPN service - */ - void deleteGlobalConfig(L3VpnSvc l3VpnSvc) { - deleteGlobalVpn(l3VpnSvc); - //TODO: Site and access deletion needs to be added. - } - - /** - * Deletes the global VPN from the device model and delete from the device. - * - * @param l3VpnSvc L3 VPN service - */ - private void deleteGlobalVpn(L3VpnSvc l3VpnSvc) { - Map insMap = l3VpnStore.getVpnInstances(); - //TODO: check for VPN delete deleting interface from store. - if (l3VpnSvc == null || l3VpnSvc.vpnServices() == null || - l3VpnSvc.vpnServices().vpnSvc() == null) { - for (Map.Entry vpnMap : insMap.entrySet()) { - deleteVpnInstance(vpnMap.getValue(), false); - } - return; - } - List vpnList = l3VpnSvc.vpnServices().vpnSvc(); - for (Map.Entry vpnMap : insMap.entrySet()) { - boolean isPresent = isVpnPresent(vpnMap.getKey(), vpnList); - if (!isPresent) { - deleteVpnInstance(vpnMap.getValue(), false); - } - } - } - - /** - * Returns true if the VPN in the distributed map is also present in the - * service; false otherwise. - * - * @param vpnName VPN name from store - * @param vpnList VPN list from service - * @return true if VPN available; false otherwise - */ - private boolean isVpnPresent(String vpnName, List vpnList) { - for (VpnSvc svc : vpnList) { - if (svc.vpnId().string().equals(vpnName)) { - return true; - } - } - return false; - } - - /** - * Deletes the VPN instance by constructing standard device model of - * instances. - * - * @param instance VPN instance - * @param isIntDeleted if interface already removed. - */ - private void deleteVpnInstance(VpnInstance instance, boolean isIntDeleted) { - Map devices = instance.devInfo(); - if (devices != null) { - for (Map.Entry device : devices.entrySet()) { - NetworkInstances ins = deleteInstance(instance.vpnName()); - DeviceInfo dev = device.getValue(); - if (!isIntDeleted) { - remVpnBgp(dev); - remInterfaceFromMap(dev); - } - Map intMap = - l3VpnStore.getInterfaceInfo(); - String id = dev.deviceId().toString(); - ModelObjectData devMod = getVpnDelModObj(intMap, ins, id); - ModelObjectData driMod = dev.processDeleteInstance( - driverService, devMod); - ResourceData resData = modelConverter.createDataNode(driMod); - deleteFromStore(resData); - // TODO: Enable tunnel creation on-demand. Uncomment below after - // complete validation - // tnlHandler.deleteTunnel(dev, instance.vpnName()); - } - l3VpnStore.removeVpnInstance(instance.vpnName()); - } - } - - /** - * Removes the BGP information for that complete VPN instance. - * - * @param dev device info - */ - private void remVpnBgp(DeviceInfo dev) { - BgpInfo devBgp = dev.bgpInfo(); - if (devBgp != null) { - l3VpnStore.removeBgpInfo(devBgp); - BgpInfo delInfo = new BgpInfo(); - delInfo.vpnName(devBgp.vpnName()); - String id = dev.deviceId().toString(); - Map bgpMap = l3VpnStore.getBgpInfo(); - BgpDriverInfo driConfig = getVpnBgpDelModObj(bgpMap, id); - ModelObjectData driData = dev.processDeleteBgpInfo( - driverService, delInfo, driConfig); - ResourceData resData = modelConverter.createDataNode(driData); - deleteFromStore(resData); - l3VpnStore.removeBgpInfo(devBgp); - } - } - - /** - * Deletes the resource data that is received from the driver, after - * converting from the model object data. - * - * @param resData resource data - */ - private void deleteFromStore(ResourceData resData) { - if (resData != null) { - configService.deleteNode(resData.resourceId()); - } - } - - /** - * Removes the interface from the app distributed map, if the driver - * interfaces are already removed from the store. - * - * @param deviceInfo device info - */ - private void remInterfaceFromMap(DeviceInfo deviceInfo) { - List accesses = deviceInfo.accesses(); - if (accesses != null) { - for (AccessInfo access : accesses) { - l3VpnStore.removeInterfaceInfo(access); - } - } - deviceInfo.ifNames(null); - deviceInfo.accesses(null); - } - - /** - * Signals that the leadership has changed. - * - * @param isLeader true if this instance is now the leader, otherwise false - */ - private void leaderChanged(boolean isLeader) { - log.debug("Leader changed: {}", isLeader); - isElectedLeader = isLeader; - } - - /** - * Representation of internal listener, listening for dynamic config event. - */ - private class InternalConfigListener implements DynamicConfigListener { - - @Override - public boolean isRelevant(DynamicConfigEvent event) { - return isSupported(event); - } - - @Override - public void event(DynamicConfigEvent event) { - accumulator.add(event); - } - } - - /** - * Accumulates events to allow processing after a desired number of - * events were accumulated. - */ - private class InternalEventAccumulator extends - AbstractAccumulator { - - /** - * Constructs the event accumulator with timer and event limit. - */ - protected InternalEventAccumulator() { - super(new Timer(TIMER), MAX_EVENTS, MAX_BATCH_MS, MAX_IDLE_MS); - } - - @Override - public void processItems(List events) { - for (DynamicConfigEvent event : events) { - checkNotNull(event, EVENT_NULL); - Filter filter = Filter.builder().build(); - DataNode node; - try { - node = configService.readNode(event.subject(), filter); - } catch (FailedException e) { - node = null; - } - switch (event.type()) { - case NODE_ADDED: - processCreateFromStore(event.subject(), node); - break; - - case NODE_DELETED: - processDeleteFromStore(node); - break; - - default: - log.warn(UNKNOWN_EVENT, event.type()); - break; - } - } - } - } - - /** - * A listener for leadership events. - */ - private class InternalLeadershipListener implements LeadershipEventListener { - - @Override - public boolean isRelevant(LeadershipEvent event) { - return event.subject().topic().equals(appId.name()); - } - - @Override - public void event(LeadershipEvent event) { - switch (event.type()) { - case LEADER_CHANGED: - case LEADER_AND_CANDIDATES_CHANGED: - if (localNodeId.equals(event.subject().leaderNodeId())) { - log.info("Net l3vpn manager gained leadership"); - leaderChanged(true); - } else { - log.info("Net l3vpn manager leader changed. New " + - "leader is {}", event.subject() - .leaderNodeId()); - leaderChanged(false); - } - break; - default: - break; - } - } - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnTunnelHandler.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnTunnelHandler.java deleted file mode 100644 index edef00a768..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnTunnelHandler.java +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn.impl; - -import org.onosproject.config.DynamicConfigService; -import org.onosproject.core.IdGenerator; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.l3vpn.netl3vpn.DeviceInfo; -import org.onosproject.l3vpn.netl3vpn.ModelIdLevel; -import org.onosproject.l3vpn.netl3vpn.NetL3VpnException; -import org.onosproject.l3vpn.netl3vpn.NetL3VpnStore; -import org.onosproject.l3vpn.netl3vpn.TunnelInfo; -import org.onosproject.l3vpn.netl3vpn.VpnType; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.driver.DriverService; -import org.onosproject.pce.pceservice.api.PceService; -import org.onosproject.yang.model.DataNode; -import org.onosproject.yang.model.ModelConverter; -import org.onosproject.yang.model.ModelObjectData; -import org.onosproject.yang.model.ResourceData; - -import java.util.List; -import java.util.Map; - -import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.DEVICE; -import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.DEVICES; -import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.TNL_M; -import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.TNL_POL; -import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.TP_HOP; -import static org.onosproject.l3vpn.netl3vpn.VpnType.SPOKE; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.NEW_NAME; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getId; -import static org.onosproject.l3vpn.netl3vpn.impl.NetL3VpnUtil.getIpFromDevId; -import static org.onosproject.pce.pceservice.LspType.WITH_SIGNALLING; - -/** - * Represents net l3VPN tunnel handler, which handles tunnel operations like - * creation and deletion and updating it to the driver. - */ -public class NetL3VpnTunnelHandler { - - private PceService pceSvc; - private DriverService driSvc; - private DynamicConfigService configSvc; - private NetL3VpnStore store; - private DeviceService devSvc; - private IdGenerator tnlIdGen; - private ModelConverter modelCon; - private String sIp; - private String vpnName; - private DeviceInfo sInfo; - private VpnType type; - - /** - * Constructs net l3VPN tunnel handler with required services. - * - * @param p pce service - * @param d driver service - * @param c dynamic config service - * @param s net l3VPN store - * @param dev device service - * @param id ID generator - * @param m model converter - */ - public NetL3VpnTunnelHandler(PceService p, DriverService d, - DynamicConfigService c, - NetL3VpnStore s, DeviceService dev, - IdGenerator id, ModelConverter m) { - pceSvc = p; - driSvc = d; - configSvc = c; - store = s; - devSvc = dev; - tnlIdGen = id; - modelCon = m; - } - - /** - * Creates the source information for tunnel creation. It creates from - * source device info and VPN name. - * - * @param vName VPN name - * @param devInfo device info - */ - public void createSrcInfo(String vName, DeviceInfo devInfo) { - vpnName = vName; - sInfo = devInfo; - type = devInfo.type(); - sIp = getIpFromDevId(sInfo.deviceId()); - } - - /** - * Creates tunnel between source and destination devices. - * - * @param dInfo destination device - */ - public void createSrcDesTunnel(DeviceInfo dInfo) { - VpnType dType = dInfo.type(); - if (type == SPOKE && dType == SPOKE) { - return; - } - String dIp = getIpFromDevId(dInfo.deviceId()); - createTunnelInfo(sIp, dIp, sInfo); - createTunnelInfo(dIp, sIp, dInfo); - } - - /** - * Creates tunnel info and tunnel based on source and destination ip - * address and configures it in the source device. - * - * @param sIp source ip address - * @param dIp destination ip address - * @param sInfo source device info - */ - private void createTunnelInfo(String sIp, String dIp, DeviceInfo sInfo) { - DeviceId id = sInfo.deviceId(); - Map tnlMap = store.getTunnelInfo(); - int count = 0; - if (tnlMap.containsKey(id)) { - count = tnlMap.get(id); - } - String tnlName = createTunnel(sIp, dIp); - sInfo.addTnlName(tnlName); - store.addTunnelInfo(id, count + 1); - TunnelInfo tnl = new TunnelInfo(dIp, tnlName, vpnName, id.toString()); - configureDevTnl(sInfo, tnl, tnlMap); - } - - /** - * Creates tunnel between source ip address and destination ip address - * with pce service. - * - * @param srcIp source ip address - * @param desIp destination ip address - * @return tunnel name - */ - private String createTunnel(String srcIp, String desIp) { - Iterable devices = devSvc.getAvailableDevices(); - DeviceId srcDevId = getId(srcIp, false, devices); - DeviceId desDevId = getId(desIp, false, devices); - String name = getNewName(); - boolean isCreated = pceSvc.setupPath(srcDevId, desDevId, name, - null, WITH_SIGNALLING); - if (!isCreated) { - throw new NetL3VpnException("Tunnel is not created between " + - srcDevId.toString() + " and " + - desDevId.toString()); - } - return name; - } - - /** - * Returns a unique name for tunnel to be created. - * - * @return unique tunnel name - */ - private String getNewName() { - return NEW_NAME + String.valueOf(tnlIdGen.getNewId()); - } - - /** - * Configures the created tunnel to the device by processing it at the - * proper level and sending it to the driver. - * - * @param info source device info - * @param tnlInfo tunnel info - * @param tnlMap store tunnel map - */ - private void configureDevTnl(DeviceInfo info, TunnelInfo tnlInfo, - Map tnlMap) { - DeviceId id = info.deviceId(); - int count = 0; - if (tnlMap.containsKey(id)) { - count = tnlMap.get(id); - } - if (tnlMap.size() == 0) { - tnlInfo.level(DEVICES); - } else if (count == 0) { - tnlInfo.level(DEVICE); - } - - if (tnlInfo.level() != null) { - ModelObjectData mod = info.processCreateTnlDev(driSvc, tnlInfo); - addDataNodeToStore(mod); - tnlInfo.level(TNL_M); - tnlPolToStore(info, tnlInfo); - } - if (!info.isTnlPolCreated()) { - tnlInfo.level(TNL_POL); - tnlPolToStore(info, tnlInfo); - } - if (tnlInfo.level() == null) { - tnlInfo.level(TP_HOP); - } - - ModelObjectData tnlMod = info.processCreateTnl(driSvc, tnlInfo); - addDataNodeToStore(tnlMod); - if (tnlInfo.level() != TP_HOP) { - ModelObjectData mod = info.processBindTnl(driSvc, tnlInfo); - addDataNodeToStore(mod); - } - } - - /** - * Adds data node to the store after converting it to the resource data. - * - * @param driMod driver model object data - */ - private void addDataNodeToStore(ModelObjectData driMod) { - ResourceData resData = modelCon.createDataNode(driMod); - addToStore(resData); - } - - /** - * Adds resource data to the store. - * - * @param resData resource data - */ - private void addToStore(ResourceData resData) { - if (resData != null && resData.dataNodes() != null) { - List dataNodes = resData.dataNodes(); - for (DataNode node : dataNodes) { - configSvc.createNode(resData.resourceId(), node); - } - } - } - - /** - * Creates tunnel policy from driver and adds it to the store. - * - * @param info device info - * @param tnlInfo tunnel info - */ - private void tnlPolToStore(DeviceInfo info, TunnelInfo tnlInfo) { - ModelObjectData mod = info.processCreateTnlPol(driSvc, tnlInfo); - addDataNodeToStore(mod); - info.setTnlPolCreated(true); - } - - /** - * Deletes the tunnel with the source tunnel info and VPN name. - * //FIXME: PCE does'nt have api, which can give tunnel by providing the - * tunnel name. - * - * @param info device info - * @param vName VPN name - */ - public void deleteTunnel(DeviceInfo info, String vName) { - List tnlNames = info.tnlNames(); - for (String tnlName : tnlNames) { - Iterable path = pceSvc.queryAllPath(); - for (Tunnel tnl : path) { - if (tnl.tunnelName().toString().equals(tnlName)) { - pceSvc.releasePath(tnl.tunnelId()); - break; - } - } - } - deleteFromDevice(info, vName); - } - - /** - * Deletes tunnel configuration from the device by updating various - * levels in the store. - * - * @param info device info - * @param vName VPN name - */ - private void deleteFromDevice(DeviceInfo info, String vName) { - Map map = store.getTunnelInfo(); - DeviceId id = info.deviceId(); - Integer count = map.get(id); - int tnlCount = info.tnlNames().size(); - int upCount = count - tnlCount; - ModelIdLevel level; - TunnelInfo tnlInfo = new TunnelInfo(null, null, vName, id.toString()); - if (upCount == 0) { - if (map.size() == 1) { - level = DEVICES; - } else { - level = DEVICE; - } - } else { - if (map.size() > 1) { - level = TNL_POL; - } else { - return; - } - } - tnlInfo.level(level); - ModelObjectData mod = info.processDeleteTnl(driSvc, tnlInfo); - deleteFromStore(mod); - info.tnlNames(null); - info.setTnlPolCreated(false); - if (upCount == 0) { - store.removeTunnelInfo(id); - } else { - store.addTunnelInfo(id, upCount); - } - } - - /** - * Deletes the data node from the store. - * - * @param mod driver model object data - */ - private void deleteFromStore(ModelObjectData mod) { - ResourceData resData = modelCon.createDataNode(mod); - if (resData != null) { - configSvc.deleteNode(resData.resourceId()); - } - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnUtil.java deleted file mode 100644 index 1fd03bd641..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnUtil.java +++ /dev/null @@ -1,567 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.l3vpn.netl3vpn.impl; - -import org.onosproject.l3vpn.netl3vpn.AccessInfo; -import org.onosproject.l3vpn.netl3vpn.BgpDriverInfo; -import org.onosproject.l3vpn.netl3vpn.BgpInfo; -import org.onosproject.l3vpn.netl3vpn.InterfaceInfo; -import org.onosproject.l3vpn.netl3vpn.NetL3VpnException; -import org.onosproject.l3vpn.netl3vpn.VpnType; -import org.onosproject.net.DeviceId; -import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces.devices.device.Interfaces; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.DefaultL3VpnSvc; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.SiteRole; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.DefaultSites; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.DefaultDevices; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.Devices; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.DefaultDevice; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.Device; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.DeviceKeys; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.ietfnetworkinstance.devices.device.NetworkInstances; -import org.onosproject.yang.model.DataNode; -import org.onosproject.yang.model.DefaultModelObjectData; -import org.onosproject.yang.model.DefaultResourceData; -import org.onosproject.yang.model.InnerModelObject; -import org.onosproject.yang.model.ModelObjectData; -import org.onosproject.yang.model.ModelObjectId; -import org.onosproject.yang.model.ResourceData; -import org.onosproject.yang.model.ResourceId; - -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.DEVICE; -import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.DEVICES; -import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.ROOT; -import static org.onosproject.l3vpn.netl3vpn.ModelIdLevel.VPN; -import static org.onosproject.l3vpn.netl3vpn.VpnType.ANY_TO_ANY; -import static org.onosproject.l3vpn.netl3vpn.VpnType.HUB; -import static org.onosproject.l3vpn.netl3vpn.VpnType.SPOKE; - -/** - * Representation of utility for YANG tree builder. - */ -public final class NetL3VpnUtil { - - /** - * Error message for site VPN name being not present in global VPN. - */ - static final String SITE_VPN_MISMATCH = "Site VPN instance name did not " + - "match any of the global VPN names"; - - /** - * Error message for VPN attachment object being null. - */ - static final String VPN_ATTACHMENT_NULL = "The VPN attachment information" + - " cannot be null"; - - /** - * Error message for VPN policy being not supported. - */ - static final String VPN_POLICY_NOT_SUPPORTED = "VPN policy implementation" + - " is not supported."; - - /** - * Static constant value for hundred. - */ - static final String CONS_HUNDRED = "100:"; - - /** - * Error message for site role being not present in site network access. - */ - static final String SITE_ROLE_NULL = "There must be a site role available" + - " for the VPN in site network access."; - - /** - * Error message for bearer object information being null. - */ - static final String BEARER_NULL = "The bearer information of the access " + - "is not available"; - - /** - * Error message for requested type or ip connect being null. - */ - static final String IP_INT_INFO_NULL = "The required information of " + - "request type or ip connection is not available"; - - /** - * Error message for device info being not available from augment. - */ - static final String DEVICE_INFO_NULL = "Bearer of site does not have any " + - "device information in the augment info."; - - /** - * Static constant value for ip address. - */ - static final String IP = "ipaddress"; - - /** - * Static constant value for lsr id. - */ - static final String LSR_ID = "lsrId"; - - /** - * Error message for VPN type being not supported. - */ - static final String VPN_TYPE_UNSUPPORTED = "The VPN type is not supported"; - - /** - * Error message when the generated ID has crossed the limit. - */ - static final String ID_LIMIT_EXCEEDED = "The ID generation has got " + - "exceeded"; - - /** - * Static constant value ID management limit. - */ - static final Long ID_LIMIT = 4294967295L; - - /** - * Error message for interface information being not available. - */ - static final String INT_INFO_NULL = "Requested type does not have any " + - "interface information in the augment info."; - - /** - * Static constant value of port name. - */ - static final String PORT_NAME = "portName"; - - /** - * Static constants to use with accumulator for maximum number of events. - */ - static final int MAX_EVENTS = 1000; - - /** - * Static constants to use with accumulator for maximum number of millis. - */ - static final int MAX_BATCH_MS = 5000; - - /** - * Static constants to use with accumulator for maximum number of idle - * millis. - */ - static final int MAX_IDLE_MS = 1000; - - /** - * Static constants for timer name. - */ - static final String TIMER = "dynamic-config-l3vpn-timer"; - - /** - * Error message for unknown event being occurred. - */ - static final String UNKNOWN_EVENT = "NetL3VPN listener: unknown event: {}"; - - /** - * Error message for event being null. - */ - static final String EVENT_NULL = "Event cannot be null"; - - /** - * Unique tunnel name for net-l3VPN. - */ - static final String NEW_NAME = "onos-netl3vpn"; - - private static final String SITE_ROLE_INVALID = "The given site role is " + - "invalid"; - private static final String ANY_TO_ANY_ROLE = "AnyToAnyRole"; - private static final String HUB_ROLE = "HubRole"; - private static final String SPOKE_ROLE = "SpokeRole"; - private static final String COLON = ":"; - - // No instantiation. - private NetL3VpnUtil() { - } - - /** - * Returns the model object id for service L3VPN container. - * - * @return model object id - */ - static ModelObjectId getModIdForL3VpnSvc() { - return ModelObjectId.builder().addChild(DefaultL3VpnSvc.class).build(); - } - - /** - * Returns the model object id for service sites container. - * - * @return model object id - */ - static ModelObjectId getModIdForSites() { - return ModelObjectId.builder().addChild(DefaultL3VpnSvc.class) - .addChild(DefaultSites.class).build(); - } - - /** - * Returns the resource data from the data node and the resource id. - * - * @param dataNode data node - * @param resId resource id - * @return resource data - */ - static ResourceData getResourceData(DataNode dataNode, ResourceId resId) { - return DefaultResourceData.builder().addDataNode(dataNode) - .resourceId(resId).build(); - } - - /** - * Returns the VPN role from the service site role. - * - * @param siteRole service site role - * @return VPN type - */ - static VpnType getRole(Class siteRole) { - switch (siteRole.getSimpleName()) { - case ANY_TO_ANY_ROLE: - return ANY_TO_ANY; - - case HUB_ROLE: - return HUB; - - case SPOKE_ROLE: - return SPOKE; - - default: - throw new NetL3VpnException(SITE_ROLE_INVALID); - } - } - - /** - * Returns error message for management ip being unavailable in device. - * - * @param ip management ip - * @return error message - */ - static String getMgmtIpUnAvailErr(String ip) { - return "The device with management ip " + ip + " is not available."; - } - - /** - * Returns true if device id present in the interface map; false otherwise. - * - * @param info interface map - * @param id device id - * @return true if device id available; false otherwise - */ - private static boolean isDevIdPresent(Map info, - String id) { - for (Map.Entry inter : info.entrySet()) { - InterfaceInfo interfaceInfo = inter.getValue(); - DeviceId devId = interfaceInfo.devInfo().deviceId(); - if (devId.toString().equals(id)) { - return true; - } - } - return false; - } - - /** - * Builds the device model VPN instance model object data, with respect to - * the device level. - * - * @param id device id - * @param ins VPN instance - * @return model object data, with device level - */ - private static ModelObjectData buildInsModDataDevice(String id, - NetworkInstances ins) { - DeviceKeys devKeys = new DeviceKeys(); - devKeys.deviceid(id); - ModelObjectId modelId = ModelObjectId.builder() - .addChild(DefaultDevices.class) - .addChild(DefaultDevice.class, devKeys) - .build(); - return DefaultModelObjectData.builder().identifier(modelId) - .addModelObject((InnerModelObject) ins).build(); - } - - /** - * Builds the device model VPN instance model object data, with respect to - * the devices level. - * - * @param id device id - * @param ins VPN instance - * @return model object data, with devices level - */ - private static ModelObjectData buildInsModDataDevices(String id, - NetworkInstances ins) { - ModelObjectId modelId = ModelObjectId.builder() - .addChild(DefaultDevices.class).build(); - Device device = new DefaultDevice(); - device.deviceid(id); - device.networkInstances(ins); - return DefaultModelObjectData.builder().identifier(modelId) - .addModelObject((InnerModelObject) device).build(); - } - - /** - * Builds the device model VPN instance model object data, with respect to - * root level. - * - * @param id device id - * @param ins VPN instance - * @return model object data, with root level - */ - private static ModelObjectData buildInsModDataRoot(String id, - NetworkInstances ins) { - Devices devices = new DefaultDevices(); - Device device = new DefaultDevice(); - List deviceList = new LinkedList<>(); - device.deviceid(id); - device.networkInstances(ins); - deviceList.add(device); - devices.device(deviceList); - return DefaultModelObjectData.builder() - .addModelObject((InnerModelObject) devices).build(); - } - - /** - * Builds the device model interface model object data, with respect to - * device level. - * - * @param id device id - * @param ifs interface object - * @return model object data, with device level - */ - private static ModelObjectData buildIntModDataDevice(String id, - Interfaces ifs) { - org.onosproject.yang.gen.v1.ietfinterfaces - .rev20140508.ietfinterfaces.devices.DeviceKeys keys = new org. - onosproject.yang.gen.v1.ietfinterfaces.rev20140508 - .ietfinterfaces.devices.DeviceKeys(); - keys.deviceid(id); - ModelObjectId modelId = ModelObjectId.builder() - .addChild(org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508 - .ietfinterfaces.DefaultDevices.class) - .addChild(org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508 - .ietfinterfaces.devices.DefaultDevice.class, - keys) - .build(); - return DefaultModelObjectData.builder().identifier(modelId) - .addModelObject((InnerModelObject) ifs).build(); - } - - /** - * Returns the VPN instance create model object data. - * - * @param intMap interface map - * @param instances VPN instances - * @param id device id - * @return VPN instance model object data - */ - static ModelObjectData getVpnCreateModObj(Map intMap, - NetworkInstances instances, - String id) { - ModelObjectData modData; - boolean devAdded = isDevIdPresent(intMap, id); - if (devAdded) { - modData = buildInsModDataDevice(id, instances); - } else if (intMap.size() != 0) { - modData = buildInsModDataDevices(id, instances); - } else { - modData = buildInsModDataRoot(id, instances); - } - return modData; - } - - /** - * Returns error message for interface being unavailable in device. - * - * @param intName interface name - * @return error message - */ - static String getIntNotAvailable(String intName) { - return "The interface " + intName + " is not available."; - } - - /** - * Returns the interface create model object data. - * - * @param ifNames interfaces - * @param ifs interface instance - * @param id device id - * @return interface model object data - */ - static ModelObjectData getIntCreateModObj(List ifNames, - Interfaces ifs, String id) { - ModelObjectData modData; - if (ifNames.size() > 1) { - modData = buildIntModDataDevice(id, ifs); - } else { - modData = buildIntModDataRoot(id, ifs); - } - return modData; - } - - /** - * Builds the device model interface model object data, with respect to - * root level. - * - * @param id device id - * @param ifs interface object - * @return model object data, with root level - */ - private static ModelObjectData buildIntModDataRoot(String id, - Interfaces ifs) { - org.onosproject.yang.gen.v1.ietfinterfaces - .rev20140508.ietfinterfaces.Devices devices = new org - .onosproject.yang.gen.v1.ietfinterfaces.rev20140508 - .ietfinterfaces.DefaultDevices(); - org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.ietfinterfaces. - devices.Device device = new org.onosproject.yang.gen.v1. - ietfinterfaces.rev20140508.ietfinterfaces.devices.DefaultDevice(); - List deviceList = new LinkedList<>(); - - device.deviceid(id); - device.interfaces(ifs); - deviceList.add(device); - devices.device(deviceList); - return DefaultModelObjectData.builder() - .addModelObject((InnerModelObject) devices).build(); - } - - /** - * Returns the BGP create driver info. - * - * @param bgpMap BGP map - * @param id device id - * @param devBgp device BGP info - * @param intBgp interface BGP info - * @return BGP driver config - */ - static BgpDriverInfo getBgpCreateConfigObj(Map bgpMap, - String id, BgpInfo devBgp, - BgpInfo intBgp) { - boolean isDevIdPresent = isDevIdBgpPresent(bgpMap, id); - BgpDriverInfo info; - if (devBgp != intBgp) { - //TODO: With ipv6 BGP it has to be changed - info = new BgpDriverInfo(VPN, id); - } else if (isDevIdPresent) { - info = new BgpDriverInfo(DEVICE, id); - } else if (bgpMap.size() != 0) { - info = new BgpDriverInfo(DEVICES, id); - } else { - info = new BgpDriverInfo(ROOT, id); - } - return info; - } - - /** - * Returns true if the device is present in the BGP map; false otherwise. - * - * @param bgpMap BGP map - * @param id device id - * @return true if device is present; false otherwise - */ - private static boolean isDevIdBgpPresent(Map bgpMap, - String id) { - for (Map.Entry info : bgpMap.entrySet()) { - DeviceId devId = info.getValue(); - if (devId.toString().equals(id)) { - return true; - } - } - return false; - } - - /** - * Returns the model object data for VPN instance deletion. - * - * @param intMap interface map - * @param ins VPN instance - * @param id device id - * @return model object data - */ - static ModelObjectData getVpnDelModObj(Map intMap, - NetworkInstances ins, - String id) { - boolean isDevIdPresent = isDevIdPresent(intMap, id); - ModelObjectData modData; - if (intMap.size() == 0) { - modData = buildInsModDataRoot(id, ins); - } else if (isDevIdPresent) { - modData = buildInsModDataDevice(id, ins); - } else { - modData = buildInsModDataDevices(id, ins); - } - return modData; - } - - /** - * Returns the BGP driver info for VPN BGP instance deletion. - * - * @param bgpMap BGP map - * @param id device id - * @return BGP driver info - */ - static BgpDriverInfo getVpnBgpDelModObj(Map bgpMap, - String id) { - boolean isDevIdPresent = isDevIdBgpPresent(bgpMap, id); - BgpDriverInfo driInfo; - if (bgpMap.size() == 0) { - driInfo = new BgpDriverInfo(ROOT, id); - } else if (isDevIdPresent) { - driInfo = new BgpDriverInfo(DEVICE, id); - } else { - driInfo = new BgpDriverInfo(DEVICES, id); - } - return driInfo; - } - - /** - * Returns the device id whose management ip address or lsr ID matches with - * the ip or lsr ID received respectively. - * - * @param ip value of ip or lsr id - * @param isIp if ip or lsr id - * @param devices available devices - * @return device id - */ - static DeviceId getId(String ip, boolean isIp, - Iterable devices) { - for (org.onosproject.net.Device device : devices) { - String val; - if (isIp) { - val = device.annotations().value(IP); - } else { - val = device.annotations().value(LSR_ID); - } - if (ip.equals(val)) { - return device.id(); - } - } - throw new NetL3VpnException(getMgmtIpUnAvailErr(ip)); - } - - /** - * Returns ip address from the device id by parsing. - * - * @param devId device id - * @return ip address - */ - static String getIpFromDevId(DeviceId devId) { - String devKey = devId.toString(); - int firstInd = devKey.indexOf(COLON); - int secInd = devKey.indexOf(COLON, firstInd + 1); - return devKey.substring(firstInd + 1, secInd); - } -} diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/package-info.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/package-info.java deleted file mode 100644 index 68e99ec427..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * The implementations of IETF NET l3VPN manager and store. - */ -package org.onosproject.l3vpn.netl3vpn.impl; diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java deleted file mode 100644 index f270fcd3b6..0000000000 --- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * The IETF NET l3VPN YANG application. - */ -package org.onosproject.l3vpn.netl3vpn; diff --git a/apps/pce/app/BUILD b/apps/pce/app/BUILD deleted file mode 100644 index 9c2d1070ff..0000000000 --- a/apps/pce/app/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + CLI + REST + [ - "//core/store/serializers:onos-core-serializers", - "//apps/tunnel/api:onos-apps-tunnel-api", - "//apps/pcep-api:onos-apps-pcep-api", - "//apps/pce/bandwidthmgmt:onos-apps-pce-bandwidthmgmt", -] - -TEST_DEPS = TEST_REST + [ - "//apps/tunnel/api:onos-apps-tunnel-api-tests", -] - -osgi_jar_with_tests( - karaf_command_packages = ["org.onosproject.pce.cli"], - test_deps = TEST_DEPS, - deps = COMPILE_DEPS, -) - -onos_app( - app_name = "org.onosproject.pce.app", - category = "default", - description = "PCE as centeral controller App.", - title = "PCE", - url = "http://onosproject.org", -) diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeleteLoadBalancingPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeleteLoadBalancingPathCommand.java deleted file mode 100644 index fd8a3cb8ac..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeleteLoadBalancingPathCommand.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.cli; - -import static org.slf4j.LoggerFactory.getLogger; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; - -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.pce.pceservice.api.PceService; - -import org.slf4j.Logger; - -/** - * Supports deleting pce load balancing path. - */ -@Service -@Command(scope = "onos", name = "pce-delete-load-balancing-path", - description = "Supports deleting pce load balancing path.") -public class PceDeleteLoadBalancingPathCommand extends AbstractShellCommand { - private final Logger log = getLogger(getClass()); - - @Argument(index = 0, name = "name", description = "load balancing path name", required = true, - multiValued = false) - String name = null; - - @Override - protected void doExecute() { - log.info("executing pce-delete-load-balancing-path"); - - PceService service = get(PceService.class); - - if (!service.releasePath(name)) { - error("Path deletion failed."); - return; - } - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeletePathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeletePathCommand.java deleted file mode 100644 index e4a6cccef9..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceDeletePathCommand.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.cli; - -import static org.slf4j.LoggerFactory.getLogger; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; - -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.pce.pceservice.api.PceService; - -import org.slf4j.Logger; - -/** - * Supports deleting pce path. - */ -@Service -@Command(scope = "onos", name = "pce-delete-path", description = "Supports deleting pce path.") -public class PceDeletePathCommand extends AbstractShellCommand { - private final Logger log = getLogger(getClass()); - - @Argument(index = 0, name = "id", description = "Path Id.", required = true, multiValued = false) - String id = null; - - @Override - protected void doExecute() { - log.info("executing pce-delete-path"); - - PceService service = get(PceService.class); - - if (!service.releasePath(TunnelId.valueOf(id))) { - error("Path deletion failed."); - return; - } - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryLoadBalancingPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryLoadBalancingPathCommand.java deleted file mode 100644 index 686ea45faf..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryLoadBalancingPathCommand.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.cli; - -import static org.slf4j.LoggerFactory.getLogger; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; - -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.pce.pceservice.api.PceService; - -import org.slf4j.Logger; - -import java.util.List; - -/** - * Supports quering PCE load balanced path. - */ -@Service -@Command(scope = "onos", name = "pce-query-load-balancing-path", - description = "Supports querying PCE path.") -public class PceQueryLoadBalancingPathCommand extends AbstractShellCommand { - private final Logger log = getLogger(getClass()); - public static final String COST_TYPE = "costType"; - - @Argument(index = 0, name = "pathName", description = "load balencing path name", required = true, - multiValued = false) - String name = null; - - @Override - protected void doExecute() { - log.info("executing pce-query-load-balancing-path"); - - PceService service = get(PceService.class); - - if (name == null) { - print("Path name is mandatory"); - return; - } - - List tunnelIds = service.queryLoadBalancingPath(name); - if (tunnelIds == null || tunnelIds.isEmpty()) { - print("Release path failed"); - return; - } - - for (TunnelId id : tunnelIds) { - Tunnel tunnel = service.queryPath(id); - if (tunnel == null) { - print("Path doesnot exists"); - return; - } - display(tunnel); - } - } - - /** - * Display tunnel information on the terminal. - * - * @param tunnel pce tunnel - */ - void display(Tunnel tunnel) { - - print("\npath-id : %s \n" + - "source : %s \n" + - "destination : %s \n" + - "path-type : %s \n" + - "symbolic-path-name : %s \n" + - "constraints: \n" + - " cost : %s \n" + - " bandwidth : %s", - tunnel.tunnelId().id(), tunnel.path().src().deviceId().toString(), - tunnel.path().dst().deviceId().toString(), - tunnel.type().name(), tunnel.tunnelName(), tunnel.annotations().value(COST_TYPE), - tunnel.annotations().value(AnnotationKeys.BANDWIDTH)); - print("Path : %s", tunnel.path().toString()); - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java deleted file mode 100644 index 5edb675673..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceQueryPathCommand.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.cli; - -import static org.slf4j.LoggerFactory.getLogger; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; - -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pceservice.api.PceService; - -import org.slf4j.Logger; - -import java.util.List; - -/** - * Supports quering PCE path. - */ -@Service -@Command(scope = "onos", name = "pce-query-path", - description = "Supports querying PCE path.") -public class PceQueryPathCommand extends AbstractShellCommand { - private final Logger log = getLogger(getClass()); - public static final String COST_TYPE = "costType"; - - @Option(name = "-i", aliases = "--id", description = "path-id", required = false, - multiValued = false) - String id = null; - - @Override - protected void doExecute() { - log.info("executing pce-query-path"); - - PceService service = get(PceService.class); - if (null == id) { - Iterable tunnels = service.queryAllPath(); - if (tunnels != null) { - for (final Tunnel tunnel : tunnels) { - display(tunnel); - } - } else { - print("No path is found."); - return; - } - } else { - Tunnel tunnel = service.queryPath(TunnelId.valueOf(id)); - if (tunnel == null) { - print("Path doesnot exists."); - return; - } - display(tunnel); - } - } - - /** - * Display tunnel information on the terminal. - * - * @param tunnel pce tunnel - */ - void display(Tunnel tunnel) { - List explicitPathInfoList = AbstractShellCommand.get(PceService.class) - .explicitPathInfoList(tunnel.tunnelName().value()); - - print("\npath-id : %s \n" + - "source : %s \n" + - "destination : %s \n" + - "path-type : %s \n" + - "symbolic-path-name : %s \n" + - "constraints: \n" + - " cost : %s \n" + - " bandwidth : %s", - tunnel.tunnelId().id(), tunnel.path().src().deviceId().toString(), - tunnel.path().dst().deviceId().toString(), - tunnel.type().name(), tunnel.tunnelName(), tunnel.annotations().value(COST_TYPE), - tunnel.annotations().value(AnnotationKeys.BANDWIDTH)); - if (explicitPathInfoList != null) { - for (ExplicitPathInfo e : explicitPathInfoList) { - print("explicitPathObjects : \n" + - " type : %s \n" + - " value : %s ", - String.valueOf(e.type().type()), e.value().toString()); - } - } - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java deleted file mode 100644 index 253a166372..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceSetupPathCommand.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.cli; - -import static org.onosproject.net.Link.State.ACTIVE; -import static org.onosproject.net.Link.Type.DIRECT; -import static org.slf4j.LoggerFactory.getLogger; - -import java.util.Collection; -import java.util.List; -import java.util.LinkedList; - -import com.google.common.collect.Lists; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onlab.util.DataRateUnit; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DeviceId; -import org.onosproject.net.NetworkResource; -import org.onosproject.net.PortNumber; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pceservice.constraint.CostConstraint; -import org.onosproject.pce.pceservice.LspType; -import org.onosproject.pce.pceservice.api.PceService; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; -import org.slf4j.Logger; - -/** - * Supports creating the pce path. - */ -@Service -@Command(scope = "onos", name = "pce-setup-path", description = "Supports creating pce path.") -public class PceSetupPathCommand extends AbstractShellCommand { - private final Logger log = getLogger(getClass()); - public static final byte SUBTYPE_DEVICEID = 0; - public static final byte SUBTYPE_LINK = 1; - public static final byte SUBTYPE_INDEX = 1; - public static final byte TYPE_INDEX = 0; - - public static final byte DEVICEID_INDEX = 2; - public static final byte SOURCE_DEVICEID_INDEX = 2; - public static final byte SOURCE_PORTNO_INDEX = 3; - public static final byte DESTINATION_DEVICEID_INDEX = 4; - public static final byte DESTINATION_PORTNO_INDEX = 5; - - @Argument(index = 0, name = "src", description = "source device.", required = true, multiValued = false) - String src = null; - - @Argument(index = 1, name = "dst", description = "destination device.", required = true, multiValued = false) - String dst = null; - - @Argument(index = 2, name = "type", description = "LSP type:" + " It includes " - + "PCE tunnel with signalling in network (0), " - + "PCE tunnel without signalling in network with segment routing (1), " - + "PCE tunnel without signalling in network (2).", - required = true, multiValued = false) - int type = 0; - - @Argument(index = 3, name = "name", description = "symbolic-path-name.", required = true, multiValued = false) - String name = null; - - @Option(name = "-c", aliases = "--cost", description = "The cost attribute IGP cost(1) or TE cost(2)", - required = false, multiValued = false) - int cost = 2; - - @Option(name = "-b", aliases = "--bandwidth", description = "The bandwidth attribute of path. " - + "Data rate unit is in BPS.", required = false, multiValued = false) - double bandwidth = 0.0; - - @Option(name = "-e", aliases = "--explicitPathObjects", description = "List of strict and loose hopes" - + " explicitPathInfo format : Type/SubType/Value(DeviceId or Link info)\n" + - " If Value is Device : Type/SubType/deviceId\n" + - " If Value is Link : Type/SubType/SourceDeviceId/SourcePortNo/DestinationDeviceId/DestinationPortNo" + - "Type 0 - strict, 1 - loose \n" + "SubType 0 - deviceId, 1 - link \n", - required = false, multiValued = true) - String[] explicitPathInfoStrings; - - @Option(name = "-l", aliases = "--loadBalancing", description = "The load balancing option for user. ", - required = false, multiValued = false) - boolean loadBalancing = false; - - //explicitPathInfo format : Type/SubType/Value(DeviceId or Link info) - //If Value is Device : Type/SubType/deviceId - //If Value is Link : Type/SubType/SourceDeviceId/SourcePortNo/DestinationDeviceId/DestinationPortNo - List explicitPathInfo = Lists.newLinkedList(); - - @Override - protected void doExecute() { - log.info("executing pce-setup-path"); - - PceService service = get(PceService.class); - TunnelService tunnelService = get(TunnelService.class); - - DeviceId srcDevice = DeviceId.deviceId(src); - DeviceId dstDevice = DeviceId.deviceId(dst); - List listConstrnt = new LinkedList<>(); - - // LSP type validation - if ((type < 0) || (type > 2)) { - error("The LSP type value can be PCE tunnel with signalling in network (0), " + - "PCE tunnel without signalling in network with segment routing (1), " + - "PCE tunnel without signalling in network (2)."); - return; - } - LspType lspType = LspType.values()[type]; - - //Validating tunnel name, duplicated tunnel names not allowed - Collection existingTunnels = tunnelService.queryTunnel(Tunnel.Type.MPLS); - for (Tunnel t : existingTunnels) { - if (t.tunnelName().toString().equals(name)) { - error("Path creation failed, Tunnel name already exists"); - return; - } - } - - // Add bandwidth - // bandwidth default data rate unit is in BPS - if (bandwidth != 0.0) { - listConstrnt.add(PceBandwidthConstraint.of(bandwidth, DataRateUnit.valueOf("BPS"))); - } - - // Add cost - // Cost validation - if ((cost < 1) || (cost > 2)) { - error("The cost attribute value either IGP cost(1) or TE cost(2)."); - return; - } - // Here 'cost - 1' indicates the index of enum - CostConstraint.Type costType = CostConstraint.Type.values()[cost - 1]; - listConstrnt.add(CostConstraint.of(costType)); - - if (explicitPathInfoStrings != null) { - for (String str : explicitPathInfoStrings) { - String[] splitted = str.split("/"); - DeviceId deviceId; - NetworkResource res = null; - PortNumber portNo; - int explicitPathType = Integer.parseInt(splitted[TYPE_INDEX]); - if ((explicitPathType < 0) || (explicitPathType > 1)) { - error("Explicit path validation failed"); - return; - } - - //subtype 0 = deviceId, 1 = link - //subtype is required to store either as deviceId or Link - if (splitted[DEVICEID_INDEX] != null && Integer.parseInt(splitted[SUBTYPE_INDEX]) == SUBTYPE_DEVICEID) { - res = DeviceId.deviceId(splitted[DEVICEID_INDEX]); - } else if (Integer.parseInt(splitted[SUBTYPE_INDEX]) == SUBTYPE_LINK - && splitted[SOURCE_DEVICEID_INDEX] != null - && splitted[SOURCE_PORTNO_INDEX] != null - && splitted[DESTINATION_DEVICEID_INDEX] != null - && splitted[DESTINATION_PORTNO_INDEX] != null) { - - deviceId = DeviceId.deviceId(splitted[SOURCE_DEVICEID_INDEX]); - portNo = PortNumber.portNumber(splitted[SOURCE_PORTNO_INDEX]); - ConnectPoint cpSrc = new ConnectPoint(deviceId, portNo); - deviceId = DeviceId.deviceId(splitted[DESTINATION_DEVICEID_INDEX]); - portNo = PortNumber.portNumber(splitted[DESTINATION_PORTNO_INDEX]); - ConnectPoint cpDst = new ConnectPoint(deviceId, portNo); - res = DefaultLink.builder() - .providerId(ProviderId.NONE) - .src(cpSrc) - .dst(cpDst) - .type(DIRECT) - .state(ACTIVE) - .build(); - } else { - error("Explicit path validation failed"); - return; - } - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.values()[explicitPathType], res); - explicitPathInfo.add(obj); - } - } - - //with load balancing option - if (loadBalancing) { - if (!service.setupPath(srcDevice, dstDevice, name, listConstrnt, lspType, loadBalancing)) { - error("Path creation failed."); - } - return; - } - - if (!service.setupPath(srcDevice, dstDevice, name, listConstrnt, lspType, explicitPathInfo)) { - error("Path creation failed."); - } - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceUpdatePathCommand.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceUpdatePathCommand.java deleted file mode 100644 index 96796b5f09..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/PceUpdatePathCommand.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.cli; - -import static org.slf4j.LoggerFactory.getLogger; - -import java.util.List; -import java.util.LinkedList; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; - -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onlab.util.DataRateUnit; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; -import org.onosproject.net.intent.Constraint; -import org.onosproject.pce.pceservice.constraint.CostConstraint; -import org.onosproject.pce.pceservice.api.PceService; - -import org.slf4j.Logger; - -/** - * Supports updating the PCE path. - */ -@Service -@Command(scope = "onos", name = "pce-update-path", - description = "Supports updating PCE path.") -public class PceUpdatePathCommand extends AbstractShellCommand { - private final Logger log = getLogger(getClass()); - - @Argument(index = 0, name = "id", description = "Path Id.", required = true, multiValued = false) - String id = null; - - @Option(name = "-c", aliases = "--cost", description = "The cost attribute IGP cost (1) or TE cost (2).", - required = false, multiValued = false) - Integer cost = null; - - @Option(name = "-b", aliases = "--bandwidth", description = "The bandwidth attribute of path. " - + "Data rate unit is in Bps.", required = false, multiValued = false) - Double bandwidth = null; - - @Override - protected void doExecute() { - log.info("executing pce-update-path"); - - PceService service = get(PceService.class); - - List constrntList = new LinkedList<>(); - // Assign bandwidth. Data rate unit is in Bps. - if (bandwidth != null) { - constrntList.add(PceBandwidthConstraint.of(Double.valueOf(bandwidth), DataRateUnit.valueOf("BPS"))); - } - - // Cost validation - if (cost != null) { - if ((cost < 1) || (cost > 2)) { - error("The cost attribute value is either IGP cost(1) or TE cost(2)."); - return; - } - CostConstraint.Type costType = CostConstraint.Type.values()[cost - 1]; - constrntList.add(CostConstraint.of(costType)); - } - - if (!service.updatePath(TunnelId.valueOf(id), constrntList)) { - error("Path updation failed."); - return; - } - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/cli/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/cli/package-info.java deleted file mode 100644 index 7054cfae40..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/cli/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCE path console command-line extensions. - */ -package org.onosproject.pce.cli; diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/DefaultPcePath.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/DefaultPcePath.java deleted file mode 100644 index 404db253a2..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/DefaultPcePath.java +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pce.pceservice; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Collection; -import java.util.List; -import java.util.Objects; - -import org.onlab.rest.BaseResource; -import org.onlab.util.DataRateUnit; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.net.intent.Constraint; -import org.onosproject.pce.pceservice.constraint.CostConstraint; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; - -/** - * Implementation of an entity which provides functionalities of pce path. - */ -public final class DefaultPcePath implements PcePath { - - private TunnelId id; // path id - private String source; // Ingress - private String destination; // Egress - private LspType lspType; // LSP type - private String name; // symbolic-path-name - private Constraint costConstraint; // cost constraint - private Constraint bandwidthConstraint; // bandwidth constraint - private Collection explicitPathInfo; //list of explicit path info - - /** - * Initializes PCE path attributes. - * - * @param id path id - * @param src ingress - * @param dst egress - * @param lspType LSP type - * @param name symbolic-path-name - * @param costConstrnt cost constraint - * @param bandwidthConstrnt bandwidth constraint - * @param explicitPathInfo list of explicit path info - */ - private DefaultPcePath(TunnelId id, String src, String dst, LspType lspType, - String name, Constraint costConstrnt, Constraint bandwidthConstrnt, - Collection explicitPathInfo) { - this.id = id; - this.source = src; - this.destination = dst; - this.lspType = lspType; - this.name = name; - this.costConstraint = costConstrnt; - this.bandwidthConstraint = bandwidthConstrnt; - this.explicitPathInfo = explicitPathInfo; - } - - @Override - public TunnelId id() { - return id; - } - - @Override - public void id(TunnelId id) { - this.id = id; - } - - @Override - public String source() { - return source; - } - - @Override - public void source(String src) { - this.source = src; - } - - @Override - public String destination() { - return destination; - } - - @Override - public void destination(String dst) { - this.destination = dst; - } - - @Override - public LspType lspType() { - return lspType; - } - - @Override - public String name() { - return name; - } - - @Override - public Constraint costConstraint() { - return costConstraint; - } - - @Override - public Constraint bandwidthConstraint() { - return bandwidthConstraint; - } - - @Override - public Collection explicitPathInfo() { - return explicitPathInfo; - } - - @Override - public PcePath copy(PcePath path) { - if (null != path.source()) { - this.source = path.source(); - } - if (null != path.destination()) { - this.destination = path.destination(); - } - - this.lspType = path.lspType(); - - if (null != path.name()) { - this.name = path.name(); - } - if (null != path.costConstraint()) { - this.costConstraint = path.costConstraint(); - } - if (null != path.bandwidthConstraint()) { - this.bandwidthConstraint = path.bandwidthConstraint(); - } - return this; - } - - @Override - public int hashCode() { - return Objects.hash(id, source, destination, lspType, name, costConstraint, bandwidthConstraint, - explicitPathInfo); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultPcePath) { - DefaultPcePath that = (DefaultPcePath) obj; - return Objects.equals(id, that.id) - && Objects.equals(source, that.source) - && Objects.equals(destination, that.destination) - && Objects.equals(lspType, that.lspType) - && Objects.equals(name, that.name) - && Objects.equals(costConstraint, that.costConstraint) - && Objects.equals(bandwidthConstraint, that.bandwidthConstraint) - && Objects.equals(explicitPathInfo, that.explicitPathInfo); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .omitNullValues() - .add("id", id()) - .add("source", source) - .add("destination", destination) - .add("lsptype", lspType) - .add("name", name) - .add("costConstraint", costConstraint) - .add("bandwidthConstraint", bandwidthConstraint) - .add("explicitPathInfo", explicitPathInfo) - .toString(); - } - - /** - * Creates an instance of the pce path builder. - * - * @return instance of builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder class for pce path. - */ - public static final class Builder extends BaseResource implements PcePath.Builder { - private TunnelId id; - private String source; - private String destination; - private LspType lspType; - private String name; - private Constraint costConstraint; - private Constraint bandwidthConstraint; - private Collection explicitPathInfo; - - @Override - public Builder id(String id) { - this.id = TunnelId.valueOf(id); - return this; - } - - @Override - public Builder source(String source) { - this.source = source; - return this; - } - - @Override - public Builder destination(String destination) { - this.destination = destination; - return this; - } - - @Override - public Builder lspType(String type) { - if (null != type) { - this.lspType = LspType.values()[Integer.valueOf(type)]; - } - return this; - } - - @Override - public Builder name(String name) { - this.name = name; - return this; - } - - @Override - public Builder costConstraint(String cost) { - this.costConstraint = CostConstraint.of(CostConstraint.Type.values()[Integer.valueOf(cost) - 1]); - return this; - } - - @Override - public Builder bandwidthConstraint(String bandwidth) { - this.bandwidthConstraint = PceBandwidthConstraint.of(Double.valueOf(bandwidth), DataRateUnit - .valueOf("BPS")); - return this; - } - - @Override - public Builder explicitPathInfo(Collection explicitPathInfo) { - this.explicitPathInfo = explicitPathInfo; - return this; - } - - @Override - public Builder of(Tunnel tunnel, List explicitPathInfoList) { - this.id = TunnelId.valueOf(tunnel.tunnelId().id()); - this.source = tunnel.path().src().deviceId().toString(); - this.destination = tunnel.path().dst().deviceId().toString(); - this.name = tunnel.tunnelName().toString(); - // LSP type - String lspType = tunnel.annotations().value(PcepAnnotationKeys.LSP_SIG_TYPE); - if (lspType != null) { - this.lspType = LspType.values()[LspType.valueOf(lspType).type()]; - } - - // Cost type - String costType = tunnel.annotations().value(PcepAnnotationKeys.COST_TYPE); - if (costType != null) { - this.costConstraint = CostConstraint.of(CostConstraint.Type.valueOf(costType)); - } - - // Bandwidth - String bandwidth = tunnel.annotations().value(PcepAnnotationKeys.BANDWIDTH); - if (bandwidth != null) { - this.bandwidthConstraint = PceBandwidthConstraint.of(Double.parseDouble(bandwidth), - DataRateUnit.valueOf("BPS")); - } - - // Explicit Path - if (explicitPathInfoList != null) { - this.explicitPathInfo = explicitPathInfoList; - } - - return this; - } - - @Override - public PcePath build() { - return new DefaultPcePath(id, source, destination, lspType, name, - costConstraint, bandwidthConstraint, explicitPathInfo); - } - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/ExplicitPathInfo.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/ExplicitPathInfo.java deleted file mode 100644 index fcf500612d..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/ExplicitPathInfo.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice; - -import org.onosproject.net.NetworkResource; - -import com.google.common.annotations.Beta; - -import java.util.Objects; - -/** - * Representation of explicit path info consists of contraints (strict / loose) to compute path. - */ -@Beta -public final class ExplicitPathInfo { - - private final Type type; - - //Can be Link or DeviceId - private final NetworkResource value; - - public enum Type { - /** - * Signifies that path includes strict node or link. - */ - STRICT(0), - - /** - * Signifies that path includes loose node or link. - */ - LOOSE(1); - - int value; - - /** - * Assign val with the value as the type. - * - * @param val type - */ - Type(int val) { - value = val; - } - - /** - * Returns value of type. - * - * @return type - */ - public byte type() { - return (byte) value; - } - } - - /** - * Creates instance of explicit path object. - * - * @param type specifies whether strict or loose node/link - * @param value specifies deviceId or link - */ - public ExplicitPathInfo(Type type, NetworkResource value) { - this.type = type; - this.value = value; - } - - /** - * Returns explicit path type. - * - * @return explicit path type as strict/loose - */ - public Type type() { - return type; - } - - /** - * Returns deviceId or link. - * - * @return deviceId or link - */ - public NetworkResource value() { - return value; - } - - @Override - public int hashCode() { - return Objects.hash(type, value); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ExplicitPathInfo) { - final ExplicitPathInfo other = (ExplicitPathInfo) obj; - return Objects.equals(this.type, other.type) - && Objects.equals(this.value, other.value); - } - return false; - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/LspType.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/LspType.java deleted file mode 100644 index 443e19ec9a..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/LspType.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pce.pceservice; - -/** - * Representation of LSP type. - */ -public enum LspType { - /** - * Signifies that path is created via signaling mode. - */ - WITH_SIGNALLING(0), - - /** - * Signifies that path is created via SR mode. - */ - SR_WITHOUT_SIGNALLING(1), - - /** - * Signifies that path is created via without signaling and without SR mode. - */ - WITHOUT_SIGNALLING_AND_WITHOUT_SR(2); - - int value; - - /** - * Assign val with the value as the LSP type. - * - * @param val LSP type - */ - LspType(int val) { - value = val; - } - - /** - * Returns value of LSP type. - * - * @return LSP type - */ - public byte type() { - return (byte) value; - } -} \ No newline at end of file diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java deleted file mode 100644 index d9a61f0b6b..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java +++ /dev/null @@ -1,1323 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; -import org.onlab.graph.ScalarWeight; -import org.onlab.graph.Weight; -import org.onlab.packet.IpAddress; -import org.onlab.util.Bandwidth; -import org.onosproject.bandwidthmgr.api.BandwidthMgmtService; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.core.IdGenerator; -import org.onosproject.incubator.net.tunnel.DefaultTunnel; -import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelEndPoint; -import org.onosproject.incubator.net.tunnel.TunnelEvent; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.incubator.net.tunnel.TunnelListener; -import org.onosproject.incubator.net.tunnel.TunnelName; -import org.onosproject.incubator.net.tunnel.TunnelService; -import org.onosproject.mastership.MastershipService; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DefaultAnnotations.Builder; -import org.onosproject.net.DefaultPath; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.DisjointPath; -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.NetworkResource; -import org.onosproject.net.Path; -import org.onosproject.net.config.ConfigFactory; -import org.onosproject.net.config.NetworkConfigRegistry; -import org.onosproject.net.config.NetworkConfigService; -import org.onosproject.net.config.basics.SubjectFactories; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.link.LinkEvent; -import org.onosproject.net.resource.Resource; -import org.onosproject.net.resource.ResourceAllocation; -import org.onosproject.net.topology.LinkWeigher; -import org.onosproject.net.topology.PathService; -import org.onosproject.net.topology.TopologyEdge; -import org.onosproject.net.topology.TopologyEvent; -import org.onosproject.net.topology.TopologyListener; -import org.onosproject.net.topology.TopologyService; -import org.onosproject.pce.pceservice.api.PceService; -import org.onosproject.pce.pceservice.constraint.CapabilityConstraint; -import org.onosproject.pce.pceservice.constraint.CapabilityConstraint.CapabilityType; -import org.onosproject.pce.pceservice.constraint.CostConstraint; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; -import org.onosproject.pce.pceservice.constraint.SharedBandwidthConstraint; -import org.onosproject.pce.pcestore.PcePathInfo; -import org.onosproject.pce.pcestore.api.PceStore; -import org.onosproject.pcep.api.DeviceCapability; -import org.onosproject.pcep.api.TeLinkConfig; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.DistributedSet; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.incubator.net.tunnel.Tunnel.State.INIT; -import static org.onosproject.incubator.net.tunnel.Tunnel.State.UNSTABLE; -import static org.onosproject.incubator.net.tunnel.Tunnel.Type.MPLS; -import static org.onosproject.pce.pceservice.LspType.WITH_SIGNALLING; -import static org.onosproject.pce.pceservice.PcepAnnotationKeys.BANDWIDTH; -import static org.onosproject.pce.pceservice.PcepAnnotationKeys.COST_TYPE; -import static org.onosproject.pce.pceservice.PcepAnnotationKeys.DELEGATE; -import static org.onosproject.pce.pceservice.PcepAnnotationKeys.LOCAL_LSP_ID; -import static org.onosproject.pce.pceservice.PcepAnnotationKeys.LSP_SIG_TYPE; -import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PCC_TUNNEL_ID; -import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PCE_INIT; -import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PLSP_ID; - -/** - * Implementation of PCE service. - */ -@Component(immediate = true, service = PceManager.class) -public class PceManager implements PceService { - private static final Logger log = LoggerFactory.getLogger(PceManager.class); - - public static final long GLOBAL_LABEL_SPACE_MIN = 4097; - public static final long GLOBAL_LABEL_SPACE_MAX = 5121; - public static final String PCE_SERVICE_APP = "org.onosproject.pce"; - private static final String LOCAL_LSP_ID_GEN_TOPIC = "pcep-local-lsp-id"; - public static final String DEVICE_TYPE = "type"; - public static final String L3_DEVICE = "L3"; - - private static final String LSRID = "lsrId"; - private static final String TRUE = "true"; - private static final String FALSE = "false"; - public static final int PCEP_PORT = 4189; - - private IdGenerator localLspIdIdGen; - protected DistributedSet localLspIdFreeList; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PathService pathService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PceStore pceStore; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TunnelService tunnelService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DeviceService deviceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected NetworkConfigService netCfgService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected MastershipService mastershipService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TopologyService topologyService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected BandwidthMgmtService bandwidthMgmtService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected NetworkConfigRegistry netConfigRegistry; - - private TunnelListener listener = new InnerTunnelListener(); - private ApplicationId appId; - - private final TopologyListener topologyListener = new InternalTopologyListener(); - public static final String LOAD_BALANCING_PATH_NAME = "loadBalancingPathName"; - - private List rsvpTunnelsWithLocalBw = new ArrayList<>(); - - private final ConfigFactory configFactory = - new ConfigFactory(SubjectFactories.LINK_SUBJECT_FACTORY, - TeLinkConfig.class, "teLinkConfig") { - @Override - public TeLinkConfig createConfig() { - return new TeLinkConfig(); - } - }; - - /** - * Creates new instance of PceManager. - */ - public PceManager() { - } - - @Activate - protected void activate() { - appId = coreService.registerApplication(PCE_SERVICE_APP); - - tunnelService.addListener(listener); - - localLspIdIdGen = coreService.getIdGenerator(LOCAL_LSP_ID_GEN_TOPIC); - localLspIdIdGen.getNewId(); // To prevent 0, the 1st value generated from being used in protocol. - localLspIdFreeList = storageService.setBuilder() - .withName("pcepLocalLspIdDeletedList") - .withSerializer(Serializer.using(KryoNamespaces.API)) - .build() - .asDistributedSet(); - - topologyService.addListener(topologyListener); - netConfigRegistry.registerConfigFactory(configFactory); - - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - tunnelService.removeListener(listener); - topologyService.removeListener(topologyListener); - netConfigRegistry.unregisterConfigFactory(configFactory); - - log.info("Stopped"); - } - - /** - * Returns an edge-weight capable of evaluating links on the basis of the - * specified constraints. - * - * @param constraints path constraints - * @return edge-weight function - */ - private LinkWeigher weight(List constraints) { - return new TeConstraintBasedLinkWeight(constraints); - } - - /** - * Computes a path between two devices. - * - * @param src ingress device - * @param dst egress device - * @param constraints path constraints - * @return computed path based on constraints - */ - protected Set computePath(DeviceId src, DeviceId dst, List constraints) { - if (pathService == null) { - return ImmutableSet.of(); - } - - Set paths = pathService.getPaths(src, dst, weight(constraints)); - log.info("paths in computePath ::" + paths); - if (!paths.isEmpty()) { - return paths; - } - return ImmutableSet.of(); - } - - //Computes the partial path from partial computed path to specified dst. - private List computePartialPath(List computedPath, DeviceId src, DeviceId dst, - List constraints) { - int size = computedPath.size(); - Path path = null; - DeviceId deviceId = size == 0 ? src : - computedPath.get(size - 1).dst().deviceId(); - - Set tempComputePath = computePath(deviceId, dst, constraints); - - if (tempComputePath.isEmpty()) { - return null; - } - - //if path validation fails return null - //Validate computed path to avoid loop in the path - for (Path p : tempComputePath) { - if (pathValidation(computedPath, p)) { - path = p; - break; - } - } - if (path == null) { - return null; - } - - //Store the partial path result in a list - computedPath.add(path); - return computedPath; - } - - private List createListOfDeviceIds(List list) { - List links = new LinkedList<>(); - if (!list.isEmpty() && list.iterator().next() instanceof Path) { - for (Path path : (List) list) { - links.addAll(path.links()); - } - } else if (!list.isEmpty() && list.iterator().next() instanceof Link) { - links.addAll((List) list); - } - - //List of devices for new path computed - DeviceId source = null; - DeviceId destination = null; - List devList = new LinkedList<>(); - - for (Link l : links) { - if (!devList.contains(l.src().deviceId())) { - devList.add(l.src().deviceId()); - } - if (!devList.contains(l.dst().deviceId())) { - devList.add(l.dst().deviceId()); - } - } - - return devList; - } - - //To detect loops in the path i.e if the partial paths has intersection node avoid it. - private boolean pathValidation(List partialPath, Path path) { - - //List of devices in new path computed - List newPartialPathDevList; - newPartialPathDevList = createListOfDeviceIds(path.links()); - - //List of devices in partial computed path - List partialComputedPathDevList; - partialComputedPathDevList = createListOfDeviceIds(partialPath); - - for (DeviceId deviceId : newPartialPathDevList) { - for (DeviceId devId : partialComputedPathDevList) { - if (!newPartialPathDevList.get(0).equals(deviceId) && - !partialComputedPathDevList.get(partialComputedPathDevList.size() - 1).equals(devId) - && deviceId.equals(devId)) { - return false; - } - } - } - return true; - } - - //Returns final computed explicit path (list of partial computed paths). - private List computeExplicitPath(List explicitPathInfo, DeviceId src, DeviceId dst, - List constraints) { - List finalComputedPath = new LinkedList<>(); - for (ExplicitPathInfo info : explicitPathInfo) { - /* - * If explicit path object is LOOSE, - * 1) If specified as DeviceId (node) : - * If it is source , compute from source to destination (partial computation not required), - * otherwise compute from specified source to specified device - * 2) If specified as Link : - * Compute partial path from source to link's source , if path exists compute from link's source to dst - */ - if (info.type().equals(ExplicitPathInfo.Type.LOOSE)) { - if (info.value() instanceof DeviceId) { - // If deviceId is source no need to compute - if (!(info.value()).equals(src)) { - log.debug("computeExplicitPath :: Loose , device"); - finalComputedPath = computePartialPath(finalComputedPath, src, (DeviceId) info.value(), - constraints); - log.debug("finalComputedPath in computeExplicitPath ::" + finalComputedPath); - } - - } else if (info.value() instanceof Link) { - if ((((Link) info.value()).src().deviceId().equals(src)) - || (!finalComputedPath.isEmpty() - && finalComputedPath.get(finalComputedPath.size() - 1).dst().deviceId().equals( - ((Link) info.value()).src().deviceId()))) { - - finalComputedPath = computePartialPath(finalComputedPath, src, ((Link) info.value()).dst() - .deviceId(), constraints); - } else { - - finalComputedPath = computePartialPath(finalComputedPath, src, ((Link) info.value()).src() - .deviceId(), constraints) != null ? computePartialPath(finalComputedPath, src, - ((Link) info.value()).dst().deviceId(), constraints) : null; - } - } - /* - * If explicit path object is STRICT, - * 1) If specified as DeviceId (node) : - * Check whether partial computed path has reachable to strict specified node orde - * strict node is the source, if no set path as null else do nothing - * 2) If specified as Link : - * Check whether partial computed path has reachable to strict link's src, if yes compute - * path from strict link's src to link's dst (to include specified link) - */ - } else if (info.type().equals(ExplicitPathInfo.Type.STRICT)) { - if (info.value() instanceof DeviceId) { - log.debug("computeExplicitPath :: Strict , device"); - if (!(!finalComputedPath.isEmpty() && finalComputedPath.get(finalComputedPath.size() - 1).dst() - .deviceId().equals(info.value())) - && !info.value().equals(src)) { - finalComputedPath = null; - } - - } else if (info.value() instanceof Link) { - log.info("computeExplicitPath :: Strict"); - finalComputedPath = ((Link) info.value()).src().deviceId().equals(src) - || !finalComputedPath.isEmpty() - && finalComputedPath.get(finalComputedPath.size() - 1).dst().deviceId() - .equals(((Link) info.value()).src().deviceId()) ? computePartialPath( - finalComputedPath, src, ((Link) info.value()).dst().deviceId(), constraints) : null; - - //Log.info("computeExplicitPath :: (Link) info.value() " + (Link) info.value()); - //Log.info("computeExplicitPath :: finalComputedPath " + finalComputedPath); - - if (finalComputedPath != null && !finalComputedPath.get(finalComputedPath.size() - 1).links() - .contains(info.value())) { - finalComputedPath = null; - } - } - } - if (finalComputedPath == null) { - return null; - } - } - // Destination is not reached in Partial computed path then compute till destination - if (finalComputedPath.isEmpty() || !finalComputedPath.isEmpty() - && !finalComputedPath.get(finalComputedPath.size() - 1).dst().deviceId().equals(dst)) { - - finalComputedPath = computePartialPath(finalComputedPath, src, dst, constraints); - if (finalComputedPath == null) { - return null; - } - } - - return finalComputedPath; - } - - @Override - public boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List constraints, - LspType lspType) { - return setupPath(src, dst, tunnelName, constraints, lspType, null, false); - } - - //[TODO:] handle requests in queue - @Override - public boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List constraints, - LspType lspType, List explicitPathInfo) { - return setupPath(src, dst, tunnelName, constraints, lspType, explicitPathInfo, false); - - } - - @Override - public boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List constraints, - LspType lspType, boolean loadBalancing) { - return setupPath(src, dst, tunnelName, constraints, lspType, null, loadBalancing); - } - - @Override - public boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List constraints, - LspType lspType, List explicitPathInfo, boolean loadBalancing) { - checkNotNull(src); - checkNotNull(dst); - checkNotNull(tunnelName); - checkNotNull(lspType); - - // Convert from DeviceId to TunnelEndPoint - Device srcDevice = deviceService.getDevice(src); - Device dstDevice = deviceService.getDevice(dst); - - if (srcDevice == null || dstDevice == null) { - // Device is not known. - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo, - loadBalancing)); - return false; - } - - // In future projections instead of annotations will be used to fetch LSR ID. - String srcLsrId = srcDevice.annotations().value(LSRID); - String dstLsrId = dstDevice.annotations().value(LSRID); - - if (srcLsrId == null || dstLsrId == null) { - // LSR id is not known. - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo, - loadBalancing)); - return false; - } - - // Get device config from netconfig, to ascertain that session with ingress is present. - DeviceCapability cfg = netCfgService.getConfig(DeviceId.deviceId(srcLsrId), DeviceCapability.class); - if (cfg == null) { - log.debug("No session to ingress."); - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo, - loadBalancing)); - return false; - } - - TunnelEndPoint srcEndPoint = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(srcLsrId)); - TunnelEndPoint dstEndPoint = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(dstLsrId)); - - double bwConstraintValue = 0; - CostConstraint costConstraint = null; - if (constraints != null) { - constraints.add(CapabilityConstraint.of(CapabilityType.valueOf(lspType.name()))); - Iterator iterator = constraints.iterator(); - - while (iterator.hasNext()) { - Constraint constraint = iterator.next(); - if (constraint instanceof PceBandwidthConstraint) { - bwConstraintValue = ((PceBandwidthConstraint) constraint).bandwidth().bps(); - } else if (constraint instanceof CostConstraint) { - costConstraint = (CostConstraint) constraint; - } - } - - /* - * Add cost at the end of the list of constraints. The path computation algorithm also computes cumulative - * cost. The function which checks the limiting/capability constraints also returns per link cost. This - * function can either return the result of limiting/capability constraint validation or the value of link - * cost, depending upon what is the last constraint in the loop. - */ - if (costConstraint != null) { - constraints.remove(costConstraint); - constraints.add(costConstraint); - } - } else { - constraints = new LinkedList<>(); - constraints.add(CapabilityConstraint.of(CapabilityType.valueOf(lspType.name()))); - } - Set computedPathSet = Sets.newLinkedHashSet(); - - if (loadBalancing) { - return setupDisjointPaths(src, dst, constraints, tunnelName, bwConstraintValue, lspType, costConstraint, - srcEndPoint, dstEndPoint); - } - - if (explicitPathInfo != null && !explicitPathInfo.isEmpty()) { - List finalComputedPath = computeExplicitPath(explicitPathInfo, src, dst, constraints); - if (finalComputedPath == null) { - return false; - } - - pceStore.tunnelNameExplicitPathInfoMap(tunnelName, explicitPathInfo); - List links = new LinkedList<>(); - double totalCost = 0; - // Add all partial computed paths - for (Path path : finalComputedPath) { - links.addAll(path.links()); - totalCost = totalCost + path.cost(); - } - computedPathSet.add(new DefaultPath(finalComputedPath.iterator().next().providerId(), links, - ScalarWeight.toWeight(totalCost))); - } else { - computedPathSet = computePath(src, dst, constraints); - } - - // NO-PATH - if (computedPathSet.isEmpty()) { - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo, - loadBalancing)); - return false; - } - - Builder annotationBuilder = DefaultAnnotations.builder(); - if (bwConstraintValue != 0) { - annotationBuilder.set(BANDWIDTH, String.valueOf(bwConstraintValue)); - } - if (costConstraint != null) { - annotationBuilder.set(COST_TYPE, String.valueOf(costConstraint.type())); - } - annotationBuilder.set(LSP_SIG_TYPE, lspType.name()); - annotationBuilder.set(PCE_INIT, TRUE); - annotationBuilder.set(DELEGATE, TRUE); - - Path computedPath = computedPathSet.iterator().next(); - - if (lspType != WITH_SIGNALLING) { - /* - * Local LSP id which is assigned by RSVP for RSVP signalled LSPs, will be assigned by - * PCE for non-RSVP signalled LSPs. - */ - annotationBuilder.set(LOCAL_LSP_ID, String.valueOf(getNextLocalLspId())); - } - - // For SR-TE tunnels, call SR manager for label stack and put it inside tunnel. - Tunnel tunnel = new DefaultTunnel(null, srcEndPoint, dstEndPoint, MPLS, INIT, null, null, - TunnelName.tunnelName(tunnelName), computedPath, - annotationBuilder.build()); - - // Allocate bandwidth for all tunnels. - if (bwConstraintValue != 0) { - if (!reserveBandwidth(computedPath, bwConstraintValue, null)) { - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, - lspType, explicitPathInfo, loadBalancing)); - return false; - } - } - - TunnelId tunnelId = tunnelService.setupTunnel(appId, src, tunnel, computedPath); - if (tunnelId == null) { - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, explicitPathInfo, - loadBalancing)); - - if (bwConstraintValue != 0) { - computedPath.links().forEach(ln -> bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(ln), - Double.parseDouble(tunnel.annotations().value(BANDWIDTH)))); - } - - return false; - } - - if (bwConstraintValue != 0 && lspType == WITH_SIGNALLING) { - rsvpTunnelsWithLocalBw.add(tunnelId); - } - - return true; - } - - private boolean setupDisjointPaths(DeviceId src, DeviceId dst, List constraints, String tunnelName, - double bwConstraintValue, LspType lspType, CostConstraint costConstraint, - TunnelEndPoint srcEndPoint, TunnelEndPoint dstEndPoint) { - Set paths = pathService.getDisjointPaths(src, dst, weight(constraints)); - - // NO-PATH - if (paths.isEmpty()) { - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, null, true)); - return false; - } - - DisjointPath path = paths.iterator().next(); - - Builder annotationBuilder = DefaultAnnotations.builder(); - double bw = 0; - if (bwConstraintValue != 0) { - //TODO: BW needs to be divided by 2 :: bwConstraintValue/2 - bw = bwConstraintValue / 2; - annotationBuilder.set(BANDWIDTH, String.valueOf(bw)); - } - if (costConstraint != null) { - annotationBuilder.set(COST_TYPE, String.valueOf(costConstraint.type())); - } - annotationBuilder.set(LSP_SIG_TYPE, lspType.name()); - annotationBuilder.set(PCE_INIT, TRUE); - annotationBuilder.set(DELEGATE, TRUE); - annotationBuilder.set(LOAD_BALANCING_PATH_NAME, tunnelName); - - //Path computedPath = computedPathSet.iterator().next(); - - if (lspType != WITH_SIGNALLING) { - /* - * Local LSP id which is assigned by RSVP for RSVP signalled LSPs, will be assigned by - * PCE for non-RSVP signalled LSPs. - */ - annotationBuilder.set(LOCAL_LSP_ID, String.valueOf(getNextLocalLspId())); - } - - //Generate different tunnel name for disjoint paths - String tunnel1 = (new StringBuilder()).append(tunnelName).append("_1").toString(); - String tunnel2 = (new StringBuilder()).append(tunnelName).append("_2").toString(); - - // For SR-TE tunnels, call SR manager for label stack and put it inside tunnel. - Tunnel tunnelPrimary = new DefaultTunnel(null, srcEndPoint, dstEndPoint, MPLS, INIT, null, null, - TunnelName.tunnelName(tunnel1), path.primary(), - annotationBuilder.build()); - - Tunnel tunnelBackup = new DefaultTunnel(null, srcEndPoint, dstEndPoint, MPLS, INIT, null, null, - TunnelName.tunnelName(tunnel2), path.backup(), - annotationBuilder.build()); - - // Allocate bandwidth. - if (bwConstraintValue != 0) { - if (!reserveBandwidth(path.primary(), bw, null)) { - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnel1, constraints, - lspType, null, true)); - return false; - } - - if (!reserveBandwidth(path.backup(), bw, null)) { - //Release bandwidth resource for tunnel1 - if (bwConstraintValue != 0) { - path.primary().links().forEach(ln -> - bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(ln), - Double.parseDouble(tunnelPrimary.annotations().value(BANDWIDTH)))); - } - - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnel2, constraints, - lspType, null, true)); - return false; - } - } - - TunnelId tunnelId1 = tunnelService.setupTunnel(appId, src, tunnelPrimary, path.primary()); - if (tunnelId1 == null) { - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, null, true)); - - if (bwConstraintValue != 0) { - path.primary().links().forEach(ln -> bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(ln), - Double.parseDouble(tunnelPrimary.annotations().value(BANDWIDTH)))); - } - - return false; - } - - TunnelId tunnelId2 = tunnelService.setupTunnel(appId, src, tunnelBackup, path.backup()); - if (tunnelId2 == null) { - //Release 1st tunnel - releasePath(tunnelId1); - - pceStore.addFailedPathInfo(new PcePathInfo(src, dst, tunnelName, constraints, lspType, null, true)); - - if (bwConstraintValue != 0) { - path.backup().links().forEach(ln -> bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(ln), - Double.parseDouble(tunnelBackup.annotations().value(BANDWIDTH)))); - } - - return false; - } - - pceStore.addLoadBalancingTunnelIdsInfo(tunnelName, tunnelId1, tunnelId2); - //pceStore.addDisjointPathInfo(tunnelName, path); - return true; - } - - @Override - public boolean updatePath(TunnelId tunnelId, List constraints) { - checkNotNull(tunnelId); - Set computedPathSet = Sets.newLinkedHashSet(); - Tunnel tunnel = tunnelService.queryTunnel(tunnelId); - - if (tunnel == null) { - return false; - } - - if (tunnel.type() != MPLS || FALSE.equalsIgnoreCase(tunnel.annotations().value(DELEGATE))) { - // Only delegated LSPs can be updated. - return false; - } - - List links = tunnel.path().links(); - String lspSigType = tunnel.annotations().value(LSP_SIG_TYPE); - double bwConstraintValue = 0; - String costType = null; - SharedBandwidthConstraint shBwConstraint = null; - PceBandwidthConstraint bwConstraint = null; - CostConstraint costConstraint = null; - - if (constraints != null) { - // Call path computation in shared bandwidth mode. - Iterator iterator = constraints.iterator(); - while (iterator.hasNext()) { - Constraint constraint = iterator.next(); - if (constraint instanceof PceBandwidthConstraint) { - bwConstraint = (PceBandwidthConstraint) constraint; - bwConstraintValue = bwConstraint.bandwidth().bps(); - } else if (constraint instanceof CostConstraint) { - costConstraint = (CostConstraint) constraint; - costType = costConstraint.type().name(); - } - } - - // Remove and keep the cost constraint at the end of the list of constraints. - if (costConstraint != null) { - constraints.remove(costConstraint); - } - - Bandwidth existingBwValue = null; - String existingBwAnnotation = tunnel.annotations().value(BANDWIDTH); - if (existingBwAnnotation != null) { - existingBwValue = Bandwidth.bps(Double.parseDouble(existingBwAnnotation)); - - /* - * The computation is a shared bandwidth constraint based, so need to remove bandwidth constraint which - * has been utilized to create shared bandwidth constraint. - */ - if (bwConstraint != null) { - constraints.remove(bwConstraint); - } - } - - if (existingBwValue != null) { - if (bwConstraint == null) { - bwConstraintValue = existingBwValue.bps(); - } - //If bandwidth constraints not specified , take existing bandwidth for shared bandwidth calculation - shBwConstraint = bwConstraint != null ? new SharedBandwidthConstraint(links, - existingBwValue, bwConstraint.bandwidth()) : new SharedBandwidthConstraint(links, - existingBwValue, existingBwValue); - - constraints.add(shBwConstraint); - } - } else { - constraints = new LinkedList<>(); - } - - constraints.add(CapabilityConstraint.of(CapabilityType.valueOf(lspSigType))); - if (costConstraint != null) { - constraints.add(costConstraint); - } else { - //Take cost constraint from old tunnel if it is not specified in update flow - costType = tunnel.annotations().value(COST_TYPE); - costConstraint = CostConstraint.of(CostConstraint.Type.valueOf(costType)); - constraints.add(costConstraint); - } - - List explicitPathInfo = pceStore - .getTunnelNameExplicitPathInfoMap(tunnel.tunnelName().value()); - if (explicitPathInfo != null) { - List finalComputedPath = computeExplicitPath(explicitPathInfo, - tunnel.path().src().deviceId(), tunnel.path().dst().deviceId(), - constraints); - - if (finalComputedPath == null) { - return false; - } - - List totalLinks = new LinkedList<>(); - double totalCost = 0; - //Add all partial computed paths - for (Path path : finalComputedPath) { - totalLinks.addAll(path.links()); - totalCost = totalCost + path.cost(); - } - computedPathSet.add(new DefaultPath(finalComputedPath.iterator().next().providerId(), - totalLinks, ScalarWeight.toWeight(totalCost))); - } else { - computedPathSet = computePath(tunnel.path().src().deviceId(), tunnel.path().dst().deviceId(), - constraints); - } - - // NO-PATH - if (computedPathSet.isEmpty()) { - return false; - } - - Builder annotationBuilder = DefaultAnnotations.builder(); - annotationBuilder.set(BANDWIDTH, String.valueOf(bwConstraintValue)); - if (costType != null) { - annotationBuilder.set(COST_TYPE, costType); - } - annotationBuilder.set(LSP_SIG_TYPE, lspSigType); - annotationBuilder.set(PCE_INIT, TRUE); - annotationBuilder.set(DELEGATE, TRUE); - annotationBuilder.set(PLSP_ID, tunnel.annotations().value(PLSP_ID)); - annotationBuilder.set(PCC_TUNNEL_ID, tunnel.annotations().value(PCC_TUNNEL_ID)); - - Path computedPath = computedPathSet.iterator().next(); - LspType lspType = LspType.valueOf(lspSigType); - long localLspId = 0; - if (lspType != WITH_SIGNALLING) { - /* - * Local LSP id which is assigned by RSVP for RSVP signalled LSPs, will be assigned by - * PCE for non-RSVP signalled LSPs. - */ - localLspId = getNextLocalLspId(); - annotationBuilder.set(LOCAL_LSP_ID, String.valueOf(localLspId)); - } - - Tunnel updatedTunnel = new DefaultTunnel(null, tunnel.src(), tunnel.dst(), MPLS, INIT, null, null, - tunnel.tunnelName(), computedPath, - annotationBuilder.build()); - - // Allocate shared bandwidth for all tunnels. - if (bwConstraintValue != 0) { - if (!reserveBandwidth(computedPath, bwConstraintValue, shBwConstraint)) { - return false; - } - } - - TunnelId updatedTunnelId = tunnelService.setupTunnel(appId, links.get(0).src().deviceId(), updatedTunnel, - computedPath); - - if (updatedTunnelId == null) { - if (bwConstraintValue != 0) { - releaseSharedBwForNewTunnel(computedPath, bwConstraintValue, shBwConstraint); - } - return false; - } - - if (bwConstraintValue != 0 && lspType == WITH_SIGNALLING) { - rsvpTunnelsWithLocalBw.add(updatedTunnelId); - } - - return true; - } - - @Override - public boolean releasePath(TunnelId tunnelId) { - checkNotNull(tunnelId); - // 1. Query Tunnel from Tunnel manager. - Tunnel tunnel = tunnelService.queryTunnel(tunnelId); - - if (tunnel == null) { - return false; - } - - // 2. Call tunnel service. - return tunnelService.downTunnel(appId, tunnel.tunnelId()); - } - - @Override - public boolean releasePath(String loadBalancingPathName) { - checkNotNull(loadBalancingPathName); - - List tunnelIds = pceStore.getLoadBalancingTunnelIds(loadBalancingPathName); - if (tunnelIds != null && !tunnelIds.isEmpty()) { - for (TunnelId id : tunnelIds) { - if (!tunnelService.downTunnel(appId, id)) { - return false; - } - } - - //pceStore.removeDisjointPathInfo(loadBalancedPathName); - pceStore.removeLoadBalancingTunnelIdsInfo(loadBalancingPathName); - return true; - } - - return false; - } - - @Override - public Iterable queryAllPath() { - return tunnelService.queryTunnel(MPLS); - } - - @Override - public Tunnel queryPath(TunnelId tunnelId) { - return tunnelService.queryTunnel(tunnelId); - } - - private boolean releaseSharedBwForNewTunnel(Path computedPath, double bandwidthConstraint, - SharedBandwidthConstraint shBwConstraint) { - checkNotNull(computedPath); - double bwToAllocate; - - Double additionalBwValue = null; - if (shBwConstraint != null) { - additionalBwValue = ((bandwidthConstraint - shBwConstraint.sharedBwValue().bps()) <= 0) ? null - : (bandwidthConstraint - shBwConstraint.sharedBwValue().bps()); - } - - for (Link link : computedPath.links()) { - bwToAllocate = 0; - if ((shBwConstraint != null) && (shBwConstraint.links().contains(link))) { - if (additionalBwValue != null) { - bwToAllocate = additionalBwValue; - } - } else { - bwToAllocate = bandwidthConstraint; - } - - if (bwToAllocate != 0) { - bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(link), bwToAllocate); - } - } - return true; - } - - /** - * Returns the next local LSP identifier to be used either by getting from - * freed list if available otherwise generating a new one. - * - * @return value of local LSP identifier - */ - private synchronized short getNextLocalLspId() { - // If there is any free id use it. Otherwise generate new id. - if (localLspIdFreeList.isEmpty()) { - return (short) localLspIdIdGen.getNewId(); - } - Iterator it = localLspIdFreeList.iterator(); - Short value = it.next(); - localLspIdFreeList.remove(value); - return value; - } - - protected class TeConstraintBasedLinkWeight implements LinkWeigher { - - private final List constraints; - - /** - * Creates a new edge-weight function capable of evaluating links - * on the basis of the specified constraints. - * - * @param constraints path constraints - */ - public TeConstraintBasedLinkWeight(List constraints) { - if (constraints == null) { - this.constraints = Collections.emptyList(); - } else { - this.constraints = ImmutableList.copyOf(constraints); - } - } - - @Override - public Weight getInitialWeight() { - return ScalarWeight.toWeight(0.0); - } - - @Override - public Weight getNonViableWeight() { - return ScalarWeight.toWeight(0.0); - } - - @Override - public Weight weight(TopologyEdge edge) { - if (!constraints.iterator().hasNext()) { - //Takes default cost/hopcount as 1 if no constraints specified - return ScalarWeight.toWeight(1.0); - } - - Iterator it = constraints.iterator(); - double cost = 1; - - //If any constraint fails return -1 also value of cost returned from cost constraint can't be negative - while (it.hasNext() && cost > 0) { - Constraint constraint = it.next(); - if (constraint instanceof CapabilityConstraint) { - cost = ((CapabilityConstraint) constraint).isValidLink(edge.link(), deviceService, - netCfgService) ? 1 : -1; - } else if (constraint instanceof PceBandwidthConstraint) { - cost = ((PceBandwidthConstraint) constraint).isValidLink(edge.link(), - bandwidthMgmtService) ? 1 : -1; - } else if (constraint instanceof SharedBandwidthConstraint) { - cost = ((SharedBandwidthConstraint) constraint).isValidLink(edge.link(), - bandwidthMgmtService) ? 1 : -1; - } else if (constraint instanceof CostConstraint) { - cost = ((CostConstraint) constraint).isValidLink(edge.link(), netCfgService); - } else { - cost = constraint.cost(edge.link(), null); - } - } - return ScalarWeight.toWeight(cost); - } - } - - //TODO: annotations used for temporarily later projection/network config will be used - private class InternalTopologyListener implements TopologyListener { - @Override - public void event(TopologyEvent event) { - event.reasons().forEach(e -> { - //If event type is link removed, get the impacted tunnel - if (e instanceof LinkEvent) { - LinkEvent linkEvent = (LinkEvent) e; - if (linkEvent.type() == LinkEvent.Type.LINK_REMOVED) { - tunnelService.queryTunnel(MPLS).forEach(t -> { - if (t.path().links().contains((e.subject()))) { - // Check whether this ONOS instance is master for ingress device if yes, - // recompute and send update - checkForMasterAndUpdateTunnel(t.path().src().deviceId(), t); - } - }); - } - } - }); - } - } - - private boolean checkForMasterAndUpdateTunnel(DeviceId src, Tunnel tunnel) { - /** - * Master of ingress node will recompute and also delegation flag must be set. - */ - if (mastershipService.isLocalMaster(src) - && Boolean.valueOf(tunnel.annotations().value(DELEGATE)) != null) { - LinkedList constraintList = new LinkedList<>(); - - if (tunnel.annotations().value(BANDWIDTH) != null) { - //Requested bandwidth will be same as previous allocated bandwidth for the tunnel - PceBandwidthConstraint localConst = new PceBandwidthConstraint(Bandwidth.bps(Double.parseDouble(tunnel - .annotations().value(BANDWIDTH)))); - constraintList.add(localConst); - } - if (tunnel.annotations().value(COST_TYPE) != null) { - constraintList.add(CostConstraint.of(CostConstraint.Type.valueOf(tunnel.annotations().value( - COST_TYPE)))); - } - - /* - * If tunnel was UP after recomputation failed then store failed path in PCE store send PCIntiate(remove) - * and If tunnel is failed and computation fails nothing to do because tunnel status will be same[Failed] - */ - if (!updatePath(tunnel.tunnelId(), constraintList) && !tunnel.state().equals(Tunnel.State.FAILED)) { - // If updation fails store in PCE store as failed path - // then PCInitiate (Remove) - pceStore.addFailedPathInfo(new PcePathInfo(tunnel.path().src().deviceId(), tunnel - .path().dst().deviceId(), tunnel.tunnelName().value(), constraintList, - LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)), - pceStore.getTunnelNameExplicitPathInfoMap(tunnel.tunnelName().value()), - tunnel.annotations().value(LOAD_BALANCING_PATH_NAME) != null ? true : false)); - //Release that tunnel calling PCInitiate - releasePath(tunnel.tunnelId()); - } - } - - return false; - } - - // Allocates the bandwidth locally for PCECC tunnels. - private boolean reserveBandwidth(Path computedPath, double bandwidthConstraint, - SharedBandwidthConstraint shBwConstraint) { - checkNotNull(computedPath); - Resource resource = null; - double bwToAllocate = 0; - Map linkMap = new HashMap<>(); - - /** - * Shared bandwidth sub-case : Lesser bandwidth required than original - - * No reservation required. - */ - Double additionalBwValue = null; - if (shBwConstraint != null) { - additionalBwValue = ((bandwidthConstraint - shBwConstraint.sharedBwValue().bps()) <= 0) ? null - : (bandwidthConstraint - shBwConstraint.sharedBwValue().bps()); - } - - Optional resAlloc = null; - for (Link link : computedPath.links()) { - bwToAllocate = 0; - if ((shBwConstraint != null) && (shBwConstraint.links().contains(link))) { - if (additionalBwValue != null) { - bwToAllocate = additionalBwValue; - } - } else { - bwToAllocate = bandwidthConstraint; - } - - /** - * In shared bandwidth cases, where new BW is lesser than old BW, it - * is not required to allocate anything. - */ - if (bwToAllocate != 0) { - if (!bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link.src(), link.dst()), - bwToAllocate)) { - // If allocation for any link fails, then release the partially allocated bandwidth - // for all links allocated - linkMap.forEach((ln, aDouble) -> bandwidthMgmtService - .releaseLocalReservedBw(LinkKey.linkKey(ln), aDouble)); - return false; - } - - linkMap.put(link, bwToAllocate); - } - } - - return true; - } - - /* - * Deallocates the bandwidth which is reserved locally for PCECC tunnels. - */ - private void releaseBandwidth(Tunnel tunnel) { - // Between same source and destination, search the tunnel with same symbolic path name. - Collection tunnelQueryResult = tunnelService.queryTunnel(tunnel.src(), tunnel.dst()); - Tunnel newTunnel = null; - for (Tunnel tunnelObj : tunnelQueryResult) { - if (tunnel.tunnelName().value().equals(tunnelObj.tunnelName().value())) { - newTunnel = tunnelObj; - break; - } - } - - // Even if one link is shared, the bandwidth release should happen based on shared mechanism. - boolean isLinkShared = false; - if (newTunnel != null) { - for (Link link : tunnel.path().links()) { - if (newTunnel.path().links().contains(link)) { - isLinkShared = true; - break; - } - } - } - - if (isLinkShared) { - releaseSharedBandwidth(newTunnel, tunnel); - return; - } - - tunnel.path().links().forEach(tn -> bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(tn), - Double.parseDouble(tunnel.annotations().value(BANDWIDTH)))); - } - - /** - * Re-allocates the bandwidth for the tunnel for which the bandwidth was - * allocated in shared mode initially. - */ - private synchronized void releaseSharedBandwidth(Tunnel newTunnel, Tunnel oldTunnel) { - - boolean isAllocate = false; - Double oldTunnelBw = Double.parseDouble(oldTunnel.annotations().value(BANDWIDTH)); - Double newTunnelBw = Double.parseDouble(newTunnel.annotations().value(BANDWIDTH)); - - if (newTunnelBw > oldTunnelBw) { - isAllocate = true; - } - - for (Link link : newTunnel.path().links()) { - if (oldTunnel.path().links().contains(link)) { - if (!isAllocate) { - bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(link), - oldTunnelBw - newTunnelBw); - } - } else { - bandwidthMgmtService.releaseLocalReservedBw(LinkKey.linkKey(link), oldTunnelBw); - } - } - } - - // Listens on tunnel events. - private class InnerTunnelListener implements TunnelListener { - @Override - public void event(TunnelEvent event) { - // Event gets generated with old tunnel object. - Tunnel tunnel = event.subject(); - if (tunnel.type() != MPLS) { - return; - } - - LspType lspType = LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)); - String tunnelBandwidth = tunnel.annotations().value(BANDWIDTH); - double bwConstraintValue = 0; - if (tunnelBandwidth != null) { - bwConstraintValue = Double.parseDouble(tunnelBandwidth); - } - - switch (event.type()) { - case TUNNEL_UPDATED: - if (rsvpTunnelsWithLocalBw.contains(tunnel.tunnelId())) { - releaseBandwidth(event.subject()); - rsvpTunnelsWithLocalBw.remove(tunnel.tunnelId()); - } - - if (tunnel.state() == UNSTABLE) { - /* - * During LSP DB sync if PCC doesn't report LSP which was PCE initiated, it's state is turned into - * unstable so that it can be setup again. Add into failed path store so that it can be recomputed - * and setup while global reoptimization. - */ - - List constraints = new LinkedList<>(); - String bandwidth = tunnel.annotations().value(BANDWIDTH); - if (bandwidth != null) { - constraints.add(new PceBandwidthConstraint(Bandwidth - .bps(Double.parseDouble(bandwidth)))); - } - - String costType = tunnel.annotations().value(COST_TYPE); - if (costType != null) { - CostConstraint costConstraint = new CostConstraint(CostConstraint.Type.valueOf(costType)); - constraints.add(costConstraint); - } - - constraints.add(CapabilityConstraint - .of(CapabilityType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)))); - - List links = tunnel.path().links(); - pceStore.addFailedPathInfo(new PcePathInfo(links.get(0).src().deviceId(), - links.get(links.size() - 1).dst().deviceId(), - tunnel.tunnelName().value(), constraints, lspType, - pceStore.getTunnelNameExplicitPathInfoMap(tunnel - .tunnelName().value()), tunnel.annotations() - .value(LOAD_BALANCING_PATH_NAME) != null ? true : false)); - } - - break; - - case TUNNEL_REMOVED: - if (lspType != WITH_SIGNALLING) { - localLspIdFreeList.add(Short.valueOf(tunnel.annotations().value(LOCAL_LSP_ID))); - } - // If not zero bandwidth, and delegated (initiated LSPs will also be delegated). - if (bwConstraintValue != 0 && mastershipService.getLocalRole(tunnel.path().src() - .deviceId()) == MastershipRole.MASTER) { - if (lspType != WITH_SIGNALLING) { - releaseBandwidth(tunnel); - } - } - - /*if (pceStore.getTunnelInfo(tunnel.tunnelId()) != null) { - pceStore.removeTunnelInfo(tunnel.tunnelId()); - }*/ - - break; - - default: - break; - - } - return; - } - } - - @Override - public List explicitPathInfoList(String tunnelName) { - return pceStore.getTunnelNameExplicitPathInfoMap(tunnelName); - } - - @Override - public List queryLoadBalancingPath(String pathName) { - return pceStore.getLoadBalancingTunnelIds(pathName); - } - - //Computes path from tunnel store and also path failed to setup. - private void callForOptimization() { - //Recompute the LSPs which it was delegated [LSPs stored in PCE store (failed paths)] - for (PcePathInfo failedPathInfo : pceStore.getFailedPathInfos()) { - checkForMasterAndSetupPath(failedPathInfo); - } - - //Recompute the LSPs for which it was delegated [LSPs stored in tunnel store] - tunnelService.queryTunnel(MPLS).forEach(t -> { - checkForMasterAndUpdateTunnel(t.path().src().deviceId(), t); - }); - } - - private boolean checkForMasterAndSetupPath(PcePathInfo failedPathInfo) { - /** - * Master of ingress node will setup the path failed stored in PCE store. - */ - if (mastershipService.isLocalMaster(failedPathInfo.src())) { - if (setupPath(failedPathInfo.src(), failedPathInfo.dst(), failedPathInfo.name(), - failedPathInfo.constraints(), failedPathInfo.lspType(), failedPathInfo.explicitPathInfo())) { - // If computation is success remove that path - pceStore.removeFailedPathInfo(failedPathInfo); - return true; - } - } - - return false; - } - - //Timer to call global optimization - private class GlobalOptimizationTimer implements Runnable { - - public GlobalOptimizationTimer() { - } - - @Override - public void run() { - callForOptimization(); - } - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcePath.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcePath.java deleted file mode 100644 index cfe7e87f0c..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcePath.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pce.pceservice; - -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.net.intent.Constraint; - -import java.util.Collection; -import java.util.List; - -/** - * Abstraction of an entity which provides functionalities of pce path. - */ -public interface PcePath { - - /** - * Returns the attribute path id. - * - * @return path id - */ - TunnelId id(); - - /** - * Sets the attribute path id. - * - * @param id path id - */ - void id(TunnelId id); - - /** - * Returns the attribute ingress. - * - * @return source - */ - String source(); - - /** - * Sets the attribute ingress. - * - * @param src pce source - */ - void source(String src); - - /** - * Returns the attribute egress. - * - * @return destination - */ - String destination(); - - /** - * Sets the attribute egress. - * - * @param dst pce destination. - */ - void destination(String dst); - - /** - * Returns the attribute lspType. - * - * @return lspType - */ - LspType lspType(); - - /** - * Returns the attribute symbolic-path-name. - * - * @return symbolic-path-name - */ - String name(); - - /** - * Returns the attribute cost constraint. - * - * @return cost constraint - */ - Constraint costConstraint(); - - /** - * Returns the attribute bandwidth constraint. - * - * @return bandwidth constraint - */ - Constraint bandwidthConstraint(); - - /** - * Returns the list of explicit path objects. - * - * @return list of explicit path objects - */ - Collection explicitPathInfo(); - - /** - * Copies only non-null or non-zero member variables. - * - * @param id path-id - * @return pce-path - */ - PcePath copy(PcePath id); - - /** - * Builder for pce path. - */ - interface Builder { - - /** - * Returns the builder object of path id. - * - * @param id path id - * @return builder object of path id - */ - Builder id(String id); - - /** - * Returns the builder object of ingress. - * - * @param source ingress - * @return builder object of ingress - */ - Builder source(String source); - - /** - * Returns the builder object of egress. - * - * @param destination egress - * @return builder object of egress - */ - Builder destination(String destination); - - /** - * Returns the builder object of lspType. - * - * @param lspType lsp type - * @return builder object of lsp type - */ - Builder lspType(String lspType); - - /** - * Returns the builder object of symbolic-path-name. - * - * @param n symbolic-path-name - * @return builder object of symbolic-path-name - */ - Builder name(String n); - - /** - * Returns the builder object of cost constraint. - * - * @param cost constraint - * @return builder object of cost constraint - */ - Builder costConstraint(String cost); - - /** - * Returns the builder object of bandwidth constraint. - * - * @param bandwidth constraint - * @return builder object of bandwidth constraint - */ - Builder bandwidthConstraint(String bandwidth); - - /** - * Copies tunnel information to local. - * - * @param tunnel pcc tunnel - * @param explicitPathInfoList list of explicit path objects info - * @return object of pce-path - */ - Builder of(Tunnel tunnel, List explicitPathInfoList); - - /** - * Returns the builder object of ExplicitPathInfo. - * - * @param explicitPathInfo list of explicit path obj - * @return builder object of ExplicitPathInfo - */ - Builder explicitPathInfo(Collection explicitPathInfo); - - /** - * Builds object of pce path. - * - * @return object of pce path. - */ - PcePath build(); - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcepAnnotationKeys.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcepAnnotationKeys.java deleted file mode 100644 index 91dca0346b..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PcepAnnotationKeys.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice; - -/** - * Collection of keys for annotation for PCEP tunnels. - */ -public final class PcepAnnotationKeys { - - /** - * Prohibits instantiation. - */ - private PcepAnnotationKeys() { - } - - /** - * Annotation key for bandwidth. - * The value for this key is interpreted as Mbps. - */ - public static final String BANDWIDTH = "bandwidth"; - - /** - * Annotation key for the LSP signaling type. - */ - public static final String LSP_SIG_TYPE = "lspSigType"; - - /** - * Annotation key for the PCC tunnel id. - */ - public static final String PCC_TUNNEL_ID = "PccTunnelId"; - - /** - * Annotation key for the LSP id assigned per tunnel per session. - */ - public static final String PLSP_ID = "PLspId"; - - /** - * Annotation key for the LSP id assigned per tunnel. - */ - public static final String LOCAL_LSP_ID = "localLspId"; - - /** - * Annotation key for the identification of initiated LSP. - */ - public static final String PCE_INIT = "pceInit"; - - /** - * Annotation key for the cost type. - */ - public static final String COST_TYPE = "costType"; - - /** - * Annotation key for the Delegation. - * Whether LSPs are delegated or not. - */ - public static final String DELEGATE = "delegate"; -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/TunnelConsumerId.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/TunnelConsumerId.java deleted file mode 100644 index 4474b4cbc6..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/TunnelConsumerId.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice; - -import org.onlab.util.Identifier; -import org.onosproject.net.resource.ResourceConsumer; - -import com.google.common.annotations.Beta; -import org.onosproject.net.resource.ResourceConsumerId; - -/** - * Tunnel resource consumer identifier suitable to be used as a consumer id for - * resource allocations. - */ -@Beta -public final class TunnelConsumerId extends Identifier implements ResourceConsumer { - - /** - * Creates a tunnel resource consumer identifier from the specified long value. - * - * @param value long value to be used as tunnel resource consumer id - * @return tunnel resource consumer identifier - */ - public static TunnelConsumerId valueOf(long value) { - return new TunnelConsumerId(value); - } - - /** - * Initializes object for serializer. - */ - public TunnelConsumerId() { - super(0L); - } - - /** - * Constructs the tunnel resource consumer id corresponding to a given long - * value. - * - * @param value the underlying value in long representation of this tunnel - * resource consumer id - */ - public TunnelConsumerId(long value) { - super(value); - } - - /** - * Returns the backing identifier value. - * - * @return value backing identifier value - */ - public long value() { - return identifier; - } - - @Override - public String toString() { - return "0x" + Long.toHexString(identifier); - } - - @Override - public ResourceConsumerId consumerId() { - return ResourceConsumerId.of(this); - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/PceService.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/PceService.java deleted file mode 100644 index ac0a66cdb3..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/PceService.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice.api; - -import java.util.List; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.intent.Constraint; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pceservice.LspType; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelId; - -/** - * Service to compute path based on constraints, release path, - * update path with new constraints and query existing tunnels. - */ -public interface PceService { - - /** - * Creates new path based on constraints and LSP type. - * - * @param src source device - * @param dst destination device - * @param tunnelName name of the tunnel - * @param constraints list of constraints to be applied on path - * @param lspType type of path to be setup - * @return false on failure and true on successful path creation - */ - boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List constraints, LspType lspType); - - /** - * Creates new path based on constraints and LSP type. - * - * @param src source device - * @param dst destination device - * @param tunnelName name of the tunnel - * @param constraints list of constraints to be applied on path - * @param lspType type of path to be setup - * @param explicitPathInfo list of explicit path info - * @return false on failure and true on successful path creation - */ - boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List constraints, LspType lspType, - List explicitPathInfo); - - /** - * Creates new path based on constraints and LSP type with load balancing option. - * - * @param src source device - * @param dst destination device - * @param tunnelName name of the tunnel - * @param constraints list of constraints to be applied on path - * @param lspType type of path to be setup - * @param loadBalancing load balancing option enable or not - * @return false on failure and true on successful path creation - */ - boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List constraints, LspType lspType, - boolean loadBalancing); - - /** - * Creates new path based on constraints and LSP type with load balancing and explicit path options. - * - * @param src source device - * @param dst destination device - * @param tunnelName name of the tunnel - * @param constraints list of constraints to be applied on path - * @param lspType type of path to be setup - * @param explicitPathInfo list of explicit path info - * @param loadBalancing load balancing option enable or not - * @return false on failure and true on successful path creation - */ - boolean setupPath(DeviceId src, DeviceId dst, String tunnelName, List constraints, LspType lspType, - List explicitPathInfo, boolean loadBalancing); - - /** - * Updates an existing path. - * - * @param tunnelId tunnel identifier - * @param constraints list of constraints to be applied on path - * @return false on failure and true on successful path update - */ - boolean updatePath(TunnelId tunnelId, List constraints); - - /** - * Releases an existing path. - * - * @param tunnelId tunnel identifier - * @return false on failure and true on successful path removal - */ - boolean releasePath(TunnelId tunnelId); - - /** - * Releases load balancing paths. - * - * @param loadBalancingPathName load balance path name - * @return false on failure and true on successful paths removal - */ - boolean releasePath(String loadBalancingPathName); - - /** - * Queries all paths. - * - * @return iterable of existing tunnels - */ - Iterable queryAllPath(); - - /** - * Queries particular path based on tunnel identifier. - * - * @param tunnelId tunnel identifier - * @return tunnel if path exists, otherwise null - */ - Tunnel queryPath(TunnelId tunnelId); - - /** - * Returns list of explicit path info. - * - * @param tunnelName tunnel name - * @return list of explicit path info - */ - List explicitPathInfoList(String tunnelName); - - /** - * Queries load balancing paths on load balance path name. - * - * @param pathName load balance path name - * @return list of load balancing tunnels - */ - List queryLoadBalancingPath(String pathName); -} \ No newline at end of file diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/package-info.java deleted file mode 100644 index bf2225d29f..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/api/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCE service API. - */ -package org.onosproject.pce.pceservice.api; diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CapabilityConstraint.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CapabilityConstraint.java deleted file mode 100644 index c4630b8d06..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CapabilityConstraint.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice.constraint; - -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.config.NetworkConfigService; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.intent.ResourceContext; -import org.onosproject.net.intent.constraint.BooleanConstraint; -import org.onosproject.pcep.api.DeviceCapability; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Constraint that evaluates whether devices satisfies capability. - */ -public final class CapabilityConstraint extends BooleanConstraint { - - private final CapabilityType capabilityType; - public static final String LSRID = "lsrId"; - public static final String TRUE = "true"; - - /** - * Represents about capability type. - */ - public enum CapabilityType { - /** - * Signifies that path is created via signaling mode. - */ - WITH_SIGNALLING(0), - - /** - * Signifies that path is created via SR mode. - */ - SR_WITHOUT_SIGNALLING(1), - - /** - * Signifies that path is created via without signaling and without SR mode. - */ - WITHOUT_SIGNALLING_AND_WITHOUT_SR(2); - - int value; - - /** - * Assign val with the value as the capability type. - * - * @param val capability type - */ - CapabilityType(int val) { - value = val; - } - - /** - * Returns value of capability type. - * - * @return capability type - */ - public byte type() { - return (byte) value; - } - } - - // Constructor for serialization - private CapabilityConstraint() { - capabilityType = null; - } - - /** - * Creates a new capability constraint. - * - * @param capabilityType type of capability device supports - */ - public CapabilityConstraint(CapabilityType capabilityType) { - this.capabilityType = capabilityType; - } - - /** - * Creates a new capability constraint. - * - * @param capabilityType type of capability device supports - * @return instance of CapabilityConstraint for specified capability type - */ - public static CapabilityConstraint of(CapabilityType capabilityType) { - return new CapabilityConstraint(capabilityType); - } - - /** - * Obtains type of capability. - * - * @return type of capability - */ - public CapabilityType capabilityType() { - return capabilityType; - } - - /** - * Validates the link based on capability constraint. - * - * @param link to validate source and destination based on capability constraint - * @param deviceService instance of DeviceService - * @param netCfgService instance of NetworkConfigService - * @return true if link satisfies capability constraint otherwise false - */ - public boolean isValidLink(Link link, DeviceService deviceService, NetworkConfigService netCfgService) { - if (deviceService == null || netCfgService == null) { - return false; - } - - Device srcDevice = deviceService.getDevice(link.src().deviceId()); - Device dstDevice = deviceService.getDevice(link.dst().deviceId()); - - //TODO: Usage of annotations are for transient solution. In future will be replaced with the - // network config service / Projection model. - // L3 device - if (srcDevice == null || dstDevice == null) { - return false; - } - - String srcLsrId = srcDevice.annotations().value(LSRID); - String dstLsrId = dstDevice.annotations().value(LSRID); - - DeviceCapability srcDeviceConfig = netCfgService.getConfig(DeviceId.deviceId(srcLsrId), - DeviceCapability.class); - DeviceCapability dstDeviceConfig = netCfgService.getConfig(DeviceId.deviceId(dstLsrId), - DeviceCapability.class); - - switch (capabilityType) { - case WITH_SIGNALLING: - return true; - case WITHOUT_SIGNALLING_AND_WITHOUT_SR: - return srcDeviceConfig != null && dstDeviceConfig != null - && srcDeviceConfig.localLabelCap() && dstDeviceConfig.localLabelCap(); - case SR_WITHOUT_SIGNALLING: - return srcDeviceConfig != null && dstDeviceConfig != null && srcDeviceConfig.srCap() - && dstDeviceConfig.srCap() && srcDeviceConfig.labelStackCap() && dstDeviceConfig.labelStackCap(); - default: - return false; - } - } - - @Override - public boolean isValid(Link link, ResourceContext context) { - return false; - //Do nothing instead using isValidLink needs device service to validate link - } - - @Override - public int hashCode() { - return Objects.hash(capabilityType); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof CapabilityConstraint) { - CapabilityConstraint other = (CapabilityConstraint) obj; - return Objects.equals(this.capabilityType, other.capabilityType); - } - - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("capabilityType", capabilityType) - .toString(); - } -} \ No newline at end of file diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CostConstraint.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CostConstraint.java deleted file mode 100644 index ce0030869b..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/CostConstraint.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice.constraint; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.onosproject.net.Path; -import org.onosproject.net.config.NetworkConfigService; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.intent.ResourceContext; -import org.onosproject.pcep.api.TeLinkConfig; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Constraint that evaluates whether cost for a link is available, if yes return cost for that link. - */ -public final class CostConstraint implements Constraint { - - /** - * Represents about cost types. - */ - public enum Type { - /** - * Signifies that cost is IGP cost. - */ - COST(1), - - /** - * Signifies that cost is TE cost. - */ - TE_COST(2); - - int value; - - /** - * Assign val with the value as the Cost type. - * - * @param val Cost type - */ - Type(int val) { - value = val; - } - - /** - * Returns value of Cost type. - * - * @return Cost type - */ - public byte type() { - return (byte) value; - } - } - - private final Type type; - public static final String TE_COST = "teCost"; - public static final String COST = "cost"; - - // Constructor for serialization - private CostConstraint() { - this.type = null; - } - - /** - * Creates a new cost constraint. - * - * @param type of a link - */ - public CostConstraint(Type type) { - this.type = checkNotNull(type, "Type cannot be null"); - } - - /** - * Creates new CostConstraint with specified cost type. - * - * @param type of cost - * @return instance of CostConstraint - */ - public static CostConstraint of(Type type) { - return new CostConstraint(type); - } - - /** - * Returns the type of a cost specified in a constraint. - * - * @return required cost type - */ - public Type type() { - return type; - } - - @Override - public int hashCode() { - return Objects.hash(type); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof CostConstraint) { - CostConstraint other = (CostConstraint) obj; - return Objects.equals(this.type, other.type); - } - - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("type", type) - .toString(); - } - - @Override - public double cost(Link link, ResourceContext context) { - return 0; - } - - /** - * Validates the link based on cost type specified. - * - * @param link to validate cost type constraint - * @param netCfgService instance of netCfgService - * @return true if link satisfies cost constraint otherwise false - */ - public double isValidLink(Link link, NetworkConfigService netCfgService) { - if (netCfgService == null) { - return -1; - } - - TeLinkConfig cfg = netCfgService.getConfig(LinkKey.linkKey(link.src(), link.dst()), TeLinkConfig.class); - if (cfg == null) { - //If cost configuration absent return -1[It is not L3 device] - return -1; - } - - switch (type) { - case COST: - //If IGP cost is zero then IGP cost is not assigned for that link - return cfg.igpCost() == 0 ? -1 : cfg.igpCost(); - - case TE_COST: - //If TE cost is zero then TE cost is not assigned for that link - return cfg.teCost() == 0 ? -1 : cfg.teCost(); - - default: - return -1; - } - } - - @Override - public boolean validate(Path path, ResourceContext context) { - // TODO Auto-generated method stub - return false; - } -} \ No newline at end of file diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/PceBandwidthConstraint.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/PceBandwidthConstraint.java deleted file mode 100644 index cff097379c..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/PceBandwidthConstraint.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice.constraint; - -import org.onlab.util.Bandwidth; -import org.onlab.util.DataRateUnit; -import org.onosproject.net.Link; -import org.onosproject.net.intent.ResourceContext; -import org.onosproject.net.intent.constraint.BooleanConstraint; -import org.onosproject.bandwidthmgr.api.BandwidthMgmtService; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Constraint that evaluates links based on available pce bandwidths. - */ -public final class PceBandwidthConstraint extends BooleanConstraint { - - private final Bandwidth bandwidth; - - /** - * Creates a new pce bandwidth constraint. - * - * @param bandwidth required bandwidth - */ - public PceBandwidthConstraint(Bandwidth bandwidth) { - this.bandwidth = checkNotNull(bandwidth, "Bandwidth cannot be null"); - } - - /** - * Creates a new pce bandwidth constraint. - * - * @param v required amount of bandwidth - * @param unit {@link DataRateUnit} of {@code v} - * @return {@link PceBandwidthConstraint} instance with given bandwidth requirement - */ - public static PceBandwidthConstraint of(double v, DataRateUnit unit) { - return new PceBandwidthConstraint(Bandwidth.of(v, unit)); - } - - // Constructor for serialization - private PceBandwidthConstraint() { - this.bandwidth = null; - } - - @Override - public boolean isValid(Link link, ResourceContext context) { - return false; - //Do nothing instead using isValidLink needs bandwidthMgmtService to validate link - } - - /** - * Validates the link based on pce bandwidth constraint. - * - * @param link to validate pce bandwidth constraint - * @param bandwidthMgmtService instance of BandwidthMgmtService - * @return true if link satisfies pce bandwidth constraint otherwise false - */ - public boolean isValidLink(Link link, BandwidthMgmtService bandwidthMgmtService) { - if (bandwidthMgmtService == null) { - return false; - } - - return bandwidthMgmtService.isBandwidthAvailable(link, bandwidth.bps()); - - } - - /** - * Returns the bandwidth required by this constraint. - * - * @return required bandwidth - */ - public Bandwidth bandwidth() { - return bandwidth; - } - - @Override - public int hashCode() { - return bandwidth.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - final PceBandwidthConstraint other = (PceBandwidthConstraint) obj; - return Objects.equals(this.bandwidth, other.bandwidth); - } - - @Override - public String toString() { - return toStringHelper(this).add("bandwidth", bandwidth).toString(); - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/SharedBandwidthConstraint.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/SharedBandwidthConstraint.java deleted file mode 100644 index dcd8285771..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/SharedBandwidthConstraint.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice.constraint; - -import org.onlab.util.Bandwidth; -import org.onosproject.net.Link; -import org.onosproject.net.intent.ResourceContext; -import org.onosproject.net.intent.constraint.BooleanConstraint; -import org.onosproject.bandwidthmgr.api.BandwidthMgmtService; - -import java.util.List; -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Constraint that evaluates whether links satisfies sharedbandwidth request. - */ -public final class SharedBandwidthConstraint extends BooleanConstraint { - - private final List links; - private final Bandwidth sharedBwValue; - private final Bandwidth requestBwValue; - //temporary variable declared to hold changed bandwidth value - private Bandwidth changedBwValue; - - // Constructor for serialization - private SharedBandwidthConstraint() { - links = null; - sharedBwValue = null; - requestBwValue = null; - } - - /** - * Creates a new SharedBandwidth constraint. - * - * @param links shared links - * @param sharedBwValue shared bandwidth of the links - * @param requestBwValue requested bandwidth value - */ - public SharedBandwidthConstraint(List links, Bandwidth sharedBwValue, Bandwidth requestBwValue) { - this.links = links; - this.sharedBwValue = sharedBwValue; - this.requestBwValue = requestBwValue; - } - - /** - * Creates a new SharedBandwidth constraint. - * - * @param links shared links - * @param sharedBwValue shared bandwidth of the links - * @param requestBwValue requested bandwidth value - * @return SharedBandwidth instance - */ - public static SharedBandwidthConstraint of(List links, Bandwidth sharedBwValue, Bandwidth requestBwValue) { - return new SharedBandwidthConstraint(links, sharedBwValue, requestBwValue); - } - - /** - * Obtains shared links. - * - * @return shared links - */ - public List links() { - return links; - } - - /** - * Obtains shared bandwidth of the links. - * - * @return shared bandwidth - */ - public Bandwidth sharedBwValue() { - return sharedBwValue; - } - - /** - * Obtains requested bandwidth value. - * - * @return requested bandwidth value - */ - public Bandwidth requestBwValue() { - return requestBwValue; - } - - @Override - public boolean isValid(Link link, ResourceContext context) { - return false; - //Do nothing instead using isValidLink needs pce service to validate link - } - - /** - * Validates the link based on shared bandwidth constraint. - * - * @param link to validate shared bandwidth constraint - * @param bandwidthMgmtService instance of BandwidthMgmtService - * @return true if link satisfies shared bandwidth constraint otherwise false - */ - public boolean isValidLink(Link link, BandwidthMgmtService bandwidthMgmtService) { - if (bandwidthMgmtService == null) { - return false; - } - changedBwValue = requestBwValue; - if (links.contains(link)) { - changedBwValue = requestBwValue.isGreaterThan(sharedBwValue) ? requestBwValue.subtract(sharedBwValue) - : Bandwidth.bps(0); - } - - return bandwidthMgmtService.isBandwidthAvailable(link, changedBwValue.bps()); - } - - @Override - public int hashCode() { - return Objects.hash(requestBwValue, sharedBwValue, links); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof SharedBandwidthConstraint) { - SharedBandwidthConstraint other = (SharedBandwidthConstraint) obj; - return Objects.equals(this.requestBwValue, other.requestBwValue) - && Objects.equals(this.sharedBwValue, other.sharedBwValue) - && Objects.equals(this.links, other.links); - } - - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("requestBwValue", requestBwValue) - .add("sharedBwValue", sharedBwValue) - .add("links", links) - .toString(); - } -} \ No newline at end of file diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/package-info.java deleted file mode 100644 index 8e1d934c44..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/constraint/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Constraints for path computation for PCE service. - */ -package org.onosproject.pce.pceservice.constraint; diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/package-info.java deleted file mode 100644 index 07e0269f65..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCE service application. - */ -package org.onosproject.pce.pceservice; \ No newline at end of file diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/DistributedPceStore.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/DistributedPceStore.java deleted file mode 100644 index 998f87e91d..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/DistributedPceStore.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pcestore; - -import com.google.common.collect.ImmutableSet; -import org.onlab.util.KryoNamespace; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pceservice.LspType; -import org.onosproject.pce.pceservice.constraint.CapabilityConstraint; -import org.onosproject.pce.pceservice.constraint.CostConstraint; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; -import org.onosproject.pce.pceservice.constraint.SharedBandwidthConstraint; -import org.onosproject.pce.pcestore.api.PceStore; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.ConsistentMap; -import org.onosproject.store.service.DistributedSet; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Arrays; -import java.util.List; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Manages the pool of available labels to devices, links and tunnels. - */ -@Component(immediate = true, service = PceStore.class) -public class DistributedPceStore implements PceStore { - private static final String PATH_INFO_NULL = "Path Info cannot be null"; - private static final String PCECC_TUNNEL_INFO_NULL = "PCECC Tunnel Info cannot be null"; - private static final String TUNNEL_ID_NULL = "Tunnel Id cannot be null"; - - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - //Mapping tunnel name with Disjoint paths - private ConsistentMap> tunnelNameDisjoinTunnelIdInfo; - - // List of Failed path info - private DistributedSet failedPathSet; - - // Maintains tunnel name mapped to explicit path info - private ConsistentMap> tunnelNameExplicitPathInfoMap; - - private static final Serializer SERIALIZER = Serializer - .using(new KryoNamespace.Builder().register(KryoNamespaces.API) - .register(PcePathInfo.class) - .register(ExplicitPathInfo.class) - .register(ExplicitPathInfo.Type.class) - .register(CostConstraint.class) - .register(CostConstraint.Type.class) - .register(PceBandwidthConstraint.class) - .register(SharedBandwidthConstraint.class) - .register(CapabilityConstraint.class) - .register(CapabilityConstraint.CapabilityType.class) - .register(LspType.class) - .build()); - - @Activate - protected void activate() { - - failedPathSet = storageService.setBuilder() - .withName("failed-path-info") - .withSerializer(SERIALIZER) - .build() - .asDistributedSet(); - - tunnelNameExplicitPathInfoMap = storageService.>consistentMapBuilder() - .withName("onos-pce-explicitpathinfo") - .withSerializer(Serializer.using( - new KryoNamespace.Builder() - .register(KryoNamespaces.API) - .register(ExplicitPathInfo.class) - .register(ExplicitPathInfo.Type.class) - .build())) - .build(); - - tunnelNameDisjoinTunnelIdInfo = storageService.>consistentMapBuilder() - .withName("onos-pce-disjointTunnelIds") - .withSerializer(Serializer.using( - new KryoNamespace.Builder() - .register(KryoNamespaces.API) - .register(TunnelId.class) - .build())) - .build(); - - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - log.info("Stopped"); - } - - @Override - public boolean existsFailedPathInfo(PcePathInfo failedPathInfo) { - checkNotNull(failedPathInfo, PATH_INFO_NULL); - return failedPathSet.contains(failedPathInfo); - } - - - @Override - public int getFailedPathInfoCount() { - return failedPathSet.size(); - } - - @Override - public Iterable getFailedPathInfos() { - return ImmutableSet.copyOf(failedPathSet); - } - - - - @Override - public void addFailedPathInfo(PcePathInfo failedPathInfo) { - checkNotNull(failedPathInfo, PATH_INFO_NULL); - failedPathSet.add(failedPathInfo); - } - - - @Override - public boolean removeFailedPathInfo(PcePathInfo failedPathInfo) { - checkNotNull(failedPathInfo, PATH_INFO_NULL); - - if (!failedPathSet.remove(failedPathInfo)) { - log.error("Failed path info {} deletion has failed.", failedPathInfo.toString()); - return false; - } - return true; - } - - @Override - public boolean tunnelNameExplicitPathInfoMap(String tunnelName, List explicitPathInfo) { - checkNotNull(tunnelName); - checkNotNull(explicitPathInfo); - return tunnelNameExplicitPathInfoMap.put(tunnelName, explicitPathInfo) != null ? true : false; - } - - @Override - public List getTunnelNameExplicitPathInfoMap(String tunnelName) { - checkNotNull(tunnelName); - if (tunnelNameExplicitPathInfoMap.get(tunnelName) != null) { - return tunnelNameExplicitPathInfoMap.get(tunnelName).value(); - } - return null; - } - -/* @Override - public DisjointPath getDisjointPaths(String tunnelName) { - if (tunnelNameDisjointPathInfo.get(tunnelName) != null) { - return tunnelNameDisjointPathInfo.get(tunnelName).value(); - } - return null; - } - - @Override - public boolean addDisjointPathInfo(String tunnelName, DisjointPath path) { - checkNotNull(tunnelName); - checkNotNull(path); - return tunnelNameDisjointPathInfo.put(tunnelName, path) != null ? true : false; - }*/ - - @Override - public boolean addLoadBalancingTunnelIdsInfo(String tunnelName, TunnelId... tunnelIds) { - checkNotNull(tunnelName); - checkNotNull(tunnelIds); - return tunnelNameDisjoinTunnelIdInfo.put(tunnelName, Arrays.asList(tunnelIds)) != null ? true : false; - } - - @Override - public List getLoadBalancingTunnelIds(String tunnelName) { - if (tunnelNameDisjoinTunnelIdInfo.get(tunnelName) != null) { - return tunnelNameDisjoinTunnelIdInfo.get(tunnelName).value(); - } - return null; - } - - @Override - public boolean removeLoadBalancingTunnelIdsInfo(String tunnelName) { - if (tunnelNameDisjoinTunnelIdInfo.remove(tunnelName) == null) { - log.error("Failed to remove entry {} for this tunnelName in DisjointTunnelIdsInfoMap" + tunnelName); - return false; - } - return true; - } - - /* @Override - public boolean removeDisjointPathInfo(String tunnelName) { - if (tunnelNameDisjointPathInfo.remove(tunnelName) == null) { - log.error("Failed to remove entry {} for this tunnelName in DisjointPathInfoMap", tunnelName); - return false; - } - return true; - }*/ -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java deleted file mode 100644 index 577296916e..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/PcePathInfo.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pcestore; - -import com.google.common.base.MoreObjects; - -import java.util.List; -import java.util.Objects; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.intent.Constraint; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pceservice.LspType; - -/** - * Input path information to compute CSPF path. - * This path information will be stored in pce store and will be used later to recalculate the path. - */ -public final class PcePathInfo { - - private DeviceId src; // source path - - private DeviceId dst; // destination path - - private String name; // tunnel name - - private List constraints; // list of constraints (cost, bandwidth, etc.) - - private LspType lspType; // lsp type - - private List explicitPathInfo; //Explicit path info to compute explicit path - - private boolean loadBalancing; //load balancing option - - /** - * Initialization of member variables. - * - * @param src source device id - * @param dst destination device id - * @param name tunnel name - * @param constraints list of constraints - * @param lspType lsp type - * @param explicitPathInfo explicit path info - * @param loadBalancing load balancing option - */ - public PcePathInfo(DeviceId src, - DeviceId dst, - String name, - List constraints, - LspType lspType, - List explicitPathInfo, - boolean loadBalancing) { - this.src = src; - this.dst = dst; - this.name = name; - this.constraints = constraints; - this.lspType = lspType; - this.explicitPathInfo = explicitPathInfo; - this.loadBalancing = loadBalancing; - } - - /** - * Initialization for serialization. - */ - public PcePathInfo() { - this.src = null; - this.dst = null; - this.name = null; - this.constraints = null; - this.lspType = null; - this.explicitPathInfo = null; - this.loadBalancing = false; - } - - /** - * Returns source device id. - * - * @return source device id - */ - public DeviceId src() { - return src; - } - - /** - * Sets source device id. - * - * @param id source device id - */ - public void src(DeviceId id) { - this.src = id; - } - - /** - * Returns destination device id. - * - * @return destination device id - */ - public DeviceId dst() { - return dst; - } - - /** - * Sets destination device id. - * - * @param id destination device id - */ - public void dst(DeviceId id) { - this.dst = id; - } - - - /** - * Returns tunnel name. - * - * @return name - */ - public String name() { - return name; - } - - /** - * Sets tunnel name. - * - * @param name tunnel name - */ - public void name(String name) { - this.name = name; - } - - /** - * Returns list of constraints including cost, bandwidth, etc. - * - * @return list of constraints - */ - public List constraints() { - return constraints; - } - - /** - * Sets list of constraints. - * @param constraints list of constraints - */ - public void constraints(List constraints) { - this.constraints = constraints; - } - - /** - * Returns lsp type. - * - * @return lsp type - */ - public LspType lspType() { - return lspType; - } - - /** - * Sets lsp type. - * - * @param lspType lsp type - */ - public void lspType(LspType lspType) { - this.lspType = lspType; - } - - /** - * Returns list of explicit path info. - * - * @return list of explicit path info - */ - public List explicitPathInfo() { - return explicitPathInfo; - } - - /** - * Sets list of explicit path info. - * - * @param explicitPathInfo list of explicit path info - */ - public void explicitPathInfo(List explicitPathInfo) { - this.explicitPathInfo = explicitPathInfo; - } - - /** - * Returns whether stored path has enabled load balancing. - * - * @return load balancing option is enable - */ - public boolean isLoadBalancing() { - return loadBalancing; - } - - /** - * Sets load balancing option is enable. - * - * @param loadBalancing load balancing option is enable - */ - public void loadBalancing(boolean loadBalancing) { - this.loadBalancing = loadBalancing; - } - - @Override - public int hashCode() { - return Objects.hash(src, dst, name, constraints, lspType, explicitPathInfo, loadBalancing); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PcePathInfo) { - final PcePathInfo other = (PcePathInfo) obj; - return Objects.equals(this.src, other.src) && - Objects.equals(this.dst, other.dst) && - Objects.equals(this.name, other.name) && - Objects.equals(this.constraints, other.constraints) && - Objects.equals(this.lspType, other.lspType) && - Objects.equals(this.explicitPathInfo, other.explicitPathInfo) && - Objects.equals(this.loadBalancing, other.loadBalancing); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("Source", src) - .add("Destination", dst) - .add("Name", name) - .add("Constraints", constraints) - .add("explicitPathInfo", explicitPathInfo) - .add("LspType", lspType) - .add("loadBalancing", loadBalancing) - .toString(); - } -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/PceStore.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/PceStore.java deleted file mode 100644 index 5ad499999f..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/PceStore.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pcestore.api; - -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pcestore.PcePathInfo; - -import java.util.List; - -/** - * Abstraction of an entity providing pool of available labels to devices, links and tunnels. - */ -public interface PceStore { - - /** - * Checks whether path info is present in failed path info list. - * - * @param failedPathInfo failed path information - * @return success or failure - */ - boolean existsFailedPathInfo(PcePathInfo failedPathInfo); - - /** - * Retrieves the failed path info count. - * - * @return failed path info count - */ - int getFailedPathInfoCount(); - - /** - * Retrieves path info collection from failed path info store. - * - * @return collection of failed path info - */ - Iterable getFailedPathInfos(); - - /** - * Stores path information into failed path info store. - * - * @param failedPathInfo failed path information - */ - void addFailedPathInfo(PcePathInfo failedPathInfo); - - - /** - * Removes path info from failed path info store. - * - * @param failedPathInfo failed path information - * @return success or failure - */ - boolean removeFailedPathInfo(PcePathInfo failedPathInfo); - - /** - * Adds explicit path info to the map with corresponding tunnel name. - * - * @param tunnelName tunnel name as key - * @param explicitPathInfo list of explicit path objects - * @return whether it is added to map - */ - boolean tunnelNameExplicitPathInfoMap(String tunnelName, List explicitPathInfo); - - /** - * Gets explicit path info based on tunnel name. - * - * @param tunnelName tunnel name as key - * @return list of explicit path info - */ - List getTunnelNameExplicitPathInfoMap(String tunnelName); - - //DisjointPath getDisjointPaths(String tunnelName); - - //boolean addDisjointPathInfo(String tunnelName, DisjointPath path); - - /** - * Stores load balancing tunnels by load balance path name. - * - * @param loadBalancingPathName load balancing path name - * @param tunnelIds list load balancing tunnels - * @return success or failure - */ - boolean addLoadBalancingTunnelIdsInfo(String loadBalancingPathName, TunnelId... tunnelIds); - - /** - * Query load balancing tunnels by load balance path name. - * - * @param loadBalancingPathName load balancing path name - * @return list of load balancing tunnels - */ - List getLoadBalancingTunnelIds(String loadBalancingPathName); - - /** - * Removes load balancing tunnel info. - * - * @param loadBalancingPathName load balancing path name - * @return success or failure - */ - boolean removeLoadBalancingTunnelIdsInfo(String loadBalancingPathName); - - //boolean removeDisjointPathInfo(String tunnelName); -} diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/package-info.java deleted file mode 100644 index 1acea2535b..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/api/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCE store service API. - */ -package org.onosproject.pce.pcestore.api; diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/package-info.java b/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/package-info.java deleted file mode 100644 index f7ad0c003c..0000000000 --- a/apps/pce/app/src/main/java/org/onosproject/pce/pcestore/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCE store application. - */ -package org.onosproject.pce.pcestore; diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/BandwidthMgmtServiceAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/BandwidthMgmtServiceAdapter.java deleted file mode 100644 index 891bb18eb9..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/BandwidthMgmtServiceAdapter.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.onosproject.bandwidthmgr.api.BandwidthMgmtService; - -import java.util.Set; - -/** - * Adapter for Bandwidth Management service. - */ -public class BandwidthMgmtServiceAdapter implements BandwidthMgmtService { - @Override - public boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth) { - return false; - } - - @Override - public boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth) { - return false; - } - - @Override - public Double getAllocatedLocalReservedBw(LinkKey linkkey) { - return null; - } - - @Override - public boolean addUnreservedBw(LinkKey linkkey, Set bandwidth) { - return false; - } - - @Override - public boolean removeUnreservedBw(LinkKey linkkey) { - return false; - } - - @Override - public Set getUnreservedBw(LinkKey linkkey) { - return null; - } - - @Override - public boolean isBandwidthAvailable(Link link, Double bandwidth) { - return false; - } - - @Override - public Double getTeCost(LinkKey linkKey) { - return null; - } - - @Override - public Double getAvailableBandwidth(LinkKey linkKey) { - return null; - } -} diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java deleted file mode 100644 index 9d95e4430c..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pce.pceservice; - -import com.google.common.collect.Lists; -import com.google.common.testing.EqualsTester; -import org.junit.Test; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.pce.pceservice.constraint.CostConstraint; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; -import org.onosproject.pce.pcestore.api.PceStore; - -import java.util.List; - -import static org.easymock.EasyMock.createMock; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onosproject.pce.pceservice.PathComputationTest.D2; - -/** - * Unit tests for DefaultPcePath class. - */ -public class DefaultPcePathTest { - private PceStore pceStore = createMock(PceStore.class); - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // create same two pce-path objects. - final String cost1 = "1"; - final String bandwidth1 = "200"; - final String src1 = "foo"; - final String dst1 = "bee"; - final String type1 = "1"; - final String name1 = "pcc"; - final List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId()); - explicitPathInfoList.add(obj); - PcePath path1 = DefaultPcePath.builder() - .source(src1) - .destination(dst1) - .lspType(type1) - .name(name1) - .costConstraint(cost1) - .bandwidthConstraint(bandwidth1) - .explicitPathInfo(explicitPathInfoList) - .build(); - path1.id(TunnelId.valueOf("1")); - - // create same as above object - PcePath samePath1 = DefaultPcePath.builder() - .source(src1) - .destination(dst1) - .lspType(type1) - .name(name1) - .costConstraint(cost1) - .bandwidthConstraint(bandwidth1) - .explicitPathInfo(explicitPathInfoList) - .build(); - samePath1.id(TunnelId.valueOf("1")); - - // Create different pce-path object. - final String cost2 = "1"; - final String bandwidth2 = "200"; - final String src2 = "google"; - final String dst2 = "yahoo"; - final String type2 = "2"; - final String name2 = "pcc2"; - - PcePath path2 = DefaultPcePath.builder() - .source(src2) - .destination(dst2) - .lspType(type2) - .name(name2) - .costConstraint(cost2) - .bandwidthConstraint(bandwidth2) - .explicitPathInfo(explicitPathInfoList) - .build(); - path2.id(TunnelId.valueOf("2")); - - new EqualsTester().addEqualityGroup(path1, samePath1).addEqualityGroup(path2).testEquals(); - } - - /** - * Checks the construction of a DefaultPcePath object. - */ - @Test - public void testConstruction() { - final String cost = "1"; - final String bandwidth = "600"; - final String src = "indiatimes"; - final String dst = "deccan"; - final String type = "2"; - final String name = "pcc4"; - final List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId()); - explicitPathInfoList.add(obj); - PcePath path = DefaultPcePath.builder() - .source(src) - .destination(dst) - .lspType(type) - .name(name) - .costConstraint(cost) - .bandwidthConstraint(bandwidth) - .explicitPathInfo(explicitPathInfoList) - .build(); - - assertThat(path.source(), is(src)); - assertThat(path.destination(), is(dst)); - assertThat(path.lspType(), is(LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR)); - assertThat(path.name(), is(name)); - CostConstraint costConstExpected = CostConstraint.of(CostConstraint.Type.values()[Integer.valueOf(cost) - 1]); - CostConstraint costConstActual = (CostConstraint) path.costConstraint(); - assertThat(costConstActual.type(), is(costConstExpected.type())); - PceBandwidthConstraint bandwidthActual = (PceBandwidthConstraint) path.bandwidthConstraint(); - assertThat(bandwidthActual.bandwidth().bps(), is(Double.valueOf(bandwidth))); - } -} diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PathComputationTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PathComputationTest.java deleted file mode 100644 index 2241d6d15e..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PathComputationTest.java +++ /dev/null @@ -1,1436 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.JsonNodeFactory; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.graph.AbstractGraphPathSearch; -import org.onlab.graph.AdjacencyListsGraph; -import org.onlab.graph.DijkstraGraphSearch; -import org.onlab.graph.Graph; -import org.onlab.graph.GraphPathSearch; -import org.onlab.graph.ScalarWeight; -import org.onlab.graph.Weight; -import org.onlab.packet.ChassisId; -import org.onlab.util.Bandwidth; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DefaultDevice; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DefaultPath; -import org.onosproject.net.Device; -import org.onosproject.net.Device.Type; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.onosproject.net.Path; -import org.onosproject.net.PortNumber; -import org.onosproject.net.config.Config; -import org.onosproject.net.config.ConfigApplyDelegate; -import org.onosproject.net.config.ConfigFactory; -import org.onosproject.net.config.NetworkConfigRegistryAdapter; -import org.onosproject.net.device.DeviceServiceAdapter; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.net.topology.DefaultTopologyEdge; -import org.onosproject.net.topology.DefaultTopologyVertex; -import org.onosproject.net.topology.LinkWeigher; -import org.onosproject.net.topology.TopologyEdge; -import org.onosproject.net.topology.TopologyVertex; -import org.onosproject.pce.pceservice.constraint.CapabilityConstraint; -import org.onosproject.pce.pceservice.constraint.CostConstraint; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; -import org.onosproject.pce.pceservice.constraint.SharedBandwidthConstraint; -import org.onosproject.pcep.api.DeviceCapability; -import org.onosproject.pcep.api.TeLinkConfig; - -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.collect.ImmutableSet.of; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; -import static org.onlab.graph.GraphPathSearch.ALL_PATHS; -import static org.onosproject.core.CoreService.CORE_PROVIDER_ID; -import static org.onosproject.net.DeviceId.deviceId; -import static org.onosproject.net.Link.State.ACTIVE; -import static org.onosproject.net.Link.Type.DIRECT; -import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.COST; -import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.TE_COST; - -/** - * Test for CSPF path computation. - */ -public class PathComputationTest { - - private final MockDeviceService deviceService = new MockDeviceService(); - private final MockNetConfigRegistryAdapter netConfigRegistry = new MockNetConfigRegistryAdapter(); - private PceManager pceManager = new PceManager(); - private final MockBandwidthMgmtService bandwidthMgmtService = new MockBandwidthMgmtService(); - public static ProviderId providerId = new ProviderId("pce", "foo"); - public static final String DEVICE1 = "D001"; - public static final String DEVICE2 = "D002"; - public static final String DEVICE3 = "D003"; - public static final String DEVICE4 = "D004"; - public static final String DEVICE5 = "D005"; - public static final String PCEPDEVICE1 = "PD001"; - public static final String PCEPDEVICE2 = "PD002"; - public static final String PCEPDEVICE3 = "PD003"; - public static final String PCEPDEVICE4 = "PD004"; - public static final TopologyVertex D1 = new DefaultTopologyVertex(DeviceId.deviceId("D001")); - public static final TopologyVertex D2 = new DefaultTopologyVertex(DeviceId.deviceId("D002")); - public static final TopologyVertex D3 = new DefaultTopologyVertex(DeviceId.deviceId("D003")); - public static final TopologyVertex D4 = new DefaultTopologyVertex(DeviceId.deviceId("D004")); - public static final TopologyVertex D5 = new DefaultTopologyVertex(DeviceId.deviceId("D005")); - private static final String ANNOTATION_COST = "cost"; - private static final String ANNOTATION_TE_COST = "teCost"; - private static final String UNKNOWN = "unknown"; - public static final String LSRID = "lsrId"; - public static final String L3 = "L3"; - public static final String PCECC_CAPABILITY = "pceccCapability"; - public static final String SR_CAPABILITY = "srCapability"; - public static final String LABEL_STACK_CAPABILITY = "labelStackCapability"; - - @Before - public void startUp() { - pceManager.deviceService = deviceService; - pceManager.netCfgService = netConfigRegistry; - } - - /** - * Selects path computation algorithm. - * - * @return graph path search algorithm - */ - public static AbstractGraphPathSearch graphSearch() { - return new DijkstraGraphSearch<>(); - } - - /** - * Returns link for two devices. - * - * @param device source device - * @param port source port - * @param device2 destination device - * @param port2 destination port - * @return link - */ - public static Link addLink(String device, long port, String device2, long port2, boolean setCost, int value) { - ConnectPoint src = new ConnectPoint(DeviceId.deviceId(device), PortNumber.portNumber(port)); - ConnectPoint dst = new ConnectPoint(DeviceId.deviceId(device2), PortNumber.portNumber(port2)); - Link curLink; - DefaultAnnotations.Builder annotationBuilder = DefaultAnnotations.builder(); - - //TODO:If cost not set cost : default value case - curLink = DefaultLink.builder().src(src).dst(dst).state(ACTIVE).type(DIRECT) - .providerId(PathComputationTest.providerId).annotations(annotationBuilder.build()).build(); - return curLink; - } - - @After - public void tearDown() { - pceManager.deviceService = null; - pceManager.netCfgService = null; - } - - /** - * Returns an edge-weight capable of evaluating links on the basis of the - * specified constraints. - * - * @param constraints path constraints - * @return edge-weight function - */ - private LinkWeigher weight(List constraints) { - return new MockTeConstraintBasedLinkWeight(constraints); - } - - private Set computePath(Link link1, Link link2, Link link3, Link link4, List constraints) { - Graph graph = new AdjacencyListsGraph<>(of(D1, D2, D3, D4), - of(new DefaultTopologyEdge(D1, D2, link1), - new DefaultTopologyEdge(D2, D4, link2), - new DefaultTopologyEdge(D1, D3, link3), - new DefaultTopologyEdge(D3, D4, link4))); - - GraphPathSearch.Result result = - graphSearch().search(graph, D1, D4, weight(constraints), ALL_PATHS); - ImmutableSet.Builder builder = ImmutableSet.builder(); - for (org.onlab.graph.Path path : result.paths()) { - builder.add(networkPath(path)); - } - return builder.build(); - } - - private class MockDeviceService extends DeviceServiceAdapter { - List devices = new LinkedList<>(); - - private void addDevice(Device dev) { - devices.add(dev); - } - - @Override - public Device getDevice(DeviceId deviceId) { - for (Device dev : devices) { - if (dev.id().equals(deviceId)) { - return dev; - } - } - return null; - } - - @Override - public Iterable getAvailableDevices() { - return devices; - } - } - - private class MockTeConstraintBasedLinkWeight implements LinkWeigher { - - private final List constraints; - - /** - * Creates a new edge-weight function capable of evaluating links - * on the basis of the specified constraints. - * - * @param constraints path constraints - */ - MockTeConstraintBasedLinkWeight(List constraints) { - if (constraints == null) { - this.constraints = Collections.emptyList(); - } else { - this.constraints = ImmutableList.copyOf(constraints); - } - } - - @Override - public Weight getInitialWeight() { - return ScalarWeight.toWeight(0.0); - } - - @Override - public Weight getNonViableWeight() { - return ScalarWeight.NON_VIABLE_WEIGHT; - } - - @Override - public Weight weight(TopologyEdge edge) { - if (!constraints.iterator().hasNext()) { - //Takes default cost/hopcount as 1 if no constraints specified - return ScalarWeight.toWeight(1.0); - } - - Iterator it = constraints.iterator(); - double cost = 1; - - //If any constraint fails return -1 also value of cost returned from cost constraint can't be negative - while (it.hasNext() && cost > 0) { - Constraint constraint = it.next(); - if (constraint instanceof CapabilityConstraint) { - cost = ((CapabilityConstraint) constraint).isValidLink(edge.link(), deviceService, - netConfigRegistry) ? 1 : -1; - } else if (constraint instanceof PceBandwidthConstraint) { - cost = ((PceBandwidthConstraint) constraint).isValidLink(edge.link(), - bandwidthMgmtService) ? 1 : -1; - - } else if (constraint instanceof SharedBandwidthConstraint) { - cost = ((SharedBandwidthConstraint) constraint).isValidLink(edge.link(), - bandwidthMgmtService) ? 1 : -1; - - } else if (constraint instanceof CostConstraint) { - cost = ((CostConstraint) constraint).isValidLink(edge.link(), netConfigRegistry); - } else { - cost = constraint.cost(edge.link(), null); - } - } - return ScalarWeight.toWeight(cost); - } - } - - /** - * Returns the path in Path object format. - */ - public static Path networkPath(org.onlab.graph.Path path) { - List links = path.edges().stream().map(TopologyEdge::link).collect(Collectors.toList()); - return new DefaultPath(CORE_PROVIDER_ID, links, path.cost()); - } - - public static class MockBandwidthMgmtService extends BandwidthMgmtServiceAdapter { - private Map teCost = new HashMap<>(); - // Locally maintain unreserved bandwidth of each link. - private Map> unResvBw = new HashMap<>(); - - // Mapping tunnel with link key with local reserved bandwidth - private Map localReservedBw = new HashMap<>(); - - @Override - public boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth) { - Double allocatedBw = localReservedBw.get(linkkey); - if (allocatedBw != null) { - localReservedBw.put(linkkey, (allocatedBw + bandwidth)); - } else { - localReservedBw.put(linkkey, bandwidth); - } - - return true; - } - - @Override - public boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth) { - Double allocatedBw = localReservedBw.get(linkkey); - if (allocatedBw == null || allocatedBw < bandwidth) { - return false; - } - - Double releasedBw = allocatedBw - bandwidth; - if (releasedBw == 0.0) { - localReservedBw.remove(linkkey); - } else { - localReservedBw.put(linkkey, releasedBw); - } - return true; - } - - @Override - public Double getAllocatedLocalReservedBw(LinkKey linkkey) { - return localReservedBw.get(linkkey); - } - - @Override - public boolean addUnreservedBw(LinkKey linkkey, Set bandwidth) { - unResvBw.put(linkkey, bandwidth); - return true; - } - - @Override - public boolean removeUnreservedBw(LinkKey linkkey) { - unResvBw.remove(linkkey); - return true; - } - - @Override - public Set getUnreservedBw(LinkKey linkkey) { - checkNotNull(linkkey); - return unResvBw.get(linkkey); - } - - @Override - public boolean isBandwidthAvailable(Link link, Double bandwidth) { - LinkKey linkKey = LinkKey.linkKey(link); - Double localAllocBw = getAllocatedLocalReservedBw(linkKey); - - Set unResvBw = getUnreservedBw(linkKey); - - Double prirZeroBw = unResvBw.iterator().next(); - return (bandwidth <= prirZeroBw - (localAllocBw != null ? localAllocBw : 0)); - } - - @Override - public Double getTeCost(LinkKey linkKey) { - if (teCost.get(linkKey) != null) { - return teCost.get(linkKey); - } - return null; - } - - @Override - public Double getAvailableBandwidth(LinkKey linkKey) { - if (unResvBw.get(linkKey) != null && localReservedBw.get(linkKey) != null) { - - return unResvBw.get(linkKey).iterator().next().doubleValue() - - localReservedBw.get(linkKey).doubleValue(); - } - return unResvBw.get(linkKey).iterator().next().doubleValue(); - } - } - - /* Mock test for network config registry. */ - public static class MockNetConfigRegistryAdapter extends NetworkConfigRegistryAdapter { - private ConfigFactory cfgFactory; - private Map classConfig = new HashMap<>(); - private Map teLinkConfig = new HashMap<>(); - - @Override - public void registerConfigFactory(ConfigFactory configFactory) { - cfgFactory = configFactory; - } - - @Override - public void unregisterConfigFactory(ConfigFactory configFactory) { - cfgFactory = null; - } - - @Override - public > C addConfig(S subject, Class configClass) { - if (configClass == DeviceCapability.class) { - DeviceCapability devCap = new DeviceCapability(); - classConfig.put((DeviceId) subject, devCap); - - JsonNode node = new ObjectNode(new MockJsonNode()); - ObjectMapper mapper = new ObjectMapper(); - ConfigApplyDelegate delegate = new InternalApplyDelegate(); - devCap.init((DeviceId) subject, null, node, mapper, delegate); - return (C) devCap; - } else if (configClass == TeLinkConfig.class) { - TeLinkConfig teConfig = new TeLinkConfig(); - teLinkConfig.put((LinkKey) subject, teConfig); - - JsonNode node = new ObjectNode(new MockJsonNode()); - ObjectMapper mapper = new ObjectMapper(); - ConfigApplyDelegate delegate = new InternalApplyDelegate(); - teConfig.init((LinkKey) subject, null, node, mapper, delegate); - return (C) teConfig; - } - - return null; - } - - @Override - public > void removeConfig(S subject, Class configClass) { - if (configClass == DeviceCapability.class) { - classConfig.remove(subject); - } else if (configClass == TeLinkConfig.class) { - teLinkConfig.remove(subject); - } - } - - @Override - public > C getConfig(S subject, Class configClass) { - if (configClass == DeviceCapability.class) { - return (C) classConfig.get(subject); - } else if (configClass == TeLinkConfig.class) { - return (C) teLinkConfig.get(subject); - } - return null; - } - - private class MockJsonNode extends JsonNodeFactory { - } - - // Auxiliary delegate to receive notifications about changes applied to - // the network configuration - by the apps. - private class InternalApplyDelegate implements ConfigApplyDelegate { - @Override - public void onApply(Config config) { - //configs.put(config.subject(), config.node()); - } - } - } - - /** - * All links with different costs with L1-L2 as least cost path. - */ - @Test - public void testpathComputationCase1() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 50); - - CostConstraint costConst = CostConstraint.of(COST); - List constraints = new LinkedList<>(); - constraints.add(costConst); - - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.igpCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.igpCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.igpCost(100) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.igpCost(50) - .apply(); - - Set paths = computePath(link1, link2, link3, link4, constraints); - - List links = new LinkedList<>(); - - links.add(link1); - links.add(link2); - - assertThat(paths.iterator().next().links(), is(links)); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0))); - } - - /** - * Links with same cost 100 except link3. - */ - @Test - public void testpathComputationCase2() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 100); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 100); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 1000); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 100); - - CostConstraint costConst = CostConstraint.of(COST); - List constraints = new LinkedList<>(); - constraints.add(costConst); - - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.igpCost(100) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.igpCost(100) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.igpCost(1000) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.igpCost(100) - .apply(); - - Set paths = computePath(link1, link2, link3, link4, constraints); - - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - - assertThat(paths.iterator().next().links(), is(links)); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(200.0))); - } - - /** - * Path which satisfy bandwidth as a constraint with 10bps. - */ - @Test - public void testpathComputationCase3() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 50); - - Set unreserved = new HashSet<>(); - unreserved.add(new Double(50)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0)); - - unreserved.remove(new Double(50)); - unreserved.add(new Double(100)); - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0)); - - PceBandwidthConstraint bandwidthConst = new PceBandwidthConstraint(Bandwidth.bps(10.0)); - - List constraints = new LinkedList<>(); - constraints.add(bandwidthConst); - - Set paths = computePath(link1, link2, link3, link4, constraints); - - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0))); - } - - /** - * Path which satisfy bandwidth as a constraint with 60bps. - */ - @Test - public void testpathComputationCase4() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 50); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 100); - - Set unreserved = new HashSet<>(); - unreserved.add(new Double(50)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0)); - - unreserved.remove(new Double(50)); - unreserved.add(new Double(100)); - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0)); - - PceBandwidthConstraint bandwidthConst = new PceBandwidthConstraint(Bandwidth.bps(60.0)); - - List constraints = new LinkedList<>(); - constraints.add(bandwidthConst); - Set paths = computePath(link1, link2, link3, link4, constraints); - - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0))); - } - - /** - * Shared bandwidth as L1, L2 with its value 10 bps and bandwidth constraint as 20 bps. - */ - @Test - public void testpathComputationCase5() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80); - - Set unreserved = new HashSet<>(); - unreserved.add(new Double(50)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0)); - - unreserved.remove(new Double(50)); - unreserved.add(new Double(100)); - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0)); - - List constraints = new LinkedList<>(); - - List sharedLinks = new LinkedList<>(); - - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - - CostConstraint costConst = CostConstraint.of(COST); - - - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.igpCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.igpCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.igpCost(100) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.igpCost(50) - .apply(); - - sharedLinks.addAll(links); - SharedBandwidthConstraint sharedBw = new SharedBandwidthConstraint(sharedLinks, Bandwidth.bps(10), - Bandwidth.bps(20.0)); - constraints.add(sharedBw); - constraints.add(costConst); - Set paths = computePath(link1, link2, link3, link4, constraints); - assertThat(paths.iterator().next().links(), is(links)); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0))); - } - - /** - * Shared bandwidth as L1, L2 with its value 20 bps and bandwidth constraint as 10 bps. - */ - @Test - public void testpathComputationCase6() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80); - - Set unreserved = new HashSet<>(); - unreserved.add(new Double(50)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0)); - - unreserved.remove(new Double(50)); - unreserved.add(new Double(100)); - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0)); - - List constraints = new LinkedList<>(); - - List sharedLinks = new LinkedList<>(); - - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - CostConstraint costConst = CostConstraint.of(COST); - - - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.igpCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.igpCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.igpCost(100) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.igpCost(80) - .apply(); - - sharedLinks.addAll(links); - SharedBandwidthConstraint sharedBwConst = new SharedBandwidthConstraint(sharedLinks, Bandwidth.bps(20), - Bandwidth.bps(10.0)); - constraints.add(sharedBwConst); - constraints.add(costConst); - Set paths = computePath(link1, link2, link3, link4, constraints); - - assertThat(paths.iterator().next().links(), is(links)); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0))); - } - - /** - * Path without constraints. - */ - @Test - public void testpathComputationCase7() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80); - List constraints = new LinkedList<>(); - Set paths = computePath(link1, link2, link3, link4, constraints); - - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0))); - } - - /** - * With TeCost as a constraints. - */ - @Test - public void testpathComputationCase8() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80); - - CostConstraint tecostConst = CostConstraint.of(TE_COST); - - List constraints = new LinkedList<>(); - constraints.add(tecostConst); - - - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.teCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.teCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.teCost(100) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.teCost(80) - .apply(); - - Set paths = computePath(link1, link2, link3, link4, constraints); - - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - assertThat(paths.iterator().next().links(), is(links)); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0))); - } - - /** - * With device supporting RSVP capability as a constraints. - */ - @Test - public void testpathComputationCase9() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80); - - CostConstraint tecostConst = CostConstraint.of(TE_COST); - - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.teCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.teCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.teCost(100) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.teCost(80) - .apply(); - - - CapabilityConstraint capabilityConst = CapabilityConstraint - .of(CapabilityConstraint.CapabilityType.WITH_SIGNALLING); - - List constraints = new LinkedList<>(); - constraints.add(capabilityConst); - constraints.add(tecostConst); - //Device1 - DefaultAnnotations.Builder builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "1.1.1.1"); - addDevice(DEVICE1, builder); - - DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class); - device1Cap.setLabelStackCap(false) - .setLocalLabelCap(false) - .setSrCap(false) - .apply(); - - //Device2 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "2.2.2.2"); - addDevice(DEVICE2, builder); - - DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class); - device2Cap.setLabelStackCap(false) - .setLocalLabelCap(false) - .setSrCap(false) - .apply(); - - //Device3 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "3.3.3.3"); - addDevice(DEVICE3, builder); - - DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class); - device3Cap.setLabelStackCap(false) - .setLocalLabelCap(false) - .setSrCap(false) - .apply(); - - //Device4 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "4.4.4.4"); - addDevice(DEVICE4, builder); - - DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class); - device4Cap.setLabelStackCap(false) - .setLocalLabelCap(false) - .setSrCap(false) - .apply(); - - Set paths = computePath(link1, link2, link3, link4, constraints); - - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - assertThat(paths.iterator().next().links(), is(links)); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0))); - } - - /** - * Devices supporting CR capability. - */ - @Test - public void testpathComputationCase10() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80); - - CapabilityConstraint capabilityConst = CapabilityConstraint - .of(CapabilityConstraint.CapabilityType.WITHOUT_SIGNALLING_AND_WITHOUT_SR); - - List constraints = new LinkedList<>(); - constraints.add(capabilityConst); - CostConstraint costConst = CostConstraint.of(COST); - constraints.add(costConst); - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.igpCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.igpCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.igpCost(100) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.igpCost(80) - .apply(); - - //Device1 - DefaultAnnotations.Builder builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "1.1.1.1"); - addDevice(DEVICE1, builder); - DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class); - device1Cap.setLabelStackCap(false) - .setLocalLabelCap(true) - .setSrCap(false) - .apply(); - - //Device2 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "2.2.2.2"); - addDevice(DEVICE2, builder); - DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class); - device2Cap.setLabelStackCap(false) - .setLocalLabelCap(true) - .setSrCap(false) - .apply(); - - //Device3 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "3.3.3.3"); - addDevice(DEVICE3, builder); - DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class); - device3Cap.setLabelStackCap(false) - .setLocalLabelCap(true) - .setSrCap(false) - .apply(); - - //Device4 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "4.4.4.4"); - addDevice(DEVICE4, builder); - DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class); - device4Cap.setLabelStackCap(false) - .setLocalLabelCap(true) - .setSrCap(false) - .apply(); - - Set paths = computePath(link1, link2, link3, link4, constraints); - - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - assertThat(paths.iterator().next().links(), is(links)); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0))); - } - - /** - * Device supporting SR capability. - */ - @Test - public void testpathComputationCase11() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80); - - CapabilityConstraint capabilityConst = CapabilityConstraint - .of(CapabilityConstraint.CapabilityType.SR_WITHOUT_SIGNALLING); - - List constraints = new LinkedList<>(); - constraints.add(capabilityConst); - CostConstraint costConst = CostConstraint.of(COST); - constraints.add(costConst); - - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.igpCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.igpCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.igpCost(100) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.igpCost(80) - .apply(); - //Device1 - DefaultAnnotations.Builder builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "1.1.1.1"); - addDevice(DEVICE1, builder); - DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class); - device1Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - //Device2 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "2.2.2.2"); - addDevice(DEVICE2, builder); - DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class); - device2Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - //Device3 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "3.3.3.3"); - addDevice(DEVICE3, builder); - DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class); - device3Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - //Device4 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "4.4.4.4"); - addDevice(DEVICE4, builder); - DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class); - device4Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - Set paths = computePath(link1, link2, link3, link4, constraints); - - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - assertThat(paths.iterator().next().links(), is(links)); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0))); - } - - /** - * Path with TE and SR capability constraint. - */ - @Test - public void testpathComputationCase12() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80); - - CostConstraint tecostConst = CostConstraint.of(TE_COST); - CapabilityConstraint capabilityConst = CapabilityConstraint - .of(CapabilityConstraint.CapabilityType.SR_WITHOUT_SIGNALLING); - - List constraints = new LinkedList<>(); - - constraints.add(capabilityConst); - constraints.add(tecostConst); - - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.teCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.teCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.teCost(100) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.teCost(80) - .apply(); - //Device1 - DefaultAnnotations.Builder builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "1.1.1.1"); - addDevice(DEVICE1, builder); - DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class); - device1Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - //Device2 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "2.2.2.2"); - addDevice(DEVICE2, builder); - DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class); - device2Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - //Device3 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "3.3.3.3"); - addDevice(DEVICE3, builder); - DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class); - device3Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - //Device4 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "4.4.4.4"); - addDevice(DEVICE4, builder); - DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class); - device4Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - Set paths = computePath(link1, link2, link3, link4, constraints); - - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - assertThat(paths.iterator().next().links(), is(links)); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(70.0))); - } - - /** - * Path with capability constraint and with default cost. - */ - @Test - public void testpathComputationCase13() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80); - - CapabilityConstraint capabilityConst = CapabilityConstraint - .of(CapabilityConstraint.CapabilityType.SR_WITHOUT_SIGNALLING); - - List constraints = new LinkedList<>(); - constraints.add(capabilityConst); - //Device1 - DefaultAnnotations.Builder builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "1.1.1.1"); - addDevice(DEVICE1, builder); - DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class); - device1Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - //Device2 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "2.2.2.2"); - addDevice(DEVICE2, builder); - DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class); - device2Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - //Device3 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "3.3.3.3"); - addDevice(DEVICE3, builder); - DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class); - device3Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - //Device4 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "4.4.4.4"); - addDevice(DEVICE4, builder); - DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class); - device4Cap.setLabelStackCap(true) - .setLocalLabelCap(false) - .setSrCap(true) - .apply(); - - Set paths = computePath(link1, link2, link3, link4, constraints); - - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0))); - } - - /** - * Test case with empty constraints. - */ - @Test - public void testpathComputationCase14() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80); - - List constraints = new LinkedList<>(); - Set paths = computePath(link1, link2, link3, link4, constraints); - - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0))); - } - - /** - * Test case with constraints as null. - */ - @Test - public void testpathComputationCase15() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80); - - List constraints = null; - Set paths = computePath(link1, link2, link3, link4, constraints); - - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0))); - } - - /** - * Path with cost constraint. - */ - @Test - public void testpathComputationCase16() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, true, 100); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 10); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 10); - Link link5 = addLink(DEVICE4, 90, DEVICE5, 100, true, 20); - - CostConstraint costConst = CostConstraint.of(COST); - - List constraints = new LinkedList<>(); - constraints.add(costConst); - - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.igpCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.igpCost(100) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.igpCost(10) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.igpCost(10) - .apply(); - - TeLinkConfig teLinkConfig5 = netConfigRegistry.addConfig(LinkKey.linkKey(link5), TeLinkConfig.class); - teLinkConfig5.igpCost(20) - .apply(); - - Graph graph = new AdjacencyListsGraph<>(of(D1, D2, D3, D4, D5), - of(new DefaultTopologyEdge(D1, D2, link1), - new DefaultTopologyEdge(D2, D4, link2), - new DefaultTopologyEdge(D1, D3, link3), - new DefaultTopologyEdge(D3, D4, link4), - new DefaultTopologyEdge(D4, D5, link5))); - - GraphPathSearch.Result result = - graphSearch().search(graph, D1, D5, weight(constraints), ALL_PATHS); - ImmutableSet.Builder builder = ImmutableSet.builder(); - for (org.onlab.graph.Path path : result.paths()) { - builder.add(networkPath(path)); - } - - List links = new LinkedList<>(); - links.add(link3); - links.add(link4); - links.add(link5); - assertThat(builder.build().iterator().next().links(), is(links)); - assertThat(builder.build().iterator().next().weight(), is(ScalarWeight.toWeight(40.0))); - } - - /** - * D3 doesn't support capability constraint, so path is L1-L2. - */ - @Test - public void testpathComputationCase17() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, false, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, false, 100); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80); - - CapabilityConstraint capabilityConst = CapabilityConstraint - .of(CapabilityConstraint.CapabilityType.WITHOUT_SIGNALLING_AND_WITHOUT_SR); - - List constraints = new LinkedList<>(); - constraints.add(capabilityConst); - //Device1 - DefaultAnnotations.Builder builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "1.1.1.1"); - addDevice(DEVICE1, builder); - DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class); - device1Cap.setLabelStackCap(false) - .setLocalLabelCap(true) - .setSrCap(false) - .apply(); - - //Device2 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "2.2.2.2"); - addDevice(DEVICE2, builder); - DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class); - device2Cap.setLabelStackCap(false) - .setLocalLabelCap(true) - .setSrCap(false) - .apply(); - - //Device4 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "4.4.4.4"); - addDevice(DEVICE4, builder); - DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class); - device4Cap.setLabelStackCap(false) - .setLocalLabelCap(true) - .setSrCap(false) - .apply(); - Set paths = computePath(link1, link2, link3, link4, constraints); - - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - - assertThat(paths.iterator().next().links(), is(links)); - assertThat(paths.iterator().next().weight(), is(ScalarWeight.toWeight(2.0))); - } - - /** - * L2 doesn't support cost constraint and D3 doesn't support capability constraint, both constraint fails hence no - * path. - */ - @Test - public void testpathComputationCase18() { - Link link1 = addLink(DEVICE1, 10, DEVICE2, 20, true, 50); - Link link2 = addLink(DEVICE2, 30, DEVICE4, 40, false, 20); - Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 10); - Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 10); - - CapabilityConstraint capabilityConst = CapabilityConstraint - .of(CapabilityConstraint.CapabilityType.WITHOUT_SIGNALLING_AND_WITHOUT_SR); - CostConstraint costConst = CostConstraint.of(COST); - - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.igpCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.igpCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.igpCost(10) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.igpCost(10) - .apply(); - - List constraints = new LinkedList<>(); - constraints.add(capabilityConst); - constraints.add(costConst); - //Device1 - DefaultAnnotations.Builder builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "1.1.1.1"); - addDevice(DEVICE2, builder); - DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class); - device1Cap.setLabelStackCap(false) - .setLocalLabelCap(true) - .setSrCap(false) - .apply(); - - //Device2 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "2.2.2.2"); - addDevice(DEVICE2, builder); - DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class); - device2Cap.setLabelStackCap(false) - .setLocalLabelCap(true) - .setSrCap(false) - .apply(); - - //Device4 - builder = DefaultAnnotations.builder(); - builder.set(AnnotationKeys.TYPE, L3); - builder.set(LSRID, "4.4.4.4"); - addDevice(DEVICE4, builder); - DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class); - device4Cap.setLabelStackCap(false) - .setLocalLabelCap(true) - .setSrCap(false) - .apply(); - Set paths = computePath(link1, link2, link3, link4, constraints); - - assertThat(paths, is(new HashSet<>())); - } - - private void addDevice(String device, DefaultAnnotations.Builder builder) { - deviceService.addDevice(new DefaultDevice(ProviderId.NONE, deviceId(device), Type.ROUTER, - UNKNOWN, UNKNOWN, UNKNOWN, - UNKNOWN, new ChassisId(), builder.build())); - } -} \ No newline at end of file diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java deleted file mode 100644 index 1449eb0efb..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java +++ /dev/null @@ -1,1688 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.graph.GraphPathSearch; -import org.onlab.graph.ScalarWeight; -import org.onlab.junit.TestUtils; -import org.onlab.junit.TestUtils.TestUtilsException; -import org.onlab.util.Bandwidth; -import org.onosproject.common.DefaultTopologyGraph; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreServiceAdapter; -import org.onosproject.core.DefaultApplicationId; -import org.onosproject.core.IdGenerator; -import org.onosproject.event.Event; -import org.onosproject.incubator.net.tunnel.DefaultTunnel; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.Tunnel.State; -import org.onosproject.incubator.net.tunnel.TunnelEndPoint; -import org.onosproject.incubator.net.tunnel.TunnelEvent; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.incubator.net.tunnel.TunnelListener; -import org.onosproject.incubator.net.tunnel.TunnelServiceAdapter; -import org.onosproject.mastership.MastershipServiceAdapter; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.net.Annotations; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DefaultAnnotations.Builder; -import org.onosproject.net.DefaultDevice; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.ElementId; -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.Path; -import org.onosproject.net.SparseAnnotations; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.link.LinkEvent; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.net.topology.DefaultTopologyEdge; -import org.onosproject.net.topology.DefaultTopologyVertex; -import org.onosproject.net.topology.LinkWeigher; -import org.onosproject.net.topology.PathServiceAdapter; -import org.onosproject.net.topology.Topology; -import org.onosproject.net.topology.TopologyEdge; -import org.onosproject.net.topology.TopologyEvent; -import org.onosproject.net.topology.TopologyGraph; -import org.onosproject.net.topology.TopologyListener; -import org.onosproject.net.topology.TopologyServiceAdapter; -import org.onosproject.net.topology.TopologyVertex; -import org.onosproject.pce.pceservice.PathComputationTest.MockNetConfigRegistryAdapter; -import org.onosproject.pce.pceservice.constraint.CostConstraint; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; -import org.onosproject.pce.pcestore.api.PceStore; -import org.onosproject.pce.util.MockDeviceService; -import org.onosproject.pce.util.PceStoreAdapter; -import org.onosproject.pcep.api.DeviceCapability; -import org.onosproject.pcep.api.TeLinkConfig; -import org.onosproject.store.service.TestStorageService; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; -import java.util.concurrent.atomic.AtomicLong; -import java.util.function.Consumer; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; -import static org.onlab.graph.GraphPathSearch.ALL_PATHS; -import static org.onosproject.incubator.net.tunnel.Tunnel.State.ESTABLISHED; -import static org.onosproject.incubator.net.tunnel.Tunnel.State.UNSTABLE; -import static org.onosproject.net.MastershipRole.MASTER; -import static org.onosproject.pce.pceservice.LspType.SR_WITHOUT_SIGNALLING; -import static org.onosproject.pce.pceservice.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR; -import static org.onosproject.pce.pceservice.LspType.WITH_SIGNALLING; -import static org.onosproject.pce.pceservice.PathComputationTest.D1; -import static org.onosproject.pce.pceservice.PathComputationTest.D2; -import static org.onosproject.pce.pceservice.PathComputationTest.D3; -import static org.onosproject.pce.pceservice.PathComputationTest.D4; -import static org.onosproject.pce.pceservice.PathComputationTest.D5; -import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE1; -import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE2; -import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE3; -import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE4; -import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE5; -import static org.onosproject.pce.pceservice.PcepAnnotationKeys.LOCAL_LSP_ID; -import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PLSP_ID; -import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.COST; -import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.TE_COST; - -/** - * Tests the functions of PceManager. - */ -public class PceManagerTest { - - private PathComputationTest pathCompTest = new PathComputationTest(); - private MockTopologyService topologyService = new MockTopologyService(); - private MockMastershipService mastershipService = new MockMastershipService(); - private MockPathService pathService = new MockPathService(); - private PceManager pceManager = new PceManager(); - private MockCoreService coreService = new MockCoreService(); - private MockTunnelServiceAdapter tunnelService = new MockTunnelServiceAdapter(); - private TestStorageService storageService = new TestStorageService(); - private MockDeviceService deviceService = new MockDeviceService(); - private MockNetConfigRegistryAdapter netConfigRegistry = new PathComputationTest.MockNetConfigRegistryAdapter(); - private PceStore pceStore = new PceStoreAdapter(); - private PathComputationTest.MockBandwidthMgmtService bandwidthMgmtService = new PathComputationTest - .MockBandwidthMgmtService(); - - public static ProviderId providerId = new ProviderId("pce", "foo"); - private static final String L3 = "L3"; - private static final String LSRID = "lsrId"; - private static final String PCECC_CAPABILITY = "pceccCapability"; - private static final String SR_CAPABILITY = "srCapability"; - private static final String LABEL_STACK_CAPABILITY = "labelStackCapability"; - - private TopologyGraph graph = null; - private Device deviceD1, deviceD2, deviceD3, deviceD4, deviceD5; - private Device pcepDeviceD1, pcepDeviceD2, pcepDeviceD3, pcepDeviceD4; - private Link link1, link2, link3, link4, link5, link6; - protected static int flowsDownloaded; - private TunnelListener tunnelListener; - private TopologyListener listener; - private Topology topology; - private Set edges; - private Set vertexes; - - @Before - public void startUp() throws TestUtilsException { - listener = TestUtils.getField(pceManager, "topologyListener"); - pceManager.pathService = pathService; - pceManager.topologyService = topologyService; - pceManager.tunnelService = tunnelService; - pceManager.coreService = coreService; - pceManager.storageService = storageService; - pceManager.deviceService = deviceService; - pceManager.netCfgService = netConfigRegistry; - pceManager.netConfigRegistry = netConfigRegistry; - pceManager.pceStore = pceStore; - pceManager.mastershipService = mastershipService; - pceManager.bandwidthMgmtService = bandwidthMgmtService; - pceManager.activate(); - } - - private class MockMastershipService extends MastershipServiceAdapter { - @Override - public MastershipRole getLocalRole(DeviceId deviceId) { - return MASTER; - } - - @Override - public boolean isLocalMaster(DeviceId deviceId) { - return getLocalRole(deviceId) == MASTER; - } - } - - private void build4RouterTopo(boolean setCost, boolean setPceccCap, boolean setSrCap, - boolean setLabelStackCap, int bandwidth) { - link1 = PathComputationTest.addLink(DEVICE1, 10, DEVICE2, 20, setCost, 50); - link2 = PathComputationTest.addLink(DEVICE2, 30, DEVICE4, 40, setCost, 20); - link3 = PathComputationTest.addLink(DEVICE1, 80, DEVICE3, 70, setCost, 100); - link4 = PathComputationTest.addLink(DEVICE3, 60, DEVICE4, 50, setCost, 80); - link5 = PathComputationTest.addLink(DEVICE2, 60, DEVICE5, 50, setCost, 80); - link6 = PathComputationTest.addLink(DEVICE4, 60, DEVICE5, 50, setCost, 80); - - if (setCost) { - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.igpCost(50) - .apply(); - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.igpCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.igpCost(100) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.igpCost(80) - .apply(); - - TeLinkConfig teLinkConfig5 = netConfigRegistry.addConfig(LinkKey.linkKey(link5), TeLinkConfig.class); - teLinkConfig5.igpCost(80) - .apply(); - - TeLinkConfig teLinkConfig6 = netConfigRegistry.addConfig(LinkKey.linkKey(link6), TeLinkConfig.class); - teLinkConfig6.igpCost(80) - .apply(); - } else { - TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class); - teLinkConfig.teCost(50) - .apply(); - - - TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class); - teLinkConfig2.teCost(20) - .apply(); - - TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class); - teLinkConfig3.teCost(100) - .apply(); - - TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class); - teLinkConfig4.teCost(80) - .apply(); - - TeLinkConfig teLinkConfig5 = netConfigRegistry.addConfig(LinkKey.linkKey(link5), TeLinkConfig.class); - teLinkConfig5.teCost(80) - .apply(); - - TeLinkConfig teLinkConfig6 = netConfigRegistry.addConfig(LinkKey.linkKey(link6), TeLinkConfig.class); - teLinkConfig6.teCost(80) - .apply(); - } - - - Set vertexes = new HashSet(); - vertexes.add(D1); - vertexes.add(D2); - vertexes.add(D3); - vertexes.add(D4); - vertexes.add(D5); - - this.vertexes = vertexes; - - Set edges = new HashSet(); - TopologyEdge edge1 = new DefaultTopologyEdge(D1, D2, link1); - edges.add(edge1); - - TopologyEdge edge2 = new DefaultTopologyEdge(D2, D4, link2); - edges.add(edge2); - - TopologyEdge edge3 = new DefaultTopologyEdge(D1, D3, link3); - edges.add(edge3); - - TopologyEdge edge4 = new DefaultTopologyEdge(D3, D4, link4); - edges.add(edge4); - - TopologyEdge edge5 = new DefaultTopologyEdge(D2, D5, link5); - edges.add(edge5); - - TopologyEdge edge6 = new DefaultTopologyEdge(D4, D5, link6); - edges.add(edge6); - - this.edges = edges; - - graph = new DefaultTopologyGraph(vertexes, edges); - - DefaultAnnotations.Builder builderDev1 = DefaultAnnotations.builder(); - DefaultAnnotations.Builder builderDev2 = DefaultAnnotations.builder(); - DefaultAnnotations.Builder builderDev3 = DefaultAnnotations.builder(); - DefaultAnnotations.Builder builderDev4 = DefaultAnnotations.builder(); - DefaultAnnotations.Builder builderDev5 = DefaultAnnotations.builder(); - - // Making L3 devices - builderDev1.set(AnnotationKeys.TYPE, L3); - builderDev1.set(LSRID, "1.1.1.1"); - - builderDev2.set(AnnotationKeys.TYPE, L3); - builderDev2.set(LSRID, "2.2.2.2"); - - builderDev3.set(AnnotationKeys.TYPE, L3); - builderDev3.set(LSRID, "3.3.3.3"); - - builderDev4.set(AnnotationKeys.TYPE, L3); - builderDev4.set(LSRID, "4.4.4.4"); - - builderDev5.set(AnnotationKeys.TYPE, L3); - builderDev5.set(LSRID, "5.5.5.5"); - - deviceD1 = new MockDevice(D1.deviceId(), builderDev1.build()); - deviceD2 = new MockDevice(D2.deviceId(), builderDev2.build()); - deviceD3 = new MockDevice(D3.deviceId(), builderDev3.build()); - deviceD4 = new MockDevice(D4.deviceId(), builderDev4.build()); - deviceD5 = new MockDevice(D5.deviceId(), builderDev5.build()); - - deviceService.addDevice(deviceD1); - deviceService.addDevice(deviceD2); - deviceService.addDevice(deviceD3); - deviceService.addDevice(deviceD4); - deviceService.addDevice(deviceD5); - - DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class); - device1Cap.setLabelStackCap(setLabelStackCap) - .setLocalLabelCap(setPceccCap) - .setSrCap(setSrCap) - .apply(); - - DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class); - device2Cap.setLabelStackCap(setLabelStackCap) - .setLocalLabelCap(setPceccCap) - .setSrCap(setSrCap) - .apply(); - - DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class); - device3Cap.setLabelStackCap(setLabelStackCap) - .setLocalLabelCap(setPceccCap) - .setSrCap(setSrCap) - .apply(); - - DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class); - device4Cap.setLabelStackCap(setLabelStackCap) - .setLocalLabelCap(setPceccCap) - .setSrCap(setSrCap) - .apply(); - - DeviceCapability device5Cap = netConfigRegistry.addConfig(DeviceId.deviceId("5.5.5.5"), DeviceCapability.class); - device4Cap.setLabelStackCap(setLabelStackCap) - .setLocalLabelCap(setPceccCap) - .setSrCap(setSrCap) - .apply(); - - if (bandwidth != 0) { - Set unreserved = new HashSet<>(); - unreserved.add(new Double(bandwidth)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link5), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link5), new Double(0)); - - bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link6), unreserved); - bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link6), new Double(0)); - } - } - - /** - * Tests path success with (IGP) cost constraint for signalled LSP. - */ - @Test - public void setupPathTest1() { - build4RouterTopo(true, false, false, false, 0); // IGP cost is set here. - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - } - - /** - * Tests path failure with (IGP) cost constraint for signalled LSP. - */ - @Test - public void setupPathTest2() { - build4RouterTopo(false, false, false, false, 0); // TE cost is set here, not IGP. - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null); - assertThat(result, is(false)); - } - - /** - * Tests path success with TE-cost constraint for signalled LSP. - */ - @Test - public void setupPathTest3() { - build4RouterTopo(false, false, false, false, 0); // TE cost is set here. - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(TE_COST); - constraints.add(costConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - } - - /** - * Tests path failure with TE-cost constraint for signalled LSP. - */ - @Test - public void setupPathTest4() { - build4RouterTopo(true, false, false, false, 0); // IGP cost is set here, not TE. - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(TE_COST); - constraints.add(costConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null); - assertThat(result, is(false)); - } - - /** - * Tests path success with (IGP) cost constraint for non-SR non-signalled LSP. - */ - @Test - public void setupPathTest5() { - build4RouterTopo(true, true, false, false, 0); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, - WITHOUT_SIGNALLING_AND_WITHOUT_SR, null); - assertThat(result, is(true)); - } - - /** - * Tests path success with TE-cost constraint for non-SR non-sgnalled LSP. - */ - @Test - public void setupPathTest6() { - build4RouterTopo(false, true, false, false, 0); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(TE_COST); - constraints.add(costConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, - WITHOUT_SIGNALLING_AND_WITHOUT_SR, null); - assertThat(result, is(true)); - } - - /** - * Tests path failure with TE-cost constraint for non-SR non-signalled LSP(CR). Label capability not registered. - */ - @Test - public void setupPathTest7() { - build4RouterTopo(true, false, false, false, 0); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(TE_COST); - constraints.add(costConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, - WITHOUT_SIGNALLING_AND_WITHOUT_SR, null); - assertThat(result, is(false)); - } - - /** - * Tests path failure as bandwidth is requested but is not registered. - */ - @Test - public void setupPathTest8() { - build4RouterTopo(true, false, false, false, 2); - - List constraints = new LinkedList<>(); - PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0)); - CostConstraint costConstraint = new CostConstraint(TE_COST); - - constraints.add(costConstraint); - constraints.add(bwConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, - WITH_SIGNALLING, null); - assertThat(result, is(false)); - } - - /** - * Tests path failure as bandwidth requested is more than registered. - */ - @Test - public void setupPathTest9() { - build4RouterTopo(false, false, false, false, 5); - List constraints = new LinkedList(); - PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0)); - CostConstraint costConstraint = new CostConstraint(TE_COST); - - constraints.add(costConstraint); - constraints.add(bwConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(false)); - } - - /** - * Tests path setup failure(without signalling). Label capability is not present. - */ - @Test - public void setupPathTest10() { - build4RouterTopo(false, false, false, false, 0); - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(TE_COST); - constraints.add(costConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, - SR_WITHOUT_SIGNALLING, null); - assertThat(result, is(false)); - } - - /** - * Tests path setup without signalling and with bandwidth reservation. - */ - @Test - public void setupPathTest12() { - build4RouterTopo(false, true, true, true, 15); - List constraints = new LinkedList(); - PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0)); - CostConstraint costConstraint = new CostConstraint(TE_COST); - - constraints.add(costConstraint); - constraints.add(bwConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", - constraints, SR_WITHOUT_SIGNALLING, null); - assertThat(result, is(true)); - } - - /** - * Tests path setup without cost/bandwidth constraints. - */ - @Test - public void setupPathTest13() { - build4RouterTopo(false, false, false, false, 0); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", null, WITH_SIGNALLING, null); - assertThat(result, is(true)); - } - - /** - * Tests path setup with explicit path with loose node D2. - */ - @Test - public void setupPathTest14() { - build4RouterTopo(false, false, false, false, 0); - - List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId()); - explicitPathInfoList.add(obj); - - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", null, WITH_SIGNALLING, - explicitPathInfoList); - - Tunnel tunnel = pceManager.queryAllPath().iterator().next(); - List links = new LinkedList<>(); - links.add(link1); - links.add(link2); - - assertThat(result, is(true)); - assertThat(tunnel.path().links().equals(links), is(true)); - } - - /** - * Tests path setup with explicit path with loose node D3. - */ - @Test - public void setupPathTest15() { - build4RouterTopo(false, false, false, false, 0); - - List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D3.deviceId()); - explicitPathInfoList.add(obj); - - boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING, - explicitPathInfoList); - - Tunnel tunnel = pceManager.queryAllPath().iterator().next(); - List links = new LinkedList<>(); - links.add(link3); - links.add(link4); - links.add(link6); - - assertThat(result, is(true)); - assertThat(tunnel.path().links().equals(links), is(true)); - } - - /** - * Tests path setup with explicit path with loose node D4 , D3 - path fails. - */ - @Test - public void setupPathTest16() { - build4RouterTopo(false, false, false, false, 0); - - List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D4.deviceId()); - explicitPathInfoList.add(obj); - obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D3.deviceId()); - explicitPathInfoList.add(obj); - - boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING, - explicitPathInfoList); - - assertThat(result, is(false)); - } - - /** - * Tests path setup with explicit path with strict node D2 - without reacble to src - path fails. - */ - @Test - public void setupPathTest17() { - build4RouterTopo(false, false, false, false, 0); - - List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId()); - explicitPathInfoList.add(obj); - - boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING, - explicitPathInfoList); - - assertThat(result, is(false)); - } - - /** - * Tests path setup with explicit path with loose node D2, strict D2. - */ - @Test - public void setupPathTest18() { - build4RouterTopo(false, false, false, false, 0); - - List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId()); - explicitPathInfoList.add(obj); - obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId()); - explicitPathInfoList.add(obj); - - boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING, - explicitPathInfoList); - - Tunnel tunnel = pceManager.queryAllPath().iterator().next(); - List links = new LinkedList<>(); - links.add(link1); - links.add(link5); - - assertThat(result, is(true)); - assertThat(tunnel.path().links().equals(links), is(true)); - } - - /** - * Tests path setup with explicit path with loose D1-D2, strict D2. - */ - @Test - public void setupPathTest19() { - build4RouterTopo(false, false, false, false, 0); - - List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1); - explicitPathInfoList.add(obj); - obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId()); - explicitPathInfoList.add(obj); - - boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING, - explicitPathInfoList); - - Tunnel tunnel = pceManager.queryAllPath().iterator().next(); - List links = new LinkedList<>(); - links.add(link1); - links.add(link5); - - assertThat(result, is(true)); - assertThat(tunnel.path().links().equals(links), is(true)); - } - - /** - * Tests path update with increase in bandwidth. - */ - @Test - public void updatePathTest1() { - build4RouterTopo(false, true, true, true, 100); - - // Setup tunnel. - List constraints = new LinkedList<>(); - PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(60.0)); - constraints.add(bwConstraint); - CostConstraint costConstraint = new CostConstraint(TE_COST); - constraints.add(costConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - - // Change constraint and update it. - constraints = new LinkedList<>(); - bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(50.0)); - constraints.add(bwConstraint); - constraints.add(costConstraint); - - Collection tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(1)); - - Tunnel tunnel = tunnels.iterator().next(); - - // Stimulate the effect of LSP ids from protocol msg. - tunnelService.updateTunnelWithLspIds(tunnel, "123", "1", State.ACTIVE); - - result = pceManager.updatePath(tunnel.tunnelId(), constraints); - assertThat(result, is(true)); - - tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(2)); - } - - /** - * Tests path update with decrease in bandwidth. - */ - @Test - public void updatePathTest2() { - build4RouterTopo(false, true, true, true, 100); - - // Setup tunnel. - List constraints = new LinkedList(); - PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(60.0)); - constraints.add(bwConstraint); - CostConstraint costConstraint = new CostConstraint(TE_COST); - constraints.add(costConstraint); - - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", - constraints, SR_WITHOUT_SIGNALLING, null); - assertThat(result, is(true)); - - // Change constraint and update it. - constraints.remove(bwConstraint); - bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(70.0)); - constraints.add(bwConstraint); - - Collection tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(1)); - - for (Tunnel tunnel : tunnels) { - result = pceManager.updatePath(tunnel.tunnelId(), constraints); - assertThat(result, is(true)); - } - - tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(2)); - } - - /** - * Tests path update without cost/bandwidth constraints. - */ - @Test - public void updatePathTest3() { - build4RouterTopo(false, true, true, true, 100); - - // Setup tunnel. - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(TE_COST); - constraints.add(costConstraint); - boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - - Collection tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(1)); - - for (Tunnel tunnel : tunnels) { - result = pceManager.updatePath(tunnel.tunnelId(), null); - assertThat(result, is(true)); - } - - Iterable queryTunnelResult = pceManager.queryAllPath(); - assertThat((int) queryTunnelResult.spliterator().getExactSizeIfKnown(), is(2)); - } - - /** - * Tests path update without cost/bandwidth constraints and with explicit path object. - */ - @Test - public void updatePathTest4() { - build4RouterTopo(false, true, true, true, 100); - - // Setup tunnel. - List constraints = new LinkedList<>(); - PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(60.0)); - constraints.add(bwConstraint); - CostConstraint costConstraint = new CostConstraint(TE_COST); - constraints.add(costConstraint); - - List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1); - explicitPathInfoList.add(obj); - obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId()); - explicitPathInfoList.add(obj); - - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, explicitPathInfoList); - assertThat(result, is(true)); - - // Change constraint and update it. - constraints = new LinkedList<>(); - bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(50.0)); - constraints.add(bwConstraint); - constraints.add(costConstraint); - - Collection tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(1)); - - Tunnel tunnel = tunnels.iterator().next(); - - // Stimulate the effect of LSP ids from protocol msg. - tunnelService.updateTunnelWithLspIds(tunnel, "123", "1", State.ACTIVE); - - result = pceManager.updatePath(tunnel.tunnelId(), constraints); - assertThat(result, is(true)); - - tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(2)); - } - - /** - * Tests path release. - */ - @Test - public void releasePathTest1() { - build4RouterTopo(false, false, false, false, 5); - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(TE_COST); - PceBandwidthConstraint bwConst = new PceBandwidthConstraint(Bandwidth.bps(3)); - constraints.add(bwConst); - constraints.add(costConstraint); - - List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1); - explicitPathInfoList.add(obj); - obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId()); - explicitPathInfoList.add(obj); - - pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, explicitPathInfoList); - - Collection tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(1)); - boolean result; - for (Tunnel tunnel : tunnels) { - result = pceManager.releasePath(tunnel.tunnelId()); - assertThat(result, is(true)); - } - tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(0)); - } - - /** - * Tests path release failure. - */ - @Test - public void releasePathTest2() { - build4RouterTopo(false, false, false, false, 5); - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(TE_COST); - constraints.add(costConstraint); - - pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null); - - Collection tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(1)); - - // Random tunnel id. - boolean result = pceManager.releasePath(TunnelId.valueOf("111")); - assertThat(result, is(false)); - - tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(1)); - } - - /** - * Tests path release failure. - */ - @Test - public void releasePathTest3() { - build4RouterTopo(false, false, false, false, 5); - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(TE_COST); - PceBandwidthConstraint bwConst = new PceBandwidthConstraint(Bandwidth.bps(3)); - constraints.add(bwConst); - constraints.add(costConstraint); - - pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null); - - Collection tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(1)); - boolean result; - for (Tunnel tunnel : tunnels) { - result = pceManager.releasePath(tunnel.tunnelId()); - assertThat(result, is(true)); - } - tunnels = (Collection) pceManager.queryAllPath(); - assertThat(tunnels.size(), is(0)); - } - - /** - * Tests tunnel events added and removed. - */ - @Test - public void tunnelEventTest1() { - build4RouterTopo(false, true, true, true, 15); - List constraints = new LinkedList(); - PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0)); - CostConstraint costConstraint = new CostConstraint(TE_COST); - - constraints.add(costConstraint); - constraints.add(bwConstraint); - - boolean isSuccess = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T1", constraints, - SR_WITHOUT_SIGNALLING, null); - assertThat(isSuccess, is(true)); - - Collection tunnels = (Collection) pceManager.queryAllPath(); - - for (Tunnel tunnel : tunnels) { - TunnelEvent event = new TunnelEvent(TunnelEvent.Type.TUNNEL_ADDED, tunnel); - tunnelListener.event(event); - - isSuccess = pceManager.releasePath(tunnel.tunnelId()); - assertThat(isSuccess, is(true)); - - event = new TunnelEvent(TunnelEvent.Type.TUNNEL_REMOVED, tunnel); - tunnelListener.event(event); - } - } - - /** - * Tests label allocation/removal in CR case based on tunnel event. - */ - @Test - public void tunnelEventTest2() { - build4RouterTopo(false, true, true, true, 15); - List constraints = new LinkedList(); - PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0)); - CostConstraint costConstraint = new CostConstraint(TE_COST); - - constraints.add(costConstraint); - constraints.add(bwConstraint); - - boolean isSuccess = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints, - WITHOUT_SIGNALLING_AND_WITHOUT_SR, null); - assertThat(isSuccess, is(true)); - - TunnelEvent event; - Collection tunnels = (Collection) pceManager.queryAllPath(); - for (Tunnel tunnel : tunnels) { - event = new TunnelEvent(TunnelEvent.Type.TUNNEL_ADDED, tunnel); - tunnelListener.event(event); - - // Stimulate the effect of LSP ids from protocol msg. - tunnelService.updateTunnelWithLspIds(tunnel, "123", "1", ESTABLISHED); - } - - tunnels = (Collection) pceManager.queryAllPath(); - for (Tunnel tunnel : tunnels) { - event = new TunnelEvent(TunnelEvent.Type.TUNNEL_UPDATED, tunnel); - tunnelListener.event(event); - - isSuccess = pceManager.releasePath(tunnel.tunnelId()); - assertThat(isSuccess, is(true)); - - event = new TunnelEvent(TunnelEvent.Type.TUNNEL_REMOVED, tunnel); - tunnelListener.event(event); - } - } - - /** - * Tests handling UNSTABLE state based on tunnel event. - */ - @Test - public void tunnelEventTest3() { - build4RouterTopo(false, true, true, true, 15); - List constraints = new LinkedList(); - PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0)); - CostConstraint costConstraint = new CostConstraint(TE_COST); - - constraints.add(costConstraint); - constraints.add(bwConstraint); - - boolean isSuccess = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints, - WITHOUT_SIGNALLING_AND_WITHOUT_SR, null); - assertThat(isSuccess, is(true)); - assertThat(pceStore.getFailedPathInfoCount(), is(0)); - - TunnelEvent event; - Collection tunnels = (Collection) pceManager.queryAllPath(); - for (Tunnel tunnel : tunnels) { - event = new TunnelEvent(TunnelEvent.Type.TUNNEL_ADDED, tunnel); - tunnelListener.event(event); - - // Stimulate the effect of LSP ids from protocol msg. - tunnelService.updateTunnelWithLspIds(tunnel, "123", "1", UNSTABLE); - } - - tunnels = (Collection) pceManager.queryAllPath(); - for (Tunnel tunnel : tunnels) { - event = new TunnelEvent(TunnelEvent.Type.TUNNEL_UPDATED, tunnel); - tunnelListener.event(event); - } - - assertThat(pceStore.getFailedPathInfoCount(), is(1)); - } - - /** - * Tests resiliency when L2 link is down. - */ - @Test - public void resiliencyTest1() { - build4RouterTopo(true, false, false, false, 10); - - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10)); - constraints.add(localBwConst); - - //Setup the path , tunnel created - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - assertThat(pceStore.getFailedPathInfoCount(), is(0)); - - List reasons = new LinkedList<>(); - final LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2); - reasons.add(linkEvent); - final TopologyEvent event = new TopologyEvent( - TopologyEvent.Type.TOPOLOGY_CHANGED, - topology, - reasons); - - //Change Topology : remove link2 - Set tempEdges = new HashSet<>(); - tempEdges.add(new DefaultTopologyEdge(D2, D4, link2)); - topologyService.changeInTopology(getGraph(null, tempEdges)); - listener.event(event); - - List links = new LinkedList<>(); - links.add(link3); - links.add(link4); - - //Path is D1-D3-D4 - assertThat(pathService.paths().iterator().next().links(), is(links)); - assertThat(pathService.paths().iterator().next().weight(), is(ScalarWeight.toWeight(180.0))); - } - - /** - * Tests resiliency when L2 and L4 link is down. - */ - @Test - public void resiliencyTest2() { - build4RouterTopo(true, false, false, false, 10); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10)); - constraints.add(localBwConst); - - //Setup the path , tunnel created - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - - List reasons = new LinkedList<>(); - LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2); - reasons.add(linkEvent); - linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link4); - reasons.add(linkEvent); - final TopologyEvent event = new TopologyEvent( - TopologyEvent.Type.TOPOLOGY_CHANGED, - topology, - reasons); - - //Change Topology : remove link2 and link4 - Set tempEdges = new HashSet<>(); - tempEdges.add(new DefaultTopologyEdge(D2, D4, link2)); - tempEdges.add(new DefaultTopologyEdge(D3, D4, link4)); - topologyService.changeInTopology(getGraph(null, tempEdges)); - listener.event(event); - - //No Path - assertThat(pathService.paths().size(), is(0)); - } - - /** - * Tests resiliency when D2 device is down. - */ - @Test - public void resiliencyTest3() { - build4RouterTopo(true, false, false, false, 10); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10)); - constraints.add(localBwConst); - - //Setup the path , tunnel created - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - - List reasons = new LinkedList<>(); - LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2); - reasons.add(linkEvent); - linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1); - reasons.add(linkEvent); - final TopologyEvent event = new TopologyEvent( - TopologyEvent.Type.TOPOLOGY_CHANGED, - topology, - reasons); - - //Change Topology : remove link2 and link1 - Set tempEdges = new HashSet<>(); - tempEdges.add(new DefaultTopologyEdge(D2, D4, link2)); - tempEdges.add(new DefaultTopologyEdge(D1, D2, link1)); - topologyService.changeInTopology(getGraph(null, tempEdges)); - listener.event(event); - - List links = new LinkedList<>(); - links.add(link3); - links.add(link4); - - Path path = tunnelService.queryAllTunnels().iterator().next().path(); - //Path is D1-D3-D4 - assertThat(path.links(), is(links)); - assertThat(path.weight(), is(ScalarWeight.toWeight(180.0))); - } - - /** - * Tests resiliency when ingress device is down. - */ - @Test - public void resiliencyTest4() { - build4RouterTopo(true, false, false, false, 10); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10)); - constraints.add(localBwConst); - - //Setup the path , tunnel created - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - - List reasons = new LinkedList<>(); - LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link3); - reasons.add(linkEvent); - linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1); - reasons.add(linkEvent); - final TopologyEvent event = new TopologyEvent( - TopologyEvent.Type.TOPOLOGY_CHANGED, - topology, - reasons); - - //Change Topology : remove link2 and link1 - Set tempEdges = new HashSet<>(); - tempEdges.add(new DefaultTopologyEdge(D1, D3, link3)); - tempEdges.add(new DefaultTopologyEdge(D1, D2, link1)); - topologyService.changeInTopology(getGraph(null, tempEdges)); - listener.event(event); - - //No path - assertThat(pathService.paths().size(), is(0)); - } - - /** - * Tests resiliency when D2 and D3 devices are down. - */ - @Test - public void resiliencyTest5() { - build4RouterTopo(true, false, false, false, 10); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10)); - constraints.add(localBwConst); - - //Setup the path , tunnel created - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - - List reasons = new LinkedList<>(); - LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2); - reasons.add(linkEvent); - linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1); - reasons.add(linkEvent); - linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link3); - reasons.add(linkEvent); - linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link4); - reasons.add(linkEvent); - - final TopologyEvent event = new TopologyEvent( - TopologyEvent.Type.TOPOLOGY_CHANGED, - topology, - reasons); - - //Change Topology : remove device2, device3 and all links - Set tempEdges = new HashSet<>(); - tempEdges.add(new DefaultTopologyEdge(D1, D2, link1)); - tempEdges.add(new DefaultTopologyEdge(D2, D4, link2)); - tempEdges.add(new DefaultTopologyEdge(D1, D3, link3)); - tempEdges.add(new DefaultTopologyEdge(D3, D4, link4)); - Set tempVertexes = new HashSet<>(); - tempVertexes.add(D2); - tempVertexes.add(D3); - topologyService.changeInTopology(getGraph(tempVertexes, tempEdges)); - listener.event(event); - - //No path - assertThat(pathService.paths().size(), is(0)); - } - - /** - * Tests resiliency when egress device is down. - */ - @Test - public void resiliencyTest6() { - build4RouterTopo(true, false, false, false, 10); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10)); - constraints.add(localBwConst); - - //Setup the path , tunnel created - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - - List reasons = new LinkedList<>(); - LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2); - reasons.add(linkEvent); - linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link4); - reasons.add(linkEvent); - - final TopologyEvent event = new TopologyEvent( - TopologyEvent.Type.TOPOLOGY_CHANGED, - topology, - reasons); - - //Change Topology : remove device4 , link2 and link4 - Set tempEdges = new HashSet<>(); - tempEdges.add(new DefaultTopologyEdge(D2, D4, link2)); - tempEdges.add(new DefaultTopologyEdge(D3, D4, link4)); - Set tempVertexes = new HashSet<>(); - tempVertexes.add(D4); - topologyService.changeInTopology(getGraph(tempVertexes, tempEdges)); - listener.event(event); - - //No path - assertThat(pathService.paths().size(), is(0)); - } - - /** - * Tests resiliency when egress device is down. - */ - @Test - public void resiliencyTest7() { - build4RouterTopo(true, false, false, false, 10); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10)); - constraints.add(localBwConst); - - //Setup the path , tunnel created - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - - List reasons = new LinkedList<>(); - LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2); - reasons.add(linkEvent); - linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link4); - reasons.add(linkEvent); - - final TopologyEvent event = new TopologyEvent( - TopologyEvent.Type.TOPOLOGY_CHANGED, - topology, - reasons); - - //Change Topology : remove device4 , link2 and link4 - Set tempEdges = new HashSet<>(); - tempEdges.add(new DefaultTopologyEdge(D2, D4, link2)); - tempEdges.add(new DefaultTopologyEdge(D3, D4, link4)); - Set tempVertexes = new HashSet<>(); - tempVertexes.add(D4); - topologyService.changeInTopology(getGraph(tempVertexes, tempEdges)); - listener.event(event); - - //No path - assertThat(pathService.paths().size(), is(0)); - } - - /** - * Tests resiliency when D2 device is suspended. - */ - @Test - public void resiliencyTest8() { - build4RouterTopo(true, false, false, false, 10); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10)); - constraints.add(localBwConst); - - //Setup the path , tunnel created - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - - List reasons = new LinkedList<>(); - LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1); - reasons.add(linkEvent); - linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2); - reasons.add(linkEvent); - - final TopologyEvent event = new TopologyEvent( - TopologyEvent.Type.TOPOLOGY_CHANGED, - topology, - reasons); - - //Change Topology : remove device2 , link1 and link2 - Set tempEdges = new HashSet<>(); - tempEdges.add(new DefaultTopologyEdge(D1, D2, link1)); - tempEdges.add(new DefaultTopologyEdge(D2, D4, link2)); - Set tempVertexes = new HashSet<>(); - tempVertexes.add(D2); - topologyService.changeInTopology(getGraph(tempVertexes, tempEdges)); - listener.event(event); - - List links = new LinkedList<>(); - links.add(link3); - links.add(link4); - - Path path = tunnelService.queryAllTunnels().iterator().next().path(); - - //Path is D1-D3-D4 - assertThat(path.links(), is(links)); - assertThat(path.weight(), is(ScalarWeight.toWeight(180.0))); - } - - /** - * Tests resiliency when D2 device availability is changed. - */ - @Test - public void resiliencyTest11() { - build4RouterTopo(true, false, false, false, 10); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10)); - constraints.add(localBwConst); - - //Setup the path , tunnel created - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, null); - assertThat(result, is(true)); - - List reasons = new LinkedList<>(); - LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1); - reasons.add(linkEvent); - linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2); - reasons.add(linkEvent); - - final TopologyEvent event = new TopologyEvent( - TopologyEvent.Type.TOPOLOGY_CHANGED, - topology, - reasons); - - //Change Topology : remove device2 , link1 and link2 - Set tempEdges = new HashSet<>(); - tempEdges.add(new DefaultTopologyEdge(D1, D2, link1)); - tempEdges.add(new DefaultTopologyEdge(D2, D4, link2)); - Set tempVertexes = new HashSet<>(); - tempVertexes.add(D2); - topologyService.changeInTopology(getGraph(tempVertexes, tempEdges)); - listener.event(event); - - List links = new LinkedList<>(); - links.add(link3); - links.add(link4); - - Path path = tunnelService.queryAllTunnels().iterator().next().path(); - - //Path is D1-D3-D4 - assertThat(path.links(), is(links)); - assertThat(path.weight(), is(ScalarWeight.toWeight(180.0))); - } - - /** - * Tests resiliency when link2 availability is changed. - */ - @Test - public void resiliencyTest12() { - build4RouterTopo(true, false, false, false, 10); - - List constraints = new LinkedList(); - CostConstraint costConstraint = new CostConstraint(COST); - constraints.add(costConstraint); - PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10)); - constraints.add(localBwConst); - - List explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1); - explicitPathInfoList.add(obj); - obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId()); - explicitPathInfoList.add(obj); - - //Setup the path , tunnel created - boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", - constraints, WITH_SIGNALLING, explicitPathInfoList); - assertThat(result, is(true)); - assertThat(pceStore.getFailedPathInfoCount(), is(0)); - - List reasons = new LinkedList<>(); - final LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2); - reasons.add(linkEvent); - final TopologyEvent event = new TopologyEvent( - TopologyEvent.Type.TOPOLOGY_CHANGED, - topology, - reasons); - - //Change Topology : remove link2 - Set tempEdges = new HashSet<>(); - tempEdges.add(new DefaultTopologyEdge(D2, D4, link2)); - topologyService.changeInTopology(getGraph(null, tempEdges)); - listener.event(event); - - List links = new LinkedList<>(); - links.add(link3); - links.add(link4); - - //Path fails - no alternate path - assertThat(pathService.paths().iterator().hasNext(), is(false)); - } - - @After - public void tearDown() { - pceManager.deactivate(); - pceManager.pathService = null; - pceManager.tunnelService = null; - pceManager.coreService = null; - pceManager.storageService = null; - pceManager.deviceService = null; - pceManager.netCfgService = null; - pceManager.pceStore = null; - pceManager.topologyService = null; - pceManager.mastershipService = null; - flowsDownloaded = 0; - } - - private class MockTopologyService extends TopologyServiceAdapter { - private void changeInTopology(TopologyGraph graphModified) { - graph = graphModified; - } - - @Override - public Set getPaths(Topology topology, DeviceId src, DeviceId dst, LinkWeigher weight) { - DefaultTopologyVertex srcV = new DefaultTopologyVertex(src); - DefaultTopologyVertex dstV = new DefaultTopologyVertex(dst); - Set vertices = graph.getVertexes(); - if (!vertices.contains(srcV) || !vertices.contains(dstV)) { - // src or dst not part of the current graph - return ImmutableSet.of(); - } - - GraphPathSearch.Result result = PathComputationTest.graphSearch() - .search(graph, srcV, dstV, weight, ALL_PATHS); - ImmutableSet.Builder builder = ImmutableSet.builder(); - for (org.onlab.graph.Path path : result.paths()) { - builder.add(PathComputationTest.networkPath(path)); - } - return builder.build(); - } - } - - private TopologyGraph getGraph(Set removedVertex, Set removedEdges) { - if (removedVertex != null) { - vertexes.remove(removedVertex); - removedVertex.forEach(new Consumer() { - @Override - public void accept(TopologyVertex v) { - vertexes.remove(v); - } - }); - } - - if (removedEdges != null) { - removedEdges.forEach(new Consumer() { - @Override - public void accept(TopologyEdge e) { - edges.remove(e); - } - }); - } - - return new DefaultTopologyGraph(vertexes, edges); - } - - private class MockPathService extends PathServiceAdapter { - Set computedPaths; - @Override - public Set getPaths(ElementId src, ElementId dst, LinkWeigher weight) { - // If either edge is null, bail with no paths. - if (src == null || dst == null) { - return ImmutableSet.of(); - } - - // Otherwise get all paths between the source and destination edge - // devices. - computedPaths = topologyService.getPaths(null, (DeviceId) src, (DeviceId) dst, weight); - return computedPaths; - } - - private Set paths() { - return computedPaths; - } - } - - private class MockTunnelServiceAdapter extends TunnelServiceAdapter { - private HashMap tunnelIdAsKeyStore = new HashMap(); - private int tunnelIdCounter = 0; - - @Override - public TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path) { - TunnelId tunnelId = TunnelId.valueOf(String.valueOf(++tunnelIdCounter)); - Tunnel tunnelToInsert = new DefaultTunnel(tunnel.providerId(), tunnel.src(), tunnel.dst(), tunnel.type(), - tunnel.state(), tunnel.groupId(), tunnelId, tunnel.tunnelName(), - path, tunnel.annotations()); - tunnelIdAsKeyStore.put(tunnelId, tunnelToInsert); - return tunnelId; - } - - @Override - public void addListener(TunnelListener listener) { - tunnelListener = listener; - } - - /** - * Stimulates the effect of receiving PLSP id and LSP id from protocol PCRpt msg. - */ - public TunnelId updateTunnelWithLspIds(Tunnel tunnel, String pLspId, String localLspId, State state) { - TunnelId tunnelId = tunnel.tunnelId(); - Builder annotationBuilder = DefaultAnnotations.builder(); - annotationBuilder.putAll(tunnel.annotations()); - - // PCRpt in response to PCInitate msg will carry PLSP id allocated by PCC. - if (tunnel.annotations().value(PLSP_ID) == null) { - annotationBuilder.set(PLSP_ID, pLspId); - } - - // Signalled LSPs will carry local LSP id allocated by signalling protocol(PCC). - if (tunnel.annotations().value(LOCAL_LSP_ID) == null) { - annotationBuilder.set(LOCAL_LSP_ID, localLspId); - } - SparseAnnotations annotations = annotationBuilder.build(); - tunnelIdAsKeyStore.remove(tunnelId, tunnel); - - Tunnel tunnelToInsert = new DefaultTunnel(tunnel.providerId(), tunnel.src(), tunnel.dst(), tunnel.type(), - state, tunnel.groupId(), tunnelId, tunnel.tunnelName(), - tunnel.path(), annotations); - - tunnelIdAsKeyStore.put(tunnelId, tunnelToInsert); - - return tunnelId; - } - - @Override - public boolean downTunnel(ApplicationId producerId, TunnelId tunnelId) { - for (TunnelId tunnelIdKey : tunnelIdAsKeyStore.keySet()) { - if (tunnelIdKey.equals(tunnelId)) { - tunnelIdAsKeyStore.remove(tunnelId); - return true; - } - } - return false; - } - - @Override - public Tunnel queryTunnel(TunnelId tunnelId) { - for (TunnelId tunnelIdKey : tunnelIdAsKeyStore.keySet()) { - if (tunnelIdKey.equals(tunnelId)) { - return tunnelIdAsKeyStore.get(tunnelId); - } - } - return null; - } - - @Override - public Collection queryTunnel(TunnelEndPoint src, TunnelEndPoint dst) { - Collection result = new HashSet(); - Tunnel tunnel = null; - for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) { - tunnel = tunnelIdAsKeyStore.get(tunnelId); - - if ((null != tunnel) && (src.equals(tunnel.src())) && (dst.equals(tunnel.dst()))) { - result.add(tunnel); - } - } - - return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result); - } - - @Override - public Collection queryTunnel(Tunnel.Type type) { - Collection result = new HashSet(); - - for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) { - result.add(tunnelIdAsKeyStore.get(tunnelId)); - } - - return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result); - } - - @Override - public Collection queryAllTunnels() { - Collection result = new HashSet(); - - for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) { - result.add(tunnelIdAsKeyStore.get(tunnelId)); - } - - return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result); - } - - @Override - public Iterable getTunnels(DeviceId deviceId) { - List tunnelList = new LinkedList<>(); - - for (Tunnel t : tunnelIdAsKeyStore.values()) { - for (Link l : t.path().links()) { - if (l.src().deviceId().equals(deviceId) || l.dst().deviceId().equals(deviceId)) { - tunnelList.add(t); - break; - } - } - } - return tunnelList; - } - } - - public static class MockCoreService extends CoreServiceAdapter { - - @Override - public ApplicationId registerApplication(String name) { - return new DefaultApplicationId(1, name); - } - - @Override - public IdGenerator getIdGenerator(String topic) { - return new IdGenerator() { - private AtomicLong counter = new AtomicLong(0); - - @Override - public long getNewId() { - return counter.getAndIncrement(); - } - }; - } - } - - private class MockDevice extends DefaultDevice { - MockDevice(DeviceId id, Annotations annotations) { - super(null, id, null, null, null, null, null, null, annotations); - } - } -} diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/ResourceServiceAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/ResourceServiceAdapter.java deleted file mode 100644 index fb579c93cd..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/ResourceServiceAdapter.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pceservice; - -import org.onosproject.net.resource.DiscreteResourceId; -import org.onosproject.net.resource.ResourceAllocation; -import org.onosproject.net.resource.ResourceConsumer; -import org.onosproject.net.resource.ResourceId; -import org.onosproject.net.resource.ResourceListener; -import org.onosproject.net.resource.Resource; -import org.onosproject.net.resource.ResourceService; - -import java.util.Collection; -import java.util.List; -import java.util.Set; - -/** - * Adapter for resource service for path computation. - */ -public class ResourceServiceAdapter implements ResourceService { - - @Override - public void addListener(ResourceListener listener) { - // TODO Auto-generated method stub - } - - @Override - public void removeListener(ResourceListener listener) { - // TODO Auto-generated method stub - } - - @Override - public List allocate(ResourceConsumer consumer, List resources) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean release(List allocations) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean release(ResourceConsumer consumer) { - // TODO Auto-generated method stub - return false; - } - - @Override - public List getResourceAllocations(ResourceId id) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Collection getResourceAllocations(DiscreteResourceId parent, Class cls) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Collection getResourceAllocations(ResourceConsumer consumer) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Set getAvailableResources(DiscreteResourceId parent) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Set getAvailableResources(DiscreteResourceId parent, Class cls) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Set getAvailableResourceValues(DiscreteResourceId parent, Class cls) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Set getRegisteredResources(DiscreteResourceId parent) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean isAvailable(Resource resource) { - // TODO Auto-generated method stub - return false; - } -} diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java deleted file mode 100644 index ec378c4d1a..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pcestore; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.onlab.util.DataRateUnit; -import org.onosproject.incubator.net.resource.label.LabelResourceId; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.PortNumber; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.intent.constraint.BandwidthConstraint; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.net.resource.ResourceConsumer; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pceservice.LspType; -import org.onosproject.pce.pceservice.TunnelConsumerId; -import org.onosproject.store.service.TestStorageService; - -import java.util.LinkedList; -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit tests for DistributedPceStore class. - */ -public class DistributedPceStoreTest { - - private DistributedPceStore distrPceStore; - private DeviceId deviceId1 = DeviceId.deviceId("foo"); - private DeviceId deviceId2 = DeviceId.deviceId("goo"); - private DeviceId deviceId3 = DeviceId.deviceId("yaa"); - private DeviceId deviceId4 = DeviceId.deviceId("zoo"); - private LabelResourceId labelId1 = LabelResourceId.labelResourceId(1); - private LabelResourceId labelId2 = LabelResourceId.labelResourceId(2); - private LabelResourceId labelId3 = LabelResourceId.labelResourceId(3); - private LabelResourceId labelId4 = LabelResourceId.labelResourceId(4); - private PortNumber portNumber1 = PortNumber.portNumber(1); - private PortNumber portNumber2 = PortNumber.portNumber(2); - private PortNumber portNumber3 = PortNumber.portNumber(3); - private PortNumber portNumber4 = PortNumber.portNumber(4); - private ConnectPoint srcConnectionPoint1 = new ConnectPoint(deviceId1, portNumber1); - private ConnectPoint dstConnectionPoint2 = new ConnectPoint(deviceId2, portNumber2); - private ConnectPoint srcConnectionPoint3 = new ConnectPoint(deviceId3, portNumber3); - private ConnectPoint dstConnectionPoint4 = new ConnectPoint(deviceId4, portNumber4); - private Link link1; - private Link link2; - private TunnelId tunnelId1 = TunnelId.valueOf("1"); - private TunnelId tunnelId2 = TunnelId.valueOf("2"); - private TunnelId tunnelId3 = TunnelId.valueOf("3"); - private TunnelId tunnelId4 = TunnelId.valueOf("4"); - private ResourceConsumer tunnelConsumerId1 = TunnelConsumerId.valueOf(10); - private ResourceConsumer tunnelConsumerId2 = TunnelConsumerId.valueOf(20); - private PcePathInfo failedPathInfo1; - private PcePathInfo failedPathInfo2; - private PcePathInfo failedPathInfo3; - private PcePathInfo failedPathInfo4; - - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - @Before - public void setUp() throws Exception { - distrPceStore = new DistributedPceStore(); - - // Initialization of member variables - link1 = DefaultLink.builder() - .providerId(new ProviderId("eth", "1")) - .annotations(DefaultAnnotations.builder().set("key1", "yahoo").build()) - .src(srcConnectionPoint1) - .dst(dstConnectionPoint2) - .type(Link.Type.DIRECT) - .state(Link.State.ACTIVE) - .build(); - link2 = DefaultLink.builder() - .providerId(new ProviderId("mac", "2")) - .annotations(DefaultAnnotations.builder().set("key2", "google").build()) - .src(srcConnectionPoint3) - .dst(dstConnectionPoint4) - .type(Link.Type.DIRECT) - .state(Link.State.ACTIVE) - .build(); - - // Creates failedPathInfo1 - DeviceId src1 = DeviceId.deviceId("foo1"); - DeviceId dst1 = DeviceId.deviceId("goo1"); - String name1 = "pcc1"; - LspType lspType1 = LspType.SR_WITHOUT_SIGNALLING; - List constraints1 = new LinkedList<>(); - Constraint bandwidth1 = BandwidthConstraint.of(200, DataRateUnit.BPS); - constraints1.add(bandwidth1); - - failedPathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1, null, false); - - // Creates failedPathInfo2 - DeviceId src2 = DeviceId.deviceId("foo2"); - DeviceId dst2 = DeviceId.deviceId("goo2"); - String name2 = "pcc2"; - LspType lspType2 = LspType.SR_WITHOUT_SIGNALLING; - List constraints2 = new LinkedList<>(); - Constraint bandwidth2 = BandwidthConstraint.of(400, DataRateUnit.BPS); - constraints2.add(bandwidth2); - - failedPathInfo2 = new PcePathInfo(src2, dst2, name2, constraints2, lspType2, null, false); - - // Creates failedPathInfo3 - DeviceId src3 = DeviceId.deviceId("foo3"); - DeviceId dst3 = DeviceId.deviceId("goo3"); - String name3 = "pcc3"; - LspType lspType3 = LspType.SR_WITHOUT_SIGNALLING; - List constraints3 = new LinkedList<>(); - Constraint bandwidth3 = BandwidthConstraint.of(500, DataRateUnit.BPS); - constraints3.add(bandwidth3); - - failedPathInfo3 = new PcePathInfo(src3, dst3, name3, constraints3, lspType3, null, false); - - // Creates failedPathInfo4 - DeviceId src4 = DeviceId.deviceId("foo4"); - DeviceId dst4 = DeviceId.deviceId("goo4"); - String name4 = "pcc4"; - LspType lspType4 = LspType.SR_WITHOUT_SIGNALLING; - List constraints4 = new LinkedList<>(); - Constraint bandwidth4 = BandwidthConstraint.of(600, DataRateUnit.BPS); - constraints4.add(bandwidth4); - - failedPathInfo4 = new PcePathInfo(src4, dst4, name4, constraints4, lspType4, null, false); - } - - @After - public void tearDown() throws Exception { - } - - /** - * Checks the operation of addTunnelInfo() method. - */ - @Test - public void testAddExplicitPathInfo() { - // initialization - distrPceStore.storageService = new TestStorageService(); - distrPceStore.activate(); - - List infoList = new LinkedList<>(); - ExplicitPathInfo info1 = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, DeviceId.deviceId("D1")); - infoList.add(info1); - distrPceStore.tunnelNameExplicitPathInfoMap("Sample1", infoList); - assertThat(distrPceStore.getTunnelNameExplicitPathInfoMap("Sample1"), is(infoList)); - } - - /** - * Checks the operation of addFailedPathInfo() method. - */ - @Test - public void testAddFailedPathInfo() { - // initialization - distrPceStore.storageService = new TestStorageService(); - distrPceStore.activate(); - - // PcePathInfo with pce path input information - distrPceStore.addFailedPathInfo(failedPathInfo1); - assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo1), is(true)); - distrPceStore.addFailedPathInfo(failedPathInfo2); - assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo2), is(true)); - } - - /** - * Checks the operation of existsFailedPathInfo() method. - */ - @Test - public void testExistsFailedPathInfo() { - testAddFailedPathInfo(); - - assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo1), is(true)); - assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo2), is(true)); - assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo3), is(false)); - assertThat(distrPceStore.existsFailedPathInfo(failedPathInfo4), is(false)); - } - - /** - * Checks the operation of getFailedPathInfoCount() method. - */ - @Test - public void testGetFailedPathInfoCount() { - testAddFailedPathInfo(); - - assertThat(distrPceStore.getFailedPathInfoCount(), is(2)); - } - - /** - * Checks the operation of getFailedPathInfos() method. - */ - @Test - public void testGetFailedPathInfos() { - testAddFailedPathInfo(); - - Iterable failedPathInfoSet = distrPceStore.getFailedPathInfos(); - assertThat(failedPathInfoSet, is(notNullValue())); - assertThat(failedPathInfoSet.iterator().hasNext(), is(true)); - } - - /** - * Checks the operation of removeFailedPathInfo() method. - */ - @Test - public void testRemoveFailedPathInfo() { - testAddFailedPathInfo(); - - assertThat(distrPceStore.removeFailedPathInfo(failedPathInfo1), is(true)); - assertThat(distrPceStore.removeFailedPathInfo(failedPathInfo2), is(true)); - assertThat(distrPceStore.removeFailedPathInfo(failedPathInfo3), is(false)); - assertThat(distrPceStore.removeFailedPathInfo(failedPathInfo4), is(false)); - } -} diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/PcePathInfoTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/PcePathInfoTest.java deleted file mode 100644 index 4d31d68e69..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/PcePathInfoTest.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.pcestore; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; - -import com.google.common.testing.EqualsTester; - -import java.util.List; -import java.util.LinkedList; - -import org.junit.Test; -import org.onlab.util.DataRateUnit; -import org.onosproject.net.DeviceId; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.intent.constraint.BandwidthConstraint; -import org.onosproject.pce.pceservice.LspType; - -/** - * Unit tests for PcePathInfo class. - */ -public class PcePathInfoTest { - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // create same two objects. - DeviceId src1 = DeviceId.deviceId("foo1"); - DeviceId dst1 = DeviceId.deviceId("goo1"); - String name1 = "pcc1"; - LspType lspType1 = LspType.WITH_SIGNALLING; - List constraints1 = new LinkedList<>(); - Constraint bandwidth11 = BandwidthConstraint.of(100, DataRateUnit.BPS); - constraints1.add(bandwidth11); - Constraint bandwidth12 = BandwidthConstraint.of(200, DataRateUnit.BPS); - constraints1.add(bandwidth12); - Constraint bandwidth13 = BandwidthConstraint.of(300, DataRateUnit.BPS); - constraints1.add(bandwidth13); - - PcePathInfo pathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1, null, false); - - // create same object as above object - PcePathInfo samePathInfo1 = new PcePathInfo(src1, dst1, name1, constraints1, lspType1, null, false); - - // Create different object. - DeviceId src2 = DeviceId.deviceId("foo2"); - DeviceId dst2 = DeviceId.deviceId("goo2"); - String name2 = "pcc2"; - LspType lspType2 = LspType.SR_WITHOUT_SIGNALLING; - List constraints2 = new LinkedList<>(); - Constraint bandwidth21 = BandwidthConstraint.of(400, DataRateUnit.BPS); - constraints2.add(bandwidth21); - Constraint bandwidth22 = BandwidthConstraint.of(800, DataRateUnit.BPS); - constraints2.add(bandwidth22); - - PcePathInfo pathInfo2 = new PcePathInfo(src2, dst2, name2, constraints2, lspType2, null, false); - - new EqualsTester().addEqualityGroup(pathInfo1, samePathInfo1) - .addEqualityGroup(pathInfo2) - .testEquals(); - } - - /** - * Checks the construction of a PcePathInfo object. - */ - @Test - public void testConstruction() { - DeviceId src = DeviceId.deviceId("foo2"); - DeviceId dst = DeviceId.deviceId("goo2"); - String name = "pcc2"; - LspType lspType = LspType.SR_WITHOUT_SIGNALLING; - List constraints = new LinkedList<>(); - Constraint bandwidth1 = BandwidthConstraint.of(100, DataRateUnit.BPS); - constraints.add(bandwidth1); - Constraint bandwidth2 = BandwidthConstraint.of(200, DataRateUnit.BPS); - constraints.add(bandwidth2); - Constraint bandwidth3 = BandwidthConstraint.of(300, DataRateUnit.BPS); - constraints.add(bandwidth3); - - PcePathInfo pathInfo = new PcePathInfo(src, dst, name, constraints, lspType, null, false); - - assertThat(src, is(pathInfo.src())); - assertThat(dst, is(pathInfo.dst())); - assertThat(name, is(pathInfo.name())); - assertThat(constraints, is(pathInfo.constraints())); - assertThat(lspType, is(pathInfo.lspType())); - } -} diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/LabelResourceAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/LabelResourceAdapter.java deleted file mode 100644 index 3b7195af74..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/util/LabelResourceAdapter.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.util; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Collection; -import java.util.LinkedList; -import java.util.Random; -import java.util.Set; - -import org.onosproject.incubator.net.resource.label.DefaultLabelResource; -import org.onosproject.incubator.net.resource.label.LabelResource; -import org.onosproject.incubator.net.resource.label.LabelResourceAdminService; -import org.onosproject.incubator.net.resource.label.LabelResourceDelegate; -import org.onosproject.incubator.net.resource.label.LabelResourceEvent; -import org.onosproject.incubator.net.resource.label.LabelResourceId; -import org.onosproject.incubator.net.resource.label.LabelResourceListener; -import org.onosproject.incubator.net.resource.label.LabelResourcePool; -import org.onosproject.incubator.net.resource.label.LabelResourceProvider; -import org.onosproject.incubator.net.resource.label.LabelResourceProviderRegistry; -import org.onosproject.incubator.net.resource.label.LabelResourceProviderService; -import org.onosproject.incubator.net.resource.label.LabelResourceService; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.device.DeviceEvent; -import org.onosproject.net.device.DeviceEvent.Type; -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.provider.AbstractListenerProviderRegistry; -import org.onosproject.net.provider.AbstractProviderService; - -import com.google.common.collect.Multimap; - -/** - * Provides test implementation of class LabelResourceService. - */ -public class LabelResourceAdapter - extends AbstractListenerProviderRegistry - implements LabelResourceService, LabelResourceAdminService, LabelResourceProviderRegistry { - public static final long GLOBAL_LABEL_SPACE_MIN = 4097; - public static final long GLOBAL_LABEL_SPACE_MAX = 5121; - public static final long LOCAL_LABEL_SPACE_MIN = 5122; - public static final long LOCAL_LABEL_SPACE_MAX = 9217; - - private Random random = new Random(); - - @Override - public boolean createDevicePool(DeviceId deviceId, - LabelResourceId beginLabel, - LabelResourceId endLabel) { - return true; - } - - @Override - public boolean createGlobalPool(LabelResourceId beginLabel, - LabelResourceId endLabel) { - return true; - } - - @Override - public boolean destroyDevicePool(DeviceId deviceId) { - return true; - } - - @Override - public boolean destroyGlobalPool() { - return true; - } - - public long getLabelId(long min, long max) { - return random.nextInt((int) max - (int) min + 1) + (int) min; - } - - public Collection applyFromDevicePool(DeviceId deviceId, - long applyNum) { - Collection labelList = new LinkedList<>(); - LabelResource label = new DefaultLabelResource(deviceId, - LabelResourceId.labelResourceId( - getLabelId(LOCAL_LABEL_SPACE_MIN, LOCAL_LABEL_SPACE_MAX))); - labelList.add(label); - return labelList; - } - - public Collection applyFromGlobalPool(long applyNum) { - Collection labelList = new LinkedList<>(); - LabelResource label = new DefaultLabelResource(DeviceId.deviceId("foo"), - LabelResourceId.labelResourceId( - getLabelId(GLOBAL_LABEL_SPACE_MIN, GLOBAL_LABEL_SPACE_MAX))); - labelList.add(label); - return labelList; - } - - public boolean releaseToDevicePool(Multimap release) { - return true; - } - - public boolean releaseToGlobalPool(Set release) { - return true; - } - - public boolean isDevicePoolFull(DeviceId deviceId) { - return false; - } - - public boolean isGlobalPoolFull() { - return false; - } - - public long getFreeNumOfDevicePool(DeviceId deviceId) { - return 4; - } - - public long getFreeNumOfGlobalPool() { - return 4; - } - - @Override - public LabelResourcePool getDeviceLabelResourcePool(DeviceId deviceId) { - return null; - } - - @Override - public LabelResourcePool getGlobalLabelResourcePool() { - return null; - } - - private class InternalLabelResourceDelegate implements LabelResourceDelegate { - @Override - public void notify(LabelResourceEvent event) { - post(event); - } - - } - - private class InternalDeviceListener implements DeviceListener { - @Override - public void event(DeviceEvent event) { - Device device = event.subject(); - if (Type.DEVICE_REMOVED.equals(event.type())) { - destroyDevicePool(device.id()); - } - } - } - - private class InternalLabelResourceProviderService - extends AbstractProviderService - implements LabelResourceProviderService { - - protected InternalLabelResourceProviderService(LabelResourceProvider provider) { - super(provider); - } - - @Override - public void deviceLabelResourcePoolDetected(DeviceId deviceId, - LabelResourceId beginLabel, - LabelResourceId endLabel) { - checkNotNull(deviceId, "deviceId is not null"); - checkNotNull(beginLabel, "beginLabel is not null"); - checkNotNull(endLabel, "endLabel is not null"); - createDevicePool(deviceId, beginLabel, endLabel); - } - - @Override - public void deviceLabelResourcePoolDestroyed(DeviceId deviceId) { - checkNotNull(deviceId, "deviceId is not null"); - destroyDevicePool(deviceId); - } - - } - - @Override - protected LabelResourceProviderService createProviderService(LabelResourceProvider provider) { - return null; - } -} diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/LinkServiceAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/LinkServiceAdapter.java deleted file mode 100644 index a2398191c9..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/util/LinkServiceAdapter.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.util; - -import java.util.Set; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.link.LinkListener; -import org.onosproject.net.link.LinkService; -import org.onosproject.net.Link.State; - -import com.google.common.collect.FluentIterable; - -/** - * Test adapter for link service. - */ -public class LinkServiceAdapter implements LinkService { - @Override - public int getLinkCount() { - return 0; - } - - @Override - public Iterable getLinks() { - return null; - } - - @Override - public Iterable getActiveLinks() { - return FluentIterable.from(getLinks()) - .filter(input -> input.state() == State.ACTIVE); - } - - @Override - public Set getDeviceLinks(DeviceId deviceId) { - return null; - } - - @Override - public Set getDeviceEgressLinks(DeviceId deviceId) { - return null; - } - - @Override - public Set getDeviceIngressLinks(DeviceId deviceId) { - return null; - } - - @Override - public Set getLinks(ConnectPoint connectPoint) { - return null; - } - - @Override - public Set getEgressLinks(ConnectPoint connectPoint) { - return null; - } - - @Override - public Set getIngressLinks(ConnectPoint connectPoint) { - return null; - } - - @Override - public Link getLink(ConnectPoint src, ConnectPoint dst) { - return null; - } - - @Override - public void addListener(LinkListener listener) { - } - - @Override - public void removeListener(LinkListener listener) { - } -} diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/MockDeviceService.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/MockDeviceService.java deleted file mode 100644 index 937c0fad42..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/util/MockDeviceService.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.util; - -import java.util.LinkedList; -import java.util.List; - -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.device.DeviceServiceAdapter; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; - -/** - * Test fixture for the device service. - */ -public class MockDeviceService extends DeviceServiceAdapter { - private List devices = new LinkedList<>(); - private DeviceListener listener; - - public void addDevice(Device dev) { - devices.add(dev); - } - - public void removeDevice(Device dev) { - devices.remove(dev); - } - - @Override - public Device getDevice(DeviceId deviceId) { - for (Device dev : devices) { - if (dev.id().equals(deviceId)) { - return dev; - } - } - return null; - } - - @Override - public Iterable getAvailableDevices() { - return devices; - } - - @Override - public void addListener(DeviceListener listener) { - this.listener = listener; - } - - /** - * Get the listener. - */ - public DeviceListener getListener() { - return listener; - } -} diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/MockLinkService.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/MockLinkService.java deleted file mode 100644 index bfca2c4533..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/util/MockLinkService.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.util; - -import org.onosproject.net.Link; -import org.onosproject.net.link.LinkServiceAdapter; -import org.onosproject.net.link.LinkListener; - -import java.util.ArrayList; -import java.util.List; - -/** - * Test fixture for the link service. - */ -public class MockLinkService extends LinkServiceAdapter { - List links = new ArrayList<>(); - LinkListener listener; - - @Override - public int getLinkCount() { - return links.size(); - } - - @Override - public Iterable getLinks() { - return links; - } - - @Override - public void addListener(LinkListener listener) { - this.listener = listener; - } - - /** - * Get listener. - */ - public LinkListener getListener() { - return listener; - } - - /** - * Add link. - * - * @param link needs to be added to list - */ - public void addLink(Link link) { - links.add(link); - } - - /** - * Delete link. - * - * @param link needs to be deleted from list - */ - public void removeLink(Link link) { - links.remove(link); - } -} diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java deleted file mode 100644 index 79bb214b30..0000000000 --- a/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pce.util; - -import com.google.common.collect.ImmutableSet; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pcestore.PcePathInfo; -import org.onosproject.pce.pcestore.api.PceStore; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Arrays; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * Provides test implementation of PceStore. - */ -public class PceStoreAdapter implements PceStore { - - // Mapping tunnel with device local info with tunnel consumer id - - // Set of Path info - private Set failedPathInfoSet = new HashSet<>(); - - // Locally maintain with tunnel name as key and corresponding list of explicit path object - private Map> tunnelNameExplicitPathInfoMap = new HashMap<>(); - - //Mapping tunnel name with Disjoint paths - private Map> loadBalancingPathNameTunnelIdInfo = new HashMap<>(); - - @Override - public boolean existsFailedPathInfo(PcePathInfo pathInfo) { - return failedPathInfoSet.contains(pathInfo); - } - - @Override - public int getFailedPathInfoCount() { - return failedPathInfoSet.size(); - } - - @Override - public Iterable getFailedPathInfos() { - return ImmutableSet.copyOf(failedPathInfoSet); - } - - @Override - public void addFailedPathInfo(PcePathInfo pathInfo) { - failedPathInfoSet.add(pathInfo); - } - - @Override - public boolean removeFailedPathInfo(PcePathInfo pathInfo) { - if (failedPathInfoSet.remove(pathInfo)) { - return false; - } - return true; - } - - @Override - public boolean tunnelNameExplicitPathInfoMap(String tunnelName, List explicitPathInfo) { - tunnelNameExplicitPathInfoMap.put(tunnelName, explicitPathInfo); - return false; - } - - @Override - public List getTunnelNameExplicitPathInfoMap(String tunnelName) { - return tunnelNameExplicitPathInfoMap.get(tunnelName); - } - -/* @Override - public DisjointPath getDisjointPaths(String tunnelName) { - if (tunnelNameDisjointPathInfo.get(tunnelName) != null) { - return tunnelNameDisjointPathInfo.get(tunnelName); - } - return null; - } - - @Override - public boolean addDisjointPathInfo(String tunnelName, DisjointPath path) { - return tunnelNameDisjointPathInfo.put(tunnelName, path) != null ? true : false; - }*/ - - @Override - public boolean addLoadBalancingTunnelIdsInfo(String loadBalancingPathName, TunnelId... tunnelIds) { - return loadBalancingPathNameTunnelIdInfo.put(loadBalancingPathName, - Arrays.asList(tunnelIds)) != null ? true : false; - } - - @Override - public List getLoadBalancingTunnelIds(String loadBalancingPathName) { - if (loadBalancingPathNameTunnelIdInfo.get(loadBalancingPathName) != null) { - return loadBalancingPathNameTunnelIdInfo.get(loadBalancingPathName); - } - return null; - } - - @Override - public boolean removeLoadBalancingTunnelIdsInfo(String loadBalancingPathName) { - if (loadBalancingPathNameTunnelIdInfo.remove(loadBalancingPathName) == null) { - return false; - } - return true; - } - -/* @Override - public boolean removeDisjointPathInfo(String tunnelName) { - if (tunnelNameDisjointPathInfo.remove(tunnelName) == null) { - return false; - } - return true; - }*/ -} diff --git a/apps/pce/bandwidthmgmt/BUILD b/apps/pce/bandwidthmgmt/BUILD deleted file mode 100644 index 755f9b2ba9..0000000000 --- a/apps/pce/bandwidthmgmt/BUILD +++ /dev/null @@ -1,16 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + KRYO + [ - "//core/store/serializers:onos-core-serializers", - "//apps/pcep-api:onos-apps-pcep-api", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) - -onos_app( - app_name = "org.onosproject.bandwidthmgmt", - category = "default", - description = "PCE Bandwidth Management.", - title = "PCE Bandwidth Management", - url = "http://onosproject.org", -) diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/BandwidthManager.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/BandwidthManager.java deleted file mode 100644 index a23c16e929..0000000000 --- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/BandwidthManager.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bandwidthmgr; - -import org.onosproject.bandwidthmgr.api.BandwidthMgmtService; -import org.onosproject.bandwidthmgr.api.BandwidthMgmtStore; -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Implementation of PCE service. - */ -@Component(immediate = true, service = BandwidthMgmtService.class) -public class BandwidthManager implements BandwidthMgmtService { - private static final Logger log = LoggerFactory.getLogger(BandwidthManager.class); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected BandwidthMgmtStore store; - - @Activate - protected void activate() { - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - log.info("Stopped"); - } - - @Override - public Double getTeCost(LinkKey linkKey) { - checkNotNull(linkKey); - return store.getTeCost(linkKey); - } - - @Override - public Double getAvailableBandwidth(LinkKey linkKey) { - checkNotNull(linkKey); - Set unResvBw = getUnreservedBw(linkKey); - Double localReservedBw = getAllocatedLocalReservedBw(linkKey); - if (unResvBw != null && localReservedBw != null) { - - return unResvBw.iterator().next().doubleValue() - - localReservedBw.doubleValue(); - } - if (unResvBw != null) { - return unResvBw.iterator().next().doubleValue(); - } else { - return null; - } - } - - @Override - public boolean allocLocalReservedBw(LinkKey linkKey, Double bandwidth) { - checkNotNull(linkKey); - checkNotNull(bandwidth); - return store.allocLocalReservedBw(linkKey, bandwidth); - } - - @Override - public boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth) { - checkNotNull(linkkey); - checkNotNull(bandwidth); - return store.releaseLocalReservedBw(linkkey, bandwidth); - } - - @Override - public Double getAllocatedLocalReservedBw(LinkKey linkkey) { - checkNotNull(linkkey); - return store.getAllocatedLocalReservedBw(linkkey); - } - - @Override - public boolean addUnreservedBw(LinkKey linkKey, Set bandwidth) { - checkNotNull(linkKey); - checkNotNull(bandwidth); - return store.addUnreservedBw(linkKey, bandwidth); - } - - @Override - public boolean removeUnreservedBw(LinkKey linkkey) { - checkNotNull(linkkey); - return store.removeUnreservedBw(linkkey); - } - - @Override - public Set getUnreservedBw(LinkKey linkkey) { - checkNotNull(linkkey); - return store.getUnreservedBw(linkkey); - } - - @Override - public boolean isBandwidthAvailable(Link link, Double bandwidth) { - checkNotNull(link); - checkNotNull(bandwidth); - - LinkKey linkKey = LinkKey.linkKey(link); - Double localAllocBw = getAllocatedLocalReservedBw(linkKey); - - Set unResvBw = getUnreservedBw(linkKey); - Double prirZeroBw = unResvBw.iterator().next(); - - return (bandwidth <= prirZeroBw - (localAllocBw != null ? localAllocBw : 0)); - } -} diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/DistributedBandwidthMgmtStore.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/DistributedBandwidthMgmtStore.java deleted file mode 100644 index 50bad95976..0000000000 --- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/DistributedBandwidthMgmtStore.java +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bandwidthmgr; - -import org.onlab.util.KryoNamespace; -import org.onosproject.bandwidthmgr.api.BandwidthMgmtStore; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.LinkKey; -import org.onosproject.net.config.NetworkConfigEvent; -import org.onosproject.net.config.NetworkConfigListener; -import org.onosproject.net.config.NetworkConfigService; -import org.onosproject.pcep.api.TeLinkConfig; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.ConsistentMap; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.LinkedHashSet; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_ADDED; -import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_REMOVED; -import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_UPDATED; - -/** - * Manages the pool of available labels to devices, links and tunnels. - */ -@Component(immediate = true, service = BandwidthMgmtStore.class) -public class DistributedBandwidthMgmtStore implements BandwidthMgmtStore { - private static final Logger log = LoggerFactory.getLogger(BandwidthManager.class); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected NetworkConfigService netCfgService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - private InternalConfigListener cfgListener = new InternalConfigListener(); - - private ConsistentMap teCost; - // Locally maintain unreserved bandwidth of each link. - private ConsistentMap> unResvBw; - - // Mapping tunnel with link key with local reserved bandwidth - private ConsistentMap localReservedBw; - - private static final Serializer SERIALIZER = Serializer - .using(new KryoNamespace.Builder().register(KryoNamespaces.API) - .register(KryoNamespaces.API) - .register(LinkKey.class) - .register(ConnectPoint.class) - .build()); - - @Activate - protected void activate() { - netCfgService.addListener(cfgListener); - - localReservedBw = storageService.consistentMapBuilder() - .withName("local-reserved-bandwith") - .withSerializer(SERIALIZER) - .build(); - - unResvBw = storageService.>consistentMapBuilder() - .withName("onos-unreserved-bandwidth") - .withSerializer(SERIALIZER) - .build(); - - teCost = storageService.consistentMapBuilder() - .withName("onos-tecost") - .withSerializer(SERIALIZER) - .build(); - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - netCfgService.removeListener(cfgListener); - log.info("Stopped"); - } - - @Override - public Double getTeCost(LinkKey linkKey) { - if (teCost.get(linkKey) != null) { - return teCost.get(linkKey).value(); - } - return null; - } - - @Override - public boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth) { - Double allocatedBw = null; - - if (localReservedBw.get(linkkey) != null) { - allocatedBw = localReservedBw.get(linkkey).value(); - } - if (allocatedBw != null) { - localReservedBw.put(linkkey, (allocatedBw + bandwidth)); - } else { - localReservedBw.put(linkkey, bandwidth); - } - - return true; - } - - @Override - public boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth) { - - Double allocatedBw = null; - if (localReservedBw.get(linkkey) != null) { - allocatedBw = localReservedBw.get(linkkey).value(); - } - - if (allocatedBw == null || allocatedBw < bandwidth) { - return false; - } - - Double releasedBw = allocatedBw - bandwidth; - if (releasedBw == 0.0) { - localReservedBw.remove(linkkey); - } else { - localReservedBw.put(linkkey, releasedBw); - } - return true; - } - - @Override - public Double getAllocatedLocalReservedBw(LinkKey linkkey) { - return localReservedBw.get(linkkey) != null ? localReservedBw.get(linkkey).value() : null; - } - - @Override - public boolean addUnreservedBw(LinkKey linkkey, Set bandwidth) { - unResvBw.put(linkkey, bandwidth); - return true; - } - - @Override - public boolean removeUnreservedBw(LinkKey linkkey) { - unResvBw.remove(linkkey); - return true; - } - - @Override - public Set getUnreservedBw(LinkKey linkkey) { - checkNotNull(linkkey); - return unResvBw.get(linkkey) != null ? unResvBw.get(linkkey).value() : null; - } - - private class InternalConfigListener implements NetworkConfigListener { - - @Override - public void event(NetworkConfigEvent event) { - - if (event.configClass().equals(TeLinkConfig.class)) { - if ((event.type() != CONFIG_ADDED) && (event.type() != CONFIG_UPDATED) - && (event.type() != CONFIG_REMOVED)) { - return; - } - LinkKey linkKey = (LinkKey) event.subject(); - switch (event.type()) { - case CONFIG_ADDED: - case CONFIG_UPDATED: - - TeLinkConfig cfg = netCfgService.getConfig(linkKey, TeLinkConfig.class); - if (cfg == null) { - log.error("Unable to get the configuration of the link."); - return; - } - Set unresvBw = new LinkedHashSet<>(); - unresvBw.add(cfg.unResvBandwidth()); - addUnreservedBw(linkKey, unresvBw); - - if (cfg.teCost() != 0) { - teCost.put(linkKey, (double) cfg.teCost()); - } - - break; - case CONFIG_REMOVED: - removeUnreservedBw(linkKey); - localReservedBw.remove(linkKey); - teCost.remove(linkKey); - - break; - default: - break; - } - } - } - } - -} diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtService.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtService.java deleted file mode 100644 index b16287c171..0000000000 --- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtService.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bandwidthmgr.api; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; - -import java.util.Set; - -public interface BandwidthMgmtService { - - - /** - * Allocate local bandwidth(non rsvp-te) to linkKey mapping. - * - * @param linkkey link key of the link - * @param bandwidth requested local bandwidth - * @return success or failure - */ - boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth); - - - /** - * Release local bandwidth(non rsvp-te) to linkKey mapping. - * - * @param linkkey link key of the link - * @param bandwidth releasing local bandwidth - * @return success or failure - */ - boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth); - - /** - * Get local allocated bandwidth of the link. - * - * @param linkkey link key of the link - * @return allocated bandwidth - */ - Double getAllocatedLocalReservedBw(LinkKey linkkey); - - /** - * Add unreserved bandwidth to linkKey mapping. - * - * @param linkkey link key of the link - * @param bandwidth set of unreserved bandwidth - * @return success or failure - */ - boolean addUnreservedBw(LinkKey linkkey, Set bandwidth); - - /** - * Remove unreserved bandwidth to linkKey mapping. - * - * @param linkkey link key of the link - * @return success or failure - */ - boolean removeUnreservedBw(LinkKey linkkey); - - /** - * Get list of unreserved Bandwidth of the link. - * - * @param linkkey link key of the link - * @return Set of unreserved bandwidth - */ - Set getUnreservedBw(LinkKey linkkey); - - /** - * Returns if the link has the available bandwidth or not. - * - * @param link link - * @param bandwidth required bandwidth - * @return true if bandwidth is available else false - */ - boolean isBandwidthAvailable(Link link, Double bandwidth); - - /** - * Returns Te cost for the specified link key. - * - * @param linkKey connect point of source and destination of the link - * @return Te cost for the linkKey - */ - Double getTeCost(LinkKey linkKey); - - /** - * Returns available bandwidth for the linkKey. - * - * @param linkKey connect point of source and destination of the link - * @return available bandwidth for the linkKey - */ - Double getAvailableBandwidth(LinkKey linkKey); -} diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtStore.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtStore.java deleted file mode 100644 index 43589c93dd..0000000000 --- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/BandwidthMgmtStore.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.bandwidthmgr.api; - -import org.onosproject.net.LinkKey; - -import java.util.Set; - -/** - * Abstraction of an entity providing pool of available labels to devices, links and tunnels. - */ -public interface BandwidthMgmtStore { - - /** - * Allocate local bandwidth(non rsvp-te) to linkKey mapping. - * - * @param linkkey link key of the link - * @param bandwidth requested local bandwidth - * @return success or failure - */ - boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth); - - - /** - * Release local bandwidth(non rsvp-te) to linkKey mapping. - * - * @param linkkey link key of the link - * @param bandwidth releasing local bandwidth - * @return success or failure - */ - boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth); - - /** - * Get local allocated bandwidth of the link. - * - * @param linkkey link key of the link - * @return allocated bandwidth - */ - Double getAllocatedLocalReservedBw(LinkKey linkkey); - - /** - * Add unreserved bandwidth to linkKey mapping. - * - * @param linkkey link key of the link - * @param bandwidth set of unreserved bandwidth - * @return success or failure - */ - boolean addUnreservedBw(LinkKey linkkey, Set bandwidth); - - /** - * Remove unreserved bandwidth to linkKey mapping. - * - * @param linkkey link key of the link - * @return success or failure - */ - boolean removeUnreservedBw(LinkKey linkkey); - - /** - * Get list of unreserved Bandwidth of the link. - * - * @param linkkey link key of the link - * @return Set of unreserved bandwidth - */ - Set getUnreservedBw(LinkKey linkkey); - - /** - * Returns Te cost for the specified link key. - * - * @param linkKey connect point of source and destination of the link - * @return Te cost for the linkKey - */ - Double getTeCost(LinkKey linkKey); -} diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/package-info.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/package-info.java deleted file mode 100644 index 54b323fc63..0000000000 --- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/api/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Bandwidth management service. - */ -package org.onosproject.bandwidthmgr.api; diff --git a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/package-info.java b/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/package-info.java deleted file mode 100644 index 14fd44324f..0000000000 --- a/apps/pce/bandwidthmgmt/src/main/java/org/onosproject/bandwidthmgr/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCE Bandwidth management service implementation. - */ -package org.onosproject.bandwidthmgr; \ No newline at end of file diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceCodecRegistrator.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceCodecRegistrator.java deleted file mode 100644 index be8686aa2f..0000000000 --- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceCodecRegistrator.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcerest; - -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.onosproject.codec.CodecService; -import org.onosproject.pce.pceservice.PcePath; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Implementation of the json codec brokering service for pce app. - */ -@Component(immediate = true) -public class PceCodecRegistrator { - - private static Logger log = LoggerFactory.getLogger(PceCodecRegistrator.class); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CodecService codecService; - - @Activate - public void activate() { - codecService.registerCodec(PcePath.class, new PcePathCodec()); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); - } -} diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathCodec.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathCodec.java deleted file mode 100644 index 20671f7272..0000000000 --- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathCodec.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcerest; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.net.Link.State.ACTIVE; -import static org.onosproject.net.Link.Type.DIRECT; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DeviceId; -import org.onosproject.net.NetworkResource; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pceservice.PcePath; -import org.onosproject.pce.pceservice.DefaultPcePath; -import org.onosproject.pce.pceservice.constraint.CostConstraint; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.databind.JsonNode; - -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -/** - * PCE path json codec. - */ -public final class PcePathCodec extends JsonCodec { - private final Logger log = LoggerFactory.getLogger(PcePathCodec.class); - private static final String SOURCE = "source"; - private static final String DESTINATION = "destination"; - private static final String LSP_TYPE = "pathType"; - private static final String SYMBOLIC_PATH_NAME = "name"; - private static final String CONSTRAINT = "constraint"; - private static final String COST = "cost"; - private static final String BANDWIDTH = "bandwidth"; - private static final String PATH_ID = "pathId"; - private static final String EXPLICIT_PATH_INFO = "explicitPathInfo"; - private static final String MISSING_MEMBER_MESSAGE = " member is required in pce-path"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - public static final byte SOURCE_DEVICEID_INDEX = 0; - public static final byte SOURCE_PORTNO_INDEX = 1; - public static final byte DESTINATION_DEVICEID_INDEX = 2; - public static final byte DESTINATION_PORTNO_INDEX = 3; - - @Override - public PcePath decode(ObjectNode json, CodecContext context) { - if (json == null || !json.isObject()) { - log.error("Empty json input"); - return null; - } - - // build pce-path - PcePath.Builder resultBuilder = new DefaultPcePath.Builder(); - - // retrieve source - JsonNode jNode = json.get(SOURCE); - if (jNode != null) { - String src = jNode.asText(); - resultBuilder.source(src); - } - - // retrieve destination - jNode = json.get(DESTINATION); - if (jNode != null) { - String dst = jNode.asText(); - resultBuilder.destination(dst); - } - - // retrieve lsp-type - jNode = json.get(LSP_TYPE); - if (jNode != null) { - String lspType = jNode.asText(); - //Validating LSP type - int type = Integer.parseInt(lspType); - if ((type < 0) || (type > 2)) { - return null; - } - resultBuilder.lspType(lspType); - } - - // retrieve symbolic-path-name - jNode = json.get(SYMBOLIC_PATH_NAME); - if (jNode != null) { - String name = jNode.asText(); - resultBuilder.name(name); - } - - // retrieve constraint - JsonNode constraintJNode = (JsonNode) json.path(CONSTRAINT); - if ((constraintJNode != null) && (!constraintJNode.isMissingNode())) { - // retrieve cost - jNode = constraintJNode.get(COST); - if (jNode != null) { - String cost = jNode.asText(); - //Validating Cost type - int costType = Integer.parseInt(cost); - if ((costType < 1) || (costType > 2)) { - return null; - } - resultBuilder.costConstraint(cost); - } - - // retrieve bandwidth - jNode = constraintJNode.get(BANDWIDTH); - if (jNode != null) { - String bandwidth = jNode.asText(); - double bw = Double.parseDouble(bandwidth); - if (bw < 0) { - return null; - } - resultBuilder.bandwidthConstraint(bandwidth); - } - } - - // Retrieve explicit path info - JsonNode explicitPathInfo = json.get(EXPLICIT_PATH_INFO); - if (explicitPathInfo != null) { - List explicitPathInfoList = - ImmutableList.copyOf(jsonNodeToExplicitPathInfo(explicitPathInfo)); - if (explicitPathInfoList != null) { - resultBuilder.explicitPathInfo(explicitPathInfoList); - } - } - - return resultBuilder.build(); - } - - private ExplicitPathInfo createListOfExplicitPathObj(JsonNode node) { - int explicitPathType = Integer.parseInt(node.get("type").asText()); - DeviceId deviceId; - PortNumber portNo; - NetworkResource res; - LinkedList list = Lists.newLinkedList(); - if ((explicitPathType < 0) || (explicitPathType > 1)) { - return null; - } - ExplicitPathInfo.Type type = ExplicitPathInfo.Type.values()[explicitPathType]; - String subType = node.get("subtype").asText(); - if (Integer.parseInt(subType) == 0) { - res = DeviceId.deviceId(node.get("value").asText()); - } else if (Integer.parseInt(subType) == 1) { - - String[] splitted = node.get("value").asText().split("/"); - - if (splitted[SOURCE_DEVICEID_INDEX] != null - && splitted[SOURCE_PORTNO_INDEX] != null - && splitted[DESTINATION_DEVICEID_INDEX] != null - && splitted[DESTINATION_PORTNO_INDEX] != null) { - return null; - } - deviceId = DeviceId.deviceId(splitted[SOURCE_DEVICEID_INDEX]); - portNo = PortNumber.portNumber(splitted[SOURCE_PORTNO_INDEX]); - ConnectPoint cpSrc = new ConnectPoint(deviceId, portNo); - deviceId = DeviceId.deviceId(splitted[DESTINATION_DEVICEID_INDEX]); - portNo = PortNumber.portNumber(splitted[DESTINATION_PORTNO_INDEX]); - ConnectPoint cpDst = new ConnectPoint(deviceId, portNo); - res = DefaultLink.builder() - .providerId(ProviderId.NONE) - .src(cpSrc) - .dst(cpDst) - .type(DIRECT) - .state(ACTIVE) - .build(); - } else { - return null; - } - - return new ExplicitPathInfo(type, res); - } - - private Collection jsonNodeToExplicitPathInfo(JsonNode explicitPathInfo) { - checkNotNull(explicitPathInfo, JSON_NOT_NULL); - - Integer i = 0; - NetworkResource res; - LinkedList list = Lists.newLinkedList(); - if (explicitPathInfo.isArray()) { - for (JsonNode node : explicitPathInfo) { - ExplicitPathInfo obj = createListOfExplicitPathObj(node); - if (obj == null) { - return null; - } - list.add(obj); - } - } else { - ExplicitPathInfo obj = createListOfExplicitPathObj(explicitPathInfo); - if (obj == null) { - return null; - } - list.add(obj); - } - - return Collections.unmodifiableCollection(list); - } - - @Override - public ObjectNode encode(PcePath path, CodecContext context) { - checkNotNull(path, "path output cannot be null"); - ObjectNode result = context.mapper() - .createObjectNode() - .put(PATH_ID, path.id().id()) - .put(SOURCE, path.source()) - .put(DESTINATION, path.destination()) - .put(LSP_TYPE, path.lspType().type()) - .put(SYMBOLIC_PATH_NAME, path.name()); - - ObjectNode constraintNode = context.mapper() - .createObjectNode() - .put(COST, ((CostConstraint) path.costConstraint()).type().type()) - .put(BANDWIDTH, ((PceBandwidthConstraint) path.bandwidthConstraint()).bandwidth().bps()); - - if (path.explicitPathInfo() != null && !path.explicitPathInfo().isEmpty()) { - ArrayNode arrayNode = context.mapper().createArrayNode(); - for (ExplicitPathInfo e : path.explicitPathInfo()) { - ObjectNode node = context.mapper() - .createObjectNode() - .put("type", e.type().toString()) - .put("value", e.value().toString()); - arrayNode.add(node); - } - result.set(EXPLICIT_PATH_INFO, arrayNode); - } - - result.set(CONSTRAINT, constraintNode); - return result; - } -} diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathWebResource.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathWebResource.java deleted file mode 100644 index de2e84aef2..0000000000 --- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PcePathWebResource.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcerest; - -import static javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.nullIsNotFound; -import static org.onlab.util.Tools.readTreeFromStream; - -import java.util.Collection; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import java.util.LinkedList; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import com.google.common.collect.ImmutableList; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.incubator.net.tunnel.TunnelService; -import org.onosproject.net.DeviceId; -import org.onosproject.net.intent.Constraint; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pceservice.api.PceService; -import org.onosproject.pce.pceservice.PcePath; -import org.onosproject.pce.pceservice.DefaultPcePath; -import org.onosproject.pce.pceservice.LspType; -import org.onosproject.rest.AbstractWebResource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program pce path. - */ -@Path("path") -public class PcePathWebResource extends AbstractWebResource { - - private final Logger log = LoggerFactory.getLogger(PcePathWebResource.class); - public static final String PCE_PATH_NOT_FOUND = "Path not found"; - public static final String PCE_PATH_ID_EXIST = "Path exists"; - public static final String PCE_PATH_ID_NOT_EXIST = "Path does not exist for the identifier"; - public static final String PCE_SETUP_PATH_FAILED = "PCE Setup path has failed."; - - /** - * Retrieve details of all paths created. - * - * @return 200 OK - */ - @GET - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response queryAllPath() { - log.debug("Query all paths."); - PceService pceService = get(PceService.class); - Iterable tunnels = pceService.queryAllPath(); - - ObjectNode result = mapper().createObjectNode(); - ArrayNode pathEntry = result.putArray("paths"); - if (tunnels != null) { - for (final Tunnel tunnel : tunnels) { - PcePath path = DefaultPcePath.builder().of(tunnel, pceService.explicitPathInfoList(tunnel - .tunnelName().value())) - .build(); - pathEntry.add(codec(PcePath.class).encode(path, this)); - } - } - return ok(result.toString()).build(); - } - - /** - * Retrieve details of a specified path id. - * - * @param id path id - * @return 200 OK, 404 if given identifier does not exist - */ - @GET - @Path("{path_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response queryPath(@PathParam("path_id") String id) { - log.debug("Query path by identifier {}.", id); - PceService pceService = get(PceService.class); - - Tunnel tunnel = nullIsNotFound(pceService.queryPath(TunnelId.valueOf(id)), - PCE_PATH_NOT_FOUND); - PcePath path = DefaultPcePath.builder().of(tunnel, pceService.explicitPathInfoList(tunnel - .tunnelName().value())).build(); - if (path == null) { - return Response.status(OK).entity(PCE_SETUP_PATH_FAILED).build(); - } - ObjectNode result = mapper().createObjectNode(); - result.set("path", codec(PcePath.class).encode(path, this)); - return ok(result.toString()).build(); - } - - /** - * Creates a new path. - * - * @param stream pce path from json - * @return status of the request - */ - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response setupPath(InputStream stream) { - log.debug("Setup path."); - try { - ObjectNode jsonTree = readTreeFromStream(mapper(), stream); - JsonNode port = jsonTree.get("path"); - TunnelService tunnelService = get(TunnelService.class); - PcePath path = codec(PcePath.class).decode((ObjectNode) port, this); - if (path == null) { - return Response.status(OK).entity(PCE_SETUP_PATH_FAILED).build(); - } - - //Validating tunnel name, duplicated tunnel names not allowed - Collection existingTunnels = tunnelService.queryTunnel(Tunnel.Type.MPLS); - if (existingTunnels != null) { - for (Tunnel t : existingTunnels) { - if (t.tunnelName().toString().equals(path.name())) { - return Response.status(OK).entity(PCE_SETUP_PATH_FAILED).build(); - } - } - } - - DeviceId srcDevice = DeviceId.deviceId(path.source()); - DeviceId dstDevice = DeviceId.deviceId(path.destination()); - LspType lspType = path.lspType(); - List listConstrnt = new LinkedList(); - - // Add bandwidth - listConstrnt.add(path.bandwidthConstraint()); - - // Add cost - listConstrnt.add(path.costConstraint()); - - List explicitPathInfoList = null; - if (path.explicitPathInfo() != null) { - explicitPathInfoList = ImmutableList.copyOf(path.explicitPathInfo()); - } - - Boolean issuccess = nullIsNotFound(get(PceService.class) - .setupPath(srcDevice, dstDevice, path.name(), listConstrnt, - lspType, explicitPathInfoList), - PCE_SETUP_PATH_FAILED); - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (IOException e) { - log.error("Exception while creating path {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Update details of a specified path id. - * - * @param id path id - * @param stream pce path from json - * @return 200 OK, 404 if given identifier does not exist - */ - @PUT - @Path("{path_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updatePath(@PathParam("path_id") String id, - final InputStream stream) { - log.debug("Update path by identifier {}.", id); - try { - ObjectNode jsonTree = readTreeFromStream(mapper(), stream); - JsonNode pathNode = jsonTree.get("path"); - PcePath path = codec(PcePath.class).decode((ObjectNode) pathNode, this); - if (path == null) { - return Response.status(OK).entity(PCE_SETUP_PATH_FAILED).build(); - } - List constrntList = new LinkedList(); - // Assign bandwidth - if (path.bandwidthConstraint() != null) { - constrntList.add(path.bandwidthConstraint()); - } - - // Assign cost - if (path.costConstraint() != null) { - constrntList.add(path.costConstraint()); - } - - Boolean result = nullIsNotFound(get(PceService.class).updatePath(TunnelId.valueOf(id), constrntList), - PCE_PATH_NOT_FOUND); - return Response.status(OK).entity(result.toString()).build(); - } catch (IOException e) { - log.error("Update path failed because of exception {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Release a specified path. - * - * @param id path id - * @return 200 OK, 404 if given identifier does not exist - */ - @DELETE - @Path("{path_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response releasePath(@PathParam("path_id") String id) { - log.debug("Deletes path by identifier {}.", id); - - Boolean isSuccess = nullIsNotFound(get(PceService.class).releasePath(TunnelId.valueOf(id)), - PCE_PATH_NOT_FOUND); - if (!isSuccess) { - log.debug("Path identifier {} does not exist", id); - } - - return Response.status(OK).entity(isSuccess.toString()).build(); - } -} diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceWebApplication.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceWebApplication.java deleted file mode 100644 index 3413880005..0000000000 --- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/PceWebApplication.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcerest; - -import org.onlab.rest.AbstractWebApplication; - -import java.util.Set; - -/** - * PCE rest api web application. - */ -public class PceWebApplication extends AbstractWebApplication { - @Override - public Set> getClasses() { - return getClasses(PcePathWebResource.class); - } -} - diff --git a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/package-info.java b/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/package-info.java deleted file mode 100644 index 95c51986dd..0000000000 --- a/apps/pce/pcerest/src/main/java/org/onosproject/pcerest/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCE rest application. - */ - -package org.onosproject.pcerest; diff --git a/apps/pce/pcerest/src/main/resources/WEB-INF/web.xml b/apps/pce/pcerest/src/main/resources/WEB-INF/web.xml deleted file mode 100644 index 388044aa24..0000000000 --- a/apps/pce/pcerest/src/main/resources/WEB-INF/web.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - PCE REST API v1.0 - - - - Secured - /* - - - admin - viewer - - - - - admin - viewer - - - - BASIC - karaf - - - - JAX-RS Service - org.glassfish.jersey.servlet.ServletContainer - - javax.ws.rs.Application - org.onosproject.pcerest.PceWebApplication - - 1 - - - - JAX-RS Service - /* - - diff --git a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/MockPceCodecContext.java b/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/MockPceCodecContext.java deleted file mode 100644 index 3c2ae24e0d..0000000000 --- a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/MockPceCodecContext.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcerest; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.CodecService; -import org.onosproject.codec.JsonCodec; -import org.onosproject.codec.impl.CodecManager; - -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * Mock codec context for use in codec unit tests. - */ -public class MockPceCodecContext implements CodecContext { - - private final ObjectMapper mapper = new ObjectMapper(); - private final CodecManager codecManager = new CodecManager(); - private final PceCodecRegistrator manager = new PceCodecRegistrator(); - - /** - * Constructs a new mock codec context. - */ - public MockPceCodecContext() { - codecManager.activate(); - manager.codecService = codecManager; - manager.activate(); - } - - @Override - public ObjectMapper mapper() { - return mapper; - } - - @SuppressWarnings("unchecked") - @Override - public T getService(Class serviceClass) { - return null; - } - - @Override - public JsonCodec codec(Class entityClass) { - return codecManager.getCodec(entityClass); - } - - /** - * Get the codec manager. - * - * @return instance of codec manager - */ - public CodecService codecManager() { - return codecManager; - } -} diff --git a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathCodecTest.java b/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathCodecTest.java deleted file mode 100644 index 382617286c..0000000000 --- a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathCodecTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcerest; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import java.io.IOException; -import java.io.InputStream; - -import org.junit.Before; -import org.junit.Test; - -import org.onlab.util.DataRateUnit; -import org.onosproject.codec.JsonCodec; -import org.onosproject.pce.pceservice.PcePath; -import org.onosproject.net.intent.Constraint; -import org.onosproject.pce.pceservice.constraint.CostConstraint; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; - -/** - * PCE path codec unit tests. - */ -public class PcePathCodecTest { - - MockPceCodecContext context; - JsonCodec pcePathCodec; - /** - * Sets up for each test. Creates a context and fetches the PCE path codec. - */ - @Before - public void setUp() { - context = new MockPceCodecContext(); - pcePathCodec = context.codec(PcePath.class); - assertThat(pcePathCodec, notNullValue()); - } - - /** - * Reads in a pce-path from the given resource and decodes it. - * - * @param resourceName resource to use to read the json for the pce-path - * @return decoded pce-path - * @throws IOException if processing the resource fails - */ - private PcePath getPcePath(String resourceName) throws IOException { - InputStream jsonStream = PcePathCodecTest.class - .getResourceAsStream(resourceName); - ObjectMapper mapper = new ObjectMapper(); - JsonNode json = mapper.readTree(jsonStream); - assertThat(json, notNullValue()); - PcePath pcePath = pcePathCodec.decode((ObjectNode) json, context); - assertThat(pcePath, notNullValue()); - return pcePath; - } - - /** - * Checks that a simple pce-path is decoded properly. - * - * @throws IOException if the resource cannot be processed - */ - @Test - public void codecPcePathTest() throws IOException { - - PcePath pcePath = getPcePath("pcePath.json"); - - assertThat(pcePath, notNullValue()); - - assertThat(pcePath.source().toString(), is("11.0.0.1")); - assertThat(pcePath.destination(), is("11.0.0.2")); - assertThat(pcePath.lspType().toString(), is("WITHOUT_SIGNALLING_AND_WITHOUT_SR")); - // testing cost type - String cost = "2"; - Constraint costConstraint = CostConstraint.of(CostConstraint.Type.values()[Integer.valueOf(cost) - 1]); - assertThat(pcePath.costConstraint(), is(costConstraint)); - // testing bandwidth - String bandwidth = "200"; - Constraint bandwidthConstraint = PceBandwidthConstraint.of(Double.valueOf(bandwidth), DataRateUnit - .valueOf("BPS")); - assertThat(pcePath.bandwidthConstraint(), is(bandwidthConstraint)); - } -} diff --git a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathResourceTest.java b/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathResourceTest.java deleted file mode 100644 index 1e35395c79..0000000000 --- a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PcePathResourceTest.java +++ /dev/null @@ -1,305 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcerest; - -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; -import static org.onosproject.net.Link.Type.DIRECT; - -import com.eclipsesource.json.Json; -import com.eclipsesource.json.JsonObject; - -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.util.LinkedList; -import java.util.List; - -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.NotFoundException; - -import com.google.common.collect.Lists; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.graph.ScalarWeight; -import org.onlab.junit.TestUtils; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onlab.packet.IpAddress; -import org.onlab.rest.BaseResource; -import org.onosproject.codec.CodecService; -// import org.onosproject.core.DefaultGroupId; -import org.onosproject.incubator.net.tunnel.DefaultTunnel; -import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.incubator.net.tunnel.TunnelEndPoint; -import org.onosproject.incubator.net.tunnel.TunnelName; -import org.onosproject.incubator.net.tunnel.TunnelService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DefaultLink; -import org.onosproject.net.DefaultPath; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.pce.pceservice.ExplicitPathInfo; -import org.onosproject.pce.pceservice.api.PceService; -import org.onosproject.pce.pceservice.PcepAnnotationKeys; -import org.onosproject.pce.pcestore.api.PceStore; -import org.onosproject.net.Path; -import org.onosproject.net.PortNumber; -import org.onosproject.net.provider.ProviderId; - -/** - * Unit tests for pce path REST APIs. - */ -public class PcePathResourceTest extends PceResourceTest { - private final PceService pceService = createMock(PceService.class); - private final PceStore pceStore = createMock(PceStore.class); - private final TunnelService tunnelService = createMock(TunnelService.class); - private final TunnelEndPoint src = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(23423)); - private final TunnelEndPoint dst = IpTunnelEndPoint.ipTunnelPoint(IpAddress.valueOf(32421)); - // private final DefaultGroupId groupId = new DefaultGroupId(92034); - private final TunnelName tunnelName = TunnelName.tunnelName("TunnelName"); - private final TunnelId tunnelId = TunnelId.valueOf("41654654"); - private final ProviderId producerName = new ProviderId("producer1", "13"); - private Path path; - private Tunnel tunnel; - private List explicitPathInfoList; - private DeviceId deviceId1; - private DeviceId deviceId2; - private DeviceId deviceId3; - private DeviceId deviceId4; - private DeviceId deviceId5; - private PortNumber port1; - private PortNumber port2; - private PortNumber port3; - private PortNumber port4; - private PortNumber port5; - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - // Mock environment setup - MockPceCodecContext context = new MockPceCodecContext(); - ServiceDirectory testDirectory = new TestServiceDirectory().add(PceService.class, pceService) - .add(TunnelService.class, tunnelService) - .add(PceStore.class, pceStore) - .add(CodecService.class, context.codecManager()); - TestUtils.setField(BaseResource.class, "services", testDirectory); - - // Tunnel creation - // Links - ProviderId providerId = new ProviderId("of", "foo"); - deviceId1 = DeviceId.deviceId("of:A"); - deviceId2 = DeviceId.deviceId("of:B"); - deviceId3 = DeviceId.deviceId("of:C"); - deviceId4 = DeviceId.deviceId("of:D"); - deviceId5 = DeviceId.deviceId("of:E"); - port1 = PortNumber.portNumber(1); - port2 = PortNumber.portNumber(2); - port3 = PortNumber.portNumber(3); - port4 = PortNumber.portNumber(4); - port5 = PortNumber.portNumber(5); - List linkList = new LinkedList<>(); - - Link l1 = DefaultLink.builder() - .providerId(providerId) - .annotations(DefaultAnnotations.builder().set("key1", "yahoo").build()) - .src(new ConnectPoint(deviceId1, port1)) - .dst(new ConnectPoint(deviceId2, port2)) - .type(DIRECT) - .state(Link.State.ACTIVE) - .build(); - linkList.add(l1); - Link l2 = DefaultLink.builder() - .providerId(providerId) - .annotations(DefaultAnnotations.builder().set("key2", "yahoo").build()) - .src(new ConnectPoint(deviceId2, port2)) - .dst(new ConnectPoint(deviceId3, port3)) - .type(DIRECT) - .state(Link.State.ACTIVE) - .build(); - linkList.add(l2); - Link l3 = DefaultLink.builder() - .providerId(providerId) - .annotations(DefaultAnnotations.builder().set("key3", "yahoo").build()) - .src(new ConnectPoint(deviceId3, port3)) - .dst(new ConnectPoint(deviceId4, port4)) - .type(DIRECT) - .state(Link.State.ACTIVE) - .build(); - linkList.add(l3); - Link l4 = DefaultLink.builder() - .providerId(providerId) - .annotations(DefaultAnnotations.builder().set("key4", "yahoo").build()) - .src(new ConnectPoint(deviceId4, port4)) - .dst(new ConnectPoint(deviceId5, port5)) - .type(DIRECT) - .state(Link.State.ACTIVE) - .build(); - linkList.add(l4); - - // Path - path = new DefaultPath(providerId, linkList, ScalarWeight.toWeight(10)); - - // Annotations - DefaultAnnotations.Builder builderAnn = DefaultAnnotations.builder(); - builderAnn.set(PcepAnnotationKeys.LSP_SIG_TYPE, "WITH_SIGNALLING"); - builderAnn.set(PcepAnnotationKeys.COST_TYPE, "COST"); - builderAnn.set(PcepAnnotationKeys.BANDWIDTH, "200"); - - // Tunnel - tunnel = new DefaultTunnel(producerName, src, dst, Tunnel.Type.VXLAN, - Tunnel.State.ACTIVE, null, tunnelId, - tunnelName, path, builderAnn.build()); - - explicitPathInfoList = Lists.newLinkedList(); - ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, deviceId2); - explicitPathInfoList.add(obj); - - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of the rest api GET when there are no pce paths. - */ - @Test - public void testPcePathsEmpty() { - expect(pceService.queryAllPath()) - .andReturn(null) - .anyTimes(); - replay(pceService); - WebTarget wt = target(); - String response = wt.path("path").request().get(String.class); - assertThat(response, is("{\"paths\":[]}")); - } - - /** - * Tests the result of a rest api GET for pce path id. - */ - @Test - public void testGetTunnelId() { - expect(pceService.queryPath(anyObject())) - .andReturn(tunnel) - .anyTimes(); - - expect(pceService.explicitPathInfoList(tunnel.tunnelName().value())) - .andReturn(explicitPathInfoList) - .anyTimes(); - replay(pceService); - - WebTarget wt = target(); - String response = wt.path("path/1").request().get(String.class); - JsonObject result = Json.parse(response).asObject(); - assertThat(result, notNullValue()); - } - - /** - * Tests that a fetch of a non-existent pce path object throws an exception. - */ - @Test - public void testBadGet() { - expect(pceService.queryPath(anyObject())) - .andReturn(null) - .anyTimes(); - replay(pceService); - - WebTarget wt = target(); - try { - wt.path("path/1").request().get(String.class); - fail("Fetch of non-existent pce path did not throw an exception"); - } catch (NotFoundException ex) { - assertThat(ex.getMessage(), containsString("HTTP 404 Not Found")); - } - } - - /** - * Tests creating a pce path with POST. - */ - @Test - public void testPost() { - expect(pceService.setupPath(anyObject(), anyObject(), anyObject(), anyObject(), anyObject(), anyObject())) - .andReturn(true) - .anyTimes(); - replay(pceService); - - WebTarget wt = target(); - InputStream jsonStream = PcePathResourceTest.class.getResourceAsStream("post-PcePath.json"); - - Response response = wt.path("path") - .request(MediaType.APPLICATION_JSON_TYPE) - .post(Entity.json(jsonStream)); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); - } - - /** - * Tests creating a pce path with PUT. - */ - @Test - public void testPut() { - expect(pceService.updatePath(anyObject(), anyObject())) - .andReturn(true) - .anyTimes(); - replay(pceService); - - WebTarget wt = target(); - InputStream jsonStream = PcePathResourceTest.class.getResourceAsStream("post-PcePath.json"); - - Response response = wt.path("path/1") - .request(MediaType.APPLICATION_JSON_TYPE) - .put(Entity.json(jsonStream)); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); - } - - /** - * Tests deleting a pce path. - */ - @Test - public void testDelete() { - expect(pceService.releasePath(TunnelId.valueOf("1"))) - .andReturn(true) - .anyTimes(); - replay(pceService); - - WebTarget wt = target(); - - String location = "path/1"; - - Response deleteResponse = wt.path(location) - .request(MediaType.APPLICATION_JSON_TYPE) - .delete(); - assertThat(deleteResponse.getStatus(), is(HttpURLConnection.HTTP_OK)); - } -} diff --git a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PceResourceTest.java b/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PceResourceTest.java deleted file mode 100644 index a24c874b99..0000000000 --- a/apps/pce/pcerest/src/test/java/org/onosproject/pcerest/PceResourceTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcerest; - -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.test.JerseyTest; -import org.glassfish.jersey.test.TestProperties; -import org.onlab.rest.AuthorizationFilter; - -/** - * Base class for pce rest api tests. Performs common configuration operations. - */ -public class PceResourceTest extends JerseyTest { - - /** - * Creates a new web-resource test. - */ - public PceResourceTest() { - super(ResourceConfig.forApplicationClass(PceWebApplication.class)); - AuthorizationFilter.disableForTests(); - set(TestProperties.CONTAINER_PORT, 0); - } -} diff --git a/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/pcePath.json b/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/pcePath.json deleted file mode 100644 index a68c4d7a3d..0000000000 --- a/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/pcePath.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "source":"11.0.0.1", - "destination":"11.0.0.2", - "pathType":"2", - "name":"pcc2", - "description":"path-create", - "constraint": - { "cost":2, - "bandwidth":200.0 - }, - "explicitPathInfo" : - {"type":1, - "subtype":0, - "value":"11.0.0.2" - } -} diff --git a/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/post-PcePath.json b/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/post-PcePath.json deleted file mode 100644 index 479e4f11f9..0000000000 --- a/apps/pce/pcerest/src/test/resources/org/onosproject/pcerest/post-PcePath.json +++ /dev/null @@ -1,15 +0,0 @@ -{"path": {"source":"11.0.0.1", - "destination":"11.0.0.2", - "pathType":"0", - "name":"rsvp11", - "constraint": - {"cost":1, - "bandwidth":300 - }, - "explicitPathInfo" : - {"type":1, - "subtype":0, - "value":"11.0.0.2" - } - } -} diff --git a/apps/pce/pceweb/BUILD b/apps/pce/pceweb/BUILD deleted file mode 100644 index 30f067c57c..0000000000 --- a/apps/pce/pceweb/BUILD +++ /dev/null @@ -1,15 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + JACKSON + CLI + [ - "//apps/pce/app:onos-apps-pce-app", - "//apps/tunnel/api:onos-apps-tunnel-api", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) - -onos_app( - category = "Utility", - description = "Allows the user to visualize different types of paths between network entities", - title = "PCE REST API", - url = "http://onosproject.org", -) diff --git a/apps/pce/pceweb/app.png b/apps/pce/pceweb/app.png deleted file mode 100644 index abe34eb240..0000000000 Binary files a/apps/pce/pceweb/app.png and /dev/null differ diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLink.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLink.java deleted file mode 100644 index 16a1212a90..0000000000 --- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLink.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pceweb; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.onosproject.ui.topo.BiLink; -import org.onosproject.ui.topo.LinkHighlight; -import org.onosproject.ui.topo.LinkHighlight.Flavor; - -import java.util.Set; - -/** - * Provides the link color highlight mechanism for given links. - */ -public class PceWebLink extends BiLink { - - private boolean primary; - private boolean secondary; - - /** - * Initialize the Link and key attributes. - * @param key the link key identifier - * @param link the link to be highlighted. - */ - public PceWebLink(LinkKey key, Link link) { - super(key, link); - } - - /** - * Highlight the color of given selected links. - * @param selectedLinks the primary links - * @param allLinks the secondary links - */ - public void computeHilight(Set selectedLinks, Set allLinks) { - primary = selectedLinks.contains(this.one()) || - (two() != null && selectedLinks.contains(two())); - secondary = allLinks.contains(this.one()) || - (two() != null && allLinks.contains(two())); - } - - @Override - public LinkHighlight highlight(Enum anEnum) { - Flavor flavor = primary ? Flavor.PRIMARY_HIGHLIGHT : - (secondary ? Flavor.SECONDARY_HIGHLIGHT : Flavor.NO_HIGHLIGHT); - return new LinkHighlight(this.linkId(), flavor); - } -} diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLinkMap.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLinkMap.java deleted file mode 100644 index a78de1b363..0000000000 --- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebLinkMap.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pceweb; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.onosproject.ui.topo.BiLinkMap; - -/** - * Our concrete link map. - */ -public class PceWebLinkMap extends BiLinkMap { - - @Override - protected PceWebLink create(LinkKey linkKey, Link link) { - return new PceWebLink(linkKey, link); - } -} diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovComponent.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovComponent.java deleted file mode 100644 index a98e8b0868..0000000000 --- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovComponent.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pceweb; - -import com.google.common.collect.ImmutableList; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.onosproject.ui.UiExtension; -import org.onosproject.ui.UiExtensionService; -import org.onosproject.ui.UiMessageHandlerFactory; -import org.onosproject.ui.UiTopoOverlayFactory; -import org.onosproject.ui.UiView; -import org.onosproject.ui.UiViewHidden; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; - -/** - * Skeletal ONOS UI Topology-Overlay application component. - */ -@Component(immediate = true) -public class PceWebTopovComponent { - - private static final ClassLoader CL = PceWebTopovComponent.class.getClassLoader(); - private static final String VIEW_ID = "pcewebTopov"; - - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected UiExtensionService uiExtensionService; - - // List of application views - private final List uiViews = ImmutableList.of( - new UiViewHidden(VIEW_ID) - ); - - // Factory for UI message handlers - private final UiMessageHandlerFactory messageHandlerFactory = - () -> ImmutableList.of( - new PceWebTopovMessageHandler() - ); - - // Factory for UI topology overlays - private final UiTopoOverlayFactory topoOverlayFactory = - () -> ImmutableList.of( - new PceWebTopovOverlay() - ); - - // Application UI extension - protected UiExtension extension = - new UiExtension.Builder(CL, uiViews) - .resourcePath(VIEW_ID) - .messageHandlerFactory(messageHandlerFactory) - .topoOverlayFactory(topoOverlayFactory) - .build(); - - @Activate - protected void activate() { - uiExtensionService.register(extension); - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - uiExtensionService.unregister(extension); - log.info("Stopped"); - } - -} diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovMessageHandler.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovMessageHandler.java deleted file mode 100644 index 4306f61030..0000000000 --- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovMessageHandler.java +++ /dev/null @@ -1,860 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pceweb; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.IpAddress; -import org.onlab.util.DataRateUnit; -import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelEndPoint; -import org.onosproject.incubator.net.tunnel.TunnelEvent; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.incubator.net.tunnel.TunnelListener; -import org.onosproject.incubator.net.tunnel.TunnelService; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.ElementId; -import org.onosproject.net.HostId; -import org.onosproject.net.Link; -import org.onosproject.net.Path; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.intent.Constraint; -import org.onosproject.net.topology.TopologyService; -import org.onosproject.pce.pceservice.LspType; -import org.onosproject.pce.pceservice.api.PceService; -import org.onosproject.pce.pceservice.constraint.CostConstraint; -import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint; -import org.onosproject.ui.RequestHandler; -import org.onosproject.ui.UiConnection; -import org.onosproject.ui.UiMessageHandler; -import org.onosproject.ui.topo.DeviceHighlight; -import org.onosproject.ui.topo.Highlights; -import org.onosproject.ui.topo.LinkHighlight; -import org.onosproject.ui.topo.Mod; -import org.onosproject.ui.topo.NodeBadge; -import org.onosproject.ui.topo.TopoJson; -import org.onosproject.ui.topo.TopoUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Arrays; -import java.util.Collection; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import static org.onosproject.incubator.net.tunnel.Tunnel.State.ACTIVE; -import static org.onosproject.incubator.net.tunnel.Tunnel.Type.MPLS; -import static org.onosproject.ui.topo.LinkHighlight.Flavor.PRIMARY_HIGHLIGHT; -import static org.onosproject.ui.topo.TopoJson.highlightsMessage; - -/** - * ONOS UI PCE WEB Topology-Overlay message handler. - */ -public class PceWebTopovMessageHandler extends UiMessageHandler { - - private static final String PCEWEB_CLEAR = "pceTopovClear"; - private static final String PCEWEB_SET_PATH = "pceTopovSetMode"; - private static final String PCEWEB_UPDATE_PATH_QUERY = "pceTopovUpdateQuery"; - private static final String PCEWEB_UPDATE_PATH = "pceTopovUpdate"; - private static final String PCEWEB_REMOVE_PATH_QUERY = "pceTopovRemQuery"; - private static final String PCEWEB_REMOVE_PATH = "pceTopovRem"; - private static final String PCEWEB_QUERY_TUNNELS = "pceTopovTunnelDisplay"; - private static final String PCEWEB_SHOW_TUNNEL = "pceTopovShowTunnels"; - private static final String PCEWEB_SHOW_TUNNEL_REMOVE = "pceTopovShowTunnelsRem"; - private static final String PCEWEB_TUNNEL_UPDATE_INFO = "updatePathmsgInfo"; - private static final String PCEWEB_TUNNEL_UPDATE_INFO_REPLY = "pceTopovShowTunnelsUpdate"; - private static final String PCEWEB_TUNNEL_QUERY_INFO = "pceTopovShowTunnelsQuery"; - private static final String PCEWEB_TUNNEL_QUERY_INFO_SHOW = "pceTopovshowTunnelHighlightMsg"; - private static final String DST = "DST"; - private static final String SRC = "SRC"; - private static final String BANDWIDTH = "bw"; - private static final String LOADBALANCING = "lb"; - private static final String BANDWIDTHTYPE = "bwtype"; - private static final String COSTTYPE = "ctype"; - private static final String LSPTYPE = "lsptype"; - private static final String SRCID = "srid"; - private static final String DSTID = "dsid"; - private static final String TUNNEL_ID = "tunnelid"; - private static final String TUNNEL_NAME = "tunnelname"; - private static final String COST_TYPE_IGP = "igp"; - private static final String COST_TYPE_TE = "te"; - private static final String BANDWIDTH_TYPE_KBPS = "kbps"; - private static final String BANDWIDTH_TYPE_MBPS = "mbps"; - private static final String BUFFER_ARRAY = "a"; - private static final String BANDWIDTH_BPS = "BPS"; - private static final String LSP_TYPE_CR = "cr"; - private static final String LSP_TYPE_SRBE = "srbe"; - private static final String LSP_TYPE_SRTE = "srte"; - private static final String STRING_NULL = "null"; - // Delay for showHighlights event processing on GUI client side to - // account for addLink animation. - private static final int DELAY_MS = 1_100; - private static final double BANDWIDTH_KBPS = 1_000; - private static final double BANDWIDTH_MBPS = 1_000_000; - private static final String[] LINK_COLOR = { - "pCol1", "pCol2", "pCol3", "pCol4", "pCol5", - "pCol6", "pCol7", "pCol8", "pCol9", "pCol10", - "pCol11", "pCol12", "pCol13", "pCol14", "pCol15" - }; - - private static final int LINK_COLOR_MAX = LINK_COLOR.length; - - private Set allPathLinks; - private ElementId src, dst; - private List paths = new LinkedList<>(); - private int pathIndex; - - private final Logger log = LoggerFactory.getLogger(getClass()); - private final TunnelListener tunnelListener = new InnerPceWebTunnelListener(); - - protected TopologyService topologyService; - protected TunnelService tunnelService; - protected PceService pceService; - protected DeviceService deviceService; - - @Override - public void init(UiConnection connection, ServiceDirectory directory) { - super.init(connection, directory); - tunnelService = directory.get(TunnelService.class); - pceService = directory.get(PceService.class); - deviceService = directory.get(DeviceService.class); - tunnelService.addListener(tunnelListener); - } - - @Override - protected Collection createRequestHandlers() { - return ImmutableSet.of( - new ClearHandler(), - new SetPathHandler(), - new UpdatePathQueryHandler(), - new UpdatePathHandler(), - new RemovePathQueryHandler(), - new RemovePathHandler(), - new UpdatePathInfoHandler(), - new ShowTunnelHandler(), - new ShowTunnelHighlight()); - } - - @Override - public void destroy() { - tunnelService.removeListener(tunnelListener); - super.destroy(); - } - - // Handler classes - - /** - * Handles the 'clear' event received from the client. - */ - private final class ClearHandler extends RequestHandler { - - public ClearHandler() { - super(PCEWEB_CLEAR); - } - - @Override - public void process(ObjectNode payload) { - src = null; - dst = null; - sendMessage(highlightsMessage(new Highlights())); - } - } - - /** - * Handles the 'path calculation' event received from the client. - */ - private final class SetPathHandler extends RequestHandler { - - public SetPathHandler() { - super(PCEWEB_SET_PATH); - } - - @Override - public void process(ObjectNode payload) { - String srcId = string(payload, SRCID); - src = elementId(srcId); - String dstId = string(payload, DSTID); - dst = elementId(dstId); - if (src.equals(dst)) { - src = null; - } - - String bandWidth = string(payload, BANDWIDTH); - String bandWidthType = string(payload, BANDWIDTHTYPE); - String costType = string(payload, COSTTYPE); - String loadBalancing = string(payload, LOADBALANCING); - String lspType = string(payload, LSPTYPE); - String tunnelName = string(payload, TUNNEL_NAME); - - if (tunnelName == null || tunnelName.equals(STRING_NULL)) { - log.error("tunnel name should not be empty"); - return; - } - //Validating tunnel name, duplicated tunnel names not allowed - Collection existingTunnels = tunnelService.queryTunnel(Tunnel.Type.MPLS); - if (existingTunnels != null) { - for (Tunnel t : existingTunnels) { - if (t.tunnelName().toString().equals(tunnelName)) { - log.error("Path creation failed, Tunnel name already exists"); - return; - } - } - } - - if (pceService == null) { - log.error("PCE service is not active"); - return; - } - - if (lspType == null || lspType.equals(STRING_NULL)) { - log.error("PCE setup path is failed as LSP type is mandatory"); - } - - if ((src != null) && (dst != null)) { - findAndSendPaths(src, dst, bandWidth, bandWidthType, costType, lspType, tunnelName, loadBalancing); - } - } - } - - /** - * Handles the 'update path query' event received from the client. - */ - private final class UpdatePathQueryHandler extends RequestHandler { - - public UpdatePathQueryHandler() { - super(PCEWEB_UPDATE_PATH_QUERY); - } - - @Override - public void process(ObjectNode payload) { - String srcId = string(payload, SRCID); - ElementId src = elementId(srcId); - String dstId = string(payload, DSTID); - ElementId dst = elementId(dstId); - Device srcDevice = deviceService.getDevice((DeviceId) src); - Device dstDevice = deviceService.getDevice((DeviceId) dst); - - TunnelEndPoint tunSrc = IpTunnelEndPoint.ipTunnelPoint(IpAddress - .valueOf(srcDevice.annotations().value("lsrId"))); - TunnelEndPoint tunDst = IpTunnelEndPoint.ipTunnelPoint(IpAddress - .valueOf(dstDevice.annotations().value("lsrId"))); - - Collection tunnelSet = tunnelService.queryTunnel(tunSrc, tunDst); - ObjectNode result = objectNode(); - ArrayNode arrayNode = arrayNode(); - for (Tunnel tunnel : tunnelSet) { - if (tunnel.type() == MPLS) { - if (tunnel.state().equals(ACTIVE)) { - arrayNode.add(tunnel.tunnelId().toString()); - arrayNode.add(tunnel.tunnelName().toString()); - } - } - } - - result.putArray(BUFFER_ARRAY).addAll(arrayNode); - sendMessage(PCEWEB_SHOW_TUNNEL, result); - } - } - - /** - * Handles the 'update path' event received from the client. - */ - private final class UpdatePathHandler extends RequestHandler { - - public UpdatePathHandler() { - super(PCEWEB_UPDATE_PATH); - } - - @Override - public void process(ObjectNode payload) { - String bandWidth = string(payload, BANDWIDTH); - String bandWidthType = string(payload, BANDWIDTHTYPE); - String costType = string(payload, COSTTYPE); - String tunnelId = string(payload, TUNNEL_ID); - - if (tunnelId == null) { - log.error("PCE update path is failed."); - } - - findAndSendPathsUpdate(bandWidth, bandWidthType, costType, tunnelId); - } - } - - /** - * Handles the 'update path' event received from the client. - */ - private final class UpdatePathInfoHandler extends RequestHandler { - - public UpdatePathInfoHandler() { - super(PCEWEB_TUNNEL_UPDATE_INFO); - } - - @Override - public void process(ObjectNode payload) { - String tunnelIdStr = string(payload, TUNNEL_ID); - - if (tunnelIdStr == null) { - log.error("PCE update path is failed."); - return; - } - - if (tunnelIdStr.equals(STRING_NULL)) { - log.error("PCE update path is failed."); - return; - } - - if (pceService == null) { - log.error("PCE service is not active"); - return; - } - - TunnelId tunnelId = TunnelId.valueOf(tunnelIdStr); - Tunnel tunnel = tunnelService.queryTunnel(tunnelId); - ObjectNode result = objectNode(); - ArrayNode arrayNode = arrayNode(); - - arrayNode.add("Tunnel"); - arrayNode.add(tunnelIdStr); - arrayNode.add("BandWidth"); - arrayNode.add(tunnel.annotations().value("bandwidth")); - arrayNode.add("CostType"); - arrayNode.add(tunnel.annotations().value("costType")); - - result.putArray(BUFFER_ARRAY).addAll(arrayNode); - sendMessage(PCEWEB_TUNNEL_UPDATE_INFO_REPLY, result); - } - } - - /** - * Handles the 'remove path query' event received from the client. - */ - private final class RemovePathQueryHandler extends RequestHandler { - - public RemovePathQueryHandler() { - super(PCEWEB_REMOVE_PATH_QUERY); - } - - @Override - public void process(ObjectNode payload) { - String srcId = string(payload, SRCID); - ElementId src = elementId(srcId); - String dstId = string(payload, DSTID); - ElementId dst = elementId(dstId); - - Device srcDevice = deviceService.getDevice((DeviceId) src); - Device dstDevice = deviceService.getDevice((DeviceId) dst); - - TunnelEndPoint tunSrc = IpTunnelEndPoint.ipTunnelPoint(IpAddress - .valueOf(srcDevice.annotations().value("lsrId"))); - TunnelEndPoint tunDst = IpTunnelEndPoint.ipTunnelPoint(IpAddress - .valueOf(dstDevice.annotations().value("lsrId"))); - - Collection tunnelSet = tunnelService.queryTunnel(tunSrc, tunDst); - ObjectNode result = objectNode(); - ArrayNode arrayNode = arrayNode(); - - for (Tunnel tunnel : tunnelSet) { - if (tunnel.type() == MPLS) { - if (tunnel.state().equals(ACTIVE)) { - - if (tunnel.annotations().value("loadBalancingPathName") != null) { - boolean present = false; - if (!arrayNode.isNull()) { - for (JsonNode node : arrayNode) { - if (node.asText().equals(tunnel.annotations().value("loadBalancingPathName"))) { - present = true; - break; - } - } - if (!present) { - arrayNode.add(""); - arrayNode.add(tunnel.annotations().value("loadBalancingPathName")); - } - } - - } else { - arrayNode.add(tunnel.tunnelId().toString()); - arrayNode.add(tunnel.tunnelName().toString()); - } - } - } - } - - result.putArray(BUFFER_ARRAY).addAll(arrayNode); - sendMessage(PCEWEB_SHOW_TUNNEL_REMOVE, result); - } - } - - /** - * Handles the 'remove path' event received from the client. - */ - private final class RemovePathHandler extends RequestHandler { - - public RemovePathHandler() { - super(PCEWEB_REMOVE_PATH); - } - - @Override - public void process(ObjectNode payload) { - String tunnelId = string(payload, TUNNEL_ID); - String pathName = string(payload, "tunnelname"); - - //TODO: if tunnel id null it is load banlanced path - if (tunnelId.equals("") && pathName != null) { - findAndSendPathsRemove(STRING_NULL, pathName); - /* List tunnelIds = pceService.getLoadBalancedPath(pathName); - for (TunnelId id : tunnelIds) { - Tunnel tunnel = tunnelService.queryTunnel(id); - if (tunnel != null) { - - } - }*/ - } else { - findAndSendPathsRemove(tunnelId, null); - } - - } - } - - /** - * Handles the 'show the existed tunnels' event received from the client. - */ - private final class ShowTunnelHandler extends RequestHandler { - - public ShowTunnelHandler() { - super(PCEWEB_QUERY_TUNNELS); - } - - @Override - public void process(ObjectNode payload) { - ObjectNode result = objectNode(); - ArrayNode arrayNode = arrayNode(); - Collection tunnelSet = null; - - tunnelSet = tunnelService.queryTunnel(MPLS); - for (Tunnel tunnel : tunnelSet) { - if (tunnel.state().equals(ACTIVE)) { - //TODO: if it is load balancing need to check whether to send tunnel ID as null or some negative - //TODO;value - if (tunnel.annotations().value("loadBalancingPathName") != null) { - boolean present = false; - if (!arrayNode.isNull()) { - for (JsonNode node : arrayNode) { - if (node.asText().equals(tunnel.annotations().value("loadBalancingPathName"))) { - present = true; - break; - } - } - if (!present) { - arrayNode.add(""); - arrayNode.add(tunnel.annotations().value("loadBalancingPathName")); - } - } - - } else { - arrayNode.add(tunnel.tunnelId().toString()); - arrayNode.add(tunnel.tunnelName().toString()); - } - } - } - - result.putArray(BUFFER_ARRAY).addAll(arrayNode); - sendMessage(PCEWEB_TUNNEL_QUERY_INFO, result); - } - } - - /** - * Handles the 'show the existed tunnels' event received from the client. - */ - private final class ShowTunnelHighlight extends RequestHandler { - - public ShowTunnelHighlight() { - super(PCEWEB_TUNNEL_QUERY_INFO_SHOW); - } - - @Override - public void process(ObjectNode payload) { - String tunnelIdStr = string(payload, TUNNEL_ID); - String pathName = string(payload, "tunnelname"); - - if (tunnelIdStr.equals("")) { - List tunnels = Lists.newLinkedList(); - List tunnelIds = pceService.queryLoadBalancingPath(pathName); - for (TunnelId id : tunnelIds) { - Tunnel t = tunnelService.queryTunnel(id); - tunnels.add(t); - } - if (!tunnels.isEmpty()) { - highlightsForTunnel(tunnels); - } - } else { - TunnelId tunnelId = TunnelId.valueOf(tunnelIdStr); - Tunnel t = tunnelService.queryTunnel(tunnelId); - if (t != null) { - highlightsForTunnel(t); - } - } - } - } - - /** - * provides the element id. - */ - private ElementId elementId(String id) { - try { - return DeviceId.deviceId(id); - } catch (IllegalArgumentException e) { - return HostId.hostId(id); - } - } - - /** - * Handles the setup path and highlights the path. - * - * @param src ID of source - * @param dst ID of destination - * @param bandWidth bandwidth - * @param bandWidthType is the kbps or mbps - * @param costType is igp or te - * @param lspType is WITH_SIGNALLING, WITHOUT_SIGNALLING_AND_WITHOUT_SR - * or SR_WITHOUT_SIGNALLING - * @param tunnelName tunnel id - */ - private void findAndSendPaths(ElementId src, ElementId dst, String bandWidth, - String bandWidthType, String costType, - String lspType, String tunnelName, String loadBalancing) { - log.debug("src={}; dst={};", src, dst); - boolean path; - List listConstrnt; - - listConstrnt = addBandwidthCostTypeConstraints(bandWidth, bandWidthType, costType); - - //LSP type - LspType lspTypeVal = null; - switch (lspType) { - case LSP_TYPE_CR: - lspTypeVal = LspType.WITH_SIGNALLING; - break; - case LSP_TYPE_SRBE: - lspTypeVal = LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR; - break; - case LSP_TYPE_SRTE: - lspTypeVal = LspType.SR_WITHOUT_SIGNALLING; - break; - default: - break; - } - - boolean loadBalancingOpt = Boolean.parseBoolean(loadBalancing); - - //TODO: need to get explicit paths [temporarily using null as the value] - - if (loadBalancingOpt) { - path = pceService.setupPath((DeviceId) src, (DeviceId) dst, tunnelName, listConstrnt, lspTypeVal, - loadBalancingOpt); - } else { - path = pceService.setupPath((DeviceId) src, (DeviceId) dst, tunnelName, listConstrnt, lspTypeVal, - null); - } - - if (!path) { - log.error("setup path is failed"); - } - } - - /** - * Handles the update path and highlights the path. - * - * @param bandWidth bandWidth - * @param bandWidthType is the kbps or mbps - * @param costType is igp or te - * @param tunnelIdStr tunnel id - */ - private void findAndSendPathsUpdate(String bandWidth, String bandWidthType, - String costType, String tunnelIdStr) { - if (tunnelIdStr != null) { - List listConstrnt; - - if (tunnelIdStr.equals(STRING_NULL)) { - log.error("update path is failed"); - return; - } - - if (pceService == null) { - log.error("PCE service is not active"); - return; - } - - listConstrnt = addBandwidthCostTypeConstraints(bandWidth, bandWidthType, costType); - TunnelId tunnelId = TunnelId.valueOf(tunnelIdStr); - boolean path = pceService.updatePath(tunnelId, listConstrnt); - - if (!path) { - log.error("update path is failed"); - } - } - } - - /** - * Handles the remove path and highlights the paths if existed. - * - * @param tunnelIdStr tunnelId - */ - private void findAndSendPathsRemove(String tunnelIdStr, String pathName) { - if (pceService == null) { - log.error("PCE service is not active"); - return; - } - boolean path; - - if (tunnelIdStr.equals(STRING_NULL) && !pathName.equals(STRING_NULL)) { - path = pceService.releasePath(pathName); - } else { - TunnelId tunnelId = TunnelId.valueOf(tunnelIdStr); - path = pceService.releasePath(tunnelId); - } - - if (!path) { - log.error("remove path is failed"); - } - - } - - private ImmutableSet.Builder buildPaths(ImmutableSet.Builder pathBuilder) { - paths.forEach(path -> path.links().forEach(pathBuilder::add)); - return pathBuilder; - } - - /** - * Handles the preparation of constraints list with given bandwidth and cost-type. - * - * @param bandWidth bandWidth - * @param bandWidthType is the kbps or mbps - * @param costType is igp or te - * @return - */ - private List addBandwidthCostTypeConstraints(String bandWidth, - String bandWidthType, - String costType) { - List listConstrnt = new LinkedList<>(); - //bandwidth - double bwValue = 0.0; - if (!bandWidth.equals(STRING_NULL)) { - bwValue = Double.parseDouble(bandWidth); - } - if (bandWidthType.equals(BANDWIDTH_TYPE_KBPS)) { - bwValue = bwValue * BANDWIDTH_KBPS; - } else if (bandWidthType.equals(BANDWIDTH_TYPE_MBPS)) { - bwValue = bwValue * BANDWIDTH_MBPS; - } - - //Cost type - CostConstraint.Type costTypeVal = null; - switch (costType) { - case COST_TYPE_IGP: - costTypeVal = CostConstraint.Type.COST; - break; - case COST_TYPE_TE: - costTypeVal = CostConstraint.Type.TE_COST; - break; - default: - break; - } - - if (bwValue != 0.0) { - listConstrnt.add(PceBandwidthConstraint.of(bwValue, DataRateUnit.valueOf(BANDWIDTH_BPS))); - } - - if (costTypeVal != null) { - listConstrnt.add(CostConstraint.of(costTypeVal)); - } - - return listConstrnt; - } - - /** - * Handles the highlights of selected path. - */ - private void hilightAndSendPaths(Highlights highlights) { - LinkHighlight lh; - int linkclr = 0; - for (Path path : paths) { - for (Link link : path.links()) { - lh = new LinkHighlight(TopoUtils.compactLinkString(link), PRIMARY_HIGHLIGHT) - .addMod(new Mod(LINK_COLOR[linkclr])); - highlights.add(lh); - } - linkclr = linkclr + 1; - if (linkclr == LINK_COLOR_MAX) { - linkclr = 0; - } - } - - sendMessage(highlightsMessage(highlights)); - } - - /** - * Handles the addition of badge and highlights. - * - * @param highlights highlights - * @param elemId device to be add badge - * @param src device to be add badge - * @return - */ - private Highlights addBadge(Highlights highlights, - String elemId, String src) { - highlights = addDeviceBadge(highlights, elemId, src); - return highlights; - } - - /** - * Handles the badge add and highlights. - * - * @param h highlights - * @param elemId device to be add badge - * @param type device badge value - * @return highlights - */ - private Highlights addDeviceBadge(Highlights h, String elemId, String type) { - DeviceHighlight dh = new DeviceHighlight(elemId); - dh.setBadge(createBadge(type)); - h.add(dh); - return h; - } - - /** - * Handles the node badge add and highlights. - * - * @param type device badge value - * @return badge of given node - */ - private NodeBadge createBadge(String type) { - return NodeBadge.text(type); - } - - /** - * Handles the event of tunnel listeners. - */ - private class InnerPceWebTunnelListener implements TunnelListener { - @Override - public void event(TunnelEvent event) { - Tunnel tunnel = event.subject(); - if (tunnel.type() == MPLS) { - highlightsForTunnel(tunnel); - } - } - } - - /** - * Handles the event of topology listeners. - */ - private void findTunnelAndHighlights() { - Collection tunnelSet = null; - Highlights highlights = new Highlights(); - paths.clear(); - tunnelSet = tunnelService.queryTunnel(MPLS); - if (tunnelSet.size() == 0) { - log.warn("Tunnel does not exist"); - sendMessage(highlightsMessage(highlights)); - return; - } - - for (Tunnel tunnel : tunnelSet) { - if (tunnel.path() == null) { - log.error("path does not exist"); - sendMessage(highlightsMessage(highlights)); - return; - } - if (!tunnel.state().equals(ACTIVE)) { - log.debug("Tunnel state is not active"); - sendMessage(highlightsMessage(highlights)); - return; - } - Link firstLink = tunnel.path().links().get(0); - if (firstLink != null) { - if (firstLink.src() != null) { - highlights = addBadge(highlights, firstLink.src().deviceId().toString(), SRC); - } - } - Link lastLink = tunnel.path().links().get(tunnel.path().links().size() - 1); - if (lastLink != null) { - if (lastLink.dst() != null) { - highlights = addBadge(highlights, lastLink.dst().deviceId().toString(), DST); - } - } - paths.add(tunnel.path()); - } - - ImmutableSet.Builder builder = ImmutableSet.builder(); - allPathLinks = buildPaths(builder).build(); - hilightAndSendPaths(highlights); - } - - private void highlightsForTunnel(Tunnel... tunnels) { - highlightsForTunnel(Arrays.asList(tunnels)); - } - /** - * Handles the event of topology listeners. - */ - private void highlightsForTunnel(List tunnels) { - Highlights highlights = new Highlights(); - paths.clear(); - - if (tunnels.isEmpty()) { - log.error("path does not exist"); - sendMessage(TopoJson.highlightsMessage(highlights)); - return; - } - for (Tunnel tunnel : tunnels) { - if (tunnel.path() == null) { - log.error("path does not exist"); - sendMessage(highlightsMessage(highlights)); - return; - } - if (!tunnel.state().equals(ACTIVE)) { - log.debug("Tunnel state is not active"); - sendMessage(highlightsMessage(highlights)); - return; - } - - Link firstLink = tunnel.path().links().get(0); - if (firstLink != null) { - if (firstLink.src() != null) { - highlights = addBadge(highlights, firstLink.src().deviceId().toString(), SRC); - } - } - Link lastLink = tunnel.path().links().get(tunnel.path().links().size() - 1); - if (lastLink != null) { - if (lastLink.dst() != null) { - highlights = addBadge(highlights, lastLink.dst().deviceId().toString(), DST); - } - } - paths.add(tunnel.path()); - } - - ImmutableSet.Builder builder = ImmutableSet.builder(); - allPathLinks = buildPaths(builder).build(); - hilightAndSendPaths(highlights); - } -} diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovOverlay.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovOverlay.java deleted file mode 100644 index 1a328151b7..0000000000 --- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/PceWebTopovOverlay.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pceweb; - - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import org.onosproject.net.AnnotationKeys; -import org.onosproject.net.Annotations; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.resource.ContinuousResource; -import org.onosproject.net.resource.ResourceService; -import org.onosproject.net.resource.Resource; -import org.onosproject.net.resource.DiscreteResource; -import org.onosproject.net.resource.Resources; -import org.onosproject.ui.UiTopoOverlay; -import org.onosproject.ui.topo.PropertyPanel; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.link.LinkEvent; -import org.onosproject.ui.topo.TopoConstants.CoreButtons; -import org.onosproject.cli.AbstractShellCommand; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.IpAddress; -/** - * PCE WEB topology overlay. - */ -public class PceWebTopovOverlay extends UiTopoOverlay { - - // NOTE: this must match the ID defined in pcewebTopovOverlay.js - private static final String OVERLAY_ID = "PCE-web-overlay"; - private static final String MY_TITLE = "Device details"; - - public static final String AS_NUMBER = "asNumber"; - public static final String LSR_ID = "lsrId"; - public static final String ABR_BIT = "abrBit"; - public static final String ASBR_BIT = "externalBit"; - public static final String TE_METRIC = "teCost"; - public static final String ABR = "ABR"; - public static final String ASBR = "ASBR"; - public static final String ABR_ASBR = "ABR/ASBR"; - public static final String INNER = "Inner"; - public static final long IDENTIFIER_SET = 0x100000000L; - public static final long SET = 0xFFFFFFFFL; - public static final String TYPE_LABEL = "Type"; - public static final String AS_NUMBER_LABEL = "AS Number"; - public static final String LSR_ID_LABEL = "LSR ID"; - public static final String POSITION_LABEL = "Position"; - - /** - * Initialize the overlay ID. - */ - public PceWebTopovOverlay() { - super(OVERLAY_ID); - } - - @Override - public void deactivate() { - super.deactivate(); - log.debug("Deactivated"); - } - - @Override - public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) { - - pp.title(MY_TITLE); - DeviceService deviceService = AbstractShellCommand.get(DeviceService.class); - pp.removeAllProps(); - pp.removeButtons(CoreButtons.SHOW_PORT_VIEW) - .removeButtons(CoreButtons.SHOW_GROUP_VIEW) - .removeButtons(CoreButtons.SHOW_METER_VIEW); - - if (deviceService != null) { - - Device device = deviceService.getDevice(deviceId); - Annotations annots = device.annotations(); - - String type = annots.value(AnnotationKeys.TYPE); - String asNumber = annots.value(AS_NUMBER); - String lsrId = annots.value(LSR_ID); - String abrStatus = annots.value(ABR_BIT); - String asbrStatus = annots.value(ASBR_BIT); - - if (type != null) { - pp.addProp(TYPE_LABEL, TYPE_LABEL, type); - } - - if (asNumber != null) { - pp.addProp(AS_NUMBER_LABEL, AS_NUMBER_LABEL, asNumber); - } - - if (lsrId != null) { - pp.addProp(LSR_ID_LABEL, LSR_ID_LABEL, lsrId); - } - - if (Boolean.valueOf(abrStatus).equals(true) && Boolean.valueOf(asbrStatus).equals(true)) { - pp.addProp(POSITION_LABEL, POSITION_LABEL, ABR_ASBR); - } else if (Boolean.valueOf(abrStatus).equals(true)) { - pp.addProp(POSITION_LABEL, POSITION_LABEL, ABR); - } else if (Boolean.valueOf(asbrStatus).equals(true)) { - pp.addProp(POSITION_LABEL, POSITION_LABEL, ASBR); - } else { - pp.addProp(POSITION_LABEL, POSITION_LABEL, INNER); - } - } - } - - @Override - public Map additionalLinkData(LinkEvent event) { - Map map = new HashMap<>(); - Link link = event.subject(); - long srcPortNo; - long dstPortNo; - IpAddress ipDstAddress = null; - IpAddress ipSrcAddress = null; - String srcPort; - String dstPort; - String bandWidth; - - srcPortNo = link.src().port().toLong(); - if (((srcPortNo & IDENTIFIER_SET) == IDENTIFIER_SET)) { - srcPort = String.valueOf(srcPortNo); - } else { - ipSrcAddress = Ip4Address.valueOf((int) srcPortNo); - srcPort = ipSrcAddress.toString(); - } - - dstPortNo = link.dst().port().toLong(); - if (((dstPortNo & IDENTIFIER_SET) == IDENTIFIER_SET)) { - dstPort = String.valueOf(dstPortNo); - } else { - ipDstAddress = Ip4Address.valueOf((int) dstPortNo); - dstPort = ipDstAddress.toString(); - } - - map.put("Src Address", srcPort); - map.put("Dst Address", dstPort); - map.put("Te metric", link.annotations().value(TE_METRIC)); - - ResourceService resService = AbstractShellCommand.get(ResourceService.class); - DiscreteResource devResource = Resources.discrete(link.src().deviceId(), link.src().port()).resource(); - if (resService == null) { - log.warn("resource service does not exist"); - return map; - } - - if (devResource == null) { - log.warn("Device resources does not exist"); - return map; - } - double regBandwidth = 0; - try { - Thread.sleep(100); - } catch (InterruptedException e) { - log.error("Exception occurred while getting the bandwidth."); - Thread.currentThread().interrupt(); - } - Set resources = resService.getRegisteredResources(devResource.id()); - for (Resource res : resources) { - if (res instanceof ContinuousResource) { - regBandwidth = ((ContinuousResource) res).value(); - break; - } - } - - if (regBandwidth != 0) { - bandWidth = String.valueOf(regBandwidth); - map.put("Bandwidth", bandWidth); - } - - return map; - } -} diff --git a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/package-info.java b/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/package-info.java deleted file mode 100644 index f0c3ed6232..0000000000 --- a/apps/pce/pceweb/src/main/java/org/onosproject/pceweb/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCE visualization GUI topology view overlay. - */ -package org.onosproject.pceweb; diff --git a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.css b/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.css deleted file mode 100644 index 8e414c043f..0000000000 --- a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.css +++ /dev/null @@ -1,154 +0,0 @@ -/* css for PCE web app topology overlay */ -.radioButtonSpace { - margin-left:20px; -} -/* color:1 */ -#ov-topo svg .link.primary.pCol1 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol1 { - stroke: #FF00CE; -} -.dark #ov-topo svg .link.primary.pCol1 { - stroke: #FF00CE; -} -/* color:2 */ -#ov-topo svg .link.primary.pCol2 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol2 { - stroke: #ff4000; -} -.dark #ov-topo svg .link.primary.pCol2 { - stroke: #ff4000; -} -/* color:3 */ -#ov-topo svg .link.primary.pCol3 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol3 { - stroke: #ffb400; -} -.dark #ov-topo svg .link.primary.pCol3 { - stroke: #ffb400; -} -/* color:4 */ -#ov-topo svg .link.primary.pCol4 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol4 { - stroke: #89ff00; -} -.dark #ov-topo svg .link.primary.pCol4 { - stroke: #89ff00; -} -/* color:5 */ -#ov-topo svg .link.primary.pCol5 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol5 { - stroke: #00FF2B; -} -.dark #ov-topo svg .link.primary.pCol5 { - stroke: #00FF2B; -} -/* color:6 */ -#ov-topo svg .link.primary.pCol6 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol6 { - stroke: #00ffec; -} -.dark #ov-topo svg .link.primary.pCol6 { - stroke: #00ffec; -} -/* color:7 */ -#ov-topo svg .link.primary.pCol7 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol7 { - stroke: #00abff; -} -.dark #ov-topo svg .link.primary.pCol7 { - stroke: #00abff; -} -/* color:8 */ -#ov-topo svg .link.primary.pCol8 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol8 { - stroke: #005eff; -} -.dark #ov-topo svg .link.primary.pCol8 { - stroke: #005eff; -} -/* color:9 */ -#ov-topo svg .link.primary.pCol9 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol9 { - stroke: #0011ff; -} -.dark #ov-topo svg .link.primary.pCol9 { - stroke: #0011ff; -} -/* color:10 */ -#ov-topo svg .link.primary.pCol10 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol10 { - stroke: #7c00ff; -} -.dark #ov-topo svg .link.primary.pCol10 { - stroke: #7c00ff; -} -/* color:11 */ -#ov-topo svg .link.primary.pCol11 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol11 { - stroke: #ffe700; -} -.dark #ov-topo svg .link.primary.pCol11 { - stroke: #ffe700; -} -/* color:12 */ -#ov-topo svg .link.primary.pCol12 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol12 { - stroke: #00ffec; -} -.dark #ov-topo svg .link.primary.pCol12 { - stroke: #00ffec; -} -/* color:13 */ -#ov-topo svg .link.primary.pCol13 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol13 { - stroke: #c900ff; -} -.dark #ov-topo svg .link.primary.pCol13 { - stroke: #c900ff; -} -/* color:14 */ -#ov-topo svg .link.primary.pCol14 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol14 { - stroke: #ff00e7; -} -.dark #ov-topo svg .link.primary.pCol14 { - stroke: #ff00e7; -} -/* color:15 */ -#ov-topo svg .link.primary.pCol15 { - stroke-width: 6px; -} -.light #ov-topo svg .link.primary.pCol15 { - stroke: #3c00ff; -} -.dark #ov-topo svg .link.primary.pCol15 { - stroke: #3c00ff; -} diff --git a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.html b/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.html deleted file mode 100644 index 7d02ca9a12..0000000000 --- a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopov.html +++ /dev/null @@ -1,4 +0,0 @@ - -
-

This is a hidden view .. just a placeholder to house the javascript

-
diff --git a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovDemo.js b/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovDemo.js deleted file mode 100644 index 0523f33761..0000000000 --- a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovDemo.js +++ /dev/null @@ -1,600 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/*PCE topology overlay web application implementation.*/ - -(function () { - 'use strict'; - - // injected refs - var $log, fs, flash, wss, tps, ns, tds, ds; - var tunnelNameData, tunnelNameDataRemove, tunnelDataUpdateInfo, tunnelIdUpd, tunnelNameDataQuery; - // constants - var srcMessage = 'pceTopovSetSrc', - dstMessage = 'pceTopovSetDst', - clearMessage = 'pceTopovClear', - setPathmsg = 'pceTopovSetMode', - updatePathmsgQuery = 'pceTopovUpdateQuery', - remPathmsgQuery = 'pceTopovRemQuery', - updatePathmsg = 'pceTopovUpdate', - updatePathmsgInfo = 'updatePathmsgInfo', - remPathmsg = 'pceTopovRem', - showTunnelInfoMsg = 'pceTopovShowTunnels', - queryDisplayTunnelMsg = 'pceTopovTunnelDisplay', - showTunnelInfoRemoveMsg = 'pceTopovShowTunnelsRem', - showTunnelInfoUpdateMsg = 'pceTopovShowTunnelsUpdate', - showTunnelInfoQuery = 'pceTopovShowTunnelsQuery', - showTunnelHighlightMsg = 'pceTopovshowTunnelHighlightMsg'; - - // internal state - var currentMode = null; - var handlerMap = {}, - handlerMapRem = {}, - handlerMapshowQuery = {}, - handlerMapShowUpdate = {}; - // === --------------------------- - // === Helper functions - - // === --------------------------- - // === Main API functions - - function setSrc(node) { - wss.sendEvent(srcMessage, { - id: node.id, - type: node.type - }); - flash.flash('Source node: ' + node.id); - } - - function setDst(node) { - wss.sendEvent(dstMessage, { - id: node.id, - type: node.type - }); - flash.flash('Destination node: ' + node.id); - } - - function clear() { - wss.sendEvent(clearMessage); - flash.flash('Cleared source and destination'); - } - - function dClose() { - $log.debug('Dialog Close button clicked (or Esc pressed)'); - } - - function createUserText() { - var content = ds.createDiv('constraints-input'), - form = content.append('form'), - p = form.append('p'); - - function addAttribute(name, id, nameField, type) { - if (type == 'radio') { - if (id == 'pce-lsp-type-cr') { - p.append('input').attr({ - type: type, - name: name, - id: id, - checked: 'checked', - class: 'radioButtonSpace' - }); - } else { - p.append('input').attr({ - type: type, - name: name, - id: id, - class: 'radioButtonSpace' - }); - } - } else { - p.append('input').attr({ - type: type, - name: name, - id: id - }); - } - - p.append('span').text(nameField); - p.append('br'); - } - - //Add the bandwidth related inputs. - addAttribute('band-width-name', 'band-width-box', 'Band Width', 'checkbox'); - addAttribute('band-width-value-name', 'band-width-value', null, 'number'); - addAttribute('pce-band-type', 'band-kpbs-val', 'kbps', 'radio'); - addAttribute('pce-band-type', 'band-mpbs-val', 'mbps', 'radio'); - addAttribute('pce-band-type', 'band-bps-val', 'bps', 'radio'); - //Add the cost type related inputs. - addAttribute('pce-cost-type-name', 'pce-cost-type', 'Cost Type', 'checkbox'); - addAttribute('pce-cost-type-valname', 'pce-cost-type-igp', 'IGP', 'radio'); - addAttribute('pce-cost-type-valname', 'pce-cost-type-te', 'TE', 'radio'); - - //Add the load balancing related inputs. - addAttribute('pce-load-balancing-option-name', 'pce-load-balance', 'Load balancing', 'checkbox'); - - //Add the LSP type related inputs. - p.append('span').text("Lsp Type *"); - p.append('br'); - addAttribute('pce-lsp-type-valname', 'pce-lsp-type-cr', 'With signalling', 'radio'); - addAttribute('pce-lsp-type-valname', 'pce-lsp-type-srbe', 'Without SR without signalling', 'radio'); - addAttribute('pce-lsp-type-valname', 'pce-lsp-type-srte', 'With SR without signalling', 'radio'); - //Add the tunnel name - p.append('span').text("Tunnel Name *"); - p.append('br'); - addAttribute('pce-tunnel-name', 'pce-tunnel-name-id', null, 'text'); - p.append('span').text("* indicates mandatory fields"); - return content; - } - - function createUserTextUpdate(data) { - var content = ds.createDiv(), - form = content.append('form'), - p = form.append('p'); - - p.append('span').text('Tunnel IDs'); - p.append('br'); - - for (var idx = 0; idx < data.a.length; idx++) { - p.append('input').attr({ - id: 'tunnel-id-'+idx, - type: 'radio', - name: 'tunnel-id-name', - value: data.a[idx] - }); - idx++; - p.append('span').text(data.a[idx]); - p.append('br'); - } - return content; - } - - function createUserTextUpdatePathEvent(data) { - var content = ds.createDiv(), - form = content.append('form'), - p = form.append('p'); - var constType; - - function addAttribute(name, id, nameField, type) { - if (type == 'radio') { - p.append('input').attr({ - type: type, - name: name, - id: id, - class: 'radioButtonSpace' - }); - } - else { - p.append('input').attr({ - type: type, - name: name, - id: id - }); - } - - p.append('span').text(nameField); - p.append('br'); - } - - data.a.forEach( function (val, idx) { - if (val == 'Tunnel') { - constType = 'TUNNEL'; - return; - } - - if (val == 'BandWidth') { - constType = 'BW'; - return; - } - - if (val == 'CostType') { - constType = 'CT'; - return; - } - - if (val == 'LoadBalancing') { - constType = 'LB'; - return; - } - - if (constType == 'TUNNEL') { - p.append('span').text('Tunnel Id: '); - p.append('span').text(val); - p.append('br'); - tunnelIdUpd = val; - } - - if (constType == 'BW') { - //addAttribute('band-width-name', 'update-band-width-box', 'Band Width', 'checkbox'); - p.append('span').text('Band Width'); - p.append('br'); - p.append('input').attr({ - id: 'update-band-width-value', - type: 'number', - name: 'band-width-value-name', - value: val - }); - p.append('br'); - p.append('input').attr({ - id: 'update-band-bps-val', - type: 'radio', - name: 'pce-band-type', - checked: 'checked', - class: 'radioButtonSpace' - }); - p.append('span').text('bps'); - p.append('br'); - addAttribute('pce-band-type', 'update-band-kbps-val', 'kbps', 'radio'); - addAttribute('pce-band-type', 'update-band-mbps-val', 'mbps', 'radio'); - addAttribute('pce-band-type', 'update-band-none-val', 'none', 'radio'); - } - - if (constType == 'CT') { - //addAttribute('pce-cost-type', 'update-pce-cost-type', 'Cost Type', 'checkbox'); - p.append('span').text('Cost Type'); - p.append('br'); - if (val == 'COST') { - p.append('input').attr({ - id: 'update-pce-cost-type-igp', - type: 'radio', - name: 'pce-cost-type-value', - checked: 'checked', - class: 'radioButtonSpace' - }); - p.append('span').text('IGP'); - p.append('br'); - addAttribute('pce-cost-type-value', 'update-pce-cost-type-te', 'TE', 'radio'); - addAttribute('pce-cost-type-value', 'update-pce-cost-type-none', 'none', 'radio'); - - } else { - addAttribute('pce-cost-type-value', 'update-pce-cost-type-igp', 'IGP', 'radio'); - p.append('input').attr({ - id: 'update-pce-cost-type-te', - type: 'radio', - name: 'pce-cost-type-value', - checked: 'checked', - class: 'radioButtonSpace' - }); - p.append('span').text('TE'); - p.append('br'); - addAttribute('pce-cost-type-value', 'update-pce-cost-type-none', 'none', 'radio'); - } - } - } ); - - return content; - } - - function createUserTextRemove(data) { - - var content = ds.createDiv(), - form = content.append('form'), - p = form.append('p'); - - p.append('span').text('Tunnels'); - p.append('br'); - - for (var idx = 0; idx < data.a.length; idx++) { - p.append('input').attr({ - id: 'tunnel-id-remove-'+idx, - type: 'checkbox', - name: 'tunnel-id-name-remove', - value: data.a[idx] - }); - idx++; - p.append('span').text(data.a[idx]); - p.append('br'); - } - - return content; - } - - function createUserTextQuery(data) { - - var content = ds.createDiv(), - form = content.append('form'), - p = form.append('p'); - - p.append('span').text('Tunnels'); - p.append('br'); - - for (var idx =0; idx < data.a.length; idx++) { - p.append('input').attr({ - id: 'tunnel-id-query-'+idx, - type: 'radio', - name: 'tunnel-id-name-query', - value: data.a[idx] - }); - idx++; - p.append('span').text(data.a[idx]); - p.append('br'); - } - return content; - } - - function isChecked(cboxId) { - return d3.select('#' + cboxId).property('checked'); - } - - function getCheckedValue(cboxId) { - return d3.select('#' + cboxId).property('value'); - } - - function showTunnelInformation(data) { - wss.unbindHandlers(handlerMap); - tunnelNameData = data; - - function dOkUpdate() { - var tdString = '' ; - for (var idx = 0; idx < tunnelNameData.a.length; idx++) { - var tunnelName = isChecked('tunnel-id-'+idx); - if (tunnelName) { - tdString = tunnelNameData.a[idx]; - } - idx++; - } - //send event to server for getting the tunnel information. - if (tdString != null) { - handlerMapShowUpdate[showTunnelInfoUpdateMsg] = showTunnelInfoUpdateMsgHandle; - wss.bindHandlers(handlerMapShowUpdate); - - wss.sendEvent(updatePathmsgInfo, { - tunnelid: tdString - }); - } - //constraintsUpdateDialog(tdString); - $log.debug('Dialog OK button clicked'); - } - - tds.openDialog() - .setTitle('Available LSPs with selected device') - .addContent(createUserTextUpdate(data)) - .addOk(dOkUpdate, 'OK') - .addCancel(dClose, 'Close') - .bindKeys(); - } - - function dOkUpdateEvent() { - $log.debug('Select constraints for update path Dialog OK button pressed'); - - var bandValue = null, - bandType = null; - - bandValue = getCheckedValue('update-band-width-value'); - - if (isChecked('update-band-kbps-val')) { - bandType = 'kbps'; - } else if (isChecked('update-band-mbps-val')) { - bandType = 'mbps'; - } else if (isChecked('update-band-bps-val')) { - bandType = 'bps'; - } else if (isChecked('update-band-none-val')) { - bandType = null; - bandValue = null; - } - - var costTypeVal = null; - - if (isChecked('update-pce-cost-type-igp')) { - costTypeVal = 'igp'; - } else if (isChecked('update-pce-cost-type-te')) { - costTypeVal = 'te'; - } else if (isChecked('update-pce-cost-type-none')) { - costTypeVal = null; - } - - wss.sendEvent(updatePathmsg, { - bw: bandValue, - bwtype: bandType, - ctype: costTypeVal, - tunnelid: tunnelIdUpd - }); - - flash.flash('update path message'); - - } - - function showTunnelInformationRemove(data) { - - wss.unbindHandlers(handlerMapRem); - tunnelNameDataRemove = data; - tds.openDialog() - .setTitle('Available Tunnels for remove') - .addContent(createUserTextRemove(data)) - .addOk(dOkRemove, 'OK') - .addCancel(dClose, 'Close') - .bindKeys(); - } - - function showTunnelInformationQuery(data) { - - wss.unbindHandlers(handlerMapshowQuery); - tunnelNameDataQuery = data; - tds.openDialog() - .setTitle('Available Tunnels for highlight') - .addContent(createUserTextQuery(data)) - .addOk(dOkQuery, 'OK') - .addCancel(dClose, 'Close') - .bindKeys(); - } - - function showTunnelInfoUpdateMsgHandle(data) { - - wss.unbindHandlers(handlerMapShowUpdate); - tunnelDataUpdateInfo = data; - tds.openDialog() - .setTitle('Constrainst selection for update') - .addContent(createUserTextUpdatePathEvent(data)) - .addOk(dOkUpdateEvent, 'OK') - .addCancel(dClose, 'Close') - .bindKeys(); - } - - //setup path - function setMode(node) { - - function dOk() { - var bandWidth = isChecked('band-width-box'), - bandValue = null, - bandType = null; - - if (bandWidth) { - bandValue = getCheckedValue('band-width-value'); - - if (isChecked('band-kpbs-val')) { - bandType = 'kbps'; - } else if (isChecked('band-mpbs-val')) { - bandType = 'mbps'; - } else if (isChecked('band-bps-val')) { - bandType = 'bps'; - } - } - - var costType = isChecked('pce-cost-type'), - costTypeVal = null; - - if (costType) { - if (isChecked('pce-cost-type-igp')) { - costTypeVal = 'igp'; - } else if (isChecked('pce-cost-type-te')) { - costTypeVal = 'te'; - } - } - - var loadBalancedOption = isChecked('pce-load-balance'); - - var lspTypeVal = null; - - if (isChecked('pce-lsp-type-cr')) { - lspTypeVal = 'cr'; - } else if (isChecked('pce-lsp-type-srbe')) { - lspTypeVal = 'srbe'; - } else if (isChecked('pce-lsp-type-srte')) { - lspTypeVal = 'srte'; - } - - wss.sendEvent(setPathmsg, { - srid: node[0], - dsid: node[1], - bw: bandValue, - bwtype: bandType, - ctype: costTypeVal, - lb: loadBalancedOption, - lsptype: lspTypeVal, - tunnelname: getCheckedValue('pce-tunnel-name-id') - }); - - flash.flash('create path message'); - $log.debug('Dialog OK button clicked'); - } - - tds.openDialog() - .setTitle('constraints selection') - .addContent(createUserText()) - .addOk(dOk, 'OK') - .addCancel(dClose, 'Close') - .bindKeys(); - } - - function updatePath(node) { - - wss.sendEvent(updatePathmsgQuery, { - srid: node[0], - dsid: node[1] - }); - - handlerMap[showTunnelInfoMsg] = showTunnelInformation; - wss.bindHandlers(handlerMap); - - flash.flash('update path message'); - } - - function dOkRemove() { - - for (var idx = 0; idx < tunnelNameDataRemove.a.length; idx++) { - var tunnelNameVal = isChecked('tunnel-id-remove-'+idx); - if (tunnelNameVal) { - wss.sendEvent(remPathmsg, { - tunnelid: tunnelNameDataRemove.a[idx], - tunnelname: tunnelNameDataRemove.a[++idx] - }); - } - idx++; - } - - flash.flash('remove path message'); - } - - function dOkQuery() { - - for (var idx = 0; idx < tunnelNameDataQuery.a.length; idx++) { - var tunnelNameVal = isChecked('tunnel-id-query-'+idx); - if (tunnelNameVal) { - wss.sendEvent(showTunnelHighlightMsg, { - tunnelid: tunnelNameDataQuery.a[idx], - tunnelname: tunnelNameDataQuery.a[++idx] - }); - } - idx++; - } - - flash.flash('query path message'); - } - - function remPath(node) { - wss.sendEvent(remPathmsgQuery, { - srid: node[0], - dsid: node[1] - }); - - handlerMapRem[showTunnelInfoRemoveMsg] = showTunnelInformationRemove; - wss.bindHandlers(handlerMapRem); - } - - function queryTunnelDisplay() { - handlerMapshowQuery[showTunnelInfoQuery] = showTunnelInformationQuery; - wss.bindHandlers(handlerMapshowQuery); - - wss.sendEvent(queryDisplayTunnelMsg); - } - // === --------------------------- - // === Module Factory Definition - - angular.module('ovPcewebTopov', []) - .factory('PcewebTopovDemoService', - ['$log', 'FnService', 'FlashService', 'WebSocketService', - 'TopoPanelService', 'NavService', 'TopoDialogService', 'DialogService', - - function (_$log_, _fs_, _flash_, _wss_, _tps_, _ns_,_tds_, _ds_) { - $log = _$log_; - fs = _fs_; - flash = _flash_; - wss = _wss_; - tps = _tps_; - ns = _ns_; - tds = _tds_; - ds = _ds_; - - return { - setSrc: setSrc, - setDst: setDst, - clear: clear, - setMode: setMode, - updatePath: updatePath, - remPath: remPath, - queryTunnelDisplay: queryTunnelDisplay - }; - }]); -}()); diff --git a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovOverlay.js b/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovOverlay.js deleted file mode 100644 index 02320b0ac1..0000000000 --- a/apps/pce/pceweb/src/main/resources/app/view/pcewebTopov/pcewebTopovOverlay.js +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// PCE web topology overlay - client side -// -// This is the glue that binds our business logic (in pcewebTopovDemo.js) -// to the overlay framework. - -(function () { - 'use strict'; - - // injected refs - var $log, tov, pps; - - // internal state should be kept in the service module (not here) - var selection; - // our overlay definition - var overlay = { - // NOTE: this must match the ID defined in AppUiTopovOverlay - overlayId: 'PCE-web-overlay', - glyphId: 'topo', - tooltip: 'PCE web Topo Overlay', - - activate: function () { - $log.debug("PCE web topology overlay ACTIVATED"); - }, - deactivate: function () { - pps.clear(); - $log.debug("PCE web topology overlay DEACTIVATED"); - }, - - // These glyphs get installed using the overlayId as a prefix. - // e.g. 'src' is installed as 'PCE-web-overlay-src' - // They can be referenced (from this overlay) as '*src' - // That is, the '*' prefix stands in for 'PCE-web-overlay-' - glyphs: { - jp: { - vb: '0 0 110 110', - d: 'M84.3,89.3L58.9,64.2l-1.4,1.4L83,90.7L84.3,89.3z M27,7.6H7.4v19.2H27V7.6z' + - 'M59.3,47.1H39.8v19.2h19.5V47.1z M102.1,79.5H82.6v19.2h19.5V79.5z M41.7,47.6L19,25.1l-1.2,1.2l22.7,22.5L41.7,47.6z' - }, - }, - - // Key bindings for PCE web overlay buttons - // NOTE: fully qual. button ID is derived from overlay-id and key-name - keyBindings: { - 1: { - cb: function () { - pps.setMode(selection); - }, - tt: 'Setup path', - gid: 'plus' - }, - 2: { - cb: function () { - pps.updatePath(selection); - }, - tt: 'Update path', - gid: '*jp' - }, - 3: { - cb: function () { - pps.remPath(selection); - }, - tt: 'Remove path', - gid: 'minus' - }, - 4: { - cb: function () { - pps.queryTunnelDisplay(); - }, - tt: 'Show Tunnels', - gid: 'checkMark' - }, - - _keyOrder: [ - '1', '2', '3', '4' - ] - }, - hooks: { - // hook for handling escape key - // Must return true to consume ESC, false otherwise. - escape: function () { - selectionCallback(); - pps.setSrc(); - pps.setDst(); - return true; - }, - - // hooks for when the selection changes... - empty: function () { - selectionCallback(); - }, - single: function (data) { - selectionCallback(data); - }, - multi: function (selectOrder) { - selectionCallback(selectOrder); - }, - modifylinkdata: function (data, extra) { - $log.debug("Modify link data", data, extra); - - function sep() { - data.propOrder.push('-'); - } - - function add(key) { - var val = extra[key]; - if (val !== undefined) { - data.propOrder.push(key); - data.props[key] = val; - } - } - - sep(); - add('Src Address'); - add('Dst Address'); - add('Te metric'); - add('Bandwidth'); - - return data; - } - } - }; - - function selectionCallback(d) { - $log.debug('Selection callback', d); - selection = d; - } - - // invoke code to register with the overlay service - angular.module('ovPcewebTopov') - .run(['$log', 'TopoOverlayService', 'PcewebTopovDemoService', - - function (_$log_, _tov_, _pps_) { - $log = _$log_; - tov = _tov_; - pps = _pps_; - tov.register(overlay); - }]); - -}()); diff --git a/apps/pce/pceweb/src/main/resources/pcewebTopov/css.html b/apps/pce/pceweb/src/main/resources/pcewebTopov/css.html deleted file mode 100644 index ea1b11da9a..0000000000 --- a/apps/pce/pceweb/src/main/resources/pcewebTopov/css.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/pce/pceweb/src/main/resources/pcewebTopov/js.html b/apps/pce/pceweb/src/main/resources/pcewebTopov/js.html deleted file mode 100644 index 300dd7e37d..0000000000 --- a/apps/pce/pceweb/src/main/resources/pcewebTopov/js.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/apps/pcep-api/BUILD b/apps/pcep-api/BUILD deleted file mode 100644 index b759412377..0000000000 --- a/apps/pcep-api/BUILD +++ /dev/null @@ -1,16 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + JACKSON + [ - "//protocols/ovsdb/api:onos-protocols-ovsdb-api", - "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc", - "@jaxb_api//jar", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) - -onos_app( - category = "Protocol", - description = "PCEP protocol API.", - title = "PCEP Protocol API", - url = "http://onosproject.org", -) diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/DeviceCapability.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/DeviceCapability.java deleted file mode 100644 index 6acee760e4..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/DeviceCapability.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.config.Config; - -/** - * Configuration to specify device capabilities. - */ -public class DeviceCapability extends Config { - public static final String SRCAP = "srCapabaility"; - public static final String LABELSTACKCAP = "labelStackCapability"; - public static final String LOCALLABELCAP = "localLabelCapability"; - - @Override - public boolean isValid() { - return true; - } - - /** - * Gets the SR capability of the router. - * - * @return SR capability - */ - public boolean srCap() { - String srCap = get(SRCAP, null); - return srCap != null ? - Boolean.valueOf(srCap) : - false; - } - - /** - * Gets the label stack capability of the router. - * - * @return label stack capability - */ - public boolean labelStackCap() { - String labelStackCap = get(LABELSTACKCAP, null); - return labelStackCap != null ? - Boolean.valueOf(labelStackCap) : - false; - } - - /** - * Gets the local label capability of the router. - * - * @return local label capability - */ - public boolean localLabelCap() { - String localLabelCap = get(LOCALLABELCAP, null); - return localLabelCap != null ? - Boolean.valueOf(localLabelCap) : - false; - } - - /** - * Sets the SR capability of the router. - * - * @param srCap SR capability of the router. - * @return the capability configuration of the device. - */ - public DeviceCapability setSrCap(boolean srCap) { - return (DeviceCapability) setOrClear(SRCAP, srCap); - } - - /** - * Sets the label stack capability of the router. - * - * @param labelStackCap label stack capability of the router. - * @return the capability configuration of the device. - */ - public DeviceCapability setLabelStackCap(boolean labelStackCap) { - return (DeviceCapability) setOrClear(LABELSTACKCAP, labelStackCap); - } - - /** - * Sets the local label capability of the router. - * - * @param localLabelCap local label capability of the router. - * @return the capability configuration of the device. - */ - public DeviceCapability setLocalLabelCap(boolean localLabelCap) { - return (DeviceCapability) setOrClear(LOCALLABELCAP, localLabelCap); - } -} - diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepController.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepController.java deleted file mode 100644 index 74a2367210..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepController.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -import org.onosproject.net.DeviceId; - -/** - * Abstraction of an PCEP controller. Serves as a one stop shop for obtaining - * PCEP devices and (un)register listeners on PCEP events - */ -public interface PcepController { - - /** - * Returns all switches known to this PCEP controller. - * - * @return Iterable of did elements - */ - Iterable getSwitches(); - - /** - * Return a switch with a specified did. - * - * @param did of a device - * @return a pcep device - */ - PcepSwitch getSwitch(PcepDpid did); - - /** - * Register a listener for meta events that occur to PCEP devices. - * - * @param listener the listener to notify - */ - void addListener(PcepSwitchListener listener); - - /** - * Unregister a listener. - * - * @param listener the listener to unregister - */ - void removeListener(PcepSwitchListener listener); - - /** - * Register a listener for meta events that occur to PCEP links. - * - * @param listener the listener to notify - */ - void addLinkListener(PcepLinkListener listener); - - /** - * Unregister a link listener. - * - * @param listener the listener to unregister - */ - void removeLinkListener(PcepLinkListener listener); - - /** - * Register a listener for meta events that occur to PCEP tunnel. - * - * @param listener the listener to notify - */ - void addTunnelListener(PcepTunnelListener listener); - - /** - * Unregister a tunnel listener. - * - * @param listener the listener to unregister - */ - void removeTunnelListener(PcepTunnelListener listener); - - /** - * Setup a tunnel through pcep controller. - * - * @param srcDid src deviceId of tunnel - * @param dstDid dst deviceId of tunnel - * @param srcPort src port - * @param dstPort dst port - * @param bandwidth andwidth of tunnel - * @param name tunnel name - * @return pcep tunnel - */ - PcepTunnel applyTunnel(DeviceId srcDid, DeviceId dstDid, - long srcPort, long dstPort, long bandwidth, - String name); - - /** - * Delete tunnel by id. - * - * @param id pcep tunnel id. - * @return true or false - */ - Boolean deleteTunnel(String id); - - /** - * Update tunnel bandwidth by tunnel id. - * - * @param id tunnel id - * @param bandwidth bandwidth of a tunnel - * @return true or false - */ - Boolean updateTunnelBandwidth(String id, long bandwidth); - - /** - * Send statistic request by tunnel id. - * - * @param pcepTunnelId PCEP tunnel id - */ - void getTunnelStatistics(String pcepTunnelId); - -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepDpid.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepDpid.java deleted file mode 100644 index 3ac5269502..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepDpid.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -import java.net.URI; -import java.net.URISyntaxException; - -import org.onosproject.pcep.tools.PcepTools; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The class representing a network switch PCEPDid. This class is immutable. - */ -public final class PcepDpid { - private static final Logger log = LoggerFactory.getLogger(PcepDpid.class); - private static final String SCHEME = "l3"; - private static final long UNKNOWN = 0; - private long nodeId; - - /** - * Default constructor. - */ - public PcepDpid() { - this.nodeId = PcepDpid.UNKNOWN; - } - - /** - * Constructor from a long value. - * - * @param value long value for construct - */ - public PcepDpid(long value) { - this.nodeId = value; - } - - /** - * Constructor from a String. - * - * @param value string value for construct - */ - public PcepDpid(String value) { - this.nodeId = Long.parseLong(value, 16); - } - - /** - * Produces device URI from the given DPID. - * - * @param dpid device dpid - * @return device URI - */ - public static URI uri(PcepDpid dpid) { - return uri(dpid.nodeId); - } - - /** - * Produces pcep URI. - * - * @param value string to get URI - * @return pcep URI, otherwise null - */ - public static URI uri(String value) { - try { - return new URI(SCHEME, value, null); - } catch (URISyntaxException e) { - log.debug("Exception PcepId URI: " + e.toString()); - } - return null; - } - - /** - * Produces device long from the given string which comes from the uri - * method. - * - * @param value string value which produced by uri method. - * @return a long value. - */ - public static long toLong(String value) { - return PcepTools.ipToLong(value.replace(SCHEME, "")); - } - - /** - * Produces device URI from the given DPID long. - * - * @param value device dpid as long - * @return device URI - */ - public static URI uri(long value) { - try { - return new URI(SCHEME, PcepTools.longToIp(value), null); - } catch (URISyntaxException e) { - return null; - } - } - - /** - * Return a device id with the form of long. - * - * @return long value - */ - public long value() { - return this.nodeId; - } - -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepHopNodeDescription.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepHopNodeDescription.java deleted file mode 100644 index 5b58cf2a59..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepHopNodeDescription.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -/** - * Description of a pcep tunnel hop node.a hop list consists of a number of hop - * node. - */ -public class PcepHopNodeDescription { - private PcepDpid deviceId; - private long portNum; - - /** - * Get the pcepdpid of a node. - * - * @return device pcepdpid. - */ - public PcepDpid getDeviceId() { - return deviceId; - } - - /** - * Set the pcepdpid of a node. - * - * @param deviceId pcep dpid of a node. - */ - public void setDeviceId(PcepDpid deviceId) { - this.deviceId = deviceId; - } - - /** - * Get the port number of a node. - * - * @return port number. - */ - public long getPortNum() { - return portNum; - } - - /** - * Set the port number of a node. - * - * @param portNum port number of a node. - */ - public void setPortNum(long portNum) { - this.portNum = portNum; - } - -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLink.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLink.java deleted file mode 100644 index a1e683ffb3..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLink.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -import org.onosproject.net.Port; - -/** - * Abstraction of a network infrastructure link. - */ -public interface PcepLink extends PcepOperator { - - enum SubType { - /** - * Optical Transmission Section Link. - */ - OTS, - - /** - * Optical Physical Section Link. - */ - OPS, - - /** - * User-to-Network Interface Link. - */ - UNI, - - /** - * Optical channel Data Unit-k link. - */ - ODUk, - - /** - * Optical Transport Network link. - */ - OTU, - } - - - enum PortType { - ODU_PORT, OCH_PORT, OMS_PORT - } - - /** - * Returns the link endpoint port type. - * - * @return endpoint port type - */ - PortType portType(); - - /** - * Returns the link sub type,OTS,OPS,PKT_OPTICAL or ODUK. - * - * @return link subType - */ - - SubType linkSubType(); - - /** - * Returns the link state, up or down. - * - * @return link state - */ - String linkState(); - - /** - * Returns the distance of a link. - * - * @return distance - */ - int linkDistance(); - - /** - * Returns the capacity type of a link,1: WAVELENGTHNUM, 2:SLOTNUM, 3, - * BANDWIDTH. - * - * @return capacity type - */ - String linkCapacityType(); - - /** - * Returns the available capacity value ,such as available bandwidth. - * - * @return availValue - */ - int linkAvailValue(); - - /** - * Returns the max capacity value ,such as max bandwidth. - * - * @return maxValue - */ - int linkMaxValue(); - - /** - * Returns the source device did of a link. - * - * @return source did - */ - PcepDpid linkSrcDeviceID(); - - /** - * Returns the destination device did of a link. - * - * @return destination did - */ - PcepDpid linkDstDeviceId(); - - /** - * Returns the source port of a link. - * - * @return port number - */ - Port linkSrcPort(); - - /** - * Returns the destination port of a link. - * - * @return port number - */ - Port linkDstPort(); - -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLinkListener.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLinkListener.java deleted file mode 100644 index 6d1c268f9a..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepLinkListener.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -/** - * Allows for providers interested in Link events to be notified. - */ -public interface PcepLinkListener { - - /** - * Notify that get a packet of link from network and need do some - * processing. - * - * @param link pcep link - */ - void handlePceplink(PcepLink link); -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepOperator.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepOperator.java deleted file mode 100644 index ef8d7c325b..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepOperator.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -/** - * A interface defined operator type, and provide a method to get the operator - * type. - */ -public interface PcepOperator { - - enum OperationType { - - ADD, UPDATE, DELETE, - } - - /** - * Get operate type of a event,such as device add ,device update. - * - * @return operation type. - */ - OperationType getOperationType(); -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitch.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitch.java deleted file mode 100644 index 19aeff77e5..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitch.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -/* - * Represent to provider facing side of a switch - */ -public interface PcepSwitch extends PcepOperator { - - enum DeviceType { - /* optical device */ - ROADM, - - /* electronic device */ - OTN, - - /* router */ - ROUTER, - - /* unknown type */ - UNKNOW, - } - - /** - * Gets a string version of the ID for this switch. - * @return string version of the ID - */ - String getStringId(); - - /** - * Gets the datapathId of the switch. - * @return the switch dpid in long format - */ - long getId(); - - long getNeId(); - - /** - * Gets the sub type of the device. - * @return the sub type - */ - DeviceType getDeviceType(); - - /** - * fetch the manufacturer description. - * @return the description - */ - String manufacturerDescription(); - - /** - * fetch the datapath description. - * @return the description - */ - String datapathDescription(); - - /** - * fetch the hardware description. - * @return the description - */ - String hardwareDescription(); - - /** - * fetch the software description. - * @return the description - */ - String softwareDescription(); - - /** - * fetch the serial number. - * @return the serial - */ - String serialNumber(); - - /** - * Indicates if this switch is optical. - * @return true if optical - */ - boolean isOptical(); -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitchListener.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitchListener.java deleted file mode 100644 index ebe95dc1d3..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepSwitchListener.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -/** - * Notifies providers about switch in events. - */ -public interface PcepSwitchListener { - - /** - * Notify that the switch was added. - * - * @param dpid the switch where the event occurred - */ - void switchAdded(PcepDpid dpid); - - /** - * Notify that the switch was removed. - * - * @param dpid the switch where the event occurred. - */ - void switchRemoved(PcepDpid dpid); - - /** - * Notify that the switch has changed in some way. - * - * @param dpid the switch that changed - */ - void switchChanged(PcepDpid dpid); - -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnel.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnel.java deleted file mode 100644 index 4fc7a4c3a9..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnel.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcep.api; - -import java.util.List; - -/** - * Abstraction of a generalized PCEP Tunnel entity (bandwidth pipe) for L2 - * networks or L1/L0 networks, representation of e.g., VLAN, L1 ODUk connection, - * WDM OCH, etc.. - */ -public interface PcepTunnel extends PcepOperator { - - /** - * Describe the type of a tunnel. - */ - enum Type { - - /** - * Signifies that this is a L0 OCH tunnel. - */ - OCH, - - /** - * Signifies that this is a L1 OTN tunnel. - */ - OTN, - - /** - * Signifies that this is a L2 tunnel. - */ - UNI, - } - - /** - * The ability of a tunnel. - */ - enum Ability { - /** - * no protected tunnel,if the tunnel is broken ,then the user is out of - * service. - */ - NOPROTECTED, - - /** - * tunnel with rerouter ability.if a tunnel is broken, the tunnel will - * try to find another path to provider service. - */ - SILVER, - - /** - * tunnel with 1 + 1 rerouter ability.if a tunnel is broken, there'll be - * another tunnel providing service at once. - */ - DIAMOND - } - - enum PathType { - - /** - * Indicates path is the preferred path. - */ - FIRST, - - /** - * Indicates path is the alternate path. - */ - SECOND - } - - /** - * Represents state of the path, work normally or broken down. - */ - enum PathState { - NORMAL, BROKEN - } - - /** - * Returns the type of a tunnel. - * - * @return tunnel type - */ - Type type(); - - /** - * Returns the name of a tunnel. - * - * @return tunnel name - */ - String name(); - - /** - * Returns the device id of destination endpoint of a tunnel. - * - * @return device id - */ - PcepDpid srcDeviceID(); - - /** - * Returns the device id of source endpoint of a tunnel. - * - * @return device id - */ - PcepDpid dstDeviceId(); - - /** - * Returns source port of a tunnel. - * - * @return port number - */ - long srcPort(); - - /** - * Returns destination port of a tunnel. - * - * @return port number - */ - long dstPort(); - - /** - * Returns the bandwidth of a tunnel. - * - * @return bandwidth - */ - long bandWidth(); - - /** - * Returns the tunnel id. - * - * @return id of the PCEP tunnel - */ - long id(); - - /** - * Returns the detail hop list of a tunnel. - * - * @return hop list - */ - List getHopList(); - - /** - * Returns the instance of a pcep tunnel,a instance is used to mark the times of - * a tunnel created. instance and id identify a tunnel together. - * - * @return the instance of a tunnel. - */ - int getInstance(); - - /** - * Returns the state of a path. - * - * @return normal or broken - */ - PathState getPathState(); - - /** - * Returns the ability of a tunnel. - * - * @return ability of the tunenl - */ - Ability getSla(); - - /** - * Returns the path type of a path if the tunnel's ability is diamond . - * - * @return the type of a path, the preferred or alternate. - */ - PathType getPathType(); - - /** - * Get the under lay tunnel id of VLAN tunnel. - * - * @return the tunnel id of a OCH tunnel under lay of a VLAN tunnel. - */ - long underlayTunnelId(); - -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelListener.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelListener.java deleted file mode 100644 index e522c4a85f..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelListener.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -/** - * Allows for providers interested in tunnel events to be notified. - */ -public interface PcepTunnelListener { - - /** - * Notify that get a packet of tunnel from network and need do some - * processing. - * - * @param tunnel a pceptunnel. - */ - void handlePcepTunnel(PcepTunnel tunnel); - - /** - * Notify that get a tunnel statistic data from the network. - * - * @param tunnelStatistics tunnel statistic information. - */ - void handlePcepTunnelStatistics(PcepTunnelStatistics tunnelStatistics); - - - -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelStatistics.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelStatistics.java deleted file mode 100644 index e02bf03b67..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/PcepTunnelStatistics.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcep.api; - -import java.time.Duration; -import java.util.List; - -/** - * Statistics of a PCEP tunnel. - */ -public interface PcepTunnelStatistics { - - - /** - * Returns the id of PCEP tunnel. - * - * @return PCEP tunnel id - */ - long id(); - - - /** - * Returns the bandwidth utilization of a PCEP tunnel. - * - * @return PCEP bandwidth utilization - */ - double bandwidthUtilization(); - - /** - * Returns the flow loss rate of a tunnel. - * - * @return tunnel flow loss rate - */ - double packetLossRate(); - - /** - * Returns the end-to-end traffic flow delay of a tunnel. - * - * @return tunnel traffic flow delay - */ - Duration flowDelay(); - - /** - * Returns the alarms on a tunnel. - * - * @return tunnel alarms - */ - List alarms(); -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/TeLinkConfig.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/TeLinkConfig.java deleted file mode 100644 index d446de11a2..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/TeLinkConfig.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.api; - -import org.onosproject.net.LinkKey; -import org.onosproject.net.config.Config; - -/** - * Configuration to specify traffic engineering parameters of the link. - */ -public class TeLinkConfig extends Config { - public static final String MAX_RESV_BW = "maxRervableBandwidth"; - public static final String UNRESV_BWS = "unReservedBandwidths"; - public static final String IGP_COST = "igpCost"; - public static final String TE_COST = "teCost"; - - @Override - public boolean isValid() { - return hasOnlyFields(MAX_RESV_BW, UNRESV_BWS, IGP_COST, TE_COST); - } - - /** - * Gets the maximum reservable bandwidth of the link. - * - * @return maximum reservable bandwidth - */ - public Double maxResvBandwidth() { - - String resvBw = get(MAX_RESV_BW, null); - return resvBw != null ? - Double.valueOf(resvBw) : - 0.0; - } - - /** - * Gets the set of unreserved bandwidth of the link. - * - * @return set of unreserved bandwidth - */ - public Double unResvBandwidth() { - String unResvBw = get(UNRESV_BWS, null); - return unResvBw != null ? Double.valueOf(unResvBw) : 0.0; - } - - /** - * Gets the igp cost of the link. - * - * @return igp cost of the link - */ - public int igpCost() { - return get(IGP_COST, 0); - } - - /** - * Gets the te cost of the link. - * - * @return te cost of the link - */ - public int teCost() { - return get(TE_COST, 0); - } - - /** - * Sets the maximum reservable bandwidth of the link. - * - * @param maxResvBw maximum reservable bandwidth of link - * @return te link configuration - */ - public TeLinkConfig maxResvBandwidth(Double maxResvBw) { - return (TeLinkConfig) setOrClear(MAX_RESV_BW, maxResvBw); - } - - /** - * Sets unreserved bandwidths of the link in priority order. - * - * @param unResvBw unreserved bandwidths of the link in priority order - * @return te link configuration - */ - public TeLinkConfig unResvBandwidth(Double unResvBw) { - return (TeLinkConfig) setOrClear(UNRESV_BWS, unResvBw); - } - - /** - * Sets the igp cost of the link. - * - * @param igpCost igp cost of link - * @return te link configuration - */ - public TeLinkConfig igpCost(int igpCost) { - return (TeLinkConfig) setOrClear(IGP_COST, igpCost); - } - - /** - * Sets the te cost of the link. - * - * @param teCost te cost of link - * @return te link configuration - */ - public TeLinkConfig teCost(int teCost) { - return (TeLinkConfig) setOrClear(TE_COST, teCost); - } - - -} - diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/package-info.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/api/package-info.java deleted file mode 100644 index 2917bc9ac4..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/api/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCEP controller API. - */ -package org.onosproject.pcep.api; \ No newline at end of file diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/PcepTools.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/PcepTools.java deleted file mode 100644 index e123b5c954..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/PcepTools.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcep.tools; - -import javax.xml.bind.DatatypeConverter; - -/** - * tools fo pcep app. - */ -public abstract class PcepTools { - - private PcepTools() { - - } - - /** - * Converts decimal byte array to a hex string. - * - * @param byteArray byte array - * @return a hex string - */ - public static String toHexString(byte[] byteArray) { - return DatatypeConverter.printHexBinary(byteArray); - } - - /** - * Converts a hex string to a decimal byte array. - * - * @param hexString a hex string - * @return byte array - */ - public static byte[] toByteArray(String hexString) { - return DatatypeConverter.parseHexBinary(hexString); - } - - /** - * Converts a byte array to a decimal string. - * - * @param bytes a byte array - * @return a decimal string - */ - public static String toDecimalString(byte[] bytes) { - StringBuffer buf = new StringBuffer(); - for (int i = 0; i < bytes.length; i++) { - buf.append(bytes[i]); - } - return buf.toString(); - } - - /** - * convert a string to the form of ip address. - * - * @param str a string - * @return a string with ip format - */ - public static String stringToIp(String str) { - long ipInt = Long.parseLong(str, 16); - return longToIp(ipInt); - } - - /** - * convert a long to ip format. - * - * @param ipLong a decimal number. - * @return a ip format string - */ - public static String longToIp(long ipLong) { - StringBuilder sb = new StringBuilder(); - sb.append((ipLong >> 24) & 0xFF).append("."); - sb.append((ipLong >> 16) & 0xFF).append("."); - sb.append((ipLong >> 8) & 0xFF).append("."); - sb.append(ipLong & 0xFF); - return sb.toString(); - } - - /** - * convert a string with ip format to a long. - * - * @param strIp a string with ip format - * @return a long number - */ - public static long ipToLong(String strIp) { - long[] ip = new long[4]; - int position1 = strIp.indexOf("."); - int position2 = strIp.indexOf(".", position1 + 1); - int position3 = strIp.indexOf(".", position2 + 1); - ip[0] = Long.parseLong(strIp.substring(0, position1)); - ip[1] = Long.parseLong(strIp.substring(position1 + 1, position2)); - ip[2] = Long.parseLong(strIp.substring(position2 + 1, position3)); - ip[3] = Long.parseLong(strIp.substring(position3 + 1)); - return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3]; - } - - /** - * get a integer value from a cut string. - * - * @param str a whole string - * @param base cut the string from this index - * @param offset the offset when execute the cut - * @return a integer value - */ - public static int tranferHexStringToInt(String str, int base, int offset) { - return Integer.parseInt(str.substring(base, offset), 16); - - } -} diff --git a/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/package-info.java b/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/package-info.java deleted file mode 100644 index c3a52fb7f2..0000000000 --- a/apps/pcep-api/src/main/java/org/onosproject/pcep/tools/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * tools for pcep app. - */ -package org.onosproject.pcep.tools; \ No newline at end of file diff --git a/apps/pcep-api/src/test/java/org/onosproject/pcep/api/PcepControllerAdapter.java b/apps/pcep-api/src/test/java/org/onosproject/pcep/api/PcepControllerAdapter.java deleted file mode 100644 index 8163634c9d..0000000000 --- a/apps/pcep-api/src/test/java/org/onosproject/pcep/api/PcepControllerAdapter.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcep.api; - -import org.onosproject.net.DeviceId; - -/** - * Implementation of PCEP controller. - */ -public class PcepControllerAdapter implements PcepController { - - @Override - public Iterable getSwitches() { - return null; - } - - @Override - public PcepSwitch getSwitch(PcepDpid did) { - return null; - } - - @Override - public void addListener(PcepSwitchListener listener) { - - } - - @Override - public void removeListener(PcepSwitchListener listener) { - } - - @Override - public void addLinkListener(PcepLinkListener listener) { - } - - @Override - public void removeLinkListener(PcepLinkListener listener) { - } - - @Override - public void addTunnelListener(PcepTunnelListener listener) { - } - - @Override - public void removeTunnelListener(PcepTunnelListener listener) { - } - - @Override - public PcepTunnel applyTunnel(DeviceId srcDid, DeviceId dstDid, long srcPort, long dstPort, long bandwidth, - String name) { - return null; - } - - @Override - public Boolean deleteTunnel(String id) { - return null; - } - - @Override - public Boolean updateTunnelBandwidth(String id, long bandwidth) { - return null; - } - - @Override - public void getTunnelStatistics(String pcepTunnelId) { - - } -} diff --git a/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/TeTopologyNbiManager.java b/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/TeTopologyNbiManager.java deleted file mode 100644 index 4c4d532f27..0000000000 --- a/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/TeTopologyNbiManager.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tenbi.topology.impl; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.onosproject.event.AbstractListenerManager; -import org.onosproject.tetopology.management.api.TeTopologyEvent; -import org.onosproject.tetopology.management.api.TeTopologyListener; -import org.onosproject.tetopology.management.api.TeTopologyService; -import org.onosproject.teyang.api.OperationType; -import org.onosproject.teyang.utils.topology.NetworkConverter; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetwork.OnosYangOpType; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetworkOpParam; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetworkService; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.Networks; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworksState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.IetfNetworkTopology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology - .rev20151208.IetfNetworkTopologyOpParam; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology - .rev20151208.IetfNetworkTopologyService; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.IetfTeTopology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.IetfTeTopologyOpParam; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.IetfTeTopologyService; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .IetfTeTopologyEvent; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .IetfTeTopologyEventListener; -import org.onosproject.yms.ymsm.YmsService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The IETF TE Topology NBI Manager implementation. - */ -@Component(immediate = true, service = { IetfNetworkService.class, IetfNetworkTopologyService.class, IetfTeTopologyService.class }) -public class TeTopologyNbiManager - extends AbstractListenerManager - implements IetfNetworkService, IetfNetworkTopologyService, IetfTeTopologyService { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TeTopologyService teTopologyService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected YmsService ymsService; - - - /** - * Activation helper function. - */ - private void activateBasics() { - eventDispatcher.addSink(IetfTeTopologyEvent.class, listenerRegistry); - } - - /** - * Deactivation helper function. - */ - private void deactivateBasics() { - eventDispatcher.removeSink(IetfTeTopologyEvent.class); - } - - @Activate - protected void activate() { - activateBasics(); - - // Register 3 services with YMS. - ymsService.registerService(this, IetfNetworkService.class, null); - ymsService.registerService(this, IetfNetworkTopologyService.class, null); - ymsService.registerService(this, IetfTeTopologyService.class, null); - - // Listens to TE Topology events - teTopologyService.addListener(new InternalTeTopologyListener()); - - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - deactivateBasics(); - - // Unregister 3 services. - ymsService.unRegisterService(this, IetfNetworkService.class); - ymsService.unRegisterService(this, IetfNetworkTopologyService.class); - ymsService.unRegisterService(this, IetfTeTopologyService.class); - - teTopologyService.removeListener(new InternalTeTopologyListener()); - log.info("Stopped"); - } - - @Override - public IetfNetwork getIetfNetwork(IetfNetworkOpParam ietfNetwork) { - checkNotNull(ietfNetwork, "getIetfNetwork: ietfNetwork cannot be null"); - - // Get the entire data tree from TE Subsystem core. - org.onosproject.tetopology.management.api.Networks teNetworks = teTopologyService.networks(); - - // Build the sample networks for RESTCONF/YMS integration test -// org.onosproject.tetopology.management.api.Networks teNetworks = new DefaultNetworks(DefaultBuilder -// .sampleDomain1Networks()); - - // Convert the TE Subsystem core data into YANG Objects. - Networks networks = NetworkConverter - .teSubsystem2YangNetworks(teNetworks, OperationType.QUERY, - teTopologyService); - NetworksState networkStates = NetworkConverter.teSubsystem2YangNetworkStates(teNetworks, OperationType.QUERY); - - IetfNetworkOpParam.IetfNetworkBuilder builder = new IetfNetworkOpParam.IetfNetworkBuilder(); - IetfNetwork newNetwork = builder.networks(networks) - .networksState(networkStates) - .yangIetfNetworkOpType(OnosYangOpType.NONE) - .build(); - - // processSubtreeFiltering() filters the entire data tree based on the - // user's query and returns the filtered data. - IetfNetwork result = ietfNetwork.processSubtreeFiltering( - newNetwork, - false); - log.debug("result is: {}", result); - return result; - } - - @Override - public void setIetfNetwork(IetfNetworkOpParam ietfNetwork) { - // In H release, topology is discovered from south, no NBI Set is supported. - } - - @Override - public IetfTeTopology getIetfTeTopology(IetfTeTopologyOpParam ietfTeTopology) { - // unused method. - return ietfTeTopology; - } - - @Override - public void setIetfTeTopology(IetfTeTopologyOpParam ietfTeTopology) { - // unused methods. - } - - @Override - public IetfTeTopology getAugmentedIetfTeTopologyTeLinkEvent(IetfTeTopologyOpParam ietfTeTopology) { - // unused methods. - return ietfTeTopology; - } - - @Override - public void setAugmentedIetfTeTopologyTeLinkEvent(IetfTeTopologyOpParam augmentedIetfTeTopologyTeLinkEvent) { - // unused methods. - } - - @Override - public IetfNetworkTopology getIetfNetworkTopology(IetfNetworkTopologyOpParam ietfNetworkTopology) { - // unused methods. - return ietfNetworkTopology; - } - - @Override - public void setIetfNetworkTopology(IetfNetworkTopologyOpParam ietfNetworkTopology) { - // unused methods. - } - - @Override - public IetfNetwork getAugmentedIetfNetworkNetworks(IetfNetworkOpParam ietfNetwork) { - // unused methods. - return ietfNetwork; - } - - @Override - public void setAugmentedIetfNetworkNetworks(IetfNetworkOpParam augmentedIetfNetworkNetworks) { - // unused methods. - } - - private class InternalTeTopologyListener implements TeTopologyListener { - @Override - public void event(TeTopologyEvent event) { - IetfTeTopologyEvent yangEvent = NetworkConverter - .teTopoEvent2YangIetfTeTopoEvent(event, teTopologyService); - post(yangEvent); - } - } -} diff --git a/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/package-info.java b/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/package-info.java deleted file mode 100644 index 87c5e70a50..0000000000 --- a/apps/tenbi/topology/src/main/java/org/onosproject/tenbi/topology/impl/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * The implementations of IETF TE Topology YANG NBI. - */ -package org.onosproject.tenbi.topology.impl; diff --git a/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/TeTunnelNbiManager.java b/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/TeTunnelNbiManager.java deleted file mode 100644 index 4783d4a4ae..0000000000 --- a/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/TeTunnelNbiManager.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tenbi.tunnel; - -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.onosproject.event.AbstractListenerManager; -import org.onosproject.tetopology.management.api.TeTopology; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.TeTopologyService; -import org.onosproject.tetunnel.api.TeTunnelAdminService; -import org.onosproject.tetunnel.api.TeTunnelService; -import org.onosproject.tetunnel.api.tunnel.DefaultTeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTe; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTeOpParam; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTeService; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.IetfTeEvent; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.IetfTeEventListener; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.Tunnel; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.IetfTeTypes; -import org.onosproject.yms.ymsm.YmsService; -import org.slf4j.Logger; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Optional; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.tetopology.management.api.TeTopology.BIT_MERGED; -import static org.onosproject.teyang.utils.tunnel.TunnelConverter.buildIetfTeWithTunnels; -import static org.onosproject.teyang.utils.tunnel.TunnelConverter.te2YangTunnelConverter; -import static org.onosproject.teyang.utils.tunnel.TunnelConverter.yang2TeTunnel; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * The IETF TE Tunnel NBI Manager implementation. - */ -@Component(immediate = true, service = IetfTeService.class) -public class TeTunnelNbiManager - extends AbstractListenerManager - implements IetfTeService { - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected YmsService ymsService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TeTunnelService tunnelService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TeTopologyService toplogyService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TeTunnelAdminService tunnelAdminService; - - @Activate - protected void activate() { - ymsService.registerService(this, IetfTeService.class, null); - ymsService.registerService(null, IetfTeTypes.class, null); - log.info("started"); - } - - @Deactivate - protected void deactivate() { - ymsService.unRegisterService(this, IetfTeService.class); - ymsService.unRegisterService(null, IetfTeTypes.class); - log.info("stopped"); - } - - @Override - public IetfTe getIetfTe(IetfTeOpParam ietfTe) { - List tunnels = new ArrayList<>(); - Collection teTunnels = tunnelService.getTeTunnels(); - teTunnels.forEach(teTunnel -> { - Tunnel tunnel = te2YangTunnelConverter(teTunnel, false); - tunnels.add(tunnel); - }); - IetfTe newIetfTe = buildIetfTeWithTunnels(tunnels); - return ietfTe.processSubtreeFiltering(newIetfTe, false); - } - - @Override - public void setIetfTe(IetfTeOpParam ietfTe) { - checkNotNull(ietfTe, "Ietf te params should not be null"); - //FIXME use topology id configured by user - // for there is no topology id param in the definition of te tunnel - // we use the merged topology id as the default topology where we create - // the tunnel, need to talk with the ietf-te draft writer. - TeTopologyKey topologyKey = getTopologyKey(); - if (topologyKey == null) { - log.error("No usable topology now!"); - return; - } - - ietfTe.te().tunnels().tunnel().forEach(tunnel -> { - DefaultTeTunnel teTunnel = yang2TeTunnel(tunnel, topologyKey); - tunnelAdminService.createTeTunnel(teTunnel); - }); - } - - @Override - public void globalsRpc() { - - } - - @Override - public void interfacesRpc() { - - } - - @Override - public void tunnelsRpc() { - //TODO add implement for the te tunnel rpc - } - - private TeTopologyKey getTopologyKey() { - TeTopologyKey key = null; - Optional teTopology = toplogyService - .teTopologies() - .teTopologies() - .values() - .stream() - .filter(topology -> topology.flags().get(BIT_MERGED)) - .findFirst(); - if (teTopology.isPresent()) { - TeTopology topology = teTopology.get(); - key = topology.teTopologyId(); - } - return key; - } -} diff --git a/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/package-info.java b/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/package-info.java deleted file mode 100644 index ab2e59917e..0000000000 --- a/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * The implementations of IETF TE Tunnel YANG NBI. - */ -package org.onosproject.tenbi.tunnel; \ No newline at end of file diff --git a/apps/tenbi/tunnel/src/test/org/onosproject/tenbi/tunnel/TeTunnelNbiManagerTest.java b/apps/tenbi/tunnel/src/test/org/onosproject/tenbi/tunnel/TeTunnelNbiManagerTest.java deleted file mode 100644 index 8ad125abef..0000000000 --- a/apps/tenbi/tunnel/src/test/org/onosproject/tenbi/tunnel/TeTunnelNbiManagerTest.java +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tenbi.tunnel; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetunnel.api.TeTunnelAdminService; -import org.onosproject.tetunnel.api.TeTunnelService; -import org.onosproject.tetunnel.api.lsp.TeLsp; -import org.onosproject.tetunnel.api.lsp.TeLspKey; -import org.onosproject.tetunnel.api.tunnel.DefaultTeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; -import org.onosproject.tetunnel.api.tunnel.path.DefaultTePath; -import org.onosproject.tetunnel.api.tunnel.path.DefaultTeRouteUnnumberedLink; -import org.onosproject.tetunnel.api.tunnel.path.TePath; -import org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTe; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTeOpParam; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.DefaultTe; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.Te; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.Type; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.DefaultExplicit; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.explicit.DefaultExplicitRouteObjects; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.explicit.ExplicitRouteObjects; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.Config; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.DefaultConfig; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.DefaultPrimaryPaths; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.PrimaryPaths; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.State; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.DefaultTunnels; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.Tunnels; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.DefaultTunnel; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.Tunnel; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtUnprotected; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.RouteIncludeEro; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.StateUp; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelP2p; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.onosproject.tetunnel.api.tunnel.TeTunnel.LspProtectionType.LSP_PROT_REROUTE; -import static org.onosproject.tetunnel.api.tunnel.TeTunnel.Type.P2P; -import static org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject.Type.UNNUMBERED_LINK; - -/** - * Unit tests for TeTunnelNbiManager. - */ -public class TeTunnelNbiManagerTest { - private static final String TE_REQ_FAILED = "IETF TE reqeust failed: "; - private static final String NAME = "testTunnel"; - private IpAddress srcIp = IpAddress.fromString("1.1.1.1"); - private IpAddress dstIp = IpAddress.fromString("2.2.2.2"); - private byte[] bytes1 = new byte[]{1, 1, 1, 1, 0, 0, 0, 0}; - private byte[] bytes2 = new byte[]{2, 2, 2, 2, 0, 0, 0, 0}; - private long id1 = 16843009; - private long id2 = 33686018; - - - private TeTunnelNbiManager manager; - private TeTunnel testTeTunnel; - - - @Before - public void setUp() throws Exception { - manager = new TeTunnelNbiManager(); - } - - @Test - public void getIetfTe() throws Exception { - TeTunnelService tunnelService = createMock(TeTunnelService.class); - expect(tunnelService.getTeTunnels()) - .andReturn(ImmutableList.of(buildTunnel())) - .once(); - replay(tunnelService); - - manager.tunnelService = tunnelService; - - IetfTe ietfTe = manager.getIetfTe((IetfTeOpParam) buildGetIetfTeParams()); - - assertNotNull(TE_REQ_FAILED + "te null", ietfTe.te()); - assertNotNull(TE_REQ_FAILED + "tunnel null", ietfTe.te().tunnels()); - - List tunnelList = ietfTe.te().tunnels().tunnel(); - assertEquals(TE_REQ_FAILED + "wrong tunnel size", 1, tunnelList.size()); - - Tunnel tunnel = tunnelList.get(0); - List pathsList = tunnel.primaryPaths(); - assertNotNull(TE_REQ_FAILED + "path null", pathsList); - assertEquals(TE_REQ_FAILED + "wrong path size", 1, pathsList.size()); - - Type type = pathsList.get(0).state().type(); - assertTrue(TE_REQ_FAILED + "wrong path type", - type instanceof DefaultExplicit); - DefaultExplicit explicitPath = (DefaultExplicit) type; - List routeObjectses = - explicitPath.explicitRouteObjects(); - assertEquals(TE_REQ_FAILED + "wrong route size", 2, routeObjectses.size()); - - ExplicitRouteObjects routeObjects = routeObjectses.get(1); - assertTrue(TE_REQ_FAILED + "wrong route object type", - routeObjects.type() instanceof DefaultUnnumberedLink); - - DefaultUnnumberedLink link = (DefaultUnnumberedLink) routeObjects.type(); - assertEquals(TE_REQ_FAILED + "wrong route id", - IpAddress.fromString("0.0.0.2"), link.routerId()); - assertEquals(TE_REQ_FAILED + "wrong interface id", 2, link.interfaceId()); - - State state = tunnel.state(); - assertEquals(TE_REQ_FAILED + "wrong state", - StateUp.class, state.adminStatus()); - assertEquals(TE_REQ_FAILED + "wrong source", - IpAddress.fromString("0.0.0.1"), state.source()); - } - - @Test - public void setIetfTe() throws Exception { - manager.tunnelAdminService = new TestTunnelAdmin(); - manager.setIetfTe((IetfTeOpParam) buildPostIetfTeParams()); - assertEquals(NAME, testTeTunnel.name()); - List tePaths = testTeTunnel.primaryPaths(); - assertEquals(1, tePaths.size()); - TePath tePath = tePaths.get(0); - List teRouteSubobjects = tePath.explicitRoute(); - assertEquals(2, teRouteSubobjects.size()); - TeRouteSubobject routeSubobject = teRouteSubobjects.get(1); - assertEquals(UNNUMBERED_LINK, routeSubobject.type()); - DefaultTeRouteUnnumberedLink link = - (DefaultTeRouteUnnumberedLink) routeSubobject; - assertEquals(id2, link.node().teNodeId()); - assertEquals(id2, link.ttp().ttpId()); - - } - - private IetfTe buildGetIetfTeParams() { - Te te = new DefaultTe - .TeBuilder() - .yangTeOpType(IetfTe.OnosYangOpType.NONE) - .build(); - return new IetfTeOpParam - .IetfTeBuilder() - .te(te) - .yangIetfTeOpType(IetfTe.OnosYangOpType.NONE) - .build(); - } - - private IetfTe buildPostIetfTeParams() { - Tunnel tunnel = buildYangTunnel(); - Tunnels teTunnels = new DefaultTunnels - .TunnelsBuilder() - .tunnel(Lists.newArrayList(tunnel)) - .build(); - Te te = new DefaultTe - .TeBuilder() - .tunnels(teTunnels) - .yangTeOpType(IetfTe.OnosYangOpType.NONE) - .build(); - return new IetfTeOpParam - .IetfTeBuilder() - .te(te) - .yangIetfTeOpType(IetfTe.OnosYangOpType.NONE) - .build(); - } - - private Tunnel buildYangTunnel() { - TeTunnel teTunnel = buildTunnel(); - checkNotNull(teTunnel); - Config config = new DefaultConfig.ConfigBuilder() - .name(NAME) - .adminStatus(StateUp.class) - .source(srcIp) - .destination(dstIp) - .srcTpId(bytes1) - .dstTpId(bytes2) - .type(TunnelP2p.class) - .lspProtectionType(LspProtUnprotected.class) - .build(); - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types. - rev20160705.ietftetypes.explicitroutesubobject.type. - UnnumberedLink yangLink1 = DefaultUnnumberedLink.builder() - .routerId(srcIp) - .interfaceId(id1) - .build(); - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types. - rev20160705.ietftetypes.explicitroutesubobject.type. - UnnumberedLink yangLink2 = DefaultUnnumberedLink.builder() - .routerId(dstIp) - .interfaceId(id2) - .build(); - - ExplicitRouteObjects routeObject1 = DefaultExplicitRouteObjects.builder() - .type(yangLink1) - .explicitRouteUsage(RouteIncludeEro.class) - .build(); - - ExplicitRouteObjects routeObject2 = DefaultExplicitRouteObjects.builder() - .type(yangLink2) - .explicitRouteUsage(RouteIncludeEro.class) - .build(); - - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te. - rev20160705.ietfte.pathparamsconfig.type.Explicit explicit - = DefaultExplicit.builder() - .explicitRouteObjects(ImmutableList.of(routeObject1, routeObject2)) - .build(); - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te. - rev20160705.ietfte.p2pprimarypathparams.Config pathConfig - = org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf. - te.rev20160705.ietfte.p2pprimarypathparams.DefaultConfig.builder() - .pathNamedConstraint("onlyPath") - .lockdown(true) - .noCspf(true) - .type(explicit) - .build(); - - PrimaryPaths primaryPaths = DefaultPrimaryPaths.builder() - .config(pathConfig).build(); - - return DefaultTunnel.builder() - .name(config.name()) - .type(config.type()) - .config(config) - .primaryPaths(Lists.newArrayList(primaryPaths)) - .build(); - } - - private TeTunnel buildTunnel() { - TeTopologyKey topologyKey = new TeTopologyKey(1, 2, 3); - TeTunnelKey teTunnelKey = new TeTunnelKey(topologyKey, 1); - - TeNodeKey srcNodeKey = new TeNodeKey(topologyKey, 1); - TeNodeKey dstNodeKey = new TeNodeKey(topologyKey, 2); - - TtpKey srcTtpKey = new TtpKey(srcNodeKey, 1); - TtpKey dstTtpKey = new TtpKey(srcNodeKey, 2); - - TeLspKey lspKey = new TeLspKey(teTunnelKey, 1); - - DefaultTeRouteUnnumberedLink unnumberedLink1 = - new DefaultTeRouteUnnumberedLink(srcNodeKey, srcTtpKey); - DefaultTeRouteUnnumberedLink unnumberedLink2 = - new DefaultTeRouteUnnumberedLink(dstNodeKey, dstTtpKey); - List explicitRouteList = new ArrayList<>(); - - explicitRouteList.add(unnumberedLink1); - explicitRouteList.add(unnumberedLink2); - TePath tePath = new DefaultTePath(TePath.Type.EXPLICIT, - Lists.newArrayList(lspKey), - explicitRouteList, - Lists.newArrayList()); - - return DefaultTeTunnel.builder() - .teTunnelKey(teTunnelKey) - .name(NAME) - .type(P2P) - .adminState(TeTunnel.State.UP) - .srcNode(srcNodeKey) - .dstNode(dstNodeKey) - .srcTp(srcTtpKey) - .dstTp(dstTtpKey) - .lspProtectionType(LSP_PROT_REROUTE) - .primaryPaths(Lists.newArrayList(tePath)) - .build(); - } - - private class TestTunnelAdmin implements TeTunnelAdminService { - - @Override - public TunnelId createTeTunnel(TeTunnel teTunnel) { - TunnelId tunnelId = TunnelId.valueOf(teTunnel.teTunnelKey().toString()); - testTeTunnel = teTunnel; - return tunnelId; - } - - @Override - public void setTunnelId(TeTunnelKey teTunnelKey, TunnelId tunnelId) { - - } - - @Override - public void updateTeTunnel(TeTunnel teTunnel) { - - } - - @Override - public void updateTunnelState(TeTunnelKey key, org.onosproject.incubator.net.tunnel.Tunnel.State state) { - - } - - @Override - public void removeTeTunnel(TeTunnelKey teTunnelKey) { - - } - - @Override - public void removeTeTunnels() { - - } - - @Override - public void setSegmentTunnel(TeTunnelKey e2eTunnelKey, List segmentTunnels) { - - } - - @Override - public TeTunnel getTeTunnel(TeTunnelKey teTunnelKey) { - return null; - } - - @Override - public TeTunnel getTeTunnel(TunnelId tunnelId) { - return null; - } - - @Override - public TunnelId getTunnelId(TeTunnelKey teTunnelKey) { - return null; - } - - @Override - public Collection getTeTunnels() { - return null; - } - - @Override - public Collection getTeTunnels(TeTunnel.Type type) { - return null; - } - - @Override - public Collection getTeTunnels(TeTopologyKey teTopologyKey) { - return null; - } - - @Override - public TeLsp getTeLsp(TeLspKey key) { - return null; - } - - @Override - public Collection getTeLsps() { - return null; - } - } - -} \ No newline at end of file diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/OperationType.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/OperationType.java deleted file mode 100644 index 01f938f162..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/OperationType.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.teyang.api; - -/** - * The operation type. - */ -public enum OperationType { - - /** - * The configuration data identified by the element - * containing this attribute is merged with the configuration - * at the corresponding level in the configuration datastore. - */ - MERGE, - - /** - * The configuration data identified by the element - * containing this attribute replaces any related configuration - * in the configuration datastore. If no such configuration - * data exists in the configuration datastore, it is created. - */ - REPLACE, - - /** - * The configuration data identified by the element - * containing this attribute is added to the configuration if - * and only if the configuration data does not already exist in - * the configuration datastore. If the configuration data - * exists, an error is returned. - */ - CREATE, - - /** - * The configuration data identified by the element - * containing this attribute is deleted from the configuration - * if and only if the configuration data currently exists in - * the configuration datastore. If the configuration data does - * not exist, an error is returned". - */ - DELETE, - - /** - * The configuration data identified by the element - * containing this attribute is deleted from the configuration - * if the configuration data currently exists in the - * configuration datastore. If the configuration data does not - * exist, the "remove" operation is silently ignored by the - * server. - */ - REMOVE, - - /** - * The node is used as a containment node to reach the child node, - * There is no change in the data store for the values of this node in the - * edit request. - */ - NONE, - -// /** -// * The YANG based request is to edit a config node / subtree in the data -// * store. -// */ -// EDIT_CONFIG, -// -// /** -// * The YANG based request is to query a config node / subtree in the data -// * store. -// */ -// QUERY_CONFIG, -// - /** - * The YANG based request is to query a node / subtree in the data store. - */ - QUERY, - -// /** -// * The YANG based request is to execute an RPC defined in YANG. -// */ -// RPC, -// -// /** -// * The YANG based request is to execute an RPC defined in YANG. -// */ -// NOTIFICATION -} diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/package-info.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/package-info.java deleted file mode 100644 index 9b1161a8d1..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/api/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * The utility APIs. - */ -package org.onosproject.teyang.api; diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/EnumConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/EnumConverter.java deleted file mode 100644 index d98cade413..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/EnumConverter.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.teyang.utils.topology; - -import org.onosproject.tetopology.management.api.TeStatus; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeAdminStatus; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeOperStatus; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.teadminstatus.TeAdminStatusEnum; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.teoperstatus.TeOperStatusEnum; - -/** - * The Enum conversion functions. - */ -public final class EnumConverter { - - // no instantiation - private EnumConverter() { - } - - /** - * Converts YANG Operation Status Enum to TE Topology TeStatus Enum. - * - * @param opStatus YANG Operation Status - * @return the equivalent Enum from TE Topology TeStatus or null if not - * found - */ - public static TeStatus yang2TeSubsystemOpStatus(TeOperStatus opStatus) { - if (opStatus == null) { - return null; - } - - switch (opStatus.enumeration()) { - case DOWN: - return TeStatus.DOWN; - case UP: - return TeStatus.UP; - case MAINTENANCE: - return TeStatus.MAINTENANCE; - case PREPARING_MAINTENANCE: - return TeStatus.PREPARING_MAINTENANCE; - case TESTING: - return TeStatus.TESTING; - case UNKNOWN: - return TeStatus.UNKNOWN; - default: - return null; - } - } - - /** - * Converts YANG TeAdminStatus Enum to TE Topology TeStatus Enum. - * - * @param adminStatus YANG Admin Status - * @return the equivalent Enum from TE Topology TeStatus or null if not - * found - */ - public static TeStatus yang2TeSubsystemAdminStatus(TeAdminStatus adminStatus) { - if (adminStatus == null) { - return TeStatus.UNKNOWN; - } - - switch (adminStatus.enumeration()) { - case DOWN: - return TeStatus.DOWN; - case UP: - return TeStatus.UP; - case TESTING: - return TeStatus.TESTING; - case MAINTENANCE: - return TeStatus.MAINTENANCE; - case PREPARING_MAINTENANCE: - return TeStatus.PREPARING_MAINTENANCE; - default: - return TeStatus.UNKNOWN; - } - } - - /** - * Converts TE Topology TeStatus Enum to YANG TeAdminStatus Enum. - * - * @param adminStatus TE Topology admin status - * @return the equivalent Enum from YANG TeAdminStatus or null if not found - */ - public static TeAdminStatus teSubsystem2YangAdminStatus(TeStatus adminStatus) { - if (adminStatus == null) { - return null; - } - - switch (adminStatus) { - case DOWN: - return TeAdminStatus.of(TeAdminStatusEnum.DOWN); - case UP: - return TeAdminStatus.of(TeAdminStatusEnum.UP); - case TESTING: - return TeAdminStatus.of(TeAdminStatusEnum.TESTING); - case MAINTENANCE: - return TeAdminStatus.of(TeAdminStatusEnum.MAINTENANCE); - case PREPARING_MAINTENANCE: - return TeAdminStatus.of(TeAdminStatusEnum.PREPARING_MAINTENANCE); - case UNKNOWN: - return null; - default: - return null; - } - } - - /** - * Converts TE Topology TeStatus Enum to YANG TeOperStatus Enum. - * - * @param opStatus TE Topology operation status - * @return the equivalent Enum from YANG TeOperStatus or null if not found - */ - public static TeOperStatus teSubsystem2YangOperStatus(TeStatus opStatus) { - if (opStatus == null) { - return null; - } - - switch (opStatus) { - case DOWN: - return TeOperStatus.of(TeOperStatusEnum.DOWN); - case UP: - return TeOperStatus.of(TeOperStatusEnum.UP); - case TESTING: - return TeOperStatus.of(TeOperStatusEnum.TESTING); - case MAINTENANCE: - return TeOperStatus.of(TeOperStatusEnum.MAINTENANCE); - case PREPARING_MAINTENANCE: - return TeOperStatus.of(TeOperStatusEnum.PREPARING_MAINTENANCE); - case UNKNOWN: - return TeOperStatus.of(TeOperStatusEnum.UNKNOWN); - default: - return null; - } - } - -} \ No newline at end of file diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/LinkConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/LinkConverter.java deleted file mode 100644 index 31ebaa33b1..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/LinkConverter.java +++ /dev/null @@ -1,1147 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.teyang.utils.topology; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.tetopology.management.api.TeConstants.MAX_PRIORITY; - -import java.math.BigInteger; -import java.util.BitSet; -import java.util.List; - -import org.onlab.packet.Ip4Address; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.TeStatus; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.TeTopologyService; -import org.onosproject.tetopology.management.api.link.CommonLinkData; -import org.onosproject.tetopology.management.api.link.DefaultNetworkLink; -import org.onosproject.tetopology.management.api.link.DefaultTeLink; -import org.onosproject.tetopology.management.api.link.ElementType; -import org.onosproject.tetopology.management.api.link.ExternalLink; -import org.onosproject.tetopology.management.api.link.LinkBandwidth; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkEventSubject; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.PathElement; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkId; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpKey; -import org.onosproject.tetopology.management.api.link.TePathAttributes; -import org.onosproject.tetopology.management.api.link.TeTunnelId; -import org.onosproject.tetopology.management.api.link.TunnelProtectionType; -import org.onosproject.tetopology.management.api.link.UnderlayBackupPath; -import org.onosproject.tetopology.management.api.link.UnderlayPath; -import org.onosproject.tetopology.management.api.node.NodeTpKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TerminationPointKey; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworkId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.Networks; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NodeId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network.Node; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.LinkId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.TpId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology.networks.network.AugmentedNdNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.augmentedndnetwork.DefaultLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.augmentedndnetwork.DefaultLink.LinkBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.augmentedndnetwork.Link; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.augmentedndnetwork.link.DefaultDestination; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.augmentedndnetwork.link.DefaultSource; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.augmentedndnetwork.link.DefaultSupportingLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.augmentedndnetwork.link.Destination - .DestinationBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.augmentedndnetwork.link.Source.SourceBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.augmentedndnetwork.link.SupportingLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.augmentedndnetwork.link.SupportingLink - .SupportingLinkBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology.networks.network.node.AugmentedNdNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.DefaultTeLinkEvent; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeBandwidth; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeLinkEvent; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourceperlinkattributes.DefaultInformationSourceState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourceperlinkattributes.InformationSourceState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourceperlinkattributes.informationsourcestate.DefaultTopology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourceperlinkattributes.informationsourcestate.Topology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks.network.AugmentedNwNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.networks.network.link.AugmentedNtLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.networks.network.link.DefaultAugmentedNtLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.networks.network.link.DefaultAugmentedNtLink.AugmentedNtLinkBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks.network.node.AugmentedNwNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks.network.node.terminationpoint.AugmentedNtTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.DefaultTe; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.DefaultTe.TeBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.Config; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.DefaultConfig; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.DefaultConfig.ConfigBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.DefaultState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.DefaultState.StateBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkaugment.te.State; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.DefaultTeLinkAttributes; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.DefaultTeLinkAttributes.TeLinkAttributesBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.TeLinkAttributes; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.telinkattributes.DefaultExternalDomain; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.telinkattributes.DefaultExternalDomain.ExternalDomainBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.telinkattributes.DefaultUnderlay; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.telinkattributes.DefaultUnderlay.UnderlayBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconfigattributes.telinkattributes.ExternalDomain; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.DefaultTeSrlgs; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.DefaultTeSrlgs.TeSrlgsBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.DefaultUnreservedBandwidth; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.DefaultUnreservedBandwidth.UnreservedBandwidthBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.TeSrlgs; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.UnreservedBandwidth; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkinfoattributes.LinkProtectionTypeEnum; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.DefaultBackupPath; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.DefaultBackupPath.BackupPathBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.DefaultPrimaryPath; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.DefaultPrimaryPath.PrimaryPathBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.PrimaryPath; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.primarypath.DefaultPathElement; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.Srlg; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeNodeId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeOperStatus; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTopologyEventType; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTpId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink.UnnumberedLinkBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.UnnumberedLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.tetopologyeventtype.TeTopologyEventTypeEnum; - -import com.google.common.collect.Lists; - -/** - * The conversion functions. - */ -public final class LinkConverter { - private static final String E_NULL_TELINK_UNDERLAY_PATH = - "TeSubsystem link underlayPath object cannot be null"; - private static final String E_NULL_TELINK_DATA = - "TeSubsystem teLinkAttrBuilder data cannot be null"; - private static final String E_NULL_TELINK = - "TeSubsystem teLink object cannot be null"; - private static final String E_NULL_YANG_TELINK_CONFIG = - "YANG telink config object cannot be null"; - private static final String E_NULL_YANG_TELINK = - "YANG Link object cannot be null"; - - // no instantiation - private LinkConverter() { - } - - private static LinkProtectionTypeEnum teSubsystem2YangLinkProtectionType(TunnelProtectionType linkProtectionType) { - switch (linkProtectionType) { - case ENHANCED: - return LinkProtectionTypeEnum.ENHANCED; - case EXTRA_TRAFFIC: - return LinkProtectionTypeEnum.EXTRA_TRAFFIC; - case SHARED: - return LinkProtectionTypeEnum.SHARED; - case UNPROTECTED: - return LinkProtectionTypeEnum.UNPROTECTED; - case ONE_FOR_ONE: - return LinkProtectionTypeEnum.YANGAUTOPREFIX1_FOR_1; - case ONE_PLUS_ONE: - return LinkProtectionTypeEnum.YANGAUTOPREFIX1_PLUS_1; - default: - return null; - } - } - /** - * TE Link Config object conversion from TE Topology subsystem to YANG. - * - * @param teLink TE link object - * @return TE Link Config YANG object - */ - private static Config teLink2YangConfig(TeLink teLink, TeTopologyService teTopologyService) { - checkNotNull(teLink, E_NULL_TELINK_DATA); - - TeLinkAttributesBuilder attrBuilder = DefaultTeLinkAttributes.builder(); - - if (teLink.teLinkKey() != null) { - // what is link index? for now I used teLinkTpId - attrBuilder = attrBuilder.linkIndex(BigInteger.valueOf(teLink.teLinkKey().teLinkTpId())); - } - - if (teLink.adminStatus() != null) { - attrBuilder = attrBuilder.adminStatus(EnumConverter.teSubsystem2YangAdminStatus(teLink.adminStatus())); - } - - if (teLink.tunnelProtectionType() != null) { - attrBuilder = attrBuilder - .linkProtectionType(teSubsystem2YangLinkProtectionType(teLink - .tunnelProtectionType())); - } - - attrBuilder = attrBuilder.teDefaultMetric(teLink.cost()); - - if (teLink.srlgs() != null) { - TeSrlgsBuilder teSrlgsBuilder = DefaultTeSrlgs.builder(); - for (Long srlgLongVal : teLink.srlgs()) { - teSrlgsBuilder = teSrlgsBuilder.addToValue(new Srlg(srlgLongVal)); - } - attrBuilder = attrBuilder.teSrlgs(teSrlgsBuilder.build()); - } - attrBuilder = attrBuilder.isAbstract(teLink.flags().get(TeNode.BIT_ABSTRACT)); - - if (teLink.externalLink() != null) { - ExternalDomainBuilder edBuilder = - DefaultExternalDomain.builder(); - if (teLink.externalLink().plugId() != null) { - edBuilder.plugId(teLink.externalLink().plugId()); - } - if (teLink.externalLink().externalLinkKey() != null) { - edBuilder = edBuilder - .remoteTeLinkTpId(TeTpId.fromString(String.valueOf(teLink - .externalLink() - .externalLinkKey() - .teLinkTpId()))) - .remoteTeNodeId(TeNodeId.fromString(String.valueOf(teLink - .externalLink() - .externalLinkKey() - .teNodeId()))); - } - attrBuilder = attrBuilder.externalDomain(edBuilder.build()); - } - - if (teLink.availBandwidth() != null) { - for (short i = 0; i < teLink.availBandwidth().length; i++) { - UnreservedBandwidthBuilder urBuilder = - DefaultUnreservedBandwidth.builder() - .bandwidth(TeBandwidth.fromString(String - .valueOf(teLink.availBandwidth()[i]))) - .priority(i); - attrBuilder = attrBuilder.addToUnreservedBandwidth(urBuilder.build()); - } - } - - if (teLink.maxBandwidth() != null) { - // maxBandwidth is an array of float[], but in yang is just a big decimal - attrBuilder = attrBuilder.maxLinkBandwidth(TeBandwidth - .fromString(String.valueOf(teLink.maxBandwidth()[0]))); - } - // FIXME: how to retrieve maxResvLinkBandwidth from teLink -// if (teLink.maxResvLinkBandwidth() != null) { -// attrBuilder = attrBuilder.maxResvLinkBandwidth(teLink.maxResvLinkBandwidth()); -// } - - if (teLink.primaryPath() != null || teLink.backupPaths() != null) { - UnderlayBuilder builder = DefaultUnderlay.builder(); - if (teLink.primaryPath() != null) { - // TODO: what is underlayProtectionType in tePath? - // builder = - // builder.underlayProtectionType(tePath.protectionType()); - builder = te2YangConfigUnderlayPrimaryPath(builder, teLink, - teTopologyService); - } - - if (teLink.backupPaths() != null) { - builder = te2YangConfigUnderlayBackupPaths(builder, teLink, - teTopologyService); - } - - attrBuilder = attrBuilder.underlay(builder.build()); - } - - - ConfigBuilder yangConfigBuilder = DefaultConfig.builder() - .teLinkAttributes(attrBuilder.build()); - return yangConfigBuilder.build(); - } - - /** - * TE Link State object conversion from TE Topology subsystem to YANG. - * - * @param teLink TE link object - * @param teTopologyService TE Topology Service object - * @return TE Link State YANG object - */ - private static State teLink2YangState(TeLink teLink, TeTopologyService teTopologyService) { - TeLinkAttributes - .TeLinkAttributesBuilder attrBuilder = - DefaultTeLinkAttributes - .builder() - .teDefaultMetric(teLink.cost()) - .isAbstract(teLink.flags().get(TeLink.BIT_ABSTRACT)); - if (teLink.teLinkKey() != null) { - // what is link index? for now I used teLinkTpId - attrBuilder = attrBuilder.linkIndex(BigInteger.valueOf(teLink.teLinkKey().teLinkTpId())); - } - - if (teLink.adminStatus() != null) { - attrBuilder = attrBuilder.adminStatus(EnumConverter.teSubsystem2YangAdminStatus(teLink.adminStatus())); - } - if (teLink.tunnelProtectionType() != null) { - attrBuilder = attrBuilder - .linkProtectionType(teSubsystem2YangLinkProtectionType(teLink - .tunnelProtectionType())); - } - if (teLink.maxBandwidth() != null) { - // maxBandwidth is an array of float[], but in yang is just a big decimal - attrBuilder = attrBuilder.maxLinkBandwidth(TeBandwidth - .fromString(String.valueOf(teLink.maxBandwidth()[0]))); - } -// if (teLink.maxResvLinkBandwidth() != null) { -// attrBuilder = attrBuilder.maxResvLinkBandwidth(teLink.maxResvLinkBandwidth()); -// } - if (teLink.srlgs() != null) { - TeSrlgs.TeSrlgsBuilder srlgsBuilder = DefaultTeSrlgs.builder(); - for (Long srlgLongVal : teLink.srlgs()) { - srlgsBuilder = srlgsBuilder.addToValue(new Srlg(srlgLongVal)); - } - attrBuilder = attrBuilder.teSrlgs(srlgsBuilder.build()); - } - - if (teLink.externalLink() != null) { - ExternalDomain.ExternalDomainBuilder edBuilder = DefaultExternalDomain - .builder(); - if (teLink.externalLink().plugId() != null) { - edBuilder = edBuilder.plugId(teLink.externalLink().plugId()); - } - if (teLink.externalLink().externalLinkKey() != null) { - edBuilder = edBuilder - .remoteTeLinkTpId(TeTpId.fromString(String.valueOf(teLink - .externalLink() - .externalLinkKey() - .teLinkTpId()))) - .remoteTeNodeId(TeNodeId.fromString(String.valueOf(teLink - .externalLink() - .externalLinkKey() - .teNodeId()))); - } - attrBuilder = attrBuilder.externalDomain(edBuilder.build()); - - } - - if (teLink.availBandwidth() != null) { - short i = 0; - for (float f : teLink.availBandwidth()) { - UnreservedBandwidth.UnreservedBandwidthBuilder urBuilder = DefaultUnreservedBandwidth - .builder() - .bandwidth(TeBandwidth.fromString(String.valueOf(f))) - .priority(i); - i++; - attrBuilder = attrBuilder.addToUnreservedBandwidth(urBuilder.build()); - } - } - - StateBuilder yangStateBuilder = DefaultState.builder() - .teLinkAttributes(attrBuilder.build()); - if (teLink.opStatus() != null) { - yangStateBuilder = yangStateBuilder.operStatus(EnumConverter - .teSubsystem2YangOperStatus(teLink.opStatus())); - } - - if (teLink.sourceTeLinkId() != null) { - InformationSourceState.InformationSourceStateBuilder issBuilder = DefaultInformationSourceState.builder(); - - Topology.TopologyBuilder topologyBuilder = DefaultTopology.builder(); - topologyBuilder = topologyBuilder - .linkRef(teTopologyService.linkKey(teLink.sourceTeLinkId()) - .linkId()) - .networkRef(teTopologyService - .linkKey(teLink.sourceTeLinkId()).networkId()); - - issBuilder = issBuilder.topology(topologyBuilder.build()); - yangStateBuilder.informationSourceState(issBuilder.build()); - } - - // Once stateDerived underlay is available in yang and core TE Topology - // object model, set the value properly - // stateDerivedUnderlay = org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology - // .rev20170110.ietftetopology.telinkstatederived.Underlay - //yangStateBuilder = yangStateBuilder.underlay(stateDerivedUnderlay); - - return yangStateBuilder.build(); - } - - /** - * Link object conversion from TE Topology subsystem to YANG. - * - * @param teSubsNetworkLink TE subsystem link object - * @param teTopologyService TE Topology Service object - * @return YANG link object - */ - public static Link teSubsystem2YangLink( - org.onosproject.tetopology.management.api.link.NetworkLink teSubsNetworkLink, - TeTopologyService teTopologyService) { - checkNotNull(teSubsNetworkLink, E_NULL_TELINK); - - LinkId linkId = LinkId.fromString(teSubsNetworkLink.linkId().toString()); - LinkBuilder builder = DefaultLink.builder().linkId(linkId); - if (teSubsNetworkLink.supportingLinkIds() != null) { - List slinks = Lists.newArrayList(); - SupportingLinkBuilder spLinkBuilder = DefaultSupportingLink.builder(); - for (NetworkLinkKey linkKey : teSubsNetworkLink.supportingLinkIds()) { - slinks.add(spLinkBuilder.networkRef(NetworkId.fromString( - linkKey.networkId().toString())) - .linkRef(LinkId.fromString( - linkKey.linkId().toString())) - .build()); - } - builder = builder.supportingLink(slinks); - } - if (teSubsNetworkLink.source() != null) { - SourceBuilder sourceBuilder = DefaultSource - .builder() - .sourceNode(NodeId.fromString( - teSubsNetworkLink.source().nodeId().toString())) - .sourceTp(TpId.fromString( - teSubsNetworkLink.source().tpId().toString())); - builder = builder.source(sourceBuilder.build()); - } - if (teSubsNetworkLink.destination() != null) { - DestinationBuilder destBuilder = DefaultDestination - .builder() - .destNode(NodeId.fromString( - teSubsNetworkLink.destination().nodeId().toString())) - .destTp(TpId.fromString( - teSubsNetworkLink.destination().tpId().toString())); - builder = builder.destination(destBuilder.build()); - } - - if (teSubsNetworkLink.teLink() != null) { - TeLink teData = teSubsNetworkLink.teLink(); - TeBuilder yangTeBuilder = DefaultTe.builder() - .config(teLink2YangConfig(teData, teTopologyService)) - .state(teLink2YangState(teData, teTopologyService)); - - AugmentedNtLinkBuilder linkAugmentBuilder = - DefaultAugmentedNtLink.builder() - .te(yangTeBuilder.build()); - builder.addYangAugmentedInfo(linkAugmentBuilder.build(), AugmentedNtLink.class); - } - - return builder.build(); - } - - private static UnderlayBuilder te2YangConfigUnderlayPrimaryPath( - UnderlayBuilder yangBuilder, - TeLink teLink, TeTopologyService teTopologyService) { - - org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath tePath = teLink.primaryPath(); - - PrimaryPathBuilder pathBuilder = DefaultPrimaryPath.builder(); - if (tePath.pathElements() != null) { - for (PathElement pathElementTe : tePath.pathElements()) { - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.telinkunderlayattributes.primarypath.PathElement - .PathElementBuilder pathElementYangBuilder = DefaultPathElement.builder(); - - pathElementYangBuilder = pathElementYangBuilder.pathElementId(pathElementTe.pathElementId()); - //TODO: check more types here - if (pathElementTe.type() instanceof TeLinkId) { - UnnumberedLinkBuilder unmBuilder = DefaultUnnumberedLink.builder() - .routerId(IpAddress.fromString( - Ip4Address.valueOf((int) pathElementTe.teNodeId()).toString())) - .interfaceId(((TeLinkId) pathElementTe.type()).value()); - pathElementYangBuilder = pathElementYangBuilder.type(unmBuilder.build()); - } - - pathBuilder = pathBuilder.addToPathElement(pathElementYangBuilder.build()); - } - } - - pathBuilder = pathBuilder.networkRef(teTopologyService - .networkId(teLink.underlayTeTopologyId())); - - return yangBuilder.primaryPath(pathBuilder.build()); - } - - private static UnderlayBuilder te2YangConfigUnderlayBackupPaths(UnderlayBuilder yangBuilder, - TeLink teLink, - TeTopologyService teTopologyService) { - List tePaths = teLink.backupPaths(); - - for (UnderlayBackupPath tePath : tePaths) { - BackupPathBuilder pathBuilder = DefaultBackupPath - .builder(); - pathBuilder = pathBuilder.index(tePath.index()); - - pathBuilder = pathBuilder.networkRef(teTopologyService - .networkId(teLink.underlayTeTopologyId())); - - for (PathElement backupPathElementTe : tePath.pathElements()) { - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.telinkunderlayattributes.backuppath.PathElement - .PathElementBuilder elementBuilder = - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.telinkunderlayattributes.backuppath.DefaultPathElement - .builder(); - - elementBuilder = elementBuilder.pathElementId(backupPathElementTe.pathElementId()); - //TODO: check more types here - if (backupPathElementTe.type() instanceof TeLinkId) { - UnnumberedLinkBuilder unmBuilder = DefaultUnnumberedLink.builder() - .routerId(IpAddress.fromString( - Ip4Address.valueOf((int) backupPathElementTe.teNodeId()).toString())) - .interfaceId(((TeLinkId) backupPathElementTe.type()).value()); - elementBuilder = elementBuilder.type(unmBuilder.build()); - } - - pathBuilder = pathBuilder.addToPathElement(elementBuilder.build()); - } - yangBuilder = yangBuilder.addToBackupPath(pathBuilder.build()); - } - - return yangBuilder; - } - - private static TeLink yang2TeLinkAttributes(TeLinkAttributes yangLinkAttr, - State opState, Link yangLink, - Network yangNetwork, - Networks yangNetworks) { - TeNodeId teNodeId = findTeNodeId(yangNetwork, - yangLink.source().sourceNode()); - long teNodeIdLong = -1; - if (teNodeId != null && teNodeId.dottedQuad() != null) { - teNodeIdLong = Ip4Address.valueOf(teNodeId.dottedQuad().string()) - .toInt(); - } - - TeLinkTpKey teLinkKey = new TeLinkTpKey(teNodeIdLong, - findTeTpId(yangNetwork, - yangLink.source().sourceNode(), - yangLink.source().sourceTp())); - - TeNodeId teNodeIdDest = null; - if (yangLink.destination() != null) { - teNodeIdDest = findTeNodeId(yangNetwork, - yangLink.destination().destNode()); - } - long teNodeIdDestLong = -1; - if (teNodeIdDest != null && teNodeIdDest.dottedQuad() != null) { - teNodeIdDestLong = Ip4Address.valueOf(teNodeIdDest.dottedQuad().string()).toInt(); - } - - TeLinkTpKey peerTeLinkKey = null; - if (yangLink.destination() != null) { - peerTeLinkKey = new TeLinkTpKey(teNodeIdDestLong, - findTeTpId(yangNetwork, - yangLink.destination().destNode(), - yangLink.destination().destTp())); - } - - TeLinkTpGlobalKey supportTeLinkId = findSupportTeLinkId(yangNetworks, yangLink); - - org.onosproject.tetopology.management.api.TeStatus opStatus = null; - if (opState != null && opState.operStatus() != null) { - opStatus = EnumConverter.yang2TeSubsystemOpStatus(opState.operStatus()); - } - - TeTopologyKey underlayTopologyId = null; - if (yangLinkAttr != null && yangLinkAttr.underlay() != null && yangLinkAttr.underlay().primaryPath() != null) { - underlayTopologyId = findTopologyId(yangNetworks, yangLinkAttr.underlay().primaryPath().networkRef()); - } - - TeLink teLink = yangLinkAttr2TeLinkAttributes(yangLinkAttr, opStatus, - teNodeIdLong, - teNodeIdDestLong, - teLinkKey, - peerTeLinkKey, - supportTeLinkId, - underlayTopologyId); - - return teLink; - } - - /** - * Finds the TE TopologyKey from yangNetworks and a networkRef. - * - * @param yangNetworks YANG networks object - * @param networkRef YANG network reference - * @return TeTopologyKey the TE TopologyKey - */ - public static TeTopologyKey findTopologyId(Networks yangNetworks, Object networkRef) { - if (networkRef == null) { - return null; - } - NetworkId networkId = NetworkId.fromString((String) networkRef); - - TeTopologyKey topologyId = null; - Network targetTeNetwork = null; - if (yangNetworks.network() != null - && !yangNetworks.network().isEmpty() && networkId != null) { - for (Network ynetItem : yangNetworks.network()) { - if (ynetItem.networkId() != null) { - if (ynetItem.networkId().equals(networkId)) { - targetTeNetwork = ynetItem; - break; - } - } - } - } - if (targetTeNetwork != null && targetTeNetwork - .yangAugmentedInfo(AugmentedNwNetwork.class) != null) { - AugmentedNwNetwork augmentTeIds = (AugmentedNwNetwork) targetTeNetwork - .yangAugmentedInfo(AugmentedNwNetwork.class); - topologyId = new TeTopologyKey(augmentTeIds.providerId().uint32(), - augmentTeIds.clientId().uint32(), - Long.valueOf(augmentTeIds.teTopologyId().string())); - } - return topologyId; - } - - private static TeLink yangLinkAttr2TeLinkAttributes(TeLinkAttributes yangLinkAtrr, - org.onosproject.tetopology.management.api.TeStatus opStatus, - long teNodeIdLong, - long teNodeIdDestLong, - TeLinkTpKey teLinkKey, - TeLinkTpKey peerTeLinkKey, - TeLinkTpGlobalKey supportTeLinkId, - TeTopologyKey underlayTopologyId) { - org.onosproject.tetopology.management.api.TeStatus adminStatus = null; - - TeLinkTpGlobalKey sourceTeLinkId = null; // from yang to core, we can ignore sourceTeLinkId - - CommonLinkData teData = null; - - if (yangLinkAtrr.adminStatus() != null) { - adminStatus = EnumConverter.yang2TeSubsystemAdminStatus(yangLinkAtrr.adminStatus()); - } - - BitSet flags = new BitSet(); - if (yangLinkAtrr.isAbstract()) { - flags.set(TeLink.BIT_ABSTRACT); - } - - ExternalLink externalLink = null; - if (yangLinkAtrr != null && yangLinkAtrr.externalDomain() != null) { - externalLink = new ExternalLink(null, yangLinkAtrr.externalDomain().plugId()); - } - - UnderlayPath underlayPath = null; - underlayPath = yang2TeSubsystemUnderlayPath(yangLinkAtrr, teNodeIdLong, - teNodeIdDestLong); - Long adminGroup = null; - if (yangLinkAtrr != null && yangLinkAtrr.administrativeGroup() != null) { - adminGroup = Long.valueOf(yangLinkAtrr.administrativeGroup().toString()); - } - List interLayerLocks = null; // FIXME: how to find interLayerLocks? - - List listOfUnreservedBandwidth = yangLinkAtrr.unreservedBandwidth(); - float[] availBandwidth = new float[MAX_PRIORITY + 1]; - for (UnreservedBandwidth urbw : listOfUnreservedBandwidth) { - availBandwidth[urbw.priority()] = Float.valueOf(urbw.bandwidth().string()); - } - - float[] maxBandwidth = new float[MAX_PRIORITY + 1]; - if (yangLinkAtrr.maxLinkBandwidth() != null) { - // Core TE has an array, but YANG is an integer - for (short p = 0; p <= MAX_PRIORITY; p++) { - maxBandwidth[p] = Float.valueOf(yangLinkAtrr.maxLinkBandwidth().string()); - } - } - - float[] maxAvailLspBandwidth = availBandwidth; // FIXME: how to find this? - float[] minAvailLspBandwidth = availBandwidth; // FIXME: how to find this? - LinkBandwidth bandwidth = new LinkBandwidth( - maxBandwidth, - availBandwidth, - maxAvailLspBandwidth, - minAvailLspBandwidth, - null); // FIXME: how to find odu resource? - List srlgs = Lists.newArrayList(); - if (yangLinkAtrr.teSrlgs() != null - && yangLinkAtrr.teSrlgs().value() != null - && !yangLinkAtrr.teSrlgs().value().isEmpty()) { - for (Srlg srlg : yangLinkAtrr.teSrlgs().value()) { - srlgs.add(srlg.uint32()); - } - } - TePathAttributes teAttributes = - new TePathAttributes(yangLinkAtrr.teDefaultMetric(), yangLinkAtrr.teDelayMetric(), - srlgs); - teData = new CommonLinkData(adminStatus, - opStatus, - flags, - null, // switchingLayer - null, // encodingLayer - externalLink, - underlayPath, - teAttributes, - adminGroup, - interLayerLocks, - bandwidth); - - TeLink te = new DefaultTeLink(teLinkKey, peerTeLinkKey, - underlayTopologyId, supportTeLinkId, - sourceTeLinkId, teData); - return te; - } - - private static TeLinkTpGlobalKey findSupportTeLinkId(Networks yangNetworks, - Link yangLink) { - Network teNetworkFound = null; - LinkId teLinkIdFound = null; - TeLinkTpGlobalKey supportTeLinkId = null; - - if (yangLink != null && yangLink.supportingLink() != null && !yangLink.supportingLink().isEmpty()) { - if (yangNetworks.network() != null && !yangNetworks.network().isEmpty()) { - for (Network ynetItem : yangNetworks.network()) { - if (ynetItem.networkId() != null) { - if (ynetItem.networkId().equals(yangLink.supportingLink().get(0).networkRef())) { - teNetworkFound = ynetItem; - teLinkIdFound = yangLink.supportingLink().get(0).linkRef(); - break; - } - } - } - } - Link teLinkFound = null; - if (teNetworkFound.yangAugmentedInfo(AugmentedNdNetwork.class) != null) { - AugmentedNdNetwork augmentLink = - (AugmentedNdNetwork) teNetworkFound.yangAugmentedInfo(AugmentedNdNetwork.class); - for (Link link : augmentLink.link()) { - if (link.linkId().equals(teLinkIdFound)) { - teLinkFound = link; - break; - } - } - } - - if (teLinkFound != null) { - TeNodeId teSupportNodeId = findTeNodeId(teNetworkFound, - teLinkFound.source().sourceNode()); - long tenIdLong = -1; - if (teSupportNodeId != null) { - tenIdLong = Ip4Address.valueOf(teSupportNodeId.dottedQuad().string()).toInt(); - } - long teSupportLinkTpId = findTeTpId(teNetworkFound, - teLinkFound.source().sourceNode(), - teLinkFound.source().sourceTp()); - - org.onosproject.tetopology.management.api.TeTopologyId teTopologyId = null; - if (teNetworkFound.yangAugmentedInfo(AugmentedNwNetwork.class) != null) { - AugmentedNwNetwork augmentTeIds = - (AugmentedNwNetwork) teNetworkFound.yangAugmentedInfo(AugmentedNwNetwork.class); - teTopologyId = - new org.onosproject.tetopology.management.api.TeTopologyId( - augmentTeIds.clientId().uint32(), - augmentTeIds.providerId().uint32(), - augmentTeIds.teTopologyId().string()); - } - - supportTeLinkId = new TeLinkTpGlobalKey(teTopologyId.providerId(), - teTopologyId.clientId(), - Long.valueOf(teTopologyId - .topologyId()), - tenIdLong, teSupportLinkTpId); - } - } - - return supportTeLinkId; - } - - /** - * Finds TeNodeId from a yangNetwork and yangNodeId. - * - * @param yangNetwork YANG network object - * @param yangNodeId YANG node Id - * @return teNodeId teNodeId - */ - public static TeNodeId findTeNodeId(Network yangNetwork, NodeId yangNodeId) { - TeNodeId teNodeId = null; - for (Node node : yangNetwork.node()) { - if (node.nodeId().equals(yangNodeId)) { - if (node.yangAugmentedInfoMap() != null - && !node.yangAugmentedInfoMap().isEmpty()) { - AugmentedNwNode yangNodeAugment = (AugmentedNwNode) node - .yangAugmentedInfo(AugmentedNwNode.class); - if (yangNodeAugment != null - && yangNodeAugment.teNodeId() != null) { - teNodeId = yangNodeAugment.teNodeId(); - } - } - } - } - return teNodeId; - } - - private static long findTeTpId(Network yangNetwork, NodeId yangNodeId, TpId yangTpId) { - long teTpId = 0; - for (Node node : yangNetwork.node()) { - if (node.nodeId().equals(yangNodeId)) { - if (node.yangAugmentedInfoMap() != null - && !node.yangAugmentedInfoMap().isEmpty()) { - - AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) node - .yangAugmentedInfo(AugmentedNdNode.class); - if (yangTpNodeAugment.terminationPoint() != null) { - for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology - .rev20151208.ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint - yangTpnode : yangTpNodeAugment.terminationPoint()) { - if (yangTpnode.tpId().equals(yangTpId)) { - if (yangTpnode.yangAugmentedInfoMap() != null - && !yangTpnode.yangAugmentedInfoMap() - .isEmpty()) { - AugmentedNtTerminationPoint yangTpAugment = - (AugmentedNtTerminationPoint) yangTpnode - .yangAugmentedInfo(AugmentedNtTerminationPoint.class); - if (yangTpAugment.teTpId() != null) { - teTpId = Long.valueOf(yangTpAugment.teTpId().toString()); - } - } - } - } - } - } - } - } - return teTpId; - } - /** - * Link object conversion from YANG to TE Topology subsystem. - * - * @param yangLink YANG link - * @param yangNetwork YANG network - * @param yangNetworks YANG networks - * @return TE subsystem link - */ - public static org.onosproject.tetopology.management.api.link.NetworkLink - yang2TeSubsystemLink(Link yangLink, Network yangNetwork, - Networks yangNetworks) { - NetworkId networkId = yangNetwork.networkId(); - checkNotNull(yangLink, E_NULL_YANG_TELINK); - - KeyId linkId = KeyId.keyId(yangLink.linkId().uri().toString()); - NodeTpKey sourceNodeTpKey = null; - NodeTpKey destinationNodeTpKey = null; - List spLinkIds = null; - TeLink te = null; - - if (yangLink.supportingLink() != null) { - spLinkIds = Lists.newArrayList(); - for (SupportingLink yangSpLink : yangLink.supportingLink()) { - NetworkLinkKey linkKey = new NetworkLinkKey(KeyId.keyId(yangSpLink.networkRef().uri().toString()), - KeyId.keyId(yangSpLink.linkRef().uri().toString())); - spLinkIds.add(linkKey); - } - } - - if (yangLink.source() != null) { - TerminationPointKey source = new TerminationPointKey( - KeyId.keyId(networkId.uri().toString()), - KeyId.keyId(yangLink.source().sourceNode().uri().toString()), - KeyId.keyId(yangLink.source().sourceTp().uri().toString())); - sourceNodeTpKey = new NodeTpKey(source.nodeId(), source.tpId()); - } - - if (yangLink.destination() != null) { - TerminationPointKey destination = new TerminationPointKey( - KeyId.keyId(networkId.uri().toString()), - KeyId.keyId(yangLink.destination().destNode().uri().toString()), - KeyId.keyId(yangLink.destination().destTp().uri().toString())); - destinationNodeTpKey = new NodeTpKey(destination.nodeId(), destination.tpId()); - } - - if (yangLink.yangAugmentedInfoMap() != null && !yangLink.yangAugmentedInfoMap().isEmpty()) { - - AugmentedNtLink yangLinkAugment = - (AugmentedNtLink) yangLink.yangAugmentedInfo(AugmentedNtLink.class); - if (yangLinkAugment != null && - yangLinkAugment.te() != null && - yangLinkAugment.te().config() != null) { - TeLinkAttributes yangLinkAtrr = - yangLinkAugment.te().config().teLinkAttributes(); - if (yangLinkAtrr != null && yangLinkAtrr.linkIndex() != null) { - te = yang2TeLinkAttributes(yangLinkAtrr, - yangLinkAugment.te().state(), - yangLink, yangNetwork, - yangNetworks); - } - } - } - - org.onosproject.tetopology.management.api.link.DefaultNetworkLink link = - new DefaultNetworkLink(linkId, - sourceNodeTpKey, - destinationNodeTpKey, - spLinkIds, - te); - return link; - } - - private static org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath - yang2TeSubsystemUnderlayPrimaryPath(PrimaryPath yangpath, - long teNodeId) { - org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath teUnderlayPrimaryPath = null; - - List pathElementList = Lists.newArrayList(); - for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .telinkunderlayattributes.primarypath. - PathElement pathElementYang : yangpath.pathElement()) { - - long nodeId = 0; - ElementType type = null; - // TODO: check more types - if (pathElementYang.type() instanceof UnnumberedLink) { - nodeId = Long.valueOf(((UnnumberedLink) pathElementYang.type()).routerId().toString()); - type = new TeLinkId(((UnnumberedLink) pathElementYang.type()).interfaceId()); - } - PathElement tePathElement = new PathElement(pathElementYang.pathElementId(), - nodeId, - type, - false); // FIXME: how to find the proper value for loose? - pathElementList.add(tePathElement); - } - - teUnderlayPrimaryPath = new org.onosproject.tetopology.management.api.link. - UnderlayPrimaryPath(pathElementList, false); // FIXME: how to find the proper value for loose? - - return teUnderlayPrimaryPath; - } - - private static List - yang2TeSubsystemUnderlayBackupPaths( - List yangpaths, - long teNodeId) { - - List underlayBackupPathsList = Lists.newArrayList(); - for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.telinkunderlayattributes. - BackupPath yangConfig : yangpaths) { - UnderlayBackupPath ubp = null; - List backupPathElementList = Lists.newArrayList(); - long nodeId = 0; - ElementType type = null; - for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .telinkunderlayattributes.backuppath. - PathElement backupYang : yangConfig.pathElement()) { - // TODO: check more types - if (backupYang.type() instanceof UnnumberedLink) { - nodeId = Long.valueOf(((UnnumberedLink) backupYang.type()).routerId().toString()); - type = new TeLinkId(((UnnumberedLink) backupYang.type()).interfaceId()); - } - PathElement tePathElementBackup = new PathElement(backupYang.pathElementId(), - nodeId, - type, - false); - backupPathElementList.add(tePathElementBackup); - } - ubp = new UnderlayBackupPath(yangConfig.index(), - backupPathElementList, - null); // FIXME: find the proper value for loose - underlayBackupPathsList.add(ubp); - } - - return underlayBackupPathsList; - } - - /** - * TE Link underlay path Config object conversion from YANG to TE Topology subsystem. - * - * @param yangLinkAtrr YANG link Config YANG object - * @return teSubsystem TE underlay path object - */ - private static org.onosproject.tetopology.management.api.link.UnderlayPath - yang2TeSubsystemUnderlayPath(TeLinkAttributes yangLinkAtrr, long srcTeNodeId, long dstTeNodeId) { - - checkNotNull(yangLinkAtrr, E_NULL_YANG_TELINK_CONFIG); - - org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath underlayPrimaryPath = null; - List underlayBackupPathsList = null; - TeTunnelId teTunnelId = new TeTunnelId(srcTeNodeId, dstTeNodeId, 0); // FIXME: how to find teTunnelId? - - if (yangLinkAtrr.underlay() != null && yangLinkAtrr.underlay().primaryPath() != null) { - underlayPrimaryPath = - yang2TeSubsystemUnderlayPrimaryPath(yangLinkAtrr.underlay().primaryPath(), srcTeNodeId); - } - - if (yangLinkAtrr.underlay() != null && yangLinkAtrr.underlay().backupPath() != null) { - underlayBackupPathsList = - yang2TeSubsystemUnderlayBackupPaths(yangLinkAtrr.underlay().backupPath(), srcTeNodeId); - } - - org.onosproject.tetopology.management.api.link.UnderlayPath teUnderlay = null; - if (yangLinkAtrr.underlay() != null) { - teUnderlay = new org.onosproject.tetopology.management.api.link. - UnderlayPath(underlayPrimaryPath, - underlayBackupPathsList, - TunnelProtectionType.of(yangLinkAtrr.underlay().protectionType()), - (Long) yangLinkAtrr.underlay().tunnelSrc().tunnelTpRef(), // null safe? - (Long) yangLinkAtrr.underlay().tunnelDes().tunnelTpRef(), // null safe? - teTunnelId); - } - - return teUnderlay; - } - - /** - * Converts a TE Topology link event from the data format used in - * the core to its corresponding YANG Object (YO) format. - * - * @param eventType Link event type - * @param linkData TE Topology link event data - * @param teTopologyService TE Topology Service object - * @return YANG Object converted from linkData - */ - public static TeLinkEvent teNetworkLink2yangTeLinkEvent(TeTopologyEventTypeEnum eventType, - NetworkLinkEventSubject linkData, - TeTopologyService teTopologyService) { - checkNotNull(linkData); - TeLinkEvent.TeLinkEventBuilder teLinkEventBuilder = new DefaultTeLinkEvent.TeLinkEventBuilder(); - - TeTopologyEventType yangEventType = new TeTopologyEventType(eventType); - teLinkEventBuilder.eventType(yangEventType); - NetworkId networkId = NetworkId.fromString(linkData.key().networkId().toString()); - teLinkEventBuilder.networkRef(networkId); - LinkId linkId = LinkId.fromString(linkData.key().linkId().toString()); - teLinkEventBuilder.linkRef(linkId); - - if (linkData != null && linkData.networkLink() != null) { - NetworkLink link = linkData.networkLink(); - State yangTeLinkState = teLink2YangState(link.teLink(), teTopologyService); - - teLinkEventBuilder.operStatus(yangTeLinkState.operStatus()); - teLinkEventBuilder.informationSource(yangTeLinkState.informationSource()); - teLinkEventBuilder.informationSourceEntry(yangTeLinkState.informationSourceEntry()); - teLinkEventBuilder.informationSourceState(yangTeLinkState.informationSourceState()); - teLinkEventBuilder.isTransitional(yangTeLinkState.isTransitional()); - teLinkEventBuilder.recovery(yangTeLinkState.recovery()); - teLinkEventBuilder.teLinkAttributes(yangTeLinkState.teLinkAttributes()); - teLinkEventBuilder.underlay(yangTeLinkState.underlay()); - } - - return teLinkEventBuilder.build(); - } - - /** - * Retrieves the TE network link key from a given YANG network link - * notification event. - * - * @param yangLinkEvent YANG network link notification - * @return TE network link key - */ - public static NetworkLinkKey yangLinkEvent2NetworkLinkKey(TeLinkEvent yangLinkEvent) { - NetworkId networkRef = NetworkId.fromString(yangLinkEvent.networkRef().toString()); - LinkId linkRef = LinkId.fromString(yangLinkEvent.linkRef().toString()); - KeyId networkId = KeyId.keyId(networkRef.uri().toString()); - KeyId linkId = KeyId.keyId(linkRef.uri().toString()); - - NetworkLinkKey networkLinkKey = new NetworkLinkKey(networkId, linkId); - - return networkLinkKey; - - } - - /** - * Converts a YANG network link notification event into a TE network link. - * - * @param yangLinkEvent YANG network link notification - * @param teTopologyService TE Topology service used to help the conversion - * @return TE network link - */ - public static NetworkLink yangLinkEvent2NetworkLink(TeLinkEvent yangLinkEvent, - TeTopologyService teTopologyService) { - - KeyId linkId = yangLinkEvent2NetworkLinkKey(yangLinkEvent).linkId(); - - org.onosproject.tetopology.management.api. - Network network = teTopologyService.network( - yangLinkEvent2NetworkLinkKey(yangLinkEvent).networkId()); - if (network == null) { - return null; - } - - NetworkLink networkLink = network.link(linkId); - if (networkLink == null) { - return null; - } - - NodeTpKey sourceTp = networkLink.source(); - if (sourceTp == null) { - return null; - } - NodeTpKey destTp = networkLink.destination(); - - List supportingLinkIds = networkLink.supportingLinkIds(); - TeLink teLink = networkLink.teLink(); - if (teLink == null) { - return null; - } - - TeOperStatus opState = yangLinkEvent.operStatus(); - org.onosproject.tetopology.management.api. - TeStatus opStatus = EnumConverter.yang2TeSubsystemOpStatus(opState); - - TeLink updatedTeLink = yangLinkEvent2TeLinkAttributes(yangLinkEvent, - teLink, opStatus, teTopologyService); - - - NetworkLink updatedNetworkLink = new DefaultNetworkLink(linkId, sourceTp, destTp, supportingLinkIds, - updatedTeLink); - - return updatedNetworkLink; - } - - private static TeLink yangLinkEvent2TeLinkAttributes(TeLinkEvent yangLinkEvent, TeLink oldTeLink, TeStatus - opStatus, TeTopologyService teTopologyService) { - - TeLinkAttributes yangTeLinkAttrs = yangLinkEvent.teLinkAttributes(); - - TeLinkTpKey teLinkKey = oldTeLink.teLinkKey(); - - long teNodeIdDest = 0; - long teNodeIdSrc = 0; - - TeLinkTpGlobalKey supportTeLinkId = oldTeLink.supportingTeLinkId(); - TeLinkTpKey peerTeLinkKey = oldTeLink.peerTeLinkKey(); - - TeTopologyKey underlayTopologyId = null; - KeyId networkRef = null; - if (yangTeLinkAttrs.underlay() != null && - yangTeLinkAttrs.underlay().primaryPath() != null && - yangTeLinkAttrs.underlay().primaryPath().networkRef() != null) { - networkRef = (KeyId) yangTeLinkAttrs.underlay().primaryPath().networkRef(); - } - - if (networkRef != null && teTopologyService.network(networkRef) != null - && teTopologyService.network(networkRef).teTopologyId() != null) { - long clientId = teTopologyService.network(networkRef).teTopologyId().clientId(); - long providerId = teTopologyService.network(networkRef).teTopologyId().providerId(); - long topologyId = Long.valueOf(teTopologyService.network(networkRef).teTopologyId().topologyId()); - underlayTopologyId = new TeTopologyKey(providerId, clientId, topologyId); - } - - TeLink updatedTeLink = yangLinkAttr2TeLinkAttributes(yangTeLinkAttrs, opStatus, teNodeIdSrc, teNodeIdDest, - teLinkKey, - peerTeLinkKey, - supportTeLinkId, - underlayTopologyId); - - return updatedTeLink; - } -} diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NetworkConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NetworkConverter.java deleted file mode 100644 index 86df3ce2f5..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NetworkConverter.java +++ /dev/null @@ -1,645 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.teyang.utils.topology; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; -import static org.onosproject.tetopology.management.api.OptimizationType.NOT_OPTIMIZED; - -import java.util.List; -import java.util.Map; - -import org.onosproject.net.DeviceId; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.TeTopologyEvent; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.TeTopologyService; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkEventSubject; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeEventSubject; -import org.onosproject.teyang.api.OperationType; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetwork.OnosYangOpType; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.DefaultNetworks; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork - .DefaultNetworksState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworkId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.Networks; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworksState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks - .DefaultNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network - .NetworkBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network - .DefaultNetworkTypes; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network - .DefaultSupportingNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network - .DefaultSupportingNetwork.SupportingNetworkBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network - .NetworkTypes; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network - .Node; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network - .SupportingNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology - .networks.network.AugmentedNdNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology - .networks.network.DefaultAugmentedNdNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology - .networks.network.DefaultAugmentedNdNetwork.AugmentedNdNetworkBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology - .networks.network.augmentedndnetwork.Link; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .IetfTeTopologyEvent; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.IetfTeTopologyEventSubject; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeLinkEvent; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeNodeEvent; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks - .network.AugmentedNwNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks - .network.DefaultAugmentedNwNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks - .network.networktypes.AugmentedNwNetworkTypes; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks - .network.networktypes.DefaultAugmentedNwNetworkTypes; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .tetopologyaugment.DefaultTe; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .tetopologyaugment.Te; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tetopologyaugment.te.Config; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tetopologyaugment.te.DefaultConfig; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .tetopologytype.DefaultTeTopology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .tetopologytype.TeTopology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.Cost; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.Delay; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.NotOptimized; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeGlobalId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeOptimizationCriterion; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTopologyId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.tetopologyeventtype.TeTopologyEventTypeEnum; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - - -/** - * Networks, Networks State conversion functions. - */ -public final class NetworkConverter { - private static final String - E_NULL_TE_NETWORKS = "TeSubsystem networks cannot be null"; - private static final String - E_NULL_TE_NETWORK_LIST = "TeSubsystem network list cannot be null"; - private static final String - E_NULL_TE_NETWORK = "TeSubsystem network cannot be null"; - private static final String - E_NULL_TE_NETWORKID = "TeSubsystem networkId cannot be null"; - private static final String - E_NULL_YANG_NETWORKS = "YANG networks cannot be null"; - private static final String - E_NULL_YANG_NETWORK_LIST = "YANG network list cannot be null"; - private static final String - E_NULL_YANG_NETWORK = "YANG network cannot be null"; - private static final String - E_NULL_YANG_NETWORKID = "YANG networkId cannot be null"; - private static final String - E_NULL_YANG_NETWORKSSTATE = "YANG networksState cannot be null"; - private static final String - E_DIFF_YANG_NETWORKID = "YANG networkId must be same in Network and NetworkState"; - private static final String - E_NULL_YANG_NETWORKSSTATE_NETWORK = "YANG networksState network cannot be null"; - private static final String - E_NULL_YANG_NETWORKSSTATE_NETWORKREF = "YANG networksState networkRef cannot be null"; - - private static final Logger log = LoggerFactory.getLogger(NetworkConverter.class); - - // no instantiation - private NetworkConverter() { - } - - private static OnosYangOpType toNetworksOperationType(OperationType operation) { - switch (operation) { - case CREATE: - return OnosYangOpType.CREATE; - - case DELETE: - return OnosYangOpType.DELETE; - - case REMOVE: - return OnosYangOpType.REMOVE; - - case MERGE: - return OnosYangOpType.MERGE; - - case REPLACE: - return OnosYangOpType.REPLACE; - - default: - return OnosYangOpType.NONE; - } - } - - /** - * Networks object conversion from TE Topology subsystem to YANG. - * - * @param teSubsystem TE Topology subsystem networks object - * @param operation operation type - * @param teTopologyService teTopology core service - * @return Networks YANG object - */ - public static Networks teSubsystem2YangNetworks( - org.onosproject.tetopology.management.api.Networks teSubsystem, - OperationType operation, - TeTopologyService teTopologyService) { - checkNotNull(teSubsystem, E_NULL_TE_NETWORKS); - checkNotNull(teSubsystem.networks(), E_NULL_TE_NETWORK_LIST); - Networks.NetworksBuilder builder = - DefaultNetworks.builder() - .yangNetworksOpType(toNetworksOperationType(operation)); - List networks = Lists.newArrayList(); - for (org.onosproject.tetopology.management.api.Network teNetwork : teSubsystem.networks()) { - networks.add(teSubsystem2YangNetwork(teNetwork, operation, - teTopologyService)); - } - builder.network(networks); - return builder.build(); - } - - /** - * Network States object conversion from TE Topology subsystem to YANG. - * - * @param teSubsystem TE Topology subsystem networks object - * @param operation operation type - * @return NetworkStates YANG object - */ - public static NetworksState teSubsystem2YangNetworkStates( - org.onosproject.tetopology.management.api.Networks teSubsystem, - OperationType operation) { - checkNotNull(teSubsystem, "teSubsystem object cannot be null"); - checkNotNull(teSubsystem.networks(), "TeSubsystem Networks object cannot be null"); - NetworksState.NetworksStateBuilder builder = - DefaultNetworksState.builder() - .yangNetworksStateOpType(toNetworksOperationType(operation)); - List networks = Lists.newArrayList(); - for (org.onosproject.tetopology.management.api.Network teNetwork : teSubsystem.networks()) { - networks.add(teSubsystem2YangNetworkState(teNetwork, operation)); - } - builder.network(networks); - return builder.build(); - } - - private static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208 - .ietfnetwork.networksstate.Network networkStateNetwork(Network network, - NetworksState yangNetworkStates) { - checkNotNull(network, "YANG Network object cannot be null"); - checkNotNull(yangNetworkStates, "YANG NetworksState object cannot be null"); - if (yangNetworkStates.network() == null) { - return null; - } - - for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208 - .ietfnetwork.networksstate.Network stateNetwork : yangNetworkStates.network()) { - if (stateNetwork.networkRef().equals(network.networkId())) { - return stateNetwork; - } - } - return null; - } - - /** - * Networks object conversion from YANG to TE Topology subsystem. - * - * @param yangNetworks Networks YANG object - * @param yangNetworkStates NetworkStates YANG object - * @param deviceId the device Id - * @return teSubsystem TE Topology subsystem networks object - */ - public static org.onosproject.tetopology.management.api.Networks yang2TeSubsystemNetworks( - Networks yangNetworks, NetworksState yangNetworkStates, DeviceId deviceId) { - checkNotNull(yangNetworks, E_NULL_YANG_NETWORKS); - checkNotNull(yangNetworks.network(), E_NULL_YANG_NETWORK_LIST); - checkNotNull(yangNetworkStates, E_NULL_YANG_NETWORKSSTATE); - - List networks = Lists.newArrayList(); - for (Network network : yangNetworks.network()) { - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208 - .ietfnetwork.networksstate.Network stateNetwork = - networkStateNetwork(network, yangNetworkStates); - org.onosproject.tetopology.management.api.Network teNetwork; - if (stateNetwork == null) { - log.info("networkId {} can't be found in yangNetworkStates", - network.networkId()); - teNetwork = yang2TeSubsystemNetwork(network, yangNetworks, deviceId); - } else { - teNetwork = yang2TeSubsystemNetwork(network, stateNetwork, yangNetworks, deviceId); - } - networks.add(teNetwork); - } - - org.onosproject.tetopology.management.api.DefaultNetworks defaultNetworks = - new org.onosproject.tetopology.management.api.DefaultNetworks(networks); - return defaultNetworks; - } - - private static NetworkBuilder te2YangSupportingNetwork(NetworkBuilder builder, - List teSpptNetworkIds) { - List snws = Lists.newArrayList(); - SupportingNetworkBuilder spNetworkBuilder = DefaultSupportingNetwork.builder(); - for (KeyId teSpNwKey : teSpptNetworkIds) { - snws.add(spNetworkBuilder - .networkRef(NetworkId.fromString(teSpNwKey.toString())) - .build()); - } - return builder.supportingNetwork(snws); - } - - private static NetworkBuilder te2YangNodes(NetworkBuilder builder, - Map teNodes, - TeTopologyService teTopologyService, - TeTopologyKey teTopologyKey) { - List nodeList = Lists.newArrayList(); - - for (org.onosproject.tetopology.management.api.node.NetworkNode node : teNodes.values()) { - nodeList.add(NodeConverter.teSubsystem2YangNode(node, - teTopologyService, - teTopologyKey)); - } - return builder.node(nodeList); - } - - private static NetworkBuilder te2YangLinks(NetworkBuilder builder, - Map teLinks, - TeTopologyService teTopologyService) { - List linkList = Lists.newArrayList(); - - for (org.onosproject.tetopology.management.api.link.NetworkLink link : teLinks.values()) { - linkList.add(LinkConverter.teSubsystem2YangLink(link, teTopologyService)); - } - AugmentedNdNetworkBuilder ndAugment = DefaultAugmentedNdNetwork.builder(); - ndAugment.link(linkList); - builder.addYangAugmentedInfo(ndAugment.build(), AugmentedNdNetwork.class); - return builder; - } - - private static NetworkBuilder te2YangNetworkType(NetworkBuilder builder, - org.onosproject.tetopology.management.api.TeTopologyId - teTopologyId) { - NetworkTypes.NetworkTypesBuilder nwType = DefaultNetworkTypes.builder(); - if (teTopologyId != null) { - // Set "te-topology" network type. - TeTopology.TeTopologyBuilder teTopology = DefaultTeTopology.builder(); - AugmentedNwNetworkTypes.AugmentedNwNetworkTypesBuilder teNwType = - DefaultAugmentedNwNetworkTypes.builder(); - teNwType.teTopology(teTopology.build()); - nwType.addYangAugmentedInfo(teNwType.build(), AugmentedNwNetworkTypes.class); - } - return builder.networkTypes(nwType.build()); - } - - private static NetworkBuilder te2YangTopologyIds(NetworkBuilder builder, - org.onosproject.tetopology.management.api - .TeTopologyId teTopologyId, - TeTopologyService teTopologyService, - KeyId networkKeyId) { - - //teBuilder. //OPTIMIZATIONCRITERION for Config/State - Te.TeBuilder teBuilder = DefaultTe.builder(); - Config.ConfigBuilder configBuilder = DefaultConfig.builder(); - org.onosproject.tetopology.management.api.Network nt = teTopologyService.network(networkKeyId); - TeTopologyKey teTopoKey = new TeTopologyKey(nt.teTopologyId().providerId(), - nt.teTopologyId().clientId(), - Long.valueOf(nt.teTopologyId().topologyId())); - switch (teTopologyService.teTopology(teTopoKey).optimization()) { - case LEAST_COST: - configBuilder = configBuilder.optimizationCriterion(Cost.class); - break; - case SHORTEST_DELAY: - configBuilder = configBuilder.optimizationCriterion(Delay.class); - break; - case NOT_OPTIMIZED: - configBuilder = configBuilder.optimizationCriterion(NotOptimized.class); - break; - default: - configBuilder = configBuilder.optimizationCriterion(TeOptimizationCriterion.class); - break; - } - - teBuilder = teBuilder.config(configBuilder.build()); - - AugmentedNwNetwork.AugmentedNwNetworkBuilder nwAugment = DefaultAugmentedNwNetwork - .builder(); - nwAugment.clientId(new TeGlobalId(teTopologyId.clientId())); - nwAugment.providerId(new TeGlobalId(teTopologyId.providerId())); - if (teTopologyId.topologyId() != null) { - nwAugment.teTopologyId(new TeTopologyId(teTopologyId.topologyId())); - } - nwAugment.te(teBuilder.build()); - builder.addYangAugmentedInfo(nwAugment.build(), - AugmentedNwNetwork.class); - return builder; - } - - /** - * Network object conversion from TE Topology subsystem to YANG. - * - * @param teSubsystem TE Topology subsystem network object - * @param operation operation type - * @param teTopologyService teTopology core service - * @return Network YANG object - */ - public static Network teSubsystem2YangNetwork( - org.onosproject.tetopology.management.api.Network teSubsystem, - OperationType operation, - TeTopologyService teTopologyService) { - checkNotNull(teSubsystem, E_NULL_TE_NETWORK); - checkNotNull(teSubsystem.networkId(), E_NULL_TE_NETWORKID); - - // Generate a network builder with the specific networkId. - NetworkId networkId = NetworkId.fromString(teSubsystem.networkId().toString()); - NetworkBuilder builder = DefaultNetwork.builder() - .yangNetworkOpType( - toNetworksOperationType(operation)) - .networkId(networkId); - - // Supporting networks - if (teSubsystem.supportingNetworkIds() != null) { - builder = te2YangSupportingNetwork(builder, teSubsystem.supportingNetworkIds()); - } - - // Nodes - if (teSubsystem.nodes() != null) { - org.onosproject.tetopology.management.api.Network nt = teTopologyService.network(teSubsystem.networkId()); - TeTopologyKey teTopoKey = new TeTopologyKey(nt.teTopologyId().providerId(), - nt.teTopologyId().clientId(), - Long.valueOf(nt.teTopologyId().topologyId())); - builder = te2YangNodes(builder, teSubsystem.nodes(), - teTopologyService, - teTopoKey); - } - - // Network types - builder = te2YangNetworkType(builder, teSubsystem.teTopologyId()); - - // Add links - link is the augmentation - if (teSubsystem.links() != null) { - builder = te2YangLinks(builder, teSubsystem.links(), teTopologyService); - } - - // TE Topology IDs - if (teSubsystem.teTopologyId() != null) { - builder = te2YangTopologyIds(builder, teSubsystem.teTopologyId(), - teTopologyService, - teSubsystem.networkId()); - } - - return builder.build(); - } - - /** - * Network State object conversion from TE Topology subsystem to YANG. - * - * @param teSubsystem TE Topology subsystem network object - * @param operation operation type - * @return Network YANG object - */ - public static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network - .rev20151208.ietfnetwork.networksstate.Network - teSubsystem2YangNetworkState( - org.onosproject.tetopology.management.api.Network teSubsystem, - OperationType operation) { - checkNotNull(teSubsystem, E_NULL_TE_NETWORK); - checkNotNull(teSubsystem.networkId(), E_NULL_TE_NETWORKID); - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208 - .ietfnetwork.networksstate.Network.NetworkBuilder stateBuilder = - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208 - .ietfnetwork.networksstate.DefaultNetwork.builder(); - - if (teSubsystem.networkId() != null) { - stateBuilder.networkRef(NetworkId.fromString(teSubsystem.networkId().toString())); - } - stateBuilder.serverProvided(teSubsystem.isServerProvided()); - - // Operation type may be required. - return stateBuilder.build(); - } - - - /** - * Network conversion from YANG to TE Topology subsystem. - * - * @param yangNetwork Network YANG object - * @param yangNetworkState NetworkState YANG object - * @param yangNetworks Networks YANG object - * @return TE Topology subsystem defaultNetwork object - */ - private static org.onosproject.tetopology.management.api.DefaultNetwork yang2TeDefaultNetwork( - Network yangNetwork, - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns. - yang.ietf.network.rev20151208.ietfnetwork.networksstate. - Network yangNetworkState, - Networks yangNetworks, DeviceId deviceId) { - checkNotNull(yangNetwork, E_NULL_YANG_NETWORK); - checkNotNull(yangNetwork.networkId(), E_NULL_YANG_NETWORKID); - String networkId = yangNetwork.networkId().uri().string(); - - KeyId networkKeyId = KeyId.keyId(networkId); - List supportingNetworkIds = null; - Map teNodes = null; - Map teLinks = null; - org.onosproject.tetopology.management.api.TeTopologyId teTopologyId = null; - boolean serverProvided = false; - - // Supporting networks - if (yangNetwork.supportingNetwork() != null) { - supportingNetworkIds = Lists.newArrayList(); - for (SupportingNetwork supportNw : yangNetwork.supportingNetwork()) { - supportingNetworkIds.add( - KeyId.keyId(supportNw.networkRef().uri().string())); - } - } - - // Nodes - if (yangNetwork.node() != null) { - teNodes = Maps.newHashMap(); - for (Node node : yangNetwork.node()) { - // Convert the Yang Node to a TE node. - teNodes.put(KeyId.keyId(node.nodeId().uri().string()), - NodeConverter.yang2TeSubsystemNode(node, yangNetwork, yangNetworks)); - } - } - - // Links - if (yangNetwork.yangAugmentedInfo(AugmentedNdNetwork.class) != null) { - AugmentedNdNetwork augmentLink = - (AugmentedNdNetwork) yangNetwork.yangAugmentedInfo(AugmentedNdNetwork.class); - teLinks = Maps.newHashMap(); - for (Link link : augmentLink.link()) { - // Convert the Yang Link to a TE link. - teLinks.put(KeyId.keyId(link.linkId().uri().string()), - LinkConverter.yang2TeSubsystemLink(link, yangNetwork, yangNetworks)); - } - } - - // TE Topology Ids - if (yangNetwork.yangAugmentedInfo(AugmentedNwNetwork.class) != null) { - AugmentedNwNetwork augmentTeIds = - (AugmentedNwNetwork) yangNetwork.yangAugmentedInfo(AugmentedNwNetwork.class); - teTopologyId = - new org.onosproject.tetopology.management.api.TeTopologyId( - augmentTeIds.providerId().uint32(), - augmentTeIds.clientId().uint32(), - augmentTeIds.teTopologyId().string()); - } - - if (yangNetworkState != null) { - serverProvided = yangNetworkState.serverProvided(); - } - - org.onosproject.tetopology.management.api.DefaultNetwork network = - new org.onosproject.tetopology.management.api.DefaultNetwork(networkKeyId, supportingNetworkIds, - teNodes, teLinks, teTopologyId, - serverProvided, - deviceId, - NOT_OPTIMIZED); - return network; - } - - /** - * Network object conversion from YANG to TE Topology subsystem. - * - * @param yangNetwork Network YANG object - * @param yangNetworks Networks YANG object - * @param deviceId The identifier of RESTCONF server device - * @return network TE Topology subsystem networks object - */ - public static org.onosproject.tetopology.management.api.Network yang2TeSubsystemNetwork(Network yangNetwork, - Networks yangNetworks, - DeviceId deviceId) { - return yang2TeDefaultNetwork(yangNetwork, null, yangNetworks, deviceId); - } - - /** - * Network and State object conversion from YANG to TE Topology subsystem. - * - * @param yangNetwork Network YANG object - * @param yangNetworkState NetworkState YANG object - * @param yangNetworks Networks YANG object - * @param deviceId The identifier of RESTCONF server device - * @return teSubsystem TE Topology subsystem networks object - */ - public static org.onosproject.tetopology.management.api.Network yang2TeSubsystemNetwork(Network yangNetwork, - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork - .networksstate.Network yangNetworkState, Networks yangNetworks, DeviceId deviceId) { - checkNotNull(yangNetworkState, E_NULL_YANG_NETWORKSSTATE_NETWORK); - checkNotNull(yangNetworkState.networkRef(), E_NULL_YANG_NETWORKSSTATE_NETWORKREF); - - org.onosproject.tetopology.management.api.DefaultNetwork teNetwork = - yang2TeDefaultNetwork(yangNetwork, yangNetworkState, yangNetworks, deviceId); - - String networkref = yangNetworkState.networkRef().toString(); - checkState(teNetwork.networkId().toString().equals(networkref), - E_DIFF_YANG_NETWORKID); - - return teNetwork; - } - - /** - * Converts a TE Topology event from the data format used in core to its - * corresponding YANG Object (YO) format. - * - * @param event TE Topology event from the core - * @param teTopologyService TE Topology Service object - * @return YANG Object converted from event - */ - public static IetfTeTopologyEvent teTopoEvent2YangIetfTeTopoEvent(TeTopologyEvent event, - TeTopologyService teTopologyService) { - IetfTeTopologyEvent yangEvent = null; - IetfTeTopologyEventSubject eventSubject = new IetfTeTopologyEventSubject(); - - IetfTeTopologyEvent.Type yangEventType = teTopoEventType2YangIetfTopoEventType(event.type()); - if (yangEventType == IetfTeTopologyEvent.Type.TE_LINK_EVENT) { - NetworkLinkEventSubject eventData = (NetworkLinkEventSubject) event.subject(); - TeTopologyEventTypeEnum linkEventType = teTopoEventType2YangTeTopoEventType(event.type()); - TeLinkEvent yangLinkEvent = LinkConverter - .teNetworkLink2yangTeLinkEvent(linkEventType, eventData, teTopologyService); - eventSubject.teLinkEvent(yangLinkEvent); - yangEvent = new IetfTeTopologyEvent(IetfTeTopologyEvent.Type.TE_LINK_EVENT, eventSubject); - } else if (yangEventType == IetfTeTopologyEvent.Type.TE_NODE_EVENT) { - NetworkNodeEventSubject eventData = (NetworkNodeEventSubject) event.subject(); - TeTopologyEventTypeEnum nodeEventType = teTopoEventType2YangTeTopoEventType(event.type()); - TeNodeEvent yangNodeEvent = NodeConverter.teNetworkNode2yangTeNodeEvent(nodeEventType, eventData); - eventSubject.teNodeEvent(yangNodeEvent); - yangEvent = new IetfTeTopologyEvent(IetfTeTopologyEvent.Type.TE_NODE_EVENT, eventSubject); - } - - return yangEvent; - } - - private static IetfTeTopologyEvent.Type teTopoEventType2YangIetfTopoEventType(TeTopologyEvent.Type type) { - IetfTeTopologyEvent.Type returnType = null; - - switch (type) { - case LINK_ADDED: - case LINK_REMOVED: - case LINK_UPDATED: - returnType = IetfTeTopologyEvent.Type.TE_LINK_EVENT; - break; - case NODE_ADDED: - case NODE_REMOVED: - case NODE_UPDATED: - returnType = IetfTeTopologyEvent.Type.TE_NODE_EVENT; - break; - default: - log.warn("teTopoEventType2YangIetfTopoEventType: unknown type: {}", type); - } - - return returnType; - } - - private static TeTopologyEventTypeEnum teTopoEventType2YangTeTopoEventType(TeTopologyEvent.Type type) { - TeTopologyEventTypeEnum returnType = null; - - switch (type) { - case LINK_ADDED: - case NODE_ADDED: - returnType = TeTopologyEventTypeEnum.ADD; - break; - case LINK_REMOVED: - case NODE_REMOVED: - returnType = TeTopologyEventTypeEnum.REMOVE; - break; - case LINK_UPDATED: - case NODE_UPDATED: - returnType = TeTopologyEventTypeEnum.UPDATE; - break; - default: - log.warn("teTopoEventType2YangteTopoEventType: unsupported type: {}", type); - break; - } - - return returnType; - } -} - - diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java deleted file mode 100644 index 4a2e87f225..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java +++ /dev/null @@ -1,1173 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.teyang.utils.topology; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.BitSet; -import java.util.List; -import java.util.Map; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.MapUtils; -import org.onlab.packet.Ip4Address; -import org.onosproject.tetopology.management.api.EncodingType; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.SwitchingType; -import org.onosproject.tetopology.management.api.TeConstants; -import org.onosproject.tetopology.management.api.TeStatus; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.TeTopologyService; -import org.onosproject.tetopology.management.api.link.ElementType; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.TeIpv4; -import org.onosproject.tetopology.management.api.link.TeLinkId; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.link.TePathAttributes; -import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath; -import org.onosproject.tetopology.management.api.node.CommonNodeData; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrix; -import org.onosproject.tetopology.management.api.node.DefaultNetworkNode; -import org.onosproject.tetopology.management.api.node.DefaultTeNode; -import org.onosproject.tetopology.management.api.node.LocalLinkConnectivity; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeEventSubject; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TerminationPoint; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.DomainName; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworkId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.Networks; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NodeId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208 - .ietfnetwork.networks.network.DefaultNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208 - .ietfnetwork.networks.network.Node; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208 - .ietfnetwork.networks.network.node.DefaultSupportingNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208 - .ietfnetwork.networks.network.node.SupportingNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.node.AugmentedNdNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.node.DefaultAugmentedNdNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.DefaultTeNodeEvent; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeNodeEvent; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.connectivitymatrixentryattributes.DefaultUnderlay; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.connectivitymatrixentryattributes.Underlay; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.DefaultInformationSourceState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.InformationSourceState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.informationsourcestate.DefaultTopology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.informationsourcestate.Topology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.networks.network.node.AugmentedNwNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.networks.network.node.DefaultAugmentedNwNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks.network.node.terminationpoint.AugmentedNtTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.DefaultTeSrlgs; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkconnectivityattributes.TeSrlgs; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.DefaultPrimaryPath; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.PrimaryPath; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.primarypath.DefaultPathElement; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkunderlayattributes.primarypath.PathElement; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.DefaultTe; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.DefaultTe.TeBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.Te; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.Config; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.DefaultConfig; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.DefaultState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.DefaultTunnelTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.State; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.TunnelTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultSupportingTunnelTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.tunnelterminationpoint.SupportingTunnelTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconfigattributes.DefaultTeNodeAttributes; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconfigattributes.TeNodeAttributes; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconfigattributes.TeNodeAttributes.TeNodeAttributesBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.ConnectivityMatrices; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.DefaultConnectivityMatrices; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.DefaultConnectivityMatrices.ConnectivityMatricesBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.DefaultConnectivityMatrix; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.DefaultConnectivityMatrix.ConnectivityMatrixBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.connectivitymatrix.DefaultFrom; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.connectivitymatrix.DefaultTo; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeinfoattributes.DefaultUnderlayTopology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeinfoattributes.UnderlayTopology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodetunnelterminationattributes.DefaultLocalLinkConnectivities; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodetunnelterminationattributes.LocalLinkConnectivities; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodetunnelterminationattributes.locallinkconnectivities.DefaultLocalLinkConnectivity; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodetunnelterminationattributes.locallinkconnectivities.DefaultLocalLinkConnectivity.LocalLinkConnectivityBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.Srlg; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeAdminStatus; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeNodeId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTopologyEventType; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.AsNumber; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultAsNumber; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.Ipv4Address; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.UnnumberedLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.tetopologyeventtype.TeTopologyEventTypeEnum; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev20130715.ietfyangtypes.DottedQuad; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -/** - * Node conversion functions. - */ -public final class NodeConverter { - - private static final String E_NULL_TE_SUBSYSTEM_TE_NODE = - "TeSubsystem teNode object cannot be null"; - private static final String E_NULL_TE_SUBSYSTEM_TE_TUNNEL_TP = - "TeSubsystem teTunnelTp object cannot be null"; - private static final String E_NULL_TE_SUBSYSTEM_NODE = - "TeSubsystem ndoe object cannot be null"; - private static final String E_NULL_YANG_NODE = - "Yang node object cannot be null"; - - // no instantiation - private NodeConverter() { - } - - /** - * TE Node Config object conversion from TE Topology subsystem to YANG. - * - * @param teSubsystemTeNode TE node object - * @param teTopologyService teTopolog core service - * @return TE Node Config YANG object - */ - private static Config teNode2YangConfig(TeNode teSubsystemTeNode, TeTopologyService teTopologyService) { - checkNotNull(teSubsystemTeNode, E_NULL_TE_SUBSYSTEM_TE_NODE); - - TeNodeAttributes.TeNodeAttributesBuilder teNodeAttributesConfigBuilder = DefaultTeNodeAttributes - .builder(); - teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder - .isAbstract(teSubsystemTeNode.flags() - .get(TeNode.BIT_ABSTRACT)); - - if (teSubsystemTeNode.adminStatus() != null) { - teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder - .adminStatus(EnumConverter.teSubsystem2YangAdminStatus(teSubsystemTeNode.adminStatus())); - } - - if (teSubsystemTeNode.name() != null) { - teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder - .name(DomainName.fromString(teSubsystemTeNode.name())); - } - - if (teSubsystemTeNode.underlayTeTopologyId() != null) { - teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder - .underlayTopology(teNode2YangUnderlay(teSubsystemTeNode - .underlayTeTopologyId(), teTopologyService)); - } - - // TODO: should we ignore this from te to yang? as we've already set yang supportingNode - //if (teSubsystemTeNode.supportingTeNodeId() != null) { - //} - - if (teSubsystemTeNode.connectivityMatrices() != null) { - teNodeAttributesConfigBuilder = te2YangConnectivityMatrix(teNodeAttributesConfigBuilder, - teSubsystemTeNode.connectivityMatrices()); - } - - - Config.ConfigBuilder yangConfigBuilder = DefaultConfig.builder(); - yangConfigBuilder = yangConfigBuilder.teNodeAttributes(teNodeAttributesConfigBuilder.build()); - - return yangConfigBuilder.build(); - } - - private static TeNodeAttributesBuilder - te2YangConnectivityMatrix(TeNodeAttributesBuilder teNodeAttributesConfigBuilder, - Map connectivityMatrices) { - ConnectivityMatrixBuilder connectivityMatrixConfigBuilder = DefaultConnectivityMatrix.builder(); - ConnectivityMatricesBuilder yangConnectivityMatricesBuilder = DefaultConnectivityMatrices.builder(); - for (Map.Entry teCmEntry : - connectivityMatrices.entrySet()) { - connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder - .id(teCmEntry.getKey()) - .isAllowed(!teCmEntry.getValue().flags() - .get(ConnectivityMatrix.BIT_DISALLOWED)) - .from(new DefaultFrom.FromBuilder() // TODO: for now, assuming that there is - // only one 'from', and mergingList is empty - .tpRef(((TeLinkId) teCmEntry.getValue().from()).value()) - .build()) - .to(new DefaultTo.ToBuilder() // TODO: for now, assuming that there is only - // one item in constrainingElements list - .tpRef(((TeLinkId) teCmEntry.getValue().constrainingElements().get(0)).value()) - .build()); - if (teCmEntry.getValue().teAttributes() != null) { - connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder - .teDefaultMetric(teCmEntry.getValue().teAttributes().cost()) - .teDelayMetric(teCmEntry.getValue().teAttributes().delay()); - } - - TeSrlgs.TeSrlgsBuilder teSrlgsBuilder = DefaultTeSrlgs.builder(); - if (teCmEntry.getValue().teAttributes().srlgs() != null) { - for (Long val : teCmEntry.getValue().teAttributes().srlgs()) { - Srlg srlg = new Srlg(val); - teSrlgsBuilder = teSrlgsBuilder.addToValue(srlg); - } - connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder - .teSrlgs(teSrlgsBuilder.build()); - } - - Underlay.UnderlayBuilder underlayBuilder = DefaultUnderlay.builder(); - PrimaryPath.PrimaryPathBuilder primaryPathBuilder = DefaultPrimaryPath.builder(); - - PathElement.PathElementBuilder pathElementBuilder = DefaultPathElement.builder(); - if (teCmEntry.getValue().underlayPath() != null && - teCmEntry.getValue().underlayPath().pathElements() != null && - !teCmEntry.getValue().underlayPath().pathElements().isEmpty()) { - for (org.onosproject.tetopology.management.api.link.PathElement patel : teCmEntry.getValue() - .underlayPath().pathElements()) { - pathElementBuilder = pathElementBuilder.pathElementId(patel.pathElementId()); - if (patel.type() instanceof AsNumber) { - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes - .explicitroutesubobject.type.AsNumber - .AsNumberBuilder asNumberBuilder = new DefaultAsNumber.AsNumberBuilder(); - asNumberBuilder = asNumberBuilder.asNumber(((AsNumber) patel.type()).asNumber()); - pathElementBuilder = pathElementBuilder.type(asNumberBuilder.build()); - } else if (patel.type() instanceof UnnumberedLink) { - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes - .explicitroutesubobject.type.UnnumberedLink - .UnnumberedLinkBuilder unNumberBuilder = DefaultUnnumberedLink.builder(); - unNumberBuilder = unNumberBuilder.interfaceId(((UnnumberedLink) patel.type()).interfaceId()); - unNumberBuilder = unNumberBuilder.routerId(IpAddress.fromString(((UnnumberedLink) patel.type()) - .routerId().toString())); - pathElementBuilder = pathElementBuilder.type(unNumberBuilder.build()); - } - primaryPathBuilder = primaryPathBuilder - .addToPathElement(pathElementBuilder.build()); - } - } - - underlayBuilder = underlayBuilder.primaryPath(primaryPathBuilder.build()); - connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder - .underlay(underlayBuilder.build()); - - yangConnectivityMatricesBuilder = yangConnectivityMatricesBuilder - .addToConnectivityMatrix(connectivityMatrixConfigBuilder.build()); - } - teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder - .connectivityMatrices(yangConnectivityMatricesBuilder.build()); - return teNodeAttributesConfigBuilder; - } - - private static UnderlayTopology teNode2YangUnderlay(TeTopologyKey underlayTopology, - TeTopologyService teTopologyService) { - UnderlayTopology.UnderlayTopologyBuilder underlayBuilder = DefaultUnderlayTopology.builder(); - - underlayBuilder = underlayBuilder.networkRef(teTopologyService.networkId(underlayTopology)); - - return underlayBuilder.build(); - } - - /** - * TE Node State object conversion from TE Topology subsystem to YANG. - * - * @param teSubsystemTeNode TE node object - * @param teTopologyService teTopology core service - * @return TE Node State YANG object - */ - private static State teNode2YangState(TeNode teSubsystemTeNode, TeTopologyService teTopologyService) { - checkNotNull(teSubsystemTeNode, E_NULL_TE_SUBSYSTEM_TE_NODE); - - TeNodeAttributes - .TeNodeAttributesBuilder teNodeAttributesStateBuilder = - DefaultTeNodeAttributes.builder() - .isAbstract(teSubsystemTeNode.flags() - .get(TeNode.BIT_ABSTRACT)); - - if (teSubsystemTeNode.adminStatus() != null) { - teNodeAttributesStateBuilder = teNodeAttributesStateBuilder - .adminStatus(EnumConverter.teSubsystem2YangAdminStatus(teSubsystemTeNode.adminStatus())); - } - - if (teSubsystemTeNode.name() != null) { - teNodeAttributesStateBuilder = teNodeAttributesStateBuilder - .name(DomainName.fromString(teSubsystemTeNode.name())); - } - - if (teSubsystemTeNode.underlayTeTopologyId() != null) { - teNodeAttributesStateBuilder = teNodeAttributesStateBuilder - .underlayTopology(teNode2YangUnderlay(teSubsystemTeNode - .underlayTeTopologyId(), teTopologyService)); - } - - if (teSubsystemTeNode.connectivityMatrices() != null) { - teNodeAttributesStateBuilder = te2YangConnectivityMatrix(teNodeAttributesStateBuilder, - teSubsystemTeNode.connectivityMatrices()); - } - - // TODO: should we ignore this from te to yang? as we've already set yang supportingNode - //if (teSubsystemTeNode.supportingTeNodeId() != null) { - //} - - State.StateBuilder yangStateBuilder = DefaultState.builder(); - yangStateBuilder = yangStateBuilder.teNodeAttributes(teNodeAttributesStateBuilder.build()); - - if (teSubsystemTeNode.opStatus() != null) { - yangStateBuilder = yangStateBuilder.operStatus(EnumConverter - .teSubsystem2YangOperStatus(teSubsystemTeNode.opStatus())); - } - - if (teSubsystemTeNode.sourceTeNodeId() != null) { - InformationSourceState.InformationSourceStateBuilder issBuilder = DefaultInformationSourceState.builder(); - - Topology.TopologyBuilder topologyBuilder = DefaultTopology.builder(); - topologyBuilder = topologyBuilder.nodeRef(teTopologyService - .nodeKey(teSubsystemTeNode.sourceTeNodeId()).nodeId()) - .networkRef(teTopologyService - .nodeKey(teSubsystemTeNode.sourceTeNodeId()) - .networkId()); - - issBuilder = issBuilder.topology(topologyBuilder.build()); - yangStateBuilder.informationSourceState(issBuilder.build()); - } - - return yangStateBuilder.build(); - } - - private static class ByteUtils { - - public static byte[] longToBytes(long x) { - long temp = x; - byte[] b = new byte[8]; - for (int i = 0; i < b.length; i++) { - b[i] = new Long(temp & 0xff).byteValue(); - temp = temp >> 8; - } - return b; - } - - public static long bytesToLong(byte[] bytes) { - return (bytes[7] & 255L) << 56 - | (bytes[6] & 255L) << 48 - | (bytes[5] & 255L) << 40 - | (bytes[4] & 255L) << 32 - | (bytes[3] & 255L) << 24 - | (bytes[2] & 255L) << 16 - | (bytes[1] & 255L) << 8 | bytes[0] & 255L; - } - } - - /** - * TE Node TunnelTerminationPoint object conversion from TE Topology subsystem to YANG. - * - * @param teTunnelTp TE TunnelTerminationPoint object - * @param teTpId - * @param teTopologyService - * @param teNodeKey - * @return TunnelTerminationPoint YANG object - */ - private static TunnelTerminationPoint teSubsystem2YangTtp( - org.onosproject.tetopology.management.api.node - .TunnelTerminationPoint teTunnelTp, Long teTpId, - TeTopologyService teTopologyService, - TeNodeKey teNodeKey) { - checkNotNull(teTunnelTp, E_NULL_TE_SUBSYSTEM_TE_TUNNEL_TP); - - TunnelTerminationPoint.TunnelTerminationPointBuilder tunnelTpBuilder = - DefaultTunnelTerminationPoint.builder().tunnelTpId(ByteUtils.longToBytes(teTpId.longValue())); - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.tenodeaugment.te.tunnelterminationpoint.Config.ConfigBuilder ttpConfigBuilder = - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultConfig.builder(); - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.tenodeaugment.te.tunnelterminationpoint.State.StateBuilder ttpStateBuilder = - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultState.builder(); - - // Assuming teTunnelTp only has one interLayerLock - if (teTunnelTp.interLayerLockList() != null && !teTunnelTp.interLayerLockList().isEmpty()) { - ttpConfigBuilder = ttpConfigBuilder.interLayerLockId(teTunnelTp.interLayerLockList().get(0)); - ttpStateBuilder = ttpStateBuilder.interLayerLockId(teTunnelTp.interLayerLockList().get(0)); - } - - // TODO: retrieve teTunnelTp.switchingLayer() and set it to ttpConfigBuilder and ttpStateBuilder - // TODO: retrieve more attributes from teTunnelTp and assign to ttpConfigBuilder and ttpStateBuilder - // For which ones we can do the conversion? - - LocalLinkConnectivities.LocalLinkConnectivitiesBuilder - localLinkConnectivitiesBuilder = DefaultLocalLinkConnectivities.builder(); - if (teTunnelTp.localLinkConnectivityList() != null && !teTunnelTp.localLinkConnectivityList().isEmpty()) { - for (LocalLinkConnectivity llcn : teTunnelTp.localLinkConnectivityList()) { - // convert teLinkId to networkLinkKey - if (llcn != null && llcn.constrainingElements() != null - && !llcn.constrainingElements().isEmpty()) { - TeLinkId telinkId = (TeLinkId) llcn.constrainingElements().get(0); - TeLinkTpGlobalKey globalKey = new TeLinkTpGlobalKey(teNodeKey, telinkId.value()); - NetworkLinkKey netLinkKey = teTopologyService.linkKey(globalKey); - NetworkLink networkLink = teTopologyService - .network(netLinkKey.networkId()).links().get(netLinkKey.linkId()); - LocalLinkConnectivityBuilder llcBuilder = DefaultLocalLinkConnectivity.builder(); - llcBuilder = llcBuilder.linkTpRef(networkLink.source().tpId()); - localLinkConnectivitiesBuilder.addToLocalLinkConnectivity(llcBuilder.build()); - } - } - - - ttpConfigBuilder = ttpConfigBuilder.localLinkConnectivities(localLinkConnectivitiesBuilder.build()); - ttpStateBuilder = ttpStateBuilder.localLinkConnectivities(localLinkConnectivitiesBuilder.build()); - } - - tunnelTpBuilder = tunnelTpBuilder.config(ttpConfigBuilder.build()) - .state(ttpStateBuilder.build()); - SupportingTunnelTerminationPoint.SupportingTunnelTerminationPointBuilder - supportTtpBuilder = DefaultSupportingTunnelTerminationPoint.builder(); - if (teTunnelTp.supportingTtpId() != null) { - TeTopologyKey teTopologyKey = new TeTopologyKey(teTunnelTp.supportingTtpId().providerId(), - teTunnelTp.supportingTtpId().clientId(), - teTunnelTp.supportingTtpId().topologyId()); - - TeNodeKey teNodeKeySup = new TeNodeKey(teTopologyKey, teTunnelTp.supportingTtpId().teNodeId()); - NetworkNodeKey networkNodeKey = teTopologyService.nodeKey(teNodeKeySup); - NetworkId netId = NetworkId.fromString(networkNodeKey.networkId().toString()); - - supportTtpBuilder = supportTtpBuilder - .nodeRef(NodeId.fromString(networkNodeKey.nodeId().toString())) - .networkRef(netId) - .tunnelTpRef(ByteUtils.longToBytes(teTunnelTp.supportingTtpId().ttpId())); - - tunnelTpBuilder = tunnelTpBuilder.addToSupportingTunnelTerminationPoint(supportTtpBuilder.build()); - } - - - return tunnelTpBuilder.build(); - } - - /** - * Node object conversion from TE Topology subsystem to YANG. - * - * @param teSubsystem TE subsystem node - * @param teTopologyService teTopology core service - * @param teTopologyKey teTopologyKey - * @return YANG node - */ - public static Node teSubsystem2YangNode(org.onosproject.tetopology.management.api.node.NetworkNode teSubsystem, - TeTopologyService teTopologyService, - TeTopologyKey teTopologyKey) { - checkNotNull(teSubsystem, E_NULL_TE_SUBSYSTEM_NODE); - - NodeId nodeId = NodeId.fromString(teSubsystem.nodeId().toString()); - - Node.NodeBuilder builder = DefaultNode.builder().nodeId(nodeId); - - if (teSubsystem.supportingNodeIds() != null) { - List sNodes = Lists.newArrayList(); - SupportingNode.SupportingNodeBuilder spNodeBuilder = DefaultSupportingNode - .builder(); - for (NetworkNodeKey nodeKey : teSubsystem.supportingNodeIds()) { - sNodes.add(spNodeBuilder - .networkRef(NetworkId - .fromString(nodeKey.networkId().toString())) - .nodeRef(NodeId.fromString(nodeKey.nodeId().toString())) - .build()); - } - builder = builder.supportingNode(sNodes); - } - - if (teSubsystem.terminationPoints() != null) { - AugmentedNdNode.AugmentedNdNodeBuilder tpAugmentBuilder = DefaultAugmentedNdNode - .builder(); - Map teSubsystemTeTp = teSubsystem - .terminationPoints(); - - for (TerminationPoint teTp : teSubsystemTeTp.values()) { - tpAugmentBuilder.addToTerminationPoint(TerminationPointConverter - .teSubsystem2YangTerminationPoint(teTp)); - } - builder.addYangAugmentedInfo(tpAugmentBuilder.build(), - AugmentedNdNode.class); - } - - if (teSubsystem.teNode() != null) { - AugmentedNwNode.AugmentedNwNodeBuilder nodeAugmentBuilder = DefaultAugmentedNwNode - .builder(); - - TeNode teSubsystemTeNode = teSubsystem.teNode(); - - TeBuilder yangTeBuilder = DefaultTe.builder(); - - nodeAugmentBuilder = nodeAugmentBuilder - .teNodeId(TeNodeId.of(DottedQuad.of(Ip4Address - .valueOf((int) teSubsystemTeNode.teNodeId()) - .toString()))); - - // Set configuration data - // Set state data - yangTeBuilder = yangTeBuilder.config(teNode2YangConfig(teSubsystemTeNode, teTopologyService)) - .state(teNode2YangState(teSubsystemTeNode, teTopologyService)); - - if (teSubsystemTeNode.tunnelTerminationPoints() != null) { - for (Map.Entry entry : - teSubsystemTeNode.tunnelTerminationPoints().entrySet()) { - yangTeBuilder = yangTeBuilder - .addToTunnelTerminationPoint(teSubsystem2YangTtp(entry - .getValue(), entry.getKey(), teTopologyService, - new TeNodeKey(teTopologyKey, teSubsystemTeNode.teNodeId()))); - } - } - - nodeAugmentBuilder = nodeAugmentBuilder.te(yangTeBuilder.build()); - builder.addYangAugmentedInfo(nodeAugmentBuilder.build(), - AugmentedNwNode.class); - } - return builder.build(); - } - - /** - * Node object conversion from YANG to TE Topology subsystem. - * - * @param yangNode Node in YANG model - * @param yangNetwork YANG network - * @param yangNetworks YANG networks - * @return TE subsystem node - */ - public static org.onosproject.tetopology.management.api.node.NetworkNode - yang2TeSubsystemNode(Node yangNode, Network yangNetwork, - Networks yangNetworks) { - checkNotNull(yangNode, E_NULL_YANG_NODE); - - org.onosproject.tetopology.management.api.node.DefaultNetworkNode node; - List spNodes = null; - TeNode teNode = null; - Map tps = null; - - if (yangNode.supportingNode() != null) { - spNodes = Lists.newArrayList(); - for (SupportingNode yangSpNode : yangNode.supportingNode()) { - NetworkNodeKey nodeKey = new NetworkNodeKey(KeyId.keyId(yangSpNode.nodeRef().uri().toString()), - KeyId.keyId(yangSpNode.networkRef().uri().toString())); - spNodes.add(nodeKey); - } - } - - if (yangNode.yangAugmentedInfoMap() != null - && !yangNode.yangAugmentedInfoMap().isEmpty()) { - - AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) yangNode - .yangAugmentedInfo(AugmentedNdNode.class); - if (yang2TeSubsystemTpNodeAugment(yangTpNodeAugment) != null) { - tps = yang2TeSubsystemTpNodeAugment(yangTpNodeAugment); - } - - AugmentedNwNode yangNodeAugment = (AugmentedNwNode) yangNode - .yangAugmentedInfo(AugmentedNwNode.class); - if (yangNodeAugment != null && yangNodeAugment.te() != null && yangNodeAugment.teNodeId() != null) { - TeNodeId teNodeId = yangNodeAugment.teNodeId(); - Te yangNodeAugTe = yangNodeAugment.te(); - teNode = yang2TeSubsystemNodeAugment(yangNodeAugTe, teNodeId, - yangNetwork, - yangNetworks, - yangNode, - tps); - } - } - - node = new org.onosproject.tetopology.management.api.node - .DefaultNetworkNode(KeyId.keyId(yangNode.nodeId().uri().string()), spNodes, teNode, tps); - return node; - } - - // TODO: convert connectivity matrix from yang to te - private static Map - yang2TeSubsystemNodeConnectivityMatrix(String networkId, - String nodeId, - ConnectivityMatrices yangMatrices) { - - Map teCmList = Maps.newHashMap(); - - List - yangMatrix = yangMatrices.connectivityMatrix(); - for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te - .topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices. - ConnectivityMatrix cmYang : yangMatrix) { - - ElementType from = new TeLinkId(Long.valueOf(((String) cmYang.from().tpRef()))); // is this correct? - - UnderlayAbstractPath underlayPath = null; // ignore - List pathElements = Lists.newArrayList(); - Boolean loose = false; - long longTeNodeId = TeConstants.NIL_LONG_VALUE; - if (cmYang != null && cmYang.underlay() != null && cmYang.underlay().primaryPath() != null - && cmYang.underlay().primaryPath().pathElement() != null - && !cmYang.underlay().primaryPath().pathElement().isEmpty()) { - for (PathElement yangPathEl : cmYang.underlay().primaryPath().pathElement()) { - ElementType type = null; - if (yangPathEl.type() instanceof UnnumberedLink) { - String rS = ((UnnumberedLink) (yangPathEl.type())).routerId().toString(); - org.onlab.packet.IpAddress routerId = org.onlab.packet.IpAddress.valueOf(rS); - long interfaceId = ((UnnumberedLink) yangPathEl.type()).interfaceId(); - type = new org.onosproject.tetopology.management.api.link.UnnumberedLink(routerId, interfaceId); - longTeNodeId = Long.valueOf(((UnnumberedLink) yangPathEl.type()).routerId().toString()); - } else if (yangPathEl.type() instanceof Ipv4Address) { - short v4PrefixLength = ((Ipv4Address) yangPathEl.type()) - .v4PrefixLength(); - - Ip4Address v4Address = Ip4Address - .valueOf(((Ipv4Address) yangPathEl.type()) - .v4Address().string()); - - loose = ((Ipv4Address) yangPathEl.type()).v4Loose(); - type = new TeIpv4(v4Address, v4PrefixLength); - } - org.onosproject.tetopology.management.api.link.PathElement - patel = new org.onosproject.tetopology.management.api.link - .PathElement(yangPathEl.pathElementId(), - longTeNodeId, - type, - loose); - pathElements.add(patel); - } - } - underlayPath = new UnderlayAbstractPath(pathElements, loose); - - List mergingList = Lists.newArrayList(); // empty merging list for now - - List constrainingElements = Lists.newArrayList(); - ElementType to = new TeLinkId(Long.valueOf(((String) cmYang.to().tpRef()))); // is this correct? - constrainingElements.add(to); - - BitSet flags = new BitSet(); // what are the flags in cmYang? - - List srlgs = Lists.newArrayList(); - if (cmYang.teSrlgs() != null) { - for (Srlg srlg : cmYang.teSrlgs().value()) { - srlgs.add(srlg.uint32()); - } - } - TePathAttributes teAttributes = new - TePathAttributes(cmYang.teDefaultMetric(), - cmYang.teDelayMetric(), - srlgs); - ConnectivityMatrix coreCm = new ConnectivityMatrix(cmYang.id(), - from, - mergingList, - constrainingElements, - flags, - teAttributes, - underlayPath); - - teCmList.put(cmYang.id(), coreCm); - } - - return teCmList; - } - - private static TeTopologyKey yang2TeSubsystemNodeUnderlayTopology(UnderlayTopology ut, Networks yangNetworks) { - TeTopologyKey tetopokey = LinkConverter.findTopologyId(yangNetworks, - ut.networkRef()); - return tetopokey; - } - - // TODO: retrieve the details of tunnel termiantion points from yang to te - private static Map yang2TeSubsystemTtp(List ttps, Node yangNode, - Networks yangNetworks) { - Map ttpsMap = Maps - .newHashMap(); - for (TunnelTerminationPoint ttpYang : ttps) { - - SwitchingType switchingLayer = null; // how to find switching type? - EncodingType encodingLayer = null; // TODO: find proper encoding type from ttpYang.config().encoding(); - BitSet flags = new BitSet(); // how to set flags? - List interLayerLockList = Lists.newArrayList(); - - if (ttpYang.config() != null) { - interLayerLockList.add(ttpYang.config().interLayerLockId()); // interLayerLock in yang is not a list - } - - List localLinkConnectivityList = Lists.newArrayList(); - // FIXME: once new yang model is used, we can make llc - ElementType elt = null; - List eltList = Lists.newArrayList(); - if (ttpYang.config() != null && - ttpYang.config().localLinkConnectivities() != null && - CollectionUtils.isNotEmpty(ttpYang.config().localLinkConnectivities().localLinkConnectivity())) { - for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.tenodetunnelterminationattributes.locallinkconnectivities - .LocalLinkConnectivity yangLlc : ttpYang.config() - .localLinkConnectivities().localLinkConnectivity()) { - if (MapUtils.isNotEmpty(yangNode.yangAugmentedInfoMap())) { - AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) yangNode - .yangAugmentedInfo(AugmentedNdNode.class); - for (org.onosproject.yang.gen.v1.urn.ietf.params.xml - .ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology - .networks.network.node.augmentedndnode - .TerminationPoint tpItem : yangTpNodeAugment.terminationPoint()) { - if (tpItem.tpId().uri().string().equals(yangLlc.linkTpRef().toString())) { - if (tpItem.yangAugmentedInfoMap() != null - && !tpItem.yangAugmentedInfoMap().isEmpty()) { - AugmentedNtTerminationPoint yangTpAugment = - (AugmentedNtTerminationPoint) tpItem - .yangAugmentedInfo(AugmentedNtTerminationPoint.class); - if (yangTpAugment.teTpId() != null) { - elt = new TeLinkId(Long.valueOf(yangTpAugment.teTpId().toString())); - break; - } - } - } - } - } - eltList.add(elt); -// tercap.linkTp().toString() //tpId -> tp -> te-tp-id (long) - } - } - - TePathAttributes teAttributes = null; // how to find these - // attributes from ttpYang? - UnderlayAbstractPath underlayPath = null; // how to find underlayAbstractPath from ttpYang? - LocalLinkConnectivity llc = new LocalLinkConnectivity(eltList, - flags, - teAttributes, - underlayPath); - localLinkConnectivityList.add(llc); - - float[] availAdaptBandwidth = null; // how to find availableBandwidth? - - TeTopologyKey teTopologyKey = null; - - Object networkRefObj = null; - NetworkId networkId = null; - if (ttpYang != null && ttpYang.supportingTunnelTerminationPoint() != null - && !ttpYang.supportingTunnelTerminationPoint().isEmpty() - && ttpYang.supportingTunnelTerminationPoint().get(0) != null) { - networkRefObj = ttpYang.supportingTunnelTerminationPoint() - .get(0).networkRef(); - } - if (networkRefObj != null) { - teTopologyKey = LinkConverter.findTopologyId(yangNetworks, - networkRefObj); - networkId = NetworkId.fromString((String) networkRefObj); - } - - Network teNetworkFound = null; - if (yangNetworks.network() != null - && !yangNetworks.network().isEmpty() - && networkId != null) { - for (Network ynetItem : yangNetworks.network()) { - if (ynetItem.networkId() != null) { - if (ynetItem.networkId().equals(networkId)) { - teNetworkFound = ynetItem; - break; - } - } - } - } - TeNodeId teNodeIdSupport = null; - if (teNetworkFound != null - && ttpYang != null - && ttpYang.supportingTunnelTerminationPoint() != null - && ttpYang.supportingTunnelTerminationPoint().get(0) != null) { - - String s = ((String) ttpYang.supportingTunnelTerminationPoint().get(0).nodeRef()); - int integ = Integer.valueOf(s); - NodeId nodeId = NodeId.fromString(DottedQuad.of(Ip4Address.valueOf(integ).toString()).toString()); - teNodeIdSupport = LinkConverter - .findTeNodeId(teNetworkFound, - nodeId); - } - - long tenIdLong = -1; - if (teNodeIdSupport != null) { - tenIdLong = Ip4Address - .valueOf(teNodeIdSupport.dottedQuad().string()).toInt(); - } - - TeNodeKey teNodeKey = null; - if (teTopologyKey != null && tenIdLong != -1) { - teNodeKey = new TeNodeKey(teTopologyKey, tenIdLong); - } - TtpKey supportTtpKey = null; - if (teNodeKey != null && ttpYang != null - && ttpYang.supportingTunnelTerminationPoint() != null - && !ttpYang.supportingTunnelTerminationPoint().isEmpty() - && ttpYang.supportingTunnelTerminationPoint().get(0) != null) { - supportTtpKey = new TtpKey(teNodeKey, - ByteUtils.bytesToLong((byte[]) ttpYang - .supportingTunnelTerminationPoint().get(0) - .tunnelTpRef())); - } - - org.onosproject.tetopology.management.api.node. - TunnelTerminationPoint ttpTe = new - org.onosproject.tetopology.management.api.node. - DefaultTunnelTerminationPoint(ByteUtils.bytesToLong(ttpYang.tunnelTpId()), - switchingLayer, - encodingLayer, - flags, - interLayerLockList, - localLinkConnectivityList, - availAdaptBandwidth, - supportTtpKey); - - ttpsMap.put(ByteUtils.bytesToLong(ttpYang.tunnelTpId()), ttpTe); - } - - return ttpsMap; - } - - private static TeNode yang2TeSubsystemNodeAugment(Te yangNodeAugTe, - TeNodeId teNodeId, - Network yangNetwork, - Networks yangNetworks, - Node yangNode, - Map teTps) { - - - NodeId yangNodeId = yangNode.nodeId(); - - NetworkId yangNetworkId = yangNetwork.networkId(); - - long teNodeIdLong = Ip4Address.valueOf(teNodeId.dottedQuad().string()).toInt(); - - TeTopologyKey underlayTopologyIdId = null; - - // FIXME: yang has a list of supporting nodes, but TeNode only has one - // supportTeNodeId. How ro retrieve providerId, clientId, topologyId, teNodeId? - TeNodeKey supportTeNodeId = null; -// supportTeNodeId = new TeNodeKey(providerId, clientId, topologyId, teNodeId) -// yangSupportNodes.get(0). - - TeNodeKey sourceTeNodeId = null; //ignore - CommonNodeData teData = null; - Map connMatrices = null; - Map ttps = null; - List teLinkIds = Lists.newArrayList(); - List teTpIds = Lists.newArrayList(); - - // ********************************************** to find teLinkIds - // teLinkIds should be supposed to get from YANG Link and TP data. - // For now, assuming each teTp is sourcing a TE link . - if (MapUtils.isNotEmpty(teTps)) { - for (Map.Entry entry : teTps.entrySet()) { - if (entry.getValue().teTpId() != null) { - teTpIds.add(entry.getValue().teTpId()); - teLinkIds.add(entry.getValue().teTpId()); - } - } - } - // ********************************************** to find teTpIds -// if (yangNode.yangAugmentedInfoMap() != null -// && !yangNode.yangAugmentedInfoMap().isEmpty()) { -// -// AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) yangNode -// .yangAugmentedInfo(AugmentedNdNode.class); -// -// if (yangTpNodeAugment.terminationPoint() != null) { -// for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology -// .rev20151208.ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint -// yangTpnode : yangTpNodeAugment.terminationPoint()) { -// teTpIds.add(Long.valueOf(yangTpnode.tpId().uri().string())); -// } -// } -// } - // ********************************************** - - Config ynodeAugCfg = yangNodeAugTe.config(); - - if (ynodeAugCfg != null) { - TeNodeAttributes teNodeAttr = ynodeAugCfg.teNodeAttributes(); - if (teNodeAttr != null) { - - if (teNodeAttr.underlayTopology() != null) { - - underlayTopologyIdId = yang2TeSubsystemNodeUnderlayTopology(teNodeAttr - .underlayTopology(), yangNetworks); - } - BitSet flags = new BitSet(); - if (teNodeAttr.isAbstract()) { - flags.set(TeNode.BIT_ABSTRACT); - } - teData = new CommonNodeData( - null, // teNodeAttr.name().string(), - EnumConverter.yang2TeSubsystemAdminStatus(teNodeAttr.adminStatus()), - EnumConverter.yang2TeSubsystemOpStatus(yangNodeAugTe.state().operStatus()), - flags); - -// if (teNodeAttr.connectivityMatrix() != null) { - if (teNodeAttr.connectivityMatrices() != null) { - connMatrices = yang2TeSubsystemNodeConnectivityMatrix(yangNetworkId.uri().toString(), - yangNodeId.uri().toString(), - teNodeAttr.connectivityMatrices()); - } - - } - } - - if (yangNodeAugTe.tunnelTerminationPoint() != null) { - ttps = yang2TeSubsystemTtp(yangNodeAugTe.tunnelTerminationPoint(), - yangNode, - yangNetworks); - } - - TeNode teNode = new DefaultTeNode(teNodeIdLong, - underlayTopologyIdId, - supportTeNodeId, - sourceTeNodeId, - teData, - connMatrices, - teLinkIds, - ttps, - teTpIds); - return teNode; - } - - private static Map yang2TeSubsystemTpNodeAugment(AugmentedNdNode yangTpNodeAugment) { - Map tps; - if (yangTpNodeAugment.terminationPoint() != null) { - tps = Maps.newHashMap(); - for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology - .rev20151208.ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint - yangTpnode : yangTpNodeAugment.terminationPoint()) { - tps.put(KeyId.keyId(yangTpnode.tpId().uri().toString()), - TerminationPointConverter.yang2teSubsystemTerminationPoint(yangTpnode)); - } - return tps; - } - return null; - } - - /** - * Converts a TE Topology node event from the data format used in the core - * to its corresponding YANG Object (YO) format. - * - * @param eventType Node event type - * @param eventData TE Topology node event data - * @return YANG Object converted from nodeData - */ - public static TeNodeEvent teNetworkNode2yangTeNodeEvent(TeTopologyEventTypeEnum eventType, - NetworkNodeEventSubject eventData) { - TeNodeEvent.TeNodeEventBuilder builder = new DefaultTeNodeEvent.TeNodeEventBuilder(); - - TeTopologyEventType yangEventType = new TeTopologyEventType(eventType); - builder.eventType(yangEventType); - - NetworkId newtorkId = NetworkId.fromString(eventData.key().networkId().toString()); - builder.networkRef(newtorkId); - NodeId nodeId = NodeId.fromString(eventData.key().nodeId().toString()); - builder.nodeRef(nodeId); - - NetworkNode node = eventData.neworkNode(); - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology. - rev20170110.ietftetopology.tenodeconfigattributesnotification. - TeNodeAttributes teNodeAttributes = node == null ? null - : teNode2YangTeNodeAttributes(node.teNode()); - builder.teNodeAttributes(teNodeAttributes); - - return builder.build(); - } - - private static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang. - ietf.te.topology.rev20170110.ietftetopology. - tenodeconfigattributesnotification. - TeNodeAttributes teNode2YangTeNodeAttributes(TeNode teNode) { - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology. - rev20170110.ietftetopology.tenodeconfigattributesnotification. - TeNodeAttributes.TeNodeAttributesBuilder attrBuilder = - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology. - rev20170110.ietftetopology.tenodeconfigattributesnotification. - DefaultTeNodeAttributes.builder(); - - if (teNode.connectivityMatrices() != null) { - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .tenodeconnectivitymatrixabs.DefaultConnectivityMatrix - .ConnectivityMatrixBuilder connectivityMatrixConfigBuilder = org.onosproject.yang.gen.v1.urn.ietf. - params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrixabs. - DefaultConnectivityMatrix.builder(); - for (Map.Entry teCmEntry : - teNode.connectivityMatrices().entrySet()) { - connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder - .id(teCmEntry.getKey()) - .isAllowed(!teCmEntry.getValue().flags() - .get(ConnectivityMatrix.BIT_DISALLOWED)) - .from(new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.tenodeconnectivitymatrixabs.connectivitymatrix.DefaultFrom - .FromBuilder() // TODO: for now, assuming that there is - // only one 'from', and mergingList is empty - .tpRef(teCmEntry.getValue().from()) - .build()) - .to(new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.tenodeconnectivitymatrixabs.connectivitymatrix - .DefaultTo.ToBuilder() // TODO: for now, assuming that there is only - // one item in constrainingElements list - .tpRef(teCmEntry.getValue().constrainingElements().get(0)) - .build()); - attrBuilder = attrBuilder - .addToConnectivityMatrix(connectivityMatrixConfigBuilder - .build()); - } - } - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology. - rev20170110.ietftetopology.tenodeconfigattributesnotification. - TeNodeAttributes teNodeAttributes = attrBuilder.build(); - - return teNodeAttributes; - } - - public static NetworkNodeKey yangNodeEvent2NetworkNodeKey(TeNodeEvent yangNodeEvent) { - NetworkId networkRef = NetworkId.fromString(yangNodeEvent.networkRef().toString()); - NodeId nodeRef = NodeId.fromString(yangNodeEvent.nodeRef().toString()); - KeyId networkId = KeyId.keyId(networkRef.uri().toString()); - KeyId nodeId = KeyId.keyId(nodeRef.uri().toString()); - - NetworkNodeKey networkNodeKey = new NetworkNodeKey(networkId, nodeId); - - return networkNodeKey; - } - - /** - * Converts YangNode event to NetworkNode. - * - * @param yangNodeEvent yangNodeEvent - * @param teTopologyService teTopologyService - * @return NetworkNode - */ - public static NetworkNode yangNodeEvent2NetworkNode(TeNodeEvent yangNodeEvent, - TeTopologyService teTopologyService) { - KeyId networkNodeId = yangNodeEvent2NetworkNodeKey(yangNodeEvent).nodeId(); - - org.onosproject.tetopology.management.api.Network network = teTopologyService.network( - yangNodeEvent2NetworkNodeKey(yangNodeEvent).networkId()); - if (network == null) { - return null; - } - - NetworkNode networkNode = network.node(networkNodeId); - if (networkNode == null) { - return null; - } - - List supportingNodeIds = networkNode.supportingNodeIds(); - Map tps = networkNode.terminationPoints(); - - TeNode teNode = networkNode.teNode(); - if (teNode == null) { - return null; - } - - TeNode updatedTeNode = yangNodeEvent2TeNode(yangNodeEvent, teNode); - - NetworkNode updatedNetworkNode = new DefaultNetworkNode(networkNodeId, supportingNodeIds, updatedTeNode, tps); - - return updatedNetworkNode; - } - - private static TeNode yangNodeEvent2TeNode(TeNodeEvent yangNodeEvent, TeNode oldTeNode) { - - long teNodeId = oldTeNode.teNodeId(); - TeTopologyKey underlayTopoId = oldTeNode.underlayTeTopologyId(); - TeNodeKey supportTeNodeId = oldTeNode.sourceTeNodeId(); - TeNodeKey sourceTeNodeId = oldTeNode.sourceTeNodeId(); - Map connMatrices = oldTeNode.connectivityMatrices(); - List teLinkIds = oldTeNode.teLinkIds(); - Map ttps = oldTeNode.tunnelTerminationPoints(); - List teTpIds = oldTeNode.teLinkIds(); - String name = oldTeNode.name(); - TeStatus adminStatus = oldTeNode.adminStatus(); - TeStatus opStatus = oldTeNode.opStatus(); - BitSet flags = oldTeNode.flags(); - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology - .tenodeconfigattributesnotification - .TeNodeAttributes yangTeNodeAttrs = yangNodeEvent.teNodeAttributes(); - - if (yangTeNodeAttrs != null) { - TeAdminStatus yangAdminStatus = yangTeNodeAttrs.adminStatus(); - if (yangAdminStatus != null) { - adminStatus = EnumConverter.yang2TeSubsystemAdminStatus(yangAdminStatus); - } - - BitSet yangFlags = yangTeNodeAttrs.selectLeafFlags(); - if (yangFlags != null) { - flags = yangFlags; - } - - List yangConnMatrices = yangTeNodeAttrs - .connectivityMatrix(); - if (yangConnMatrices != null) { - for (org.onosproject.yang.gen.v1. - urn.ietf.params.xml.ns.yang. - ietf.te.topology - .rev20170110.ietftetopology - .tenodeconnectivitymatrixabs - .ConnectivityMatrix yangConnMatrix : yangConnMatrices) { - Long cmId = new Long(yangConnMatrix.id()); - ConnectivityMatrix oldConnMatrix = connMatrices.get(new Long(yangConnMatrix.id())); - if (oldConnMatrix != null) { - ConnectivityMatrix newConnMatrix = yangNodeEvent2TeConnectivityMatrix(yangConnMatrix, - oldConnMatrix); - connMatrices.remove(cmId); - connMatrices.put(cmId, newConnMatrix); - } - } - } - } - - CommonNodeData teData = new CommonNodeData(name, adminStatus, opStatus, flags); - TeNode updatedTeNode = new DefaultTeNode(teNodeId, underlayTopoId, supportTeNodeId, sourceTeNodeId, teData, - connMatrices, teLinkIds, ttps, teTpIds); - - return updatedTeNode; - } - - private static ConnectivityMatrix yangNodeEvent2TeConnectivityMatrix(org.onosproject.yang.gen.v1. - urn.ietf.params.xml.ns.yang. - ietf.te.topology - .rev20170110.ietftetopology - .tenodeconnectivitymatrixabs - .ConnectivityMatrix yangConnMatrix, - ConnectivityMatrix oldTeConnMatrix) { - - long id = yangConnMatrix.id(); - ElementType from = new TeLinkId((long) (yangConnMatrix.from().tpRef())); - UnderlayAbstractPath underlayPath = null; - List mergingList = Lists.newArrayList(); - - List constrainingElements = Lists.newArrayList(); - ElementType to = new TeLinkId((long) (yangConnMatrix.to().tpRef())); - constrainingElements.add(to); - - BitSet flags = oldTeConnMatrix.flags(); - - TePathAttributes teAttributes = oldTeConnMatrix.teAttributes(); - - ConnectivityMatrix updatedConnMatrix = new ConnectivityMatrix(id, - from, - mergingList, - constrainingElements, - flags, - teAttributes, - underlayPath); - return updatedConnMatrix; - } -} diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/TerminationPointConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/TerminationPointConverter.java deleted file mode 100644 index 1b4c0996f4..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/TerminationPointConverter.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.teyang.utils.topology; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; - -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.node.TerminationPointKey; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworkId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NodeId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.TpId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.node.augmentedndnode.DefaultTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.node.augmentedndnode.terminationpoint - .DefaultSupportingTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208 - .ietfnetworktopology.networks.network.node.augmentedndnode.terminationpoint - .SupportingTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.interfaceswitchingcapabilitylist.DefaultInterfaceSwitchingCapability; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.interfaceswitchingcapabilitylist.InterfaceSwitchingCapability; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.networks.network.node.terminationpoint.AugmentedNtTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110 - .ietftetopology.networks.network.node.terminationpoint.DefaultAugmentedNtTerminationPoint; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkiscdattributes.DefaultMaxLspBandwidth; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.telinkiscdattributes.MaxLspBandwidth; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.DefaultTe; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.DefaultTe.TeBuilder; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.te.Config; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.te.DefaultConfig; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.te.DefaultState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.teterminationpointaugment.te.State; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTpId; - -import com.google.common.collect.Lists; - -/** - * The termination point translations. - */ -public final class TerminationPointConverter { - - private static final String E_NULL_TE_SUBSYSTEM_TP = - "TeSubsystem terminationPoint object cannot be null"; - private static final String E_NULL_YANG_TP = - "YANG terminationPoint object cannot be null"; - - // no instantiation - private TerminationPointConverter() { - } - - /** - * TerminationPoint object translation from TE Topology subsystem to YANG. - * - * @param teSubsystem TE Topology subsystem termination point - * @return Termination point in YANG Java data structure - */ - public static TerminationPoint teSubsystem2YangTerminationPoint(org.onosproject.tetopology.management.api.node. - TerminationPoint teSubsystem) { - checkNotNull(teSubsystem, E_NULL_TE_SUBSYSTEM_TP); - - TpId tpId = TpId.fromString(teSubsystem.tpId().toString()); -// TpId tpId = TpId.fromString("0"); - TerminationPoint.TerminationPointBuilder builder = - new DefaultTerminationPoint.TerminationPointBuilder().tpId(tpId); - - if (teSubsystem.supportingTpIds() != null) { - List tps = Lists.newArrayList(); - SupportingTerminationPoint.SupportingTerminationPointBuilder - spTpBuilder = DefaultSupportingTerminationPoint.builder(); - for (TerminationPointKey tpKey : teSubsystem.supportingTpIds()) { - tps.add(spTpBuilder.networkRef(NetworkId.fromString(tpKey.networkId().toString())) - .nodeRef(NodeId.fromString(tpKey.nodeId().toString())) - .tpRef(TpId.fromString(tpKey.tpId().toString())) - .build()); - } - builder = builder.supportingTerminationPoint(tps); - } - - if (teSubsystem.teTpId() != null) { - AugmentedNtTerminationPoint.AugmentedNtTerminationPointBuilder - tpAugmentBuilder = DefaultAugmentedNtTerminationPoint.builder(); - tpAugmentBuilder.teTpId(TeTpId.fromString((String.valueOf(teSubsystem.teTpId())))); - TeBuilder yangTeBuilder = DefaultTe.builder(); - -// Config yConfig = teSubsystem2YangTeAugConfig(teSubsystem); -// yangTeBuilder = yangTeBuilder.config(yConfig); -// -// State yState = teSubsystem2YangTeAugState(teSubsystem); -// yangTeBuilder = yangTeBuilder.state(yState); - - tpAugmentBuilder = tpAugmentBuilder.te(yangTeBuilder.build()); - builder.addYangAugmentedInfo(tpAugmentBuilder.build(), AugmentedNtTerminationPoint.class); - } - - return builder.build(); - } - - private static State teSubsystem2YangTeAugState(org.onosproject.tetopology.management.api.node. - TerminationPoint teSubsystemTe) { - State.StateBuilder yangStateBuilder = DefaultState.builder(); - // FIXME: interLayerLocks is a list in core but not in yang -// yangStateBuilder = yangStateBuilder.interLayerLockId(teLink.interLayerLocks().get(0)); - - return yangStateBuilder.build(); - } - - private static Config teSubsystem2YangTeAugConfig(org.onosproject.tetopology.management.api.node. - TerminationPoint teSubsystemTe) { - Config.ConfigBuilder yangConfigBuilder = DefaultConfig.builder(); - //FIXME: interLayerLocks is a list in core but not in yang - // yangConfigBuilder = - // yangConfigBuilder.interLayerLockId(teLink.interLayerLocks().get(0)); - - InterfaceSwitchingCapability.InterfaceSwitchingCapabilityBuilder isc = - DefaultInterfaceSwitchingCapability.builder(); - - MaxLspBandwidth.MaxLspBandwidthBuilder maxlspBW = DefaultMaxLspBandwidth - .builder(); -// for (float f : teLink.maxAvialLspBandwidth()) { -// // is converting from float to long ok? -// maxlspBW = maxlspBW.bandwidth(BigDecimal.valueOf((long) f)); -// isc = isc.addToMaxLspBandwidth(maxlspBW.build()); -// } - - yangConfigBuilder = yangConfigBuilder.addToInterfaceSwitchingCapability(isc.build()); - - return yangConfigBuilder.build(); - } - - /** - * TerminationPoint object translation from YANG to TE Topology subsystem. - * - * @param yangTp Termination point in YANG Java data structure - * @return TerminationPoint TE Topology subsystem termination point - */ - public static org.onosproject.tetopology.management.api.node.TerminationPoint - yang2teSubsystemTerminationPoint(TerminationPoint yangTp) { - checkNotNull(yangTp, E_NULL_YANG_TP); - - org.onosproject.tetopology.management.api.node.DefaultTerminationPoint tp = null; - List spTps = null; - KeyId teTpId = null; - - if (yangTp.supportingTerminationPoint() != null) { - spTps = Lists.newArrayList(); - for (SupportingTerminationPoint yangSptp : yangTp.supportingTerminationPoint()) { - org.onosproject.tetopology.management.api.node.TerminationPointKey tpKey = - new org.onosproject.tetopology.management.api.node.TerminationPointKey( - KeyId.keyId(yangSptp.networkRef().uri().string()), - KeyId.keyId(yangSptp.nodeRef().uri().string()), - KeyId.keyId(yangSptp.tpRef().uri().string())); - spTps.add(tpKey); - } - } - - if (yangTp.yangAugmentedInfoMap() != null && !yangTp.yangAugmentedInfoMap().isEmpty()) { - AugmentedNtTerminationPoint yangTpAugment = - (AugmentedNtTerminationPoint) yangTp.yangAugmentedInfo(AugmentedNtTerminationPoint.class); - if (yangTpAugment.teTpId() != null) { - teTpId = KeyId.keyId(yangTpAugment.teTpId().toString()); - } - } - - tp = new org.onosproject.tetopology.management.api.node - .DefaultTerminationPoint(KeyId.keyId(yangTp.tpId().uri().string()), - spTps, - teTpId == null ? null : Long.valueOf(teTpId.toString())); - return tp; - } - -} diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/package-info.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/package-info.java deleted file mode 100644 index 69a994d3a8..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * The utilities for conversions between TE Topology core subsystem and - * IETF TE Topology Yang generated Java code. - */ -package org.onosproject.teyang.utils.topology; diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/BasicConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/BasicConverter.java deleted file mode 100644 index f9464602dd..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/BasicConverter.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.teyang.utils.tunnel; - -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress; - -/** - * Basic converter tools for ietf NBI & SBI. - */ -public abstract class BasicConverter { - - //no instantiation - private BasicConverter() { - - } - - /** - * Converts a long value to IpAddress. - * - * @param value long value - * @return ip address - */ - static IpAddress longToIp(long value) { - StringBuilder sb = new StringBuilder(); - sb.append((value >> 24) & 0xFF).append("."); - sb.append((value >> 16) & 0xFF).append("."); - sb.append((value >> 8) & 0xFF).append("."); - sb.append(value & 0xFF); - return IpAddress.fromString(sb.toString()); - } - - /** - * Converts a long value to byte array. - * - * @param value long value - * @return byte array - */ - static byte[] longToByte(long value) { - long temp = value; - byte[] b = new byte[8]; - for (int i = 0; i < b.length; i++) { - b[i] = new Long(temp & 0xff).byteValue(); - temp = temp >> 8; - } - return b; - } - - /** - * Converts a IP address to long value. - * - * @param ipAddress IP address - * @return long value - */ - static long ipToLong(IpAddress ipAddress) { - long[] ip = new long[4]; - String strIp = ipAddress.toString(); - int position1 = strIp.indexOf("."); - int position2 = strIp.indexOf(".", position1 + 1); - int position3 = strIp.indexOf(".", position2 + 1); - ip[0] = Long.parseLong(strIp.substring(0, position1)); - ip[1] = Long.parseLong(strIp.substring(position1 + 1, position2)); - ip[2] = Long.parseLong(strIp.substring(position2 + 1, position3)); - ip[3] = Long.parseLong(strIp.substring(position3 + 1)); - return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3]; - } - - /** - * Converts byte array to long value. - * - * @param bytes byte array - * @return long value - */ - static long bytesToLong(byte[] bytes) { - return ((long) bytes[7] & 255L) << 56 | - ((long) bytes[6] & 255L) << 48 | - ((long) bytes[5] & 255L) << 40 | - ((long) bytes[4] & 255L) << 32 | - ((long) bytes[3] & 255L) << 24 | - ((long) bytes[2] & 255L) << 16 | - ((long) bytes[1] & 255L) << 8 | - (long) bytes[0] & 255L; - } -} diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/TunnelConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/TunnelConverter.java deleted file mode 100644 index 9113e3f5b6..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/TunnelConverter.java +++ /dev/null @@ -1,479 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.teyang.utils.tunnel; - -import com.google.common.collect.Lists; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetunnel.api.tunnel.DefaultTeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; -import org.onosproject.tetunnel.api.tunnel.path.DefaultTePath; -import org.onosproject.tetunnel.api.tunnel.path.DefaultTeRouteUnnumberedLink; -import org.onosproject.tetunnel.api.tunnel.path.TePath; -import org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTe; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTeOpParam; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.DefaultTe; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.Te; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.Type; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.DefaultDynamic; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.DefaultExplicit; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.explicit.DefaultExplicitRouteObjects; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.explicit.ExplicitRouteObjects; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.Config; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.DefaultPrimaryPaths; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.DefaultState; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.PrimaryPaths; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.State; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.DefaultTunnels; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.Tunnels; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.DefaultTunnel; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.Tunnel; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProt1Forn; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtBidir1To1; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtReroute; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtRerouteExtra; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtType; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtUnidir1To1; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtUnprotected; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.PathSignalingRsvpte; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.PathSignalingSr; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.RouteIncludeEro; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.StateDown; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.StateUp; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelP2Mp; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelP2p; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelType; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.UnnumberedLink; -import org.slf4j.Logger; - -import java.util.ArrayList; -import java.util.List; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static org.onlab.packet.ONOSLLDP.DEFAULT_NAME; -import static org.onosproject.tetunnel.api.tunnel.TeTunnel.LspProtectionType; -import static org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject.Type.UNNUMBERED_LINK; -import static org.onosproject.teyang.utils.tunnel.BasicConverter.bytesToLong; -import static org.onosproject.teyang.utils.tunnel.BasicConverter.ipToLong; -import static org.onosproject.teyang.utils.tunnel.BasicConverter.longToByte; -import static org.onosproject.teyang.utils.tunnel.BasicConverter.longToIp; -import static org.slf4j.LoggerFactory.getLogger; - - -/** - * Tunnel convert utils. - */ -public final class TunnelConverter { - - private static final Logger log = getLogger(TunnelConverter.class); - private static final String DEFAULT_PATH_NAME = "ietfPath"; - private static final String DEFAULT_PATH_CONSTRAINT = "ietfPath"; - private static final int DEFAULT_PATH_PREFERENCE = 1; - private static final boolean DEFAULT_CSPF_STATE = true; - private static final boolean DEFAULT_LOCKDOWN_STATE = true; - - // no instantiation - private TunnelConverter() { - } - - /** - * Build a general IETF TE object with a giving tunnel list. for there are - * many kind of attributes in IETF TE, now we only care about the tunnel - * attributes. - * - * @param tunnels tunnels in the TE network - * @return IETF te info in the TE network - */ - public static IetfTe buildIetfTeWithTunnels(List tunnels) { - Tunnels teTunnels = new DefaultTunnels - .TunnelsBuilder() - .tunnel(tunnels) - .build(); - Te te = new DefaultTe - .TeBuilder() - .tunnels(teTunnels) - .build(); - return new IetfTeOpParam - .IetfTeBuilder() - .te(te) - .yangIetfTeOpType(IetfTe.OnosYangOpType.NONE) - .build(); - } - - public static IetfTe buildIetfTe(TeTunnel teTunnel, boolean isConfig) { - Tunnel tunnel = te2YangTunnelConverter(teTunnel, isConfig); - return buildIetfTeWithTunnels(Lists.newArrayList(tunnel)); - } - - /** - * Converts a specific te tunnel defined in the APP to the general te tunnel - * defined in YANG model. - * - * @param tunnel te tunnel defined in APP - * @param isConfig true if tunnel is to be built with config attributes; - * false if built with state attributes - * @return tunnel defined in YANG model - */ - public static Tunnel te2YangTunnelConverter(TeTunnel tunnel, boolean isConfig) { - List pathsList = new ArrayList<>(); - - if (tunnel.primaryPaths() != null) { - tunnel.primaryPaths() - .forEach(tePath -> pathsList.add(te2YangPrimaryPath(tePath))); - } - - tunnel.primaryPaths() - .forEach(tePath -> pathsList.add(te2YangPrimaryPath(tePath))); - - Tunnel.TunnelBuilder builder = new DefaultTunnel - .TunnelBuilder() - .type(te2YangTunnelType(tunnel.type())) - .name(validName(tunnel.name())) - .identifier(tunnel.teTunnelKey().teTunnelId()) - .state(te2YangTunnelState(tunnel)) - .primaryPaths(pathsList); - Tunnel.TunnelBuilder tunnelBuilder = isConfig ? - builder.config(te2YangTunnelConfig(tunnel)) : - builder.state(te2YangTunnelState(tunnel)); - - return tunnelBuilder.build(); - } - - private static State te2YangTunnelState(TeTunnel tunnel) { - State.StateBuilder stateBuilder = new DefaultState.StateBuilder(); - stateBuilder.name(validName(tunnel.name())) - .identifier((int) tunnel.teTunnelKey().teTunnelId()) - .source((longToIp(tunnel.srcNode().teNodeId()))) - .destination((longToIp(tunnel.dstNode().teNodeId()))) - .srcTpId(longToByte(tunnel.srcTp().ttpId())) - .dstTpId(longToByte(tunnel.dstTp().ttpId())) - .adminStatus(te2YangStateType(tunnel.adminStatus())) - .lspProtectionType( - te2YangProtectionType(tunnel.lspProtectionType())) - .type(te2YangTunnelType(tunnel.type())) - .build(); - return stateBuilder.build(); - } - - private static Config te2YangTunnelConfig(TeTunnel tunnel) { - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te. - rev20160705.ietfte.tunnelproperties.DefaultConfig.ConfigBuilder - configBuilder = new org.onosproject.yang.gen.v1.urn.ietf.params. - xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties. - DefaultConfig.ConfigBuilder(); - - configBuilder.name(validName(tunnel.name())) - .identifier((int) tunnel.teTunnelKey().teTunnelId()) - .source((longToIp(tunnel.srcNode().teNodeId()))) - .destination((longToIp(tunnel.dstNode().teNodeId()))) - .srcTpId(longToByte(tunnel.srcTp().ttpId())) - .dstTpId(longToByte(tunnel.dstTp().ttpId())) - .adminStatus(te2YangStateType(tunnel.adminStatus())) - .lspProtectionType( - te2YangProtectionType(tunnel.lspProtectionType())) - .type(te2YangTunnelType(tunnel.type())) - .build(); - return configBuilder.build(); - } - - private static String validName(String name) { - //for name is a required attribute, here we give a default name if not - //configured - return isNullOrEmpty(name) ? DEFAULT_NAME : name; - } - - private static PrimaryPaths te2YangPrimaryPath(TePath tePath) { - DefaultPrimaryPaths.PrimaryPathsBuilder builder = new DefaultPrimaryPaths - .PrimaryPathsBuilder() - .name(DEFAULT_PATH_NAME) - .preference(DEFAULT_PATH_PREFERENCE) - .state(te2YangPrimaryPathState(tePath)) - .yangPrimaryPathsOpType(IetfTe.OnosYangOpType.NONE); - return builder.build(); - } - - private static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf - .te.rev20160705.ietfte.p2pprimarypathparams.State - te2YangPrimaryPathState(TePath tePath) { - - List teRouteSubobjects = tePath.explicitRoute(); - - List routeObjects = new ArrayList<>(); - teRouteSubobjects.forEach(teRouteSubobject -> { - routeObjects.add(te2YangRouteSubobject(teRouteSubobject)); - }); - DefaultExplicit.ExplicitBuilder explicitBuilder = - DefaultExplicit.builder().explicitRouteObjects(routeObjects); - - return new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf. - te.rev20160705.ietfte.p2pprimarypathparams.DefaultState - .StateBuilder() - .type(explicitBuilder.build()) - .pathNamedConstraint(DEFAULT_PATH_CONSTRAINT) - .noCspf(DEFAULT_CSPF_STATE) - .lockdown(DEFAULT_LOCKDOWN_STATE) - .build(); - } - - private static ExplicitRouteObjects - te2YangRouteSubobject(TeRouteSubobject routeSubobject) { - - TeRouteSubobject.Type type = routeSubobject.type(); - UnnumberedLink yanglink = null; - //TODO implement other kind of TeRouteSubobject type - if (type == UNNUMBERED_LINK) { - DefaultTeRouteUnnumberedLink unnumberedLink = - (DefaultTeRouteUnnumberedLink) routeSubobject; - TeNodeKey nodeKey = unnumberedLink.node(); - TtpKey ttpKey = unnumberedLink.ttp(); - - yanglink = DefaultUnnumberedLink.builder() - .routerId(longToIp(nodeKey.teNodeId())) - .interfaceId(ttpKey.ttpId()) - .build(); - - } - - //TODO implement other kind of explicitRoute usage type - return DefaultExplicitRouteObjects.builder() - .type(yanglink) - .explicitRouteUsage(RouteIncludeEro.class) - .build(); - } - - /** - * Converts a YANG TE tunnel defined in the YANG model to a specific TE - * tunnel defined in the TE tunnel APP. - * - * @param tunnel yang tunnel object - * @param topologyKey key of the TE topology to which this tunnel belongs - * @return default Te tunnel defined in TE tunnel APP - */ - public static DefaultTeTunnel yang2TeTunnel(org.onosproject.yang.gen.v1. - urn.ietf.params.xml. - ns.yang.ietf.te. - rev20160705.ietfte. - tunnelsgrouping. - tunnels.Tunnel - tunnel, - TeTopologyKey topologyKey) { - //get config info - Config config = tunnel.config(); - - //build basic attribute, node and ttp - TeNodeKey srcNodeKey = new TeNodeKey(topologyKey, ipToLong(config.source())); - TeNodeKey dstNodeKey = new TeNodeKey(topologyKey, ipToLong(config.destination())); - - TtpKey srcTtpKey = new TtpKey(srcNodeKey, bytesToLong(config.srcTpId())); - TtpKey dstTtpKey = new TtpKey(srcNodeKey, bytesToLong(config.dstTpId())); - - //check if paths have been set - List primaryPaths = tunnel.primaryPaths(); - List paths = new ArrayList<>(); - primaryPaths.forEach(primaryPath -> paths.add( - yang2TePrimaryPaths(primaryPath, topologyKey))); - - //build the te tunnel - DefaultTeTunnel.Builder builder = new DefaultTeTunnel.Builder(); - - return builder.teTunnelKey(new TeTunnelKey(topologyKey, config.identifier())) - .name(config.name()) - .type(yang2TeTunnelType(config.type())) - .lspProtectionType(yang2TeProtectionType(config.lspProtectionType())) - .adminState(yang2TeStateType(config.adminStatus())) - .srcNode(srcNodeKey) - .dstNode(dstNodeKey) - .srcTp(srcTtpKey) - .dstTp(dstTtpKey) - .primaryPaths(paths).build(); - } - - private static TePath yang2TePrimaryPaths(PrimaryPaths primaryPath, - TeTopologyKey topologyKey) { - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te. - rev20160705.ietfte.p2pprimarypathparams.Config - pathConfig = primaryPath.config(); - - TePath tePath; - TePath.Type tePathType = null; - Type type = pathConfig.type(); - - if (type == null) { - return new DefaultTePath(TePath.Type.DYNAMIC, - Lists.newArrayList(), - Lists.newArrayList(), - Lists.newArrayList()); - } - - Class typeClass = type.getClass(); - - List routeSubobjects = new ArrayList<>(); - - if (typeClass.isAssignableFrom(DefaultExplicit.class)) { - DefaultExplicit explicitPath = (DefaultExplicit) type; - explicitPath - .explicitRouteObjects() - .forEach(o -> routeSubobjects.add( - yang2TeRouteSubobject(o, topologyKey))); - tePathType = TePath.Type.EXPLICIT; - - } else if (typeClass.isAssignableFrom(DefaultDynamic.class)) { - tePathType = TePath.Type.DYNAMIC; - } - - tePath = new DefaultTePath(tePathType, - Lists.newArrayList(), - routeSubobjects, - Lists.newArrayList()); - return tePath; - } - - private static TeRouteSubobject - yang2TeRouteSubobject(ExplicitRouteObjects routeObject, - TeTopologyKey topologyKey) { - - //TODO implement other types of route type - DefaultUnnumberedLink type = (DefaultUnnumberedLink) routeObject.type(); - TeNodeKey nodeKey = new TeNodeKey(topologyKey, ipToLong(type.routerId())); - TtpKey tpId = new TtpKey(nodeKey, type.interfaceId()); - return new DefaultTeRouteUnnumberedLink(nodeKey, tpId); - } - - private static TeTunnel.Type yang2TeTunnelType(Class type) { - TeTunnel.Type tunnelType = null; - if (type.isAssignableFrom(TunnelP2Mp.class)) { - tunnelType = TeTunnel.Type.P2MP; - } else if (type.isAssignableFrom(TunnelP2p.class)) { - tunnelType = TeTunnel.Type.P2P; - } else if (type.isAssignableFrom(PathSignalingRsvpte.class)) { - tunnelType = TeTunnel.Type.PATH_SIGNALING_RSVPTE; - } else if (type.isAssignableFrom(PathSignalingSr.class)) { - tunnelType = TeTunnel.Type.PATH_SIGNALING_SR; - } - return tunnelType; - } - - - private static Class te2YangTunnelType(TeTunnel.Type type) { - Class tunnelType = null; - switch (type) { - - case P2P: - tunnelType = TunnelP2p.class; - break; - case P2MP: - tunnelType = TunnelP2Mp.class; - break; - case PATH_SIGNALING_RSVPTE: - tunnelType = PathSignalingRsvpte.class; - - break; - case PATH_SIGNALING_SR: - tunnelType = PathSignalingSr.class; - break; - default: - log.error("Unknown te tunnel type {}", type.toString()); - } - return tunnelType; - } - - private static LspProtectionType - yang2TeProtectionType(Class protType) { - LspProtectionType type = null; - if (protType.isAssignableFrom(LspProt1Forn.class)) { - type = LspProtectionType.LSP_PROT_1_FOR_N; - } else if (protType.isAssignableFrom(LspProtBidir1To1.class)) { - type = LspProtectionType.LSP_PROT_BIDIR_1_TO_1; - } else if (protType.isAssignableFrom(LspProtReroute.class)) { - type = LspProtectionType.LSP_PROT_REROUTE; - } else if (protType.isAssignableFrom(LspProtRerouteExtra.class)) { - type = LspProtectionType.LSP_PROT_REROUTE_EXTRA; - } else if (protType.isAssignableFrom(LspProtUnidir1To1.class)) { - type = LspProtectionType.LSP_PROT_UNIDIR_1_TO_1; - } else if (protType.isAssignableFrom(LspProtUnprotected.class)) { - type = LspProtectionType.LSP_PROT_UNPROTECTED; - } - return type; - } - - private static Class - te2YangProtectionType(LspProtectionType protType) { - Class type = null; - switch (protType) { - - case LSP_PROT_UNPROTECTED: - type = LspProtUnprotected.class; - break; - case LSP_PROT_REROUTE: - type = LspProtReroute.class; - break; - case LSP_PROT_REROUTE_EXTRA: - type = LspProtRerouteExtra.class; - break; - case LSP_PROT_UNIDIR_1_TO_1: - type = LspProtUnidir1To1.class; - break; - case LSP_PROT_BIDIR_1_TO_1: - type = LspProtBidir1To1.class; - break; - case LSP_PROT_1_FOR_N: - type = LspProt1Forn.class; - break; - default: - log.error("Unknown te tunnel type {}", protType.toString()); - } - return type; - } - - private static TeTunnel.State - yang2TeStateType(Class stateType) { - TeTunnel.State teStateType = null; - if (stateType.isAssignableFrom(StateUp.class)) { - teStateType = TeTunnel.State.UP; - } else if (stateType.isAssignableFrom(StateDown.class)) { - teStateType = TeTunnel.State.DOWN; - } - return teStateType; - } - - private static Class - te2YangStateType(TeTunnel.State stateType) { - Class state = null; - - switch (stateType) { - - case DOWN: - state = StateDown.class; - break; - case UP: - state = StateUp.class; - break; - default: - log.error("Unknown te tunnel type {}", stateType.toString()); - - } - return state; - } -} diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/package-info.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/package-info.java deleted file mode 100644 index f724c86156..0000000000 --- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * The utilities for conversions between TE tunnel APP and IETF TE tunnel Yang - * generated Java code. - */ -package org.onosproject.teyang.utils.tunnel; \ No newline at end of file diff --git a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/ConverterTest.java b/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/ConverterTest.java deleted file mode 100644 index e65d4c8141..0000000000 --- a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/ConverterTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.teyang.utils.topology; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network; - - -/** - * Unit tests for converter functions. - */ -public class ConverterTest { - - Network output; - - @Before - public void setUp() { - /* - output = NetworkConverter.teSubsystem2YangNetwork( - DefaultBuilder.sampleTeSubsystemNetworkBuilder(), - OperationType.NONE); - */ - } - - @Test - public void basics() { - //TODO: re-enable UT in the fallowing submission - /* - assertEquals("Wrong networkId", - output.networkId().uri().string(), - "HUAWEI_NETWORK_NEW"); - assertEquals("Wrong 1st nodeId", - output.node().get(0).nodeId().uri().string(), - "HUAWEI_ROADM_1"); - assertEquals("Wrong 2dn nodeId", - output.node().get(1).nodeId().uri().string(), - "HUAWEI_ROADM_2"); - AugmentedNwNode augmentedNode = (AugmentedNwNode) output.node().get(0) - .yangAugmentedInfo(AugmentedNwNode.class); - - assertEquals("Wrong adminStatus", - augmentedNode.te().config().teNodeAttributes().adminStatus(), - TeAdminStatus.of(TeAdminStatusEnum.UP)); - */ - } - -} diff --git a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/DefaultBuilder.java b/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/DefaultBuilder.java deleted file mode 100644 index 5693133a66..0000000000 --- a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/DefaultBuilder.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.teyang.utils.topology; - -import org.onosproject.tetopology.management.api.Network; -import org.onosproject.tetopology.management.api.Networks; - -/** - * Builds a sample Topology, which consists of two Nodes, one link, - * and each node has two termination points. - */ -public final class DefaultBuilder { - - private static final String HUAWEI_NETWORK_NEW = "HUAWEI_NETWORK_NEW"; - private static final String HUAWEI_ROADM_1 = "HUAWEI_ROADM_1"; - private static final String CLIENT1_NODE1 = "CLIENT1_NODE1"; - private static final String LINE1_NODE1 = "LINE1_NODE1"; - private static final String NODE1_IP = "10.11.12.33"; - private static final String HUAWEI_ROADM_2 = "HUAWEI_ROADM_2"; - private static final String CLIENT1_NODE2 = "CLIENT1_NODE2"; - private static final String LINE1_NODE2 = "LINE1_NODE2"; - private static final String NODE2_IP = "10.11.12.34"; - private static final String LINK1FORNETWORK1 = "LINK1FORNETWORK1"; - private static final String HUAWEI_TE_TOPOLOGY_NEW = "HUAWEI_TE_TOPOLOGY_NEW"; - - // no instantiation - private DefaultBuilder() { - } - - /** - * Returns a sample TeSubsystem Networks object. - * - * @return the Networks object - */ - public static Networks sampleTeSubsystemNetworksBuilder() { - //TODO: implementation will be submitted as a separate review. - return null; - } - - /** - * Returns a sample TeSubsystem Network object. - * - * @return the Network object - */ - public static Network sampleTeSubsystemNetworkBuilder() { - //TODO: implementation will be submitted as a separate review. - return null; - } -} diff --git a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/package-info.java b/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/package-info.java deleted file mode 100644 index 596419a924..0000000000 --- a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/topology/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * The topology utilities test functions. - * - */ -package org.onosproject.teyang.utils.topology; diff --git a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/tunnel/BasicConverterTest.java b/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/tunnel/BasicConverterTest.java deleted file mode 100644 index a927649ce8..0000000000 --- a/apps/tenbi/utils/src/test/java/org/onosproject/teyang/utils/tunnel/BasicConverterTest.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.teyang.utils.tunnel; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress; - -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; - -/** - * Test of the basic converter tools. - */ -public class BasicConverterTest { - private byte[] bytes1 = new byte[]{1, 1, 1, 1, 0, 0, 0, 0}; - private byte[] bytes2 = new byte[]{2, 2, 2, 2, 0, 0, 0, 0}; - private byte[] bytes3 = new byte[]{2, 0, 0, 0, 0, 0, 0, 0}; - private IpAddress ip1 = IpAddress.fromString("1.1.1.1"); - private IpAddress ip2 = IpAddress.fromString("2.2.2.2"); - private long longNum1 = 16843009; - private long longNum2 = 33686018; - private static final String CVT_F = "Convert failed: "; - - - @Test - public void longToIp() throws Exception { - assertEquals(CVT_F + "longToIp", ip1, BasicConverter.longToIp(longNum1)); - assertEquals(CVT_F + "longToIp", ip2, BasicConverter.longToIp(longNum2)); - } - - @Test - public void longToByte() throws Exception { - assertArrayEquals(CVT_F + "longToByte", bytes1, - BasicConverter.longToByte(longNum1)); - assertArrayEquals(CVT_F + "longToByte", bytes2, - BasicConverter.longToByte(longNum2)); - } - - @Test - public void ipToLong() throws Exception { - assertEquals(CVT_F + "ipToLong", longNum1, BasicConverter.ipToLong(ip1)); - assertEquals(CVT_F + "ipToLong", longNum2, BasicConverter.ipToLong(ip2)); - } - - @Test - public void bytesToLong() throws Exception { - assertEquals(CVT_F + "bytesToLong", longNum1, - BasicConverter.bytesToLong(bytes1)); - assertEquals(CVT_F + "bytesToLong", longNum2, - BasicConverter.bytesToLong(bytes2)); - - assertEquals(CVT_F + "bytesToLong", 2, - BasicConverter.bytesToLong(bytes3)); - } -} \ No newline at end of file diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-inet-types.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-inet-types.yang deleted file mode 100644 index 5388b03933..0000000000 --- a/apps/tenbi/yangmodel/src/main/yang/ietf-inet-types.yang +++ /dev/null @@ -1,461 +0,0 @@ -module ietf-inet-types { - - namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types"; - prefix "inet"; - - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: David Kessens - - - WG Chair: Juergen Schoenwaelder - - - Editor: Juergen Schoenwaelder - "; - - description - "This module contains a collection of generally useful derived - YANG data types for Internet addresses and related things. - - Copyright (c) 2013 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 6991; see - the RFC itself for full legal notices."; - - revision 2013-07-15 { - description - "This revision adds the following new data types: - - ip-address-no-zone - - ipv4-address-no-zone - - ipv6-address-no-zone"; - reference - "RFC 6991: Common YANG Data Types"; - } - - revision 2010-09-24 { - description - "Initial revision."; - reference - "RFC 6021: Common YANG Data Types"; - } - - /*** collection of types related to protocol fields ***/ - - typedef ip-version { - type enumeration { - enum unknown { - value "0"; - description - "An unknown or unspecified version of the Internet - protocol."; - } - enum ipv4 { - value "1"; - description - "The IPv4 protocol as defined in RFC 791."; - } - enum ipv6 { - value "2"; - description - "The IPv6 protocol as defined in RFC 2460."; - } - } - description - "This value represents the version of the IP protocol. - - In the value set and its semantics, this type is equivalent - to the InetVersion textual convention of the SMIv2."; - reference - "RFC 791: Internet Protocol - RFC 2460: Internet Protocol, Version 6 (IPv6) Specification - RFC 4001: Textual Conventions for Internet Network Addresses"; - } - - typedef dscp { - type uint8 { - range "0..63"; - } - description - "The dscp type represents a Differentiated Services Code Point - that may be used for marking packets in a traffic stream. - In the value set and its semantics, this type is equivalent - to the Dscp textual convention of the SMIv2."; - reference - "RFC 3289: Management Information Base for the Differentiated - Services Architecture - RFC 2474: Definition of the Differentiated Services Field - (DS Field) in the IPv4 and IPv6 Headers - RFC 2780: IANA Allocation Guidelines For Values In - the Internet Protocol and Related Headers"; - } - - typedef ipv6-flow-label { - type uint32 { - range "0..1048575"; - } - description - "The ipv6-flow-label type represents the flow identifier or Flow - Label in an IPv6 packet header that may be used to - discriminate traffic flows. - - In the value set and its semantics, this type is equivalent - to the IPv6FlowLabel textual convention of the SMIv2."; - reference - "RFC 3595: Textual Conventions for IPv6 Flow Label - RFC 2460: Internet Protocol, Version 6 (IPv6) Specification"; - } - - typedef port-number { - type uint16 { - range "0..65535"; - } - description - "The port-number type represents a 16-bit port number of an - Internet transport-layer protocol such as UDP, TCP, DCCP, or - SCTP. Port numbers are assigned by IANA. A current list of - all assignments is available from . - - Note that the port number value zero is reserved by IANA. In - situations where the value zero does not make sense, it can - be excluded by subtyping the port-number type. - In the value set and its semantics, this type is equivalent - to the InetPortNumber textual convention of the SMIv2."; - reference - "RFC 768: User Datagram Protocol - RFC 793: Transmission Control Protocol - RFC 4960: Stream Control Transmission Protocol - RFC 4340: Datagram Congestion Control Protocol (DCCP) - RFC 4001: Textual Conventions for Internet Network Addresses"; - } - - /*** collection of types related to autonomous systems ***/ - - typedef as-number { - type uint32; - description - "The as-number type represents autonomous system numbers - which identify an Autonomous System (AS). An AS is a set - of routers under a single technical administration, using - an interior gateway protocol and common metrics to route - packets within the AS, and using an exterior gateway - protocol to route packets to other ASes. IANA maintains - the AS number space and has delegated large parts to the - regional registries. - - Autonomous system numbers were originally limited to 16 - bits. BGP extensions have enlarged the autonomous system - number space to 32 bits. This type therefore uses an uint32 - base type without a range restriction in order to support - a larger autonomous system number space. - - In the value set and its semantics, this type is equivalent - to the InetAutonomousSystemNumber textual convention of - the SMIv2."; - reference - "RFC 1930: Guidelines for creation, selection, and registration - of an Autonomous System (AS) - RFC 4271: A Border Gateway Protocol 4 (BGP-4) - RFC 4001: Textual Conventions for Internet Network Addresses - RFC 6793: BGP Support for Four-Octet Autonomous System (AS) - Number Space"; - } - - /*** collection of types related to IP addresses and hostnames ***/ - - typedef ip-address { - type union { - type inet:ipv4-address; - type inet:ipv6-address; - } - description - "The ip-address type represents an IP address and is IP - version neutral. The format of the textual representation - implies the IP version. This type supports scoped addresses - by allowing zone identifiers in the address format."; - reference - "RFC 4007: IPv6 Scoped Address Architecture"; - } - - typedef ipv4-address { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' - + '(%[\p{N}\p{L}]+)?'; - } - description - "The ipv4-address type represents an IPv4 address in - dotted-quad notation. The IPv4 address may include a zone - index, separated by a % sign. - - The zone index is used to disambiguate identical address - values. For link-local addresses, the zone index will - typically be the interface index number or the name of an - interface. If the zone index is not present, the default - zone of the device will be used. - - The canonical format for the zone index is the numerical - format"; - } - - typedef ipv6-address { - type string { - pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' - + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' - + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' - + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' - + '(%[\p{N}\p{L}]+)?'; - pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' - + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' - + '(%.+)?'; - } - description - "The ipv6-address type represents an IPv6 address in full, - mixed, shortened, and shortened-mixed notation. The IPv6 - address may include a zone index, separated by a % sign. - - The zone index is used to disambiguate identical address - values. For link-local addresses, the zone index will - typically be the interface index number or the name of an - interface. If the zone index is not present, the default - zone of the device will be used. - - - - The canonical format of IPv6 addresses uses the textual - representation defined in Section 4 of RFC 5952. The - canonical format for the zone index is the numerical - format as described in Section 11.2 of RFC 4007."; - reference - "RFC 4291: IP Version 6 Addressing Architecture - RFC 4007: IPv6 Scoped Address Architecture - RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - } - - typedef ip-address-no-zone { - type union { - type inet:ipv4-address-no-zone; - type inet:ipv6-address-no-zone; - } - description - "The ip-address-no-zone type represents an IP address and is - IP version neutral. The format of the textual representation - implies the IP version. This type does not support scoped - addresses since it does not allow zone identifiers in the - address format."; - reference - "RFC 4007: IPv6 Scoped Address Architecture"; - } - - typedef ipv4-address-no-zone { - type inet:ipv4-address { - pattern '[0-9\.]*'; - } - description - "An IPv4 address without a zone index. This type, derived from - ipv4-address, may be used in situations where the zone is - known from the context and hence no zone index is needed."; - } - - typedef ipv6-address-no-zone { - type inet:ipv6-address { - pattern '[0-9a-fA-F:\.]*'; - } - description - "An IPv6 address without a zone index. This type, derived from - ipv6-address, may be used in situations where the zone is - known from the context and hence no zone index is needed."; - reference - "RFC 4291: IP Version 6 Addressing Architecture - RFC 4007: IPv6 Scoped Address Architecture - RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - } - - typedef ip-prefix { - type union { - type inet:ipv4-prefix; - type inet:ipv6-prefix; - } - description - "The ip-prefix type represents an IP prefix and is IP - version neutral. The format of the textual representations - implies the IP version."; - } - - typedef ipv4-prefix { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' - + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; - } - description - "The ipv4-prefix type represents an IPv4 address prefix. - The prefix length is given by the number following the - slash character and must be less than or equal to 32. - - A prefix length value of n corresponds to an IP address - mask that has n contiguous 1-bits from the most - significant bit (MSB) and all other bits set to 0. - - The canonical format of an IPv4 prefix has all bits of - the IPv4 address set to zero that are not part of the - IPv4 prefix."; - } - - typedef ipv6-prefix { - type string { - pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' - + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' - + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' - + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' - + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; - pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' - + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' - + '(/.+)'; - } - - - description - "The ipv6-prefix type represents an IPv6 address prefix. - The prefix length is given by the number following the - slash character and must be less than or equal to 128. - - A prefix length value of n corresponds to an IP address - mask that has n contiguous 1-bits from the most - significant bit (MSB) and all other bits set to 0. - - The IPv6 address should have all bits that do not belong - to the prefix set to zero. - - The canonical format of an IPv6 prefix has all bits of - the IPv6 address set to zero that are not part of the - IPv6 prefix. Furthermore, the IPv6 address is represented - as defined in Section 4 of RFC 5952."; - reference - "RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - } - - /*** collection of domain name and URI types ***/ - - typedef domain-name { - type string { - pattern - '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' - + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' - + '|\.'; - length "1..253"; - } - description - "The domain-name type represents a DNS domain name. The - name SHOULD be fully qualified whenever possible. - - Internet domain names are only loosely specified. Section - 3.5 of RFC 1034 recommends a syntax (modified in Section - 2.1 of RFC 1123). The pattern above is intended to allow - for current practice in domain name use, and some possible - future expansion. It is designed to hold various types of - domain names, including names used for A or AAAA records - (host names) and other records, such as SRV records. Note - that Internet host names have a stricter syntax (described - in RFC 952) than the DNS recommendations in RFCs 1034 and - 1123, and that systems that want to store host names in - schema nodes using the domain-name type are recommended to - adhere to this stricter standard to ensure interoperability. - - The encoding of DNS names in the DNS protocol is limited - to 255 characters. Since the encoding consists of labels - prefixed by a length bytes and there is a trailing NULL - byte, only 253 characters can appear in the textual dotted - notation. - - The description clause of schema nodes using the domain-name - type MUST describe when and how these names are resolved to - IP addresses. Note that the resolution of a domain-name value - may require to query multiple DNS records (e.g., A for IPv4 - and AAAA for IPv6). The order of the resolution process and - which DNS record takes precedence can either be defined - explicitly or may depend on the configuration of the - resolver. - - Domain-name values use the US-ASCII encoding. Their canonical - format uses lowercase US-ASCII characters. Internationalized - domain names MUST be A-labels as per RFC 5890."; - reference - "RFC 952: DoD Internet Host Table Specification - RFC 1034: Domain Names - Concepts and Facilities - RFC 1123: Requirements for Internet Hosts -- Application - and Support - RFC 2782: A DNS RR for specifying the location of services - (DNS SRV) - RFC 5890: Internationalized Domain Names in Applications - (IDNA): Definitions and Document Framework"; - } - - typedef host { - type union { - type inet:ip-address; - type inet:domain-name; - } - description - "The host type represents either an IP address or a DNS - domain name."; - } - - typedef uri { - type string; - description - "The uri type represents a Uniform Resource Identifier - (URI) as defined by STD 66. - - Objects using the uri type MUST be in US-ASCII encoding, - and MUST be normalized as described by RFC 3986 Sections - 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary - percent-encoding is removed, and all case-insensitive - characters are set to lowercase except for hexadecimal - digits, which are normalized to uppercase as described in - Section 6.2.2.1. - - The purpose of this normalization is to help provide - unique URIs. Note that this normalization is not - sufficient to provide uniqueness. Two URIs that are - textually distinct after this normalization may still be - equivalent. - - Objects using the uri type may restrict the schemes that - they permit. For example, 'data:' and 'urn:' schemes - might not be appropriate. - - A zero-length URI is not a valid URI. This can be used to - express 'URI absent' where required. - - In the value set and its semantics, this type is equivalent - to the Uri SMIv2 textual convention defined in RFC 5017."; - reference - "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax - RFC 3305: Report from the Joint W3C/IETF URI Planning Interest - Group: Uniform Resource Identifiers (URIs), URLs, - and Uniform Resource Names (URNs): Clarifications - and Recommendations - RFC 5017: MIB Textual Conventions for Uniform Resource - Identifiers (URIs)"; - } - -} diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-network-topology@2015-12-08.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-network-topology@2015-12-08.yang deleted file mode 100644 index bba3916e9b..0000000000 --- a/apps/tenbi/yangmodel/src/main/yang/ietf-network-topology@2015-12-08.yang +++ /dev/null @@ -1,277 +0,0 @@ -module ietf-network-topology { - // yang-version 1.1; - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology"; - prefix lnk; - import ietf-inet-types { - prefix inet; - } - import ietf-network { - prefix nd; - } - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - contact - "WG Web: - WG List: - WG Chair: Susan Hares - - WG Chair: Jeffrey Haas - - Editor: Alexander Clemm - - Editor: Jan Medved - - Editor: Robert Varga - - Editor: Tony Tkacik - - Editor: Nitin Bahadur - - Editor: Hariharan Ananthakrishnan - "; - description - "This module defines a common base model for network topology, - augmenting the base network model with links to connect nodes, - as well as termination points to terminate links on nodes. - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http: trustee.ietf.org/license-info). - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - revision 2015-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02."; - } - typedef link-id { - type inet:uri; - description - "An identifier for a link in a topology. - The identifier SHOULD be chosen such that the same link in a - real network topology will always be identified through the - same identifier, even if the model is instantiated in - separate datastores. An implementation MAY choose to capture - semantics in the identifier, for example to indicate the type - of link and/or the type of topology that the link is a part - of."; - } - typedef tp-id { - type inet:uri; - description - "An identifier for termination points on a node. - The identifier SHOULD be chosen such that the same TP in a - real network topology will always be identified through the - same identifier, even if the model is instantiated in - separate datastores. An implementation MAY choose to capture - semantics in the identifier, for example to indicate the type - of TP and/or the type of node and topology that the TP is a - part of."; - } - grouping link-ref { - description - "References a link in a specific network."; - leaf link-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/../"+ - "network-ref]/lnk:link/lnk:link-id"; - require-instance false; - } - description - "A type for an absolute reference a link instance. - (This type should not be used for relative references. - In such a case, a relative path should be used instead.)"; - } - uses nd:network-ref; - } - grouping tp-ref { - description - "References a termination point in a specific node."; - leaf tp-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/../"+ - "network-ref]/nd:node[nd:node-id=current()/../"+ - "node-ref]/lnk:termination-point/lnk:tp-id"; - require-instance false; - } - description - "A type for an absolute reference to a termination point. - (This type should not be used for relative references. - In such a case, a relative path should be used instead.)"; - } - uses nd:node-ref; - } - augment "/nd:networks/nd:network" { - description - "Add links to the network model."; - list link { - key "link-id"; - description - "A Network Link connects a by Local (Source) node and - a Remote (Destination) Network Nodes via a set of the - nodes' termination points. - As it is possible to have several links between the same - source and destination nodes, and as a link could - potentially be re-homed between termination points, to - ensure that we would always know to distinguish between - links, every link is identified by a dedicated link - identifier. - Note that a link models a point-to-point link, not a - multipoint link. - Layering dependencies on links in underlay topologies are - not represented as the layering information of nodes and of - termination points is sufficient."; - container source { - description - "This container holds the logical source of a particular - link."; - leaf source-node { - type leafref { - path "../../../nd:node/nd:node-id"; - } - mandatory true; - description - "Source node identifier, must be in same topology."; - } - leaf source-tp { - type leafref { - path "../../../nd:node[nd:node-id=current()/../"+ - "source-node]/termination-point/tp-id"; - } - description - "Termination point within source node that terminates - the link."; - } - } - container destination { - description - "This container holds the logical destination of a - particular link."; - leaf dest-node { - type leafref { - path "../../../nd:node/nd:node-id"; - } - mandatory true; - description - "Destination node identifier, must be in the same - network."; - } - leaf dest-tp { - type leafref { - path "../../../nd:node[nd:node-id=current()/../"+ - "dest-node]/termination-point/tp-id"; - } - description - "Termination point within destination node that - terminates the link."; - } - } - leaf link-id { - type link-id; - description - "The identifier of a link in the topology. - A link is specific to a topology to which it belongs."; - } - list supporting-link { - key "network-ref link-ref"; - description - "Identifies the link, or links, that this link - is dependent on."; - leaf network-ref { - type leafref { - path "../../../nd:supporting-network/nd:network-ref"; - require-instance false; - } - description - "This leaf identifies in which underlay topology - supporting link is present."; - } - leaf link-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/"+ - "../network-ref]/link/link-id"; - require-instance false; - } - description - "This leaf identifies a link which is a part - of this link's underlay. Reference loops, in which - a link identifies itself as its underlay, either - directly or transitively, are not allowed."; - } - } - } - } - augment "/nd:networks/nd:network/nd:node" { - description - "Augment termination points which terminate links. - Termination points can ultimately be mapped to interfaces."; - list termination-point { - key "tp-id"; - description - "A termination point can terminate a link. - Depending on the type of topology, a termination point - could, for example, refer to a port or an interface."; - leaf tp-id { - type tp-id; - description - "Termination point identifier."; - } - list supporting-termination-point { - key "network-ref node-ref tp-ref"; - description - "The leaf list identifies any termination points that - the termination point is dependent on, or maps onto. - Those termination points will themselves be contained - in a supporting node. - This dependency information can be inferred from - the dependencies between links. For this reason, - this item is not separately configurable. Hence no - corresponding constraint needs to be articulated. - The corresponding information is simply provided by the - implementing system."; - leaf network-ref { - type leafref { - path "../../../nd:supporting-node/nd:network-ref"; - require-instance false; - } - description - "This leaf identifies in which topology the - supporting termination point is present."; - } - leaf node-ref { - type leafref { - path "../../../nd:supporting-node/nd:node-ref"; - require-instance false; - } - description - "This leaf identifies in which node the supporting - termination point is present."; - } - leaf tp-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/"+ - "../network-ref]/nd:node[nd:node-id=current()/../"+ - "node-ref]/termination-point/tp-id"; - require-instance false; - } - description - "Reference to the underlay node, must be in a - different topology"; - } - } - } - } -} diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-network@2015-12-08.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-network@2015-12-08.yang deleted file mode 100644 index f5e0dcc579..0000000000 --- a/apps/tenbi/yangmodel/src/main/yang/ietf-network@2015-12-08.yang +++ /dev/null @@ -1,196 +0,0 @@ -module ietf-network { - // yang-version 1.1; - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network"; - prefix nd; - import ietf-inet-types { - prefix inet; - } - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - contact - "WG Web: - WG List: - WG Chair: Susan Hares - - WG Chair: Jeffrey Haas - - Editor: Alexander Clemm - - Editor: Jan Medved - - Editor: Robert Varga - - Editor: Tony Tkacik - - Editor: Nitin Bahadur - - Editor: Hariharan Ananthakrishnan - "; - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http: trustee.ietf.org/license-info). - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - revision 2015-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02"; - } - typedef node-id { - type inet:uri; - description - "Identifier for a node."; - } - typedef network-id { - type inet:uri; - description - "Identifier for a network."; - } - grouping network-ref { - description - "Contains the information necessary to reference a network, - for example an underlay network."; - leaf network-ref { - type leafref { - path "/nd:networks/nd:network/nd:network-id"; - require-instance false; - } - description - "Used to reference a network, for example an underlay - network."; - } - } - grouping node-ref { - description - "Contains the information necessary to reference a node."; - leaf node-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/../"+ - "network-ref]/nd:node/nd:node-id"; - require-instance false; - } - description - "Used to reference a node. - Nodes are identified relative to the network they are - contained in."; - } - uses network-ref; - } - container networks { - description - "Serves as top-level container for a list of networks."; - list network { - key "network-id"; - description - "Describes a network. - A network typically contains an inventory of nodes, - topological information (augmented through - network-topology model), as well as layering - information."; - container network-types { - description - "Serves as an augmentation target. - The network type is indicated through corresponding - presence containers augmented into this container."; - } - leaf network-id { - type network-id; - description - "Identifies a network."; - } - list supporting-network { - key "network-ref"; - description - "An underlay network, used to represent layered network - topologies."; - leaf network-ref { - type leafref { - path "/networks/network/network-id"; - require-instance false; - } - description - "References the underlay network."; - } - } - list node { - key "node-id"; - description - "The inventory of nodes of this network."; - leaf node-id { - type node-id; - description - "Identifies a node uniquely within the containing - network."; - } - list supporting-node { - key "network-ref node-ref"; - description - "Represents another node, in an underlay network, that - this node is supported by. Used to represent layering - structure."; - leaf network-ref { - type leafref { - path "../../../supporting-network/network-ref"; - require-instance false; - } - description - "References the underlay network that the - underlay node is part of."; - } - leaf node-ref { - type leafref { - path "/networks/network/node/node-id"; - require-instance false; - } - description - "References the underlay node itself."; - } - } - } - } - } - container networks-state { - config false; - description - "Serves as top-level container for a list of state information - for networks"; - list network { - key "network-ref"; - description - "Data nodes representing operational data and state of - networks. - An instance is automatically created for every network - in the corresponding list under the networks container."; - uses network-ref; - leaf server-provided { - type boolean; - description - "Indicates whether the information concerning this - particular network is populated by the server - (server-provided true, the general case for network - information discovered from the server), - or whether it is configured by a client - (server-provided true, possible e.g. for - service overlays managed through a controller)."; - } - } - } -} diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-schedule.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-schedule.yang deleted file mode 100644 index 55ce942e18..0000000000 --- a/apps/tenbi/yangmodel/src/main/yang/ietf-schedule.yang +++ /dev/null @@ -1,61 +0,0 @@ -module ietf-schedule { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-schedule"; - // replace with IANA namespace when assigned - - prefix "sch"; - - import ietf-yang-types { - prefix "yang"; - } - - organization "TBD"; - contact "TBD"; - description - "The model allows time scheduling parameters to be specified."; - - revision "2015-10-08" { - description "Initial revision"; - reference "TBD"; - } - - /* - * Groupings - */ - - grouping schedules { - description - "A list of schedules defining when a particular - configuration takes effect."; - container schedules { - list schedule { - key "schedule-id"; - description "A list of schedule elements."; - - leaf schedule-id { - type uint32; - description "Identifies the schedule element."; - } - leaf start { - type yang:date-and-time; - description "Start time."; - } - leaf schedule-duration { - type string { - pattern - 'P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?(\d+M)?(\d+S)?'; - } - description "Schedule duration in ISO 8601 format."; - } - leaf repeat-interval { - type string { - pattern - 'R\d*/P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?(\d+M)?' - + '(\d+S)?'; - } - description "Repeat interval in ISO 8601 format."; - } - } - } - } // schedules -} diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-te-topology.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-te-topology.yang deleted file mode 100644 index 5c3efb1462..0000000000 --- a/apps/tenbi/yangmodel/src/main/yang/ietf-te-topology.yang +++ /dev/null @@ -1,2035 +0,0 @@ -module ietf-te-topology { - //yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology"; - - prefix "tet"; - - import ietf-yang-types { - prefix "yang"; - } - - import ietf-inet-types { - prefix "inet"; - } - - import ietf-te-types { - prefix "te-types"; - } - - import ietf-network { - prefix "nw"; - } - - import ietf-network-topology { - prefix "nt"; - } - - organization - "Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Lou Berger - - - WG Chair: Vishnu Pavan Beeram - - - Editor: Xufeng Liu - - - Editor: Igor Bryskin - - - Editor: Vishnu Pavan Beeram - - - Editor: Tarek Saad - - - Editor: Himanshu Shah - - - Editor: Oscar Gonzalez De Dios - "; - - description "TE topology model"; - - revision "2017-01-10" { - description "Initial revision"; - reference "TBD"; - } - - /* - * Features - */ - feature nsrlg { - description - "This feature indicates that the system supports NSRLG - (Not Sharing Risk Link Group)."; - } - - feature te-topology-hierarchy { - description - "This feature indicates that the system allows underlay - and/or overlay TE topology hierarchy."; - } - - feature template { - description - "This feature indicates that the system supports - template configuration."; - } - - /* - * Typedefs - */ - typedef geographic-coordinate-degree { - type decimal64 { - fraction-digits 8; - } - description - "Decimal degree (DD) used to express latitude and longitude - geographic coordinates."; - } // geographic-coordinate-degree - - typedef te-bandwidth { - type string { - pattern - '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' - + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' - + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+' - + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' - + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' - + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*'; - } - description - "This is the generic bandwidth type that is a string containing - a list of numbers separated by commas, with each of these - number can be non-negative decimal, hex integer, or hex float: - (dec | hex | float)[*(','(dec | hex | float))] - For packet switching type, a float number is used, such as - 0x1p10. - For OTN switching type, a list of integers can be used, such - as '0,2,3,1', indicating 2 odu0's and 1 odu3. - For DWDM, a list of pairs of slot number and width can be - used, such as '0, 2, 3, 3', indicating a frequency slot 0 with - slot width 2 and a frequency slot 3 with slot width 3."; - } // te-bandwidth - - typedef te-info-source { - type enumeration { - enum "unknown" { - description "The source is unknown."; - } - enum "locally-configured" { - description "Configured entity."; - } - enum "ospfv2" { - description "OSPFv2."; - } - enum "ospfv3" { - description "OSPFv3."; - } - enum "isis" { - description "ISIS."; - } - enum "bgp-ls" { - description "BGP-LS."; - reference - "RFC7752: North-Bound Distribution of Link-State and - Traffic Engineering (TE) Information Using BGP"; - } - enum "system-processed" { - description "System processed entity."; - } - enum "other" { - description "Other source."; - } - } - description - "Describining the type of source that has provided the - related information, and the source credibility."; - } // te-info-source - - typedef te-path-disjointness { - type bits { - bit node { - position 0; - description "Node disjoint."; - } - bit link { - position 1; - description "Link disjoint."; - } - bit srlg { - position 2; - description "SRLG (Shared Risk Link Group) disjoint."; - } - } - description - "Type of the resource disjointness for a TE tunnel path."; - reference - "RFC4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } // te-path-disjointness - - /* - * Groupings - */ - grouping connectivity-label-restriction-list { - description - "List of abel restrictions specifying what labels may or may - not be used on a link connectivity."; - list label-restriction { - key "inclusive-exclusive label-start"; - description - "List of abel restrictions specifying what labels may or may - not be used on a link connectivity."; - reference - "RFC7579: General Network Element Constraint Encoding - for GMPLS-Controlled Networks"; - leaf inclusive-exclusive { - type enumeration { - enum inclusive { - description "The label or label range is inclusive."; - } - enum exclusive { - description "The label or label range is exclusive."; - } - } - description - "Whether the list item is inclusive or exclusive."; - } - leaf label-start { - type te-types:generalized-label; - description - "This is the starting lable if a lable range is specified. - This is the lable value if a single lable is specified, - in which case, attribute 'label-end' is not set."; - } - leaf label-end { - type te-types:generalized-label; - description - "The ending lable if a lable range is specified; - This attribute is not set, If a single lable is - specified."; - } - leaf range-bitmap { - type binary; - description - "When there are gaps between label-start and label-end, - this attribute is used to specified the possitions - of the used labels."; - } - } - } // connectivity-label-restrictions - - grouping connectivity-matrix-entry-attributes { - description - "Attributes of connectivity matrix entry."; - leaf is-allowed { - type boolean; - description - "true - switching is allowed, - false - switching is disallowed."; - } - uses connectivity-label-restriction-list; - container underlay { - if-feature te-topology-hierarchy; - presence - "Indicates the underlay exists for this link."; - description "Attributes of the te-link underlay."; - reference - "RFC4206: Label Switched Paths (LSP) Hierarchy with - Generalized Multi-Protocol Label Switching (GMPLS) - Traffic Engineering (TE)"; - - uses te-link-underlay-attributes; - } // underlay - uses te-link-iscd-attributes; - uses te-link-connectivity-attributes; - } // connectivity-matrix-entry-attributes - - grouping geolocation-container { - description - "A container containing a GPS location."; - container geolocation{ - description - "A container containing a GPS location."; - leaf altitude { - type int64; - units millimeter; - description - "Distance above the sea level."; - } - leaf latitude { - type geographic-coordinate-degree { - range "-90..90"; - } - description - "Relative position north or south on the Earth's surface."; - } - leaf longitude { - type geographic-coordinate-degree { - range "-180..180"; - } - description - "Angular distance east or west on the Earth's surface."; - } - } // gps-location - } // geolocation-container - - grouping information-source-state-attributes { - description - "The attributes identifying source that has provided the - related information, and the source credibility."; - leaf credibility-preference { - type uint16; - description - "The preference value to calculate the traffic - engineering database credibility value used for - tie-break selection between different - information-source values. - Higher value is more preferable."; - } - leaf logical-network-element { - type string; - description - "When applicable, this is the name of a logical network - element from which the information is learned."; - } // logical-network-element - leaf network-instance { - type string; - description - "When applicable, this is the name of a network-instance - from which the information is learned."; - } // network-instance - } // information-source-state-attributes - - grouping information-source-per-link-attributes { - description - "Per node container of the attributes identifying source that - has provided the related information, and the source - credibility."; - leaf information-source { - type te-info-source; - description - "Indicates the source of the information."; - } - container information-source-state { - description - "The container contains state attributes related to - the information source."; - uses information-source-state-attributes; - container topology { - description - "When the information is processed by the system, - the attributes in this container indicate which topology - is used to process to generate the result information."; - uses te-topology-ref; - leaf link-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id = " - + "current()/../network-ref]/nt:link/nt:link-id"; - require-instance false; - } - description - "A reference to a link-id."; - } - } // topology - } // information-source-state - } // information-source-per-link-attributes - - grouping information-source-per-node-attributes { - description - "Per node container of the attributes identifying source that - has provided the related information, and the source - credibility."; - leaf information-source { - type te-info-source; - description - "Indicates the source of the information."; - } - container information-source-state { - description - "The container contains state attributes related to - the information source."; - uses information-source-state-attributes; - container topology { - description - "When the information is processed by the system, - the attributes in this container indicate which topology - is used to process to generate the result information."; - uses te-topology-ref; - leaf node-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id = " - + "current()/../network-ref]/nw:node/nw:node-id"; - require-instance false; - } - description - "A reference to a node-id."; - } - } // topology - } // information-source-state - } // information-source-per-node-attributes - - grouping interface-switching-capability-list { - description - "List of Interface Switching Capabilities Descriptors (ISCD)"; - - list interface-switching-capability { - key "switching-capability"; - description - "List of Interface Switching Capabilities Descriptors (ISCD) - for this link."; - reference - "RFC3471: Generalized Multi-Protocol Label Switching (GMPLS) - Signaling Functional Description. - RFC4203: OSPF Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS)."; - leaf switching-capability { - type identityref { - base te-types:switching-capabilities; - } - description - "Switching Capability for this interface."; - } - leaf encoding { - type identityref { - base te-types:lsp-encoding-types; - } - description - "Encoding supported by this interface."; - } - uses te-link-iscd-attributes; - } // interface-switching-capability - } // interface-switching-capability-list - - grouping statistics-per-link { - description - "Statistics attributes per TE link."; - leaf discontinuity-time { - type yang:date-and-time; - mandatory true; - description - "The time on the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - /* Administrative attributes */ - leaf disables { - type yang:counter32; - description - "Number of times that link was disabled."; - } - leaf enables { - type yang:counter32; - description - "Number of times that link was enabled."; - } - leaf maintenance-clears { - type yang:counter32; - description - "Number of times that link was put out of maintenance."; - } - leaf maintenance-sets { - type yang:counter32; - description - "Number of times that link was put in maintenance."; - } - leaf modifies { - type yang:counter32; - description - "Number of times that link was modified."; - } - /* Operational attributes */ - leaf downs { - type yang:counter32; - description - "Number of times that link was set to operational down."; - } - leaf ups { - type yang:counter32; - description - "Number of times that link was set to operational up."; - } - /* Recovery attributes */ - leaf fault-clears { - type yang:counter32; - description - "Number of times that link experienced fault clear event."; - } - leaf fault-detects { - type yang:counter32; - description - "Number of times that link experienced fault detection."; - } - leaf protection-switches { - type yang:counter32; - description - "Number of times that link experienced protection - switchover."; - } - leaf protection-reverts { - type yang:counter32; - description - "Number of times that link experienced protection - reversion."; - } - leaf restoration-failures { - type yang:counter32; - description - "Number of times that link experienced restoration - failure."; - } - leaf restoration-starts { - type yang:counter32; - description - "Number of times that link experienced restoration - start."; - } - leaf restoration-successes { - type yang:counter32; - description - "Number of times that link experienced restoration - success."; - } - leaf restoration-reversion-failures { - type yang:counter32; - description - "Number of times that link experienced restoration reversion - failure."; - } - leaf restoration-reversion-starts { - type yang:counter32; - description - "Number of times that link experienced restoration reversion - start."; - } - leaf restoration-reversion-successes { - type yang:counter32; - description - "Number of times that link experienced restoration reversion - success."; - } - } // statistics-per-link - - grouping statistics-per-node { - description - "Statistics attributes per TE node."; - leaf discontinuity-time { - type yang:date-and-time; - mandatory true; - description - "The time on the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - container node { - description - "Containing TE node level statistics attributes."; - leaf disables { - type yang:counter32; - description - "Number of times that node was disabled."; - } - leaf enables { - type yang:counter32; - description - "Number of times that node was enabled."; - } - leaf maintenance-sets { - type yang:counter32; - description - "Number of times that node was put in maintenance."; - } - leaf maintenance-clears { - type yang:counter32; - description - "Number of times that node was put out of maintenance."; - } - leaf modifies { - type yang:counter32; - description - "Number of times that node was modified."; - } - } // node - container connectivity-matrix-entry { - description - "Containing connectivity matrix entry level statistics - attributes."; - leaf creates { - type yang:counter32; - description - "Number of times that a connectivity matrix entry was - created."; - reference - "RFC6241. Section 7.2 for 'create' operation. "; - } - leaf deletes { - type yang:counter32; - description - "Number of times that a connectivity matrix entry was - deleted."; - reference - "RFC6241. Section 7.2 for 'delete' operation. "; - } - leaf disables { - type yang:counter32; - description - "Number of times that a connectivity matrix entry was - disabled."; - } - leaf enables { - type yang:counter32; - description - "Number of times that a connectivity matrix entry was - enabled."; - } - leaf modifies { - type yang:counter32; - description - "Number of times that a connectivity matrix entry was - modified."; - } - } // connectivity-matrix-entry - } // statistics-per-node - - grouping statistics-per-ttp { - description - "Statistics attributes per TE TTP (Tunnel Termination Point)."; - leaf discontinuity-time { - type yang:date-and-time; - mandatory true; - description - "The time on the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - container tunnel-termination-point { - description - "Containing TE TTP (Tunnel Termination Point) level - statistics attributes."; - /* Administrative attributes */ - leaf disables { - type yang:counter32; - description - "Number of times that TTP was disabled."; - } - leaf enables { - type yang:counter32; - description - "Number of times that TTP was enabled."; - } - leaf maintenance-clears { - type yang:counter32; - description - "Number of times that TTP was put out of maintenance."; - } - leaf maintenance-sets { - type yang:counter32; - description - "Number of times that TTP was put in maintenance."; - } - leaf modifies { - type yang:counter32; - description - "Number of times that TTP was modified."; - } - /* Operational attributes */ - leaf downs { - type yang:counter32; - description - "Number of times that TTP was set to operational down."; - } - leaf ups { - type yang:counter32; - description - "Number of times that TTP was set to operational up."; - } - leaf in-service-clears { - type yang:counter32; - description - "Number of times that TTP was taken out of service - (TE tunnel was released)."; - } - leaf in-service-sets { - type yang:counter32; - description - "Number of times that TTP was put in service by a TE - tunnel (TE tunnel was set up)."; - } - } // tunnel-termination-point - - container local-link-connectivity { - description - "Containing TE LLCL (Local Link Connectivity List) level - statistics attributes."; - leaf creates { - type yang:counter32; - description - "Number of times that an LLCL entry was created."; - reference - "RFC6241. Section 7.2 for 'create' operation. "; - } - leaf deletes { - type yang:counter32; - description - "Number of times that an LLCL entry was deleted."; - reference - "RFC6241. Section 7.2 for 'delete' operation."; - } - leaf disables { - type yang:counter32; - description - "Number of times that an LLCL entry was disabled."; - } - leaf enables { - type yang:counter32; - description - "Number of times that an LLCL entry was enabled."; - } - leaf modifies { - type yang:counter32; - description - "Number of times that an LLCL entry was modified."; - } - } // local-link-connectivity - } // statistics-per-ttp - - grouping te-link-augment { - description - "Augmentation for TE link."; - - container te { - must "count(../nt:supporting-link)<=1" { - description - "For a link in a TE topology, there cannot be more - than 1 supporting link. If one or more link paths are - abstracted, the underlay is used."; - } - presence "TE support."; - description - "Indicates TE support."; - - container config { - description - "Configuration data."; - uses te-link-config; - } // config - container state { - config false; - description - "Operational state data."; - uses te-link-config; - uses te-link-state-derived; - } // state - container statistics { - config false; - description - "Statistics data."; - uses statistics-per-link; - } // statistics - } // te - } // te-link-augment - - grouping te-link-config { - description - "TE link configuration grouping."; - choice bundle-stack-level { - description - "The TE link can be partitioned into bundled - links, or component links."; - case bundle { - container bundled-links { - description - "A set of bundled links."; - reference - "RFC4201: Link Bundling in MPLS Traffic Engineering - (TE)."; - list bundled-link { - key "sequence"; - description - "Specify a bundled interface that is - further partitioned."; - leaf sequence { - type uint32; - description - "Identify the sequence in the bundle."; - } - leaf src-tp-ref { - type leafref { - path "../../../../../../nw:node[nw:node-id = " - + "current()/../../../../../nt:source/" - + "nt:source-node]/" - + "nt:termination-point/nt:tp-id"; - require-instance true; - } - description - "Reference to another TE termination point on the - same souruce node."; - } - leaf des-tp-ref { - type leafref { - path "../../../../../../nw:node[nw:node-id = " - + "current()/../../../../../nt:destination/" - + "nt:dest-node]/" - + "nt:termination-point/nt:tp-id"; - require-instance true; - } - description - "Reference to another TE termination point on the - same destination node."; - } - } // list bundled-link - } - } - case component { - container component-links { - description - "A set of component links"; - list component-link { - key "sequence"; - description - "Specify a component interface that is - sufficient to unambiguously identify the - appropriate resources"; - - leaf sequence { - type uint32; - description - "Identify the sequence in the bundle."; - } - leaf src-interface-ref { - type string; - description - "Reference to component link interface on the - source node."; - } - leaf des-interface-ref { - type string; - description - "Reference to component link interface on the - destinatioin node."; - } - } - } - } - } // bundle-stack-level - - leaf-list te-link-template { - if-feature template; - type leafref { - path "../../../../../te/templates/link-template/name"; - } - description - "The reference to a TE link template."; - } - uses te-link-config-attributes; - } // te-link-config - - grouping te-link-config-attributes { - description - "Link configuration attributes in a TE topology."; - container te-link-attributes { - description "Link attributes in a TE topology."; - leaf access-type { - type te-types:te-link-access-type; - description - "Link access type, which can be point-to-point or - multi-access."; - } - container external-domain { - description - "For an inter-domain link, specify the attributes of - the remote end of link, to facilitate the signalling at - local end."; - uses te-topology-ref; - leaf remote-te-node-id { - type te-types:te-node-id; - description - "Remote TE node identifier, used together with - remote-te-link-id to identify the remote link - termination point in a different domain."; - } - leaf remote-te-link-tp-id { - type te-types:te-tp-id; - description - "Remote TE link termination point identifier, used - together with remote-te-node-id to identify the remote - link termination point in a different domain."; - } - leaf plug-id { - type uint32; - description - "A topology-wide unique number that identifies on the - network a connectivity supporting a given inter-domain - TE link. This is more flexible alternative to specifying - remote-te-node-id and remote-te-link-tp-id, when the - provider does not know remote-te-node-id and - remote-te-link-tp-id or need to give client the - flexibility to mix-n-match multiple topologies."; - } - } - leaf is-abstract { - type empty; - description "Present if the link is abstract."; - } - leaf name { - type string; - description "Link Name."; - } - container underlay { - if-feature te-topology-hierarchy; - presence - "Indicates the underlay exists for this link."; - description "Attributes of the te-link underlay."; - reference - "RFC4206: Label Switched Paths (LSP) Hierarchy with - Generalized Multi-Protocol Label Switching (GMPLS) - Traffic Engineering (TE)"; - - uses te-link-underlay-attributes; - } // underlay - leaf admin-status { - type te-types:te-admin-status; - description - "The administrative state of the link."; - } - - uses te-link-info-attributes; - } // te-link-attributes - } // te-link-config-attributes - - grouping te-link-connectivity-attributes { - description - "Advertised TE connectivity attributes."; - leaf max-link-bandwidth { - type te-bandwidth; - description - "Maximum bandwidth that can be seen on this link in this - direction. Units in bytes per second."; - reference - "RFC3630: Traffic Engineering (TE) Extensions to OSPF - Version 2. - RFC5305: IS-IS Extensions for Traffic Engineering."; - } - leaf max-resv-link-bandwidth { - type te-bandwidth; - description - "Maximum amount of bandwidth that can be reserved in this - direction in this link. Units in bytes per second."; - reference - "RFC3630: Traffic Engineering (TE) Extensions to OSPF - Version 2. - RFC5305: IS-IS Extensions for Traffic Engineering."; - } - list unreserved-bandwidth { - key "priority"; - max-elements "8"; - description - "Unreserved bandwidth for 0-7 priority levels. Units in - bytes per second."; - reference - "RFC3630: Traffic Engineering (TE) Extensions to OSPF - Version 2. - RFC5305: IS-IS Extensions for Traffic Engineering."; - leaf priority { - type uint8 { - range "0..7"; - } - description "Priority."; - } - leaf bandwidth { - type te-bandwidth; - description - "Unreserved bandwidth for this level."; - } - } - leaf te-default-metric { - type uint32; - description - "Traffic engineering metric."; - } - leaf te-delay-metric { - type uint32; - description - "Traffic engineering delay metric."; - } - container te-srlgs { - description - "Containing a list of SLRGs."; - leaf-list value { - type te-types:srlg; - description "SRLG value."; - reference - "RFC4202: Routing Extensions in Support of - Generalized Multi-Protocol Label Switching (GMPLS)."; - } - } - container te-nsrlgs { - if-feature nsrlg; - description - "Containing a list of NSRLGs (Not Sharing Risk Link - Groups). - When an abstract TE link is configured, this list specifies - the request that underlay TE paths need to be mutually - disjoint with other TE links in the same groups."; - leaf-list id { - type uint32; - description - "NSRLG ID, uniquely configured within a topology."; - reference - "RFC4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - } - } - } // te-link-connectivity-attributes - - grouping te-link-info-attributes { - description - "Advertised TE information attributes."; - leaf link-index { - type uint64; - description - "The link identifier. If OSPF is used, this represents an - ospfLsdbID. If IS-IS is used, this represents an isisLSPID. - If a locally configured link is used, this object represents - a unique value, which is locally defined in a router."; - } - leaf administrative-group { - type te-types:admin-groups; - description - "Administrative group or color of the link. - This attribute covers both administrative group (defined in - RFC3630, RFC5329, and RFC5305), and extended administrative - group (defined in RFC7308)."; - } - uses interface-switching-capability-list; - leaf link-protection-type { - type enumeration { - enum "unprotected" { - description "Unprotected."; - } - enum "extra-traffic" { - description "Extra traffic."; - } - enum "shared" { - description "Shared."; - } - enum "1-for-1" { - description "One for one protection."; - } - enum "1-plus-1" { - description "One plus one protection."; - } - enum "enhanced" { - description "Enhanced protection."; - } - } - description - "Link Protection Type desired for this link."; - reference - "RFC4202: Routing Extensions in Support of - Generalized Multi-Protocol Label Switching (GMPLS)."; - } - uses te-link-connectivity-attributes; - } // te-link-info-attributes - - grouping te-link-iscd-attributes { - description - "TE link ISCD (Interface Switching Capability Descriptor) - attributes."; - reference - "Sec 1.4, RFC4203: OSPF Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS). Section 1.4."; - list max-lsp-bandwidth { - key "priority"; - max-elements "8"; - description - "Maximum LSP Bandwidth at priorities 0-7."; - leaf priority { - type uint8 { - range "0..7"; - } - description "Priority."; - } - leaf bandwidth { - type te-bandwidth; - description - "Max LSP Bandwidth for this level"; - } - } - } // te-link-iscd-attributes - - grouping te-link-state-derived { - description - "Link state attributes in a TE topology."; - leaf oper-status { - type te-types:te-oper-status; - description - "The current operational state of the link."; - } - leaf is-transitional { - type empty; - description - "Present if the link is transitional, used as an - alternative approach in lieu of inter-layer-lock-id - for path computation in a TE topology covering multiple - layers or multiple regions."; - reference - "RFC5212: Requirements for GMPLS-Based Multi-Region and - Multi-Layer Networks (MRN/MLN). - RFC6001: Generalized MPLS (GMPLS) Protocol Extensions - for Multi-Layer and Multi-Region Networks (MLN/MRN)."; - } - uses information-source-per-link-attributes; - list information-source-entry { - key "information-source"; - description - "A list of information sources learned, including the one - used."; - uses information-source-per-link-attributes; - uses te-link-info-attributes; - } - container recovery { - description - "Status of the recovery process."; - leaf restoration-status { - type te-types:te-recovery-status; - description - "Restoration status."; - } - leaf protection-status { - type te-types:te-recovery-status; - description - "Protection status."; - } - } - container underlay { - if-feature te-topology-hierarchy; - description "State attributes for te-link underlay."; - uses te-link-state-underlay-attributes; - } - } // te-link-state-derived - - grouping te-link-state-underlay-attributes { - description "State attributes for te-link underlay."; - leaf dynamic { - type boolean; - description - "true if the underlay is dynamically created."; - } - leaf committed { - type boolean; - description - "true if the underlay is committed."; - } - } // te-link-state-underlay-attributes - - grouping te-link-underlay-attributes { - description "Attributes for te-link underlay."; - reference - "RFC4206: Label Switched Paths (LSP) Hierarchy with - Generalized Multi-Protocol Label Switching (GMPLS) - Traffic Engineering (TE)"; - container primary-path { - description - "The service path on the underlay topology that - supports this link."; - uses te-topology-ref; - list path-element { - key "path-element-id"; - description - "A list of path elements describing the service path."; - leaf path-element-id { - type uint32; - description "To identify the element in a path."; - } - uses te-path-element; - } - } // primary-path - list backup-path { - key "index"; - description - "A list of backup service paths on the underlay topology that - protect the underlay primary path. If the primary path is - not protected, the list contains zero elements. If the - primary path is protected, the list contains one or more - elements."; - leaf index { - type uint32; - description - "A sequence number to identify a backup path."; - } - uses te-topology-ref; - list path-element { - key "path-element-id"; - description - "A list of path elements describing the backup service - path"; - leaf path-element-id { - type uint32; - description "To identify the element in a path."; - } - uses te-path-element; - } - } // underlay-backup-path - leaf protection-type { - type uint16; - description - "Underlay protection type desired for this link"; - } - container tunnel-src { - uses te-tunnel-tp-ref; - description - "Source tunnel termination point of the underlay - tunnel."; - } - container tunnel-des { - uses te-tunnel-tp-ref; - description - "Destination tunnel termination point of the underlay - tunnel."; - } - leaf tunnel-id { - type uint16; - description - "Tunnel identifier used in the SESSION that remains constant - over the life of the tunnel. - This attribute is used together with underlay tunnel-src - and underlay tunnel-src. - The detailed information of this tunnel can be retrieved - from the ietf-te model."; - reference "RFC3209"; - } - leaf tunnel-sharing { - type boolean; - description - "'true' if the underlay tunnel can be shared with other - TE links; - 'false' if the underlay tunnel is dedicated to this - TE link."; - } - } // te-link-underlay-attributes - - grouping te-node-augment { - description - "Augmentation for TE node."; - - leaf te-node-id { - type te-types:te-node-id; - description - "The identifier of a node in the TE topology. - A node is specific to a topology to which it belongs."; - } - - container te { - must "../te-node-id" { - description - "te-node-id is mandatory."; - } - must "count(../nw:supporting-node)<=1" { - description - "For a node in a TE topology, there cannot be more - than 1 supporting node. If multiple nodes are abstracted, - the underlay-topology is used."; - } - presence "TE support."; - description - "Indicates TE support."; - - container config { - description - "Configuration data."; - uses te-node-config; - } // config - container state { - config false; - description - "Operational state data."; - - uses te-node-config; - uses te-node-state-derived; - } // state - container statistics { - config false; - description - "Statistics data."; - uses statistics-per-node; - } // statistics - - list tunnel-termination-point { - key "tunnel-tp-id"; - description - "A termination point can terminate a tunnel."; - leaf tunnel-tp-id { - type binary; - description - "Tunnel termination point identifier."; - } - - container config { - description - "Configuration data."; - uses te-node-tunnel-termination-attributes; - } - container state { - config false; - description - "Operational state data."; - - uses te-node-tunnel-termination-attributes; - uses geolocation-container; - } // state - container statistics { - config false; - description - "Statistics data."; - uses statistics-per-ttp; - } // statistics - - // Relations to other tunnel termination points - list supporting-tunnel-termination-point { -// key "node-ref tunnel-tp-ref"; - key "network-ref node-ref tunnel-tp-ref"; - description - "Identifies the tunnel termination points, that this - tunnel termination point is depending on."; -// leaf node-ref { -// type leafref { -// path "../../../../nw:supporting-node/nw:node-ref"; -// require-instance false; -// } -// description -// "This leaf identifies in which node the supporting -// tunnel termination point is present."; -// } - uses nw:node-ref; - leaf tunnel-tp-ref { - type leafref { - path "/nw:networks/nw:network"+ - "[nw:network-id="+ - "current()/../../../../nw:supporting-node/"+ - "nw:network-ref]/"+ - "nw:node[nw:node-id=current()/../node-ref]/te/"+ - "tunnel-termination-point/tunnel-tp-id"; - require-instance false; - } - description - "Reference to the underlay node, must be in a - different topology"; - } - } // supporting-tunnel-termination-point - } // tunnel-termination-point - } // te - } // te-node-augment - - grouping te-node-config { - description "TE node configuration grouping."; - - leaf-list te-node-template { - if-feature template; - type leafref { - path "../../../../../te/templates/node-template/name"; - } - description - "The reference to a TE node template."; - } - uses te-node-config-attributes; - } // te-node-config - - grouping te-node-config-attributes { - description "Configuration node attributes in a TE topology."; - container te-node-attributes { - description "Containing node attributes in a TE topology."; - leaf admin-status { - type te-types:te-admin-status; - description - "The administrative state of the link."; - } - uses te-node-connectivity-matrix; - uses te-node-info-attributes; - } // te-node-attributes - } // te-node-config-attributes - - grouping te-node-config-attributes-template { - description - "Configuration node attributes for template in a TE topology."; - container te-node-attributes { - description "Containing node attributes in a TE topology."; - leaf admin-status { - type te-types:te-admin-status; - description - "The administrative state of the link."; - } - uses te-node-info-attributes; - } // te-node-attributes - } // te-node-config-attributes-template - - grouping te-node-connectivity-matrix { - description "Connectivity matrix on a TE node."; - container connectivity-matrices { - description - "Containing connectivity matrix on a TE node."; - leaf number-of-entries { - type uint16; - description - "The number of connectivity matrix entries. - If this number is speficied in the configuration request, - the number is requested number of entries, which may not - all be listed in the list; - if this number is reported in the state data, - the number is the current number of operational entries."; - } - uses connectivity-matrix-entry-attributes; - list connectivity-matrix { - key "id"; - description - "Represents node's switching limitations, i.e. limitations - in interconnecting network TE links across the node."; - reference - "RFC7579: General Network Element Constraint Encoding - for GMPLS-Controlled Networks."; - leaf id { - type uint32; - description "Identifies the connectivity-matrix entry."; - } - container from { - leaf tp-ref { - type leafref { - path "../../../../../../../nt:termination-point/"+ - "nt:tp-id"; - } - description - "Relative reference to source termination point."; - } - description - "Reference to source NTP."; - } - container to { - leaf tp-ref { - type leafref { - path "../../../../../../../nt:termination-point/"+ - "nt:tp-id"; - } - description - "Relative reference to destination termination point."; - } - description - "Reference to destination NTP."; - } - uses connectivity-matrix-entry-attributes; - } // connectivity-matrix - } // connectivity-matrices - } // te-node-connectivity-matrix - - grouping te-node-connectivity-matrix-abs { - description - "Connectivity matrix on a TE node, using absolute - paths to reference termination points."; - list connectivity-matrix { - key "id"; - description - "Represents node's switching limitations, i.e. limitations - in interconnecting network TE links across the node."; - reference - "RFC7579: General Network Element Constraint Encoding - for GMPLS-Controlled Networks."; - leaf id { - type uint32; - description "Identifies the connectivity-matrix entry."; - } - container from { - uses nt:tp-ref; - description - "Reference to source NTP."; - } - container to { - uses nt:tp-ref; - description - "Reference to destination NTP."; - } - leaf is-allowed { - type boolean; - description - "true - switching is allowed, - false - switching is disallowed."; - } - } - } // te-node-connectivity-matrix-abs - - grouping te-node-info-attributes { - description - "Advertised TE information attributes."; - leaf domain-id { - type uint32; - description - "Identifies the domain that this node belongs. - This attribute is used to support inter-domain links."; - reference - "RFC5152: A Per-Domain Path Computation Method for - Establishing Inter-Domain Traffic Engineering (TE) - Label Switched Paths (LSPs). - RFC5392: OSPF Extensions in Support of Inter-Autonomous - System (AS) MPLS and GMPLS Traffic Engineering. - RFC5316: ISIS Extensions in Support of Inter-Autonomous - System (AS) MPLS and GMPLS Traffic Engineering."; - } - leaf is-abstract { - type empty; - description - "Present if the node is abstract, not present if the node - is actual."; - } - leaf name { - type inet:domain-name; - description "Node name."; - } - leaf-list signaling-address { - type inet:ip-address; - description "Node signaling address."; - } - container underlay-topology { - if-feature te-topology-hierarchy; - description - "When an abstract node encapsulates a topology, - the attributes in this container point to said topology."; - uses te-topology-ref; - } - } // te-node-info-attributes - - grouping te-node-state-derived { - description "Node state attributes in a TE topology."; - leaf oper-status { - type te-types:te-oper-status; - description - "The current operational state of the node."; - } - uses geolocation-container; - leaf is-multi-access-dr { - type empty; - description - "The presence of this attribute indicates that this TE node - is a pseudonode elected as a designated router."; - reference - "RFC3630: Traffic Engineering (TE) Extensions to OSPF - Version 2. - RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual - Environments."; - } - uses information-source-per-node-attributes; - list information-source-entry { - key "information-source"; - description - "A list of information sources learned, including the one - used."; - uses information-source-per-node-attributes; - uses te-node-connectivity-matrix; - uses te-node-info-attributes; - } - } // te-node-state-derived - - grouping te-node-state-derived-notification { - description "Node state attributes in a TE topology."; - leaf oper-status { - type te-types:te-oper-status; - description - "The current operational state of the node."; - } - leaf is-multi-access-dr { - type empty; - description - "The presence of this attribute indicates that this TE node - is a pseudonode elected as a designated router."; - reference - "RFC3630: Traffic Engineering (TE) Extensions to OSPF - Version 2. - RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual - Environments."; - } - uses information-source-per-node-attributes; - list information-source-entry { - key "information-source"; - description - "A list of information sources learned, including the one - used."; - uses information-source-per-node-attributes; - uses te-node-connectivity-matrix-abs; - uses te-node-info-attributes; - } - } // te-node-state-derived-notification - - grouping te-node-tunnel-termination-attributes { - description - "Termination capability of a tunnel termination point on a - TE node."; - - leaf switching-capability { - type identityref { - base te-types:switching-capabilities; - } - description - "Switching Capability for this interface."; - } - leaf encoding { - type identityref { - base te-types:lsp-encoding-types; - } - description - "Encoding supported by this interface."; - } - leaf inter-layer-lock-id { - type uint32; - description - "Inter layer lock ID, used for path computation in a TE - topology covering multiple layers or multiple regions."; - reference - "RFC5212: Requirements for GMPLS-Based Multi-Region and - Multi-Layer Networks (MRN/MLN). - RFC6001: Generalized MPLS (GMPLS) Protocol Extensions - for Multi-Layer and Multi-Region Networks (MLN/MRN)."; - } - leaf protection-type { - type identityref { - base te-types:lsp-prot-type; - } - description - "The protection type that this tunnel termination point - is capable of."; - } - - container local-link-connectivities { - description - "Containing local link connectivity list for - a tunnel termination point on a TE node."; - leaf number-of-entries { - type uint16; - description - "The number of local link connectivity list entries. - If this number is speficied in the configuration request, - the number is requested number of entries, which may not - all be listed in the list; - if this number is reported in the state data, - the number is the current number of operational entries."; - } - uses connectivity-matrix-entry-attributes; - list local-link-connectivity { - key "link-tp-ref"; - description - "The termination capabilities between - tunnel-termination-point and link termination-point. - The capability information can be used to compute - the tunnel path. - The Interface Adjustment Capability Descriptors (IACD) - [RFC6001] on each link-tp can be derived from this - local-link-connectivity list."; - reference - "RFC6001: Generalized MPLS (GMPLS) Protocol Extensions - for Multi-Layer and Multi-Region Networks (MLN/MRN)."; - leaf link-tp-ref { - type leafref { - path "../../../../../../nt:termination-point/nt:tp-id"; - } - description - "Link termination point."; - } - - uses connectivity-matrix-entry-attributes; - } // local-link-connectivity - } // local-link-connectivities - } // te-node-tunnel-termination-attributes - - grouping te-path-element { - description - "A group of attributes defining an element in a TE path - such as TE node, TE link, TE atomic resource or label."; - uses te-types:explicit-route-subobject; - } // te-path-element - - grouping te-termination-point-augment { - description - "Augmentation for TE termination point."; - - leaf te-tp-id { - type te-types:te-tp-id; - description - "An identifier to uniquely identify a TE termination - point."; - } - - container te { - must "../te-tp-id"; - presence "TE support."; - description - "Indicates TE support."; - - container config { - description - "Configuration data."; - uses te-termination-point-config; - } // config - container state { - config false; - description - "Operational state data."; - uses te-termination-point-config; - uses geolocation-container; - } // state - } // te - } // te-termination-point-augment - - grouping te-termination-point-config { - description - "TE termination point configuration grouping."; - uses interface-switching-capability-list; - leaf inter-layer-lock-id { - type uint32; - description - "Inter layer lock ID, used for path computation in a TE - topology covering multiple layers or multiple regions."; - reference - "RFC5212: Requirements for GMPLS-Based Multi-Region and - Multi-Layer Networks (MRN/MLN). - RFC6001: Generalized MPLS (GMPLS) Protocol Extensions - for Multi-Layer and Multi-Region Networks (MLN/MRN)."; - } - } // te-termination-point-config - - grouping te-topologies-augment { - description - "Augmentation for TE topologies."; - - container te { - presence "TE support."; - description - "Indicates TE support."; - - container templates { - description - "Configuration parameters for templates used for TE - topology."; - - list node-template { - if-feature template; - key "name"; - leaf name { - type te-types:te-template-name; - description - "The name to identify a TE node template."; - } - description - "The list of TE node templates used to define sharable - and reusable TE node attributes."; - uses template-attributes; - uses te-node-config-attributes-template; - } // node-template - - list link-template { - if-feature template; - key "name"; - leaf name { - type te-types:te-template-name; - description - "The name to identify a TE link template."; - } - description - "The list of TE link templates used to define sharable - and reusable TE link attributes."; - uses template-attributes; - uses te-link-config-attributes; - } // link-template - } // templates - } // te - } // te-topologies-augment - - grouping te-topology-augment { - description - "Augmentation for TE topology."; - - leaf provider-id { - type te-types:te-global-id; - description - "An identifier to uniquely identify a provider."; - } - leaf client-id { - type te-types:te-global-id; - description - "An identifier to uniquely identify a client."; - } - leaf te-topology-id { - type te-types:te-topology-id; - description - "It is presumed that a datastore will contain many - topologies. To distinguish between topologies it is - vital to have UNIQUE topology identifiers."; - } - - container te { - must "../provider-id and ../client-id and ../te-topology-id"; - presence "TE support."; - description - "Indicates TE support."; - - container config { - description - "Configuration data."; - uses te-topology-config; - } // config - container state { - config false; - description - "Operational state data."; - uses te-topology-config; - uses geolocation-container; - } // state - } // te - } // te-topology-augment - - grouping te-topology-config { - description - "TE topology configuration grouping."; - leaf preference { - type uint8 { - range "1..255"; - } - description - "Specifies a preference for this topology. A lower number - indicates a higher preference."; - } - leaf optimization-criterion { - type identityref { - base te-types:te-optimization-criterion; - } - description - "Optimization criterion applied to this topology."; - reference - "RFC3272: Overview and Principles of Internet Traffic - Engineering."; - } - list nsrlg { - if-feature nsrlg; - key "id"; - description - "List of NSRLGs (Not Sharing Risk Link Groups)."; - reference - "RFC4872: RSVP-TE Extensions in Support of End-to-End - Generalized Multi-Protocol Label Switching (GMPLS) - Recovery"; - leaf id { - type uint32; - description - "Identify the NSRLG entry."; - } - leaf disjointness { - type te-path-disjointness; - description - "The type of resource disjointness."; - } - } // nsrlg - } // te-topology-config - - grouping te-topology-ref { - description - "References a TE topology."; - leaf network-ref { - type leafref { - path "/nw:networks/nw:network/nw:network-id"; - require-instance false; - } - description - "A reference to a network-id in base ietf-network module."; - } - } // te-topology-ref - - grouping te-topology-type { - description - "Identifies the TE topology type."; - container te-topology { - presence "Indicates TE topology."; - description - "Its presence identifies the TE topology type."; - } - } // te-topology-type - - grouping te-tunnel-tp-ref { - description - "References a tunnel termination point in a TE topology."; - leaf tunnel-tp-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id=current()/../"+ - "network-ref]/nw:node[nw:node-id=current()/../node-ref]/"+ - "te/tunnel-termination-point/tunnel-tp-id"; - require-instance false; - } - description - "An absolute reference to a tunnel termination point. - (This should not be used for relative references. - In such a case, a relative path should be used instead.)"; - } - uses nw:node-ref; - } // te-tunnel-tp-ref - - grouping template-attributes { - description - "Common attributes for all templates."; - - leaf priority { - type uint16; - description - "The preference value to resolve conflicts between different - templates. When two or more templates specify values for - one configuration attribute, the value from the template - with the highest priority is used."; - } - leaf reference-change-policy { - type enumeration { - enum no-action { - description - "When an attribute changes in this template, the - configuration node referring to this template does - not take any action."; - } - enum not-allowed { - description - "When any configuration object has a reference to this - template, changing this template is not allowed."; - } - enum cascade { - description - "When an attribute changes in this template, the - configuration object referring to this template applies - the new attribute value to the corresponding - configuration."; - } - } - description - "This attribute specifies the action taken to a configuration - node that has a reference to this template."; - } - } // template-attributes - - /* - * Configuration data nodes - */ - augment "/nw:networks/nw:network/nw:network-types" { - description - "Introduce new network type for TE topology."; - uses te-topology-type; - } - - augment "/nw:networks" { - description - "Augmentation parameters for TE topologies."; - uses te-topologies-augment; - } - - augment "/nw:networks/nw:network" { - when "nw:network-types/te-topology" { - description - "Augmentation parameters apply only for networks with - TE topology type."; - } - description - "Configuration parameters for TE topology."; - uses te-topology-augment; - } - - augment "/nw:networks/nw:network/nw:node" { - when "../nw:network-types/te-topology" { - description - "Augmentation parameters apply only for networks with - TE topology type."; - } - description - "Configuration parameters for TE at node level."; - uses te-node-augment; - } - - augment "/nw:networks/nw:network/nt:link" { - when "../nw:network-types/te-topology" { - description - "Augmentation parameters apply only for networks with - TE topology type."; - } - description - "Configuration parameters for TE at link level"; - uses te-link-augment; - } - - augment "/nw:networks/nw:network/nw:node/" - + "nt:termination-point" { - when "../../nw:network-types/te-topology" { - description - "Augmentation parameters apply only for networks with - TE topology type."; - } - description - "Configuration parameters for TE at termination point level"; - uses te-termination-point-augment; - } - - /* - * Notifications - */ - grouping te-node-config-attributes-notification { - description - "Configuration node attributes for template in a TE topology."; - container te-node-attributes { - description "Containing node attributes in a TE topology."; - leaf admin-status { - type te-types:te-admin-status; - description - "The administrative state of the link."; - } - uses te-node-connectivity-matrix-abs; - uses te-node-info-attributes; - } // te-node-attributes - } // te-node-config-attributes-notification - - notification te-node-event { - description "Notification event for TE node."; - leaf event-type { - type te-types:te-topology-event-type; - description "Event type."; - } - uses nw:node-ref; - uses te-topology-type; - uses tet:te-node-config-attributes-notification; - uses tet:te-node-state-derived-notification; - } - - notification te-link-event { - description "Notification event for TE link."; - leaf event-type { - type te-types:te-topology-event-type; - description "Event type"; - } - uses nt:link-ref; - uses te-topology-type; - uses tet:te-link-config-attributes; - uses tet:te-link-state-derived; - } - - augment "/te-link-event/te-link-attributes/underlay" { - description "Add state attributes to te-link underlay."; - uses te-link-state-underlay-attributes; - } - -} diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-te-types.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-te-types.yang deleted file mode 100644 index 2e76380940..0000000000 --- a/apps/tenbi/yangmodel/src/main/yang/ietf-te-types.yang +++ /dev/null @@ -1,1229 +0,0 @@ -module ietf-te-types { - - namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; - - /* Replace with IANA when assigned */ - prefix "te-types"; - - import ietf-inet-types { - prefix inet; - } - - import ietf-yang-types { - prefix "yang"; - } - - organization - "IETF Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Lou Berger - - - WG Chair: Vishnu Pavan Beeram - - - Editor: Tarek Saad - - - Editor: Rakesh Gandhi - - - Editor: Vishnu Pavan Beeram - - - Editor: Himanshu Shah - - - Editor: Xufeng Liu - - - Editor: Xia Chen - - - Editor: Raqib Jones - - - Editor: Bin Wen - "; - - description - "This module contains a collection of generally - useful TE specific YANG data type defintions."; - - revision "2016-07-05" { - description "Latest revision of TE basic types"; - reference "RFC3209"; - } - - /* - * Identities - */ - identity tunnel-type { - description - "Base identity from which specific tunnel types are - derived."; - } - - identity tunnel-p2p { - base tunnel-type; - description - "TE point-to-point tunnel type."; - } - - identity tunnel-p2mp { - base tunnel-type; - description - "TE point-to-multipoint tunnel type."; - } - - identity state-type { - description - "Base identity for TE states"; - } - - identity state-up { - base state-type; - description - "State up"; - } - - identity state-down { - base state-type; - description - "State down"; - } - - identity path-invalidation-action-type { - description - "Base identity for TE path invalidation action types"; - } - - identity tunnel-invalidation-action-drop-type { - base path-invalidation-action-type; - description - "TE path invalidation action drop"; - } - - identity tunnel-invalidation-action-drop-tear { - base path-invalidation-action-type; - description - "TE path invalidation action tear"; - } - - identity lsp-prot-type { - description - "Base identity from which LSP protection types are - derived."; - } - - identity lsp-prot-unprotected { - base lsp-prot-type; - description - "LSP protection 'Unprotected'"; - reference "RFC4872"; - } - - identity lsp-prot-reroute-extra { - base lsp-prot-type; - description - "LSP protection '(Full) Rerouting'"; - reference "RFC4872"; - } - - identity lsp-prot-reroute { - base lsp-prot-type; - description - "LSP protection 'Rerouting without Extra-Traffic'"; - reference "RFC4872"; - } - - identity lsp-prot-1-for-n { - base lsp-prot-type; - description - "LSP protection '1:N Protection with Extra-Traffic'"; - reference "RFC4872"; - } - - identity lsp-prot-unidir-1-to-1 { - base lsp-prot-type; - description - "LSP protection '1+1 Unidirectional Protection'"; - reference "RFC4872"; - } - - identity lsp-prot-bidir-1-to-1 { - base lsp-prot-type; - description - "LSP protection '1+1 Bidirectional Protection'"; - reference "RFC4872"; - } - - identity switching-capabilities { - description - "Base identity for interface switching capabilities"; - } - - identity switching-psc1 { - base switching-capabilities; - description - "Packet-Switch Capable-1 (PSC-1)"; - } - - identity switching-evpl { - base switching-capabilities; - description - "Ethernet Virtual Private Line (EVPL)"; - } - - identity switching-l2sc { - base switching-capabilities; - description - "Layer-2 Switch Capable (L2SC)"; - } - - identity switching-tdm { - base switching-capabilities; - description - "Time-Division-Multiplex Capable (TDM)"; - } - - identity switching-otn { - base switching-capabilities; - description - "OTN-TDM capable"; - } - - identity switching-dcsc { - base switching-capabilities; - description - "Data Channel Switching Capable (DCSC)"; - } - - identity switching-lsc { - base switching-capabilities; - description - "Lambda-Switch Capable (LSC)"; - } - - identity switching-fsc { - base switching-capabilities; - description - "Fiber-Switch Capable (FSC)"; - } - - identity lsp-encoding-types { - description - "Base identity for encoding types"; - } - - identity lsp-encoding-packet { - base lsp-encoding-types; - description - "Packet LSP encoding"; - } - - identity lsp-encoding-ethernet { - base lsp-encoding-types; - description - "Ethernet LSP encoding"; - } - - identity lsp-encoding-pdh { - base lsp-encoding-types; - description - "ANSI/ETSI LSP encoding"; - } - - identity lsp-encoding-sdh { - base lsp-encoding-types; - description - "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding"; - } - - identity lsp-encoding-digital-wrapper { - base lsp-encoding-types; - description - "Digital Wrapper LSP encoding"; - } - - identity lsp-encoding-lambda { - base lsp-encoding-types; - description - "Lambda (photonic) LSP encoding"; - } - - identity lsp-encoding-fiber { - base lsp-encoding-types; - description - "Fiber LSP encoding"; - } - - identity lsp-encoding-fiber-channel { - base lsp-encoding-types; - description - "FiberChannel LSP encoding"; - } - - identity lsp-encoding-oduk { - base lsp-encoding-types; - description - "G.709 ODUk (Digital Path)LSP encoding"; - } - - identity lsp-encoding-optical-channel { - base lsp-encoding-types; - description - "Line (e.g., 8B/10B) LSP encoding"; - } - - identity lsp-encoding-line { - base lsp-encoding-types; - description - "Line (e.g., 8B/10B) LSP encoding"; - } - - identity path-signaling-type { - description - "Base identity from which specific path signaling - types are derived."; - } - - identity path-signaling-rsvpte { - base tunnel-type; - description - "RSVP-TE path signaling type"; - } - - identity path-signaling-sr { - base tunnel-type; - description - "Segment-routing path signaling type"; - } - - /* TE basic features */ - feature p2mp-te { - description - "Indicates support for P2MP-TE"; - } - - feature frr-te { - description - "Indicates support for TE FastReroute (FRR)"; - } - - feature extended-admin-groups { - description - "Indicates support for TE link extended admin - groups."; - } - - feature named-path-affinities { - description - "Indicates support for named path affinities"; - } - - feature named-extended-admin-groups { - description - "Indicates support for named extended admin groups"; - } - - feature named-srlg-groups { - description - "Indicates support for named SRLG groups"; - } - - feature named-path-constraints { - description - "Indicates support for named path constraints"; - } - - grouping explicit-route-subobject { - description - "The explicit route subobject grouping"; - choice type { - description - "The explicit route subobject type"; - case ipv4-address { - description - "IPv4 address explicit route subobject"; - leaf v4-address { - type inet:ipv4-address; - description - "An IPv4 address. This address is - treated as a prefix based on the - prefix length value below. Bits beyond - the prefix are ignored on receipt and - SHOULD be set to zero on transmission."; - } - leaf v4-prefix-length { - type uint8; - description - "Length in bits of the IPv4 prefix"; - } - leaf v4-loose { - type boolean; - description - "Describes whether the object is loose - if set, or otherwise strict"; - } - } - case ipv6-address { - description - "IPv6 address Explicit Route Object"; - leaf v6-address { - type inet:ipv6-address; - description - "An IPv6 address. This address is - treated as a prefix based on the - prefix length value below. Bits - beyond the prefix are ignored on - receipt and SHOULD be set to zero - on transmission."; - } - leaf v6-prefix-length { - type uint8; - description - "Length in bits of the IPv4 prefix"; - } - leaf v6-loose { - type boolean; - description - "Describes whether the object is loose - if set, or otherwise strict"; - } - } - case as-number { - leaf as-number { - type uint16; - description "AS number"; - } - description - "Autonomous System explicit route subobject"; - } - case unnumbered-link { - leaf router-id { - type inet:ip-address; - description - "A router-id address"; - } - leaf interface-id { - type uint32; - description "The interface identifier"; - } - description - "Unnumbered link explicit route subobject"; - reference - "RFC3477: Signalling Unnumbered Links in - RSVP-TE"; - } - case label { - leaf value { - type uint32; - description "the label value"; - } - description - "The Label ERO subobject"; - } - /* AS domain sequence..? */ - } - } - - grouping record-route-subobject { - description - "The record route subobject grouping"; - choice type { - description - "The record route subobject type"; - case ipv4-address { - leaf v4-address { - type inet:ipv4-address; - description - "An IPv4 address. This address is - treated as a prefix based on the prefix - length value below. Bits beyond the - prefix are ignored on receipt and - SHOULD be set to zero on transmission."; - } - leaf v4-prefix-length { - type uint8; - description - "Length in bits of the IPv4 prefix"; - } - leaf v4-flags { - type uint8; - description - "IPv4 address sub-object flags"; - reference "RFC3209"; - } - } - case ipv6-address { - leaf v6-address { - type inet:ipv6-address; - description - "An IPv6 address. This address is - treated as a prefix based on the - prefix length value below. Bits - beyond the prefix are ignored on - receipt and SHOULD be set to zero - on transmission."; - } - leaf v6-prefix-length { - type uint8; - description - "Length in bits of the IPv4 prefix"; - } - leaf v6-flags { - type uint8; - description - "IPv6 address sub-object flags"; - reference "RFC3209"; - } - } - case unnumbered-link { - leaf router-id { - type inet:ip-address; - description - "A router-id address"; - } - leaf interface-id { - type uint32; - description "The interface identifier"; - } - description - "Unnumbered link record route subobject"; - reference - "RFC3477: Signalling Unnumbered Links in - RSVP-TE"; - } - case label { - leaf value { - type uint32; - description "the label value"; - } - leaf flags { - type uint8; - description - "Label sub-object flags"; - reference "RFC3209"; - } - description - "The Label ERO subobject"; - } - } - } - - identity route-usage-type { - description - "Base identity for route usage"; - } - - identity route-include-ero { - base route-usage-type; - description - "Include ERO from route"; - } - - identity route-exclude-ero { - base route-usage-type; - description - "Exclude ERO from route"; - } - - identity route-exclude-srlg { - base route-usage-type; - description - "Exclude SRLG from route"; - } - - identity path-metric-type { - description - "Base identity for path metric type"; - } - - identity path-metric-te { - base path-metric-type; - description - "TE path metric"; - } - - identity path-metric-igp { - base path-metric-type; - description - "IGP path metric"; - } - - identity path-tiebreaker-type { - description - "Base identity for path tie-breaker type"; - } - - identity path-tiebreaker-minfill { - base path-tiebreaker-type; - description - "Min-Fill LSP path placement"; - } - - identity path-tiebreaker-maxfill { - base path-tiebreaker-type; - description - "Max-Fill LSP path placement"; - } - - identity path-tiebreaker-randoom { - base path-tiebreaker-type; - description - "Random LSP path placement"; - } - - identity bidir-provisioning-mode { - description - "Base identity for bidirectional provisioning - mode."; - } - - identity bidir-provisioning-single-sided { - base bidir-provisioning-mode; - description - "Single-sided bidirectional provioning mode"; - } - - identity bidir-provisioning-double-sided { - base bidir-provisioning-mode; - description - "Double-sided bidirectional provioning mode"; - } - - identity bidir-association-type { - description - "Base identity for bidirectional association type"; - } - - identity bidir-assoc-corouted { - base bidir-association-type; - description - "Co-routed bidirectional association type"; - } - - identity bidir-assoc-non-corouted { - base bidir-association-type; - description - "Non co-routed bidirectional association type"; - } - - identity resource-affinities-type { - description - "Base identity for resource affinities"; - } - - identity resource-aff-include-all { - base resource-affinities-type; - description - "The set of attribute filters associated with a - tunnel all of which must be present for a link - to be acceptable"; - } - - identity resource-aff-include-any { - base resource-affinities-type; - description - "The set of attribute filters associated with a - tunnel any of which must be present for a link - to be acceptable"; - } - - identity resource-aff-exclude-any { - base resource-affinities-type; - description - "The set of attribute filters associated with a - tunnel any of which renders a link unacceptable"; - } - - identity te-optimization-criterion { - description - "Base identity for TE optimization criterion."; - reference - "RFC3272: Overview and Principles of Internet Traffic - Engineering."; - } - - identity not-optimized { - base te-optimization-criterion; - description "Optimization is not applied."; - } - - identity cost { - base te-optimization-criterion; - description "Optimized on cost."; - } - - identity delay { - base te-optimization-criterion; - description "Optimized on delay."; - } - - /* - * Typedefs - */ - typedef performance-metric-normality { - type enumeration { - enum "unknown" { - value 0; - description - "Unknown."; - } - enum "normal" { - value 1; - description - "Normal."; - } - enum "abnormal" { - value 2; - description - "Abnormal. The anomalous bit is set."; - } - } - description - "Indicates whether a performance metric is normal, abnormal, or - unknown."; - reference - "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. - RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. - RFC7823: Performance-Based Path Selection for Explicitly - Routed Label Switched Paths (LSPs) Using TE Metric - Extensions"; - } - - typedef te-admin-status { - type enumeration { - enum up { - description - "Enabled."; - } - enum down { - description - "Disabled."; - } - enum testing { - description - "In some test mode."; - } - enum preparing-maintenance { - description - "Resource is disabled in the control plane to prepare for - graceful shutdown for maintenance purposes."; - reference - "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS - Traffic Engineering Networks"; - } - enum maintenance { - description - "Resource is disabled in the data plane for maintenance - purposes."; - } - } - description - "Defines a type representing the administrative status of - a TE resource."; - } - - typedef te-global-id { - type uint32; - description - "An identifier to uniquely identify an operator, which can be - either a provider or a client. - The definition of this type is taken from RFC6370 and RFC5003. - This attribute type is used solely to provide a globally - unique context for TE topologies."; - } - - typedef te-link-access-type { - type enumeration { - enum point-to-point { - description - "The link is point-to-point."; - } - enum multi-access { - description - "The link is multi-access, including broacast and NBMA."; - } - } - description - "Defines a type representing the access type of a TE link."; - reference - "RFC3630: Traffic Engineering (TE) Extensions to OSPF - Version 2."; - } - - typedef te-node-id { - type yang:dotted-quad; - description - "An identifier for a node in a topology. - The identifier is represented as 32-bit unsigned integer in - the dotted-quad notation. - This attribute is mapped to Router ID in - RFC3630, RFC5329, RFC5305, and RFC6119."; - } - - typedef te-oper-status { - type enumeration { - enum up { - description - "Operational up."; - } - enum down { - description - "Operational down."; - } - enum testing { - description - "In some test mode."; - } - enum unknown { - description - "Status cannot be determined for some reason."; - } - enum preparing-maintenance { - description - "Resource is disabled in the control plane to prepare for - graceful shutdown for maintenance purposes."; - reference - "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS - Traffic Engineering Networks"; - } - enum maintenance { - description - "Resource is disabled in the data plane for maintenance - purposes."; - } - } - description - "Defines a type representing the operational status of - a TE resource."; - } - - typedef te-recovery-status { - type enumeration { - enum normal { - description - "Both the recovery and working spans are fully - allocated and active, data traffic is being - transported over (or selected from) the working - span, and no trigger events are reported."; - } - enum recovery-started { - description - "The recovery action has been started, but not completed."; - } - enum recovery-succeeded { - description - "The recovery action has succeeded. The working span has - reported a failure/degrade condition and the user traffic - is being transported (or selected) on the recovery span."; - } - enum recovery-failed { - description - "The recovery action has failed."; - } - enum reversion-started { - description - "The reversion has started."; - } - enum reversion-failed { - description - "The reversion has failed."; - } - enum recovery-unavailable { - description - "The recovery is unavailable -- either as a result of an - operator Lockout command or a failure condition detected - on the recovery span."; - } - enum recovery-admin { - description - "The operator has issued a command switching the user - traffic to the recovery span."; - } - enum wait-to-restore { - description - "The recovery domain is recovering from a failuer/degrade - condition on the working span that is being controlled by - the Wait-to-Restore (WTR) timer."; - } - } - description - "Defines the status of a recovery action."; - reference - "RFC4427: Recovery (Protection and Restoration) Terminology - for Generalized Multi-Protocol Label Switching (GMPLS). - RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection"; - } - - typedef te-template-name { - type string { - pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; - } - description - "A type for the name of a TE node template or TE link - template."; - } - - typedef te-topology-event-type { - type enumeration { - enum "add" { - value 0; - description - "A TE node or te-link has been added."; - } - enum "remove" { - value 1; - description - "A TE node or te-link has been removed."; - } - enum "update" { - value 2; - description - "A TE node or te-link has been updated."; - } - } - description "TE Event type for notifications"; - } // te-topology-event-type - - - typedef te-tunnel-event-type { - type enumeration { - enum "add" { - value 0; - description - "A TE tunnel has been added."; - } - enum "remove" { - value 1; - description - "A TE tunnel has been removed."; - } - enum "update" { - value 2; - description - "A TE tunnel has been updated."; - } - } - description "TE Event type for notifications"; - } // te-tunnel-event-type - - typedef te-topology-id { - type string { - pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; - } - description - "An identifier for a topology."; - } - - typedef te-tp-id { - type union { - type uint32; // Unnumbered - type inet:ip-address; // IPv4 or IPv6 address - } - description - "An identifier for a TE link endpoint on a node. - This attribute is mapped to local or remote link identifier in - RFC3630 and RFC5305."; - } - - typedef generalized-label { - type binary; - description - "Generalized label. Nodes sending and receiving the - Generalized Label know what kinds of link they are - using, the Generalized Label does not identify its - type. Instead, nodes are expected to know from the - context what type of label to expect."; - reference "rfc3471: section 3.2"; - } - - typedef admin-group { - type binary { - length 32; - } - description - "Administrative group/Resource class/Color."; - } - - typedef extended-admin-group { - type binary; - description - "Extended administrative group/Resource class/Color."; - } - - typedef admin-groups { - type union { - type admin-group; - type extended-admin-group; - } - description "TE administrative group derived type"; - } - - typedef srlg { - type uint32; - description "SRLG type"; - } - - identity path-computation-srlg-type { - description - "Base identity for SRLG path computation"; - } - - identity srlg-ignore { - base path-computation-srlg-type; - description - "Ignores SRLGs in path computation"; - } - - identity srlg-strict { - base path-computation-srlg-type; - description - "Include strict SRLG check in path computation"; - } - - identity srlg-preferred { - base path-computation-srlg-type; - description - "Include preferred SRLG check in path computation"; - } - - identity srlg-weighted { - base path-computation-srlg-type; - description - "Include weighted SRLG check in path computation"; - } - - typedef te-metric { - type uint32; - description - "TE link metric"; - } - - /** - * TE tunnel generic groupings - **/ - - /* Tunnel path selection parameters */ - grouping tunnel-path-selection { - description - "Tunnel path selection properties grouping"; - container path-selection { - description - "Tunnel path selection properties container"; - leaf topology-id { - type te-types:te-topology-id; - description - "The tunnel path is computed using the specific - topology identified by this identifier"; - } - leaf cost-limit { - type uint32 { - range "1..4294967295"; - } - description - "The tunnel path cost limit."; - } - leaf hop-limit { - type uint8 { - range "1..255"; - } - description - "The tunnel path hop limit."; - } - leaf metric-type { - type identityref { - base path-metric-type; - } - default path-metric-te; - description - "The tunnel path metric type."; - } - leaf tiebreaker-type { - type identityref { - base path-tiebreaker-type; - } - default path-tiebreaker-maxfill; - description - "The tunnel path computation tie breakers."; - } - leaf ignore-overload { - type boolean; - description - "The tunnel path can traverse overloaded node."; - } - uses tunnel-path-affinities; - uses tunnel-path-srlgs; - } - } - - grouping tunnel-path-affinities { - description - "Path affinities grouping"; - container tunnel-path-affinities { - if-feature named-path-affinities; - description - "Path affinities container"; - choice style { - description - "Path affinities representation style"; - case values { - leaf value { - type uint32 { - range "0..4294967295"; - } - description - "Affinity value"; - } - leaf mask { - type uint32 { - range "0..4294967295"; - } - description - "Affinity mask"; - } - } - case named { - list constraints { - key "usage"; - leaf usage { - type identityref { - base resource-affinities-type; - } - description "Affinities usage"; - } - container constraint { - description - "Container for named affinities"; - list affinity-names { - key "name"; - leaf name { - type string; - description - "Affinity name"; - } - description - "List of named affinities"; - } - } - description - "List of named affinity constraints"; - } - } - } - } - } - - grouping tunnel-path-srlgs { - description - "Path SRLG properties grouping"; - container tunnel-path-srlgs { - description - "Path SRLG properties container"; - choice style { - description - "Type of SRLG representation"; - case values { - leaf usage { - type identityref { - base route-exclude-srlg; - } - description "SRLG usage"; - } - leaf-list values { - type te-types:srlg; - description "SRLG value"; - } - } - case named { - list constraints { - key "usage"; - leaf usage { - type identityref { - base route-exclude-srlg; - } - description "SRLG usage"; - } - container constraint { - description - "Container for named SRLG list"; - list srlg-names { - key "name"; - leaf name { - type string; - description - "The SRLG name"; - } - description - "List named SRLGs"; - } - } - description - "List of named SRLG constraints"; - } - } - } - } - } - - grouping tunnel-bidir-assoc-properties { - description - "TE tunnel associated bidirectional properties - grouping"; - container bidirectional { - description - "TE tunnel associated bidirectional attributes."; - container association { - description - "Tunnel bidirectional association properties"; - leaf id { - type uint16; - description - "The TE tunnel association identifier."; - } - leaf source { - type inet:ip-address; - description - "The TE tunnel association source."; - } - leaf global-source { - type inet:ip-address; - description - "The TE tunnel association global - source."; - } - leaf type { - type identityref { - base bidir-association-type; - } - default bidir-assoc-non-corouted; - description - "The TE tunnel association type."; - } - leaf provisioing { - type identityref { - base bidir-provisioning-mode; - } - description - "Describes the provisioning model of the - associated bidirectional LSP"; - reference - "draft-ietf-teas-mpls-tp-rsvpte-ext- - associated-lsp, section-3.2"; - } - } - } - } - /*** End of TE tunnel groupings ***/ - - /** - * TE interface generic groupings - **/ -} diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-te.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-te.yang deleted file mode 100644 index 40374fefb9..0000000000 --- a/apps/tenbi/yangmodel/src/main/yang/ietf-te.yang +++ /dev/null @@ -1,882 +0,0 @@ -module ietf-te { - - namespace "urn:ietf:params:xml:ns:yang:ietf-te"; - - /* Replace with IANA when assigned */ - prefix "te"; - - /* Import TE generic types */ - import ietf-te-types { - prefix te-types; - } - - import ietf-inet-types { - prefix inet; - } - - organization - "IETF Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Lou Berger - - - WG Chair: Vishnu Pavan Beeram - - - Editor: Tarek Saad - - - Editor: Rakesh Gandhi - - - Editor: Vishnu Pavan Beeram - - - Editor: Himanshu Shah - - - Editor: Xufeng Liu - - - Editor: Xia Chen - - - Editor: Raqib Jones - - - Editor: Bin Wen - "; - - description - "YANG data module for TE configuration, - state, RPC and notifications."; - - revision "2016-07-05" { - description "Latest update to TE generic YANG module."; - reference "TBD"; - } - - typedef tunnel-ref { - type leafref { - path "/te:te/te:tunnels/te:tunnel/te:name"; - } - description - "This type is used by data models that need to reference - configured TE tunnel."; - } - - /** - * TE tunnel generic groupings - */ - - grouping p2p-secondary-path-params { - description - "tunnel path properties."; - container config { - description - "Configuration parameters relating to - tunnel properties"; - uses path-properties_config; - uses path-params_config; - } - container state { - config false; - description - "State information associated with tunnel - properties"; - uses path-properties_config; - uses path-params_config; - uses p2p-secondary-path-params_state; - } - } - - grouping p2p-primary-path-params { - description - "TE tunnel primary path properties grouping"; - container config { - description - "Configuration parameters relating to - tunnel properties"; - uses path-properties_config; - uses path-params_config; - } - container state { - config false; - description - "State information associated with tunnel - properties"; - uses path-params_config; - uses p2p-primary-path-params_state; - } - } - - grouping p2p-primary-path-params_state { - description "TE primary path state parameters"; - list lsp { - key - "source destination tunnel-id lsp-id "+ - "extended-tunnel-id type"; - description "List of LSPs associated with the tunnel."; - - leaf source { - type leafref { - path "../../../../../../lsps-state/lsp/source"; - } - description - "Tunnel sender address extracted from - SENDER_TEMPLATE object"; - reference "RFC3209"; - } - leaf destination { - type leafref { - path "../../../../../../lsps-state/lsp/destination"; - } - description - "Tunnel endpoint address extracted from - SESSION object"; - reference "RFC3209"; - } - leaf tunnel-id { - type leafref { - path "../../../../../../lsps-state/lsp/tunnel-id"; - } - description - "Tunnel identifier used in the SESSION - that remains constant over the life - of the tunnel."; - reference "RFC3209"; - } - leaf lsp-id { - type leafref { - path "../../../../../../lsps-state/lsp/lsp-id"; - } - description - "Identifier used in the SENDER_TEMPLATE - and the FILTER_SPEC that can be changed - to allow a sender to share resources with - itself."; - reference "RFC3209"; - } - leaf extended-tunnel-id { - type leafref { - path "../../../../../../lsps-state/lsp/extended-tunnel-id"; - } - description - "Extended Tunnel ID of the LSP."; - reference "RFC3209"; - } - leaf type { - type leafref { - path "../../../../../../lsps-state/lsp/type"; - } - description "LSP type P2P or P2MP"; - } - } - } - - grouping p2p-secondary-path-params_state { - description "TE secondary path state parameters"; - list lsp { - key "source"; - description "List of LSPs associated with the tunnel."; - - leaf source { - type leafref { - path "../../../../../../../lsps-state/lsp/source"; - } - description - "Tunnel sender address extracted from - SENDER_TEMPLATE object"; - reference "RFC3209"; - } - leaf destination { - type leafref { - path "../../../../../../../lsps-state/lsp/destination"; - } - description - "Tunnel endpoint address extracted from - SESSION object"; - reference "RFC3209"; - } - leaf tunnel-id { - type leafref { - path "../../../../../../../lsps-state/lsp/tunnel-id"; - } - description - "Tunnel identifier used in the SESSION - that remains constant over the life - of the tunnel."; - reference "RFC3209"; - } - leaf lsp-id { - type leafref { - path "../../../../../../../lsps-state/lsp/lsp-id"; - } - description - "Identifier used in the SENDER_TEMPLATE - and the FILTER_SPEC that can be changed - to allow a sender to share resources with - itself."; - reference "RFC3209"; - } - leaf extended-tunnel-id { - type leafref { - path "../../../../../../../lsps-state/lsp/extended-tunnel-id"; - } - description - "Extended Tunnel ID of the LSP."; - reference "RFC3209"; - } - leaf type { - type leafref { - path "../../../../../../../lsps-state/lsp/type"; - } - description "LSP type P2P or P2MP"; - } - } - } - - grouping path-params_config { - description - "TE tunnel path parameters configuration grouping"; - leaf path-named-constraint { - if-feature te-types:named-path-constraints; - type string; - description - "Reference to a globally defined named path - constraint set"; - } - uses te-types:tunnel-path-selection; - choice type { - description - "Describes the path type"; - case dynamic { - leaf dynamic { - type empty; - description - "A CSPF dynamically computed path"; - } - } - case explicit { - leaf explicit-path-name { - type string; - description - "The explicit-path name"; - } - - list explicit-route-objects { - key "index"; - description - "List of explicit route objects"; - leaf index { - type uint8 { - range "0..255"; - } - description - "Index of this explicit route object"; - } - leaf explicit-route-usage { - type identityref { - base te-types:route-usage-type; - } - description "An explicit-route hop action."; - } - uses te-types:explicit-route-subobject; - } - } - } - leaf no-cspf { - type empty; - description - "Indicates no CSPF is to be attempted on this - path."; - } - leaf lockdown { - type empty; - description - "Indicates no reoptimization to be attempted for - this path."; - } - } - - /* TE tunnel configuration data */ - grouping tunnel-params_config { - description - "Configuration parameters relating to TE tunnel"; - leaf name { - type string; - description "TE tunnel name."; - } - leaf type { - type identityref { - base te-types:tunnel-type; - } - description "TE tunnel type."; - } - leaf identifier { - type uint16; - description - "TE tunnel Identifier."; - } - leaf description { - type string; - description - "Textual description for this TE tunnel"; - } - leaf lsp-priority-setup { - type uint8 { - range "0..7"; - } - description - "TE LSP setup priority"; - } - leaf lsp-priority-hold { - type uint8 { - range "0..7"; - } - description - "TE LSP hold priority"; - } - leaf lsp-protection-type { - type identityref { - base te-types:lsp-prot-type; - } - description "LSP protection type."; - } - leaf admin-status { - type identityref { - base te-types:state-type; - } - default te-types:state-up; - description "TE tunnel administrative state."; - } - leaf source { - type inet:ip-address; - description - "TE tunnel source address."; - } - leaf destination { - /* Add when check */ - type inet:ip-address; - description - "P2P tunnel destination address"; - } - leaf src-tp-id { - type binary; - description - "TE tunnel source termination point identifier."; - } - leaf dst-tp-id { - /* Add when check */ - type binary; - description - "TE tunnel destination termination point identifier."; - } - container hierarchical-link-id { - description - "Identifies a hierarchical link (in server layer) - that this tunnel is associated with."; - leaf local-te-node-id { - type te-types:te-node-id; - description - "Local TE node identifier"; - } - leaf local-te-link-tp-id { - type te-types:te-tp-id; - description - "Local TE link termination point identifier"; - } - leaf remote-te-node-id { - type te-types:te-node-id; - description - "Remote TE node identifier"; - } - leaf te-topology-id { - type te-types:te-topology-id; - description - "It is presumed that a datastore will contain many - topologies. To distinguish between topologies it is - vital to have UNIQUE topology identifiers."; - } - } - uses te-types:tunnel-bidir-assoc-properties; - } - - grouping tunnel-params_state { - description - "State parameters relating to TE tunnel"; - leaf oper-status { - type identityref { - base te-types:state-type; - } - description "TE tunnel operational state."; - } - } - - grouping path-properties_config { - description "TE path properties grouping"; - leaf name { - type string; - description "TE path name"; - } - leaf preference { - type uint8 { - range "1..255"; - } - description - "Specifies a preference for this path. The lower the - number higher the preference"; - } - } - - /* TE tunnel configuration/state grouping */ - grouping tunnel-properties { - description - "Top level grouping for tunnel properties."; - container config { - description - "Configuration parameters relating to - tunnel properties"; - uses tunnel-params_config; - } - container state { - config false; - description - "State information associated with tunnel - properties"; - uses tunnel-params_config; - uses tunnel-params_state; - } - list primary-paths { - key "name"; - description - "List of primary paths for this tunnel."; - leaf name { - type leafref { - path "../config/name"; - } - description "TE path name"; - } - leaf preference { - type leafref { - path "../config/preference"; - } - description - "Specifies a preference for this path. The lower the - number higher the preference"; - } - uses p2p-primary-path-params; - list secondary-paths { - key "name"; - description - "List of secondary paths for this tunnel."; - leaf name { - type leafref { - path "../config/name"; - } - description "TE path name"; - } - leaf preference { - type leafref { - path "../config/preference"; - } - description - "Specifies a preference for this path. The lower the - number higher the preference"; - } - uses p2p-secondary-path-params; - } - } - } - /*** End of TE tunnel groupings ***/ - - /** - * LSP related generic groupings - */ - grouping lsp-record-route-information_state { - description "recorded route information grouping"; - container lsp-record-route { - description "RSVP recorded route object information"; - list record-route-subobjects { - when "../origin-type != 'ingress'" { - description "Applicable on non-ingress LSPs only"; - } - key "subobject-index"; - description ""; - leaf subobject-index { - type uint32; - description "RRO subobject index"; - } - uses te-types:record-route-subobject; - } - } - } - - grouping lsp-properties_state { - description - "State parameters relating to LSP"; - leaf oper-status { - type identityref { - base te-types:state-type; - } - description "LSP operational state."; - } - - leaf origin-type { - type enumeration { - enum ingress { - description - "Origin ingress"; - } - enum egress { - description - "Origin egress"; - } - enum transit { - description - "transit"; - } - } - description - "Origin type of LSP relative to the location - of the local switch in the path."; - } - - leaf lsp-resource-status { - type enumeration { - enum primary { - description - "A primary LSP is a fully established LSP for - which the resource allocation has been committed - at the data plane"; - } - enum secondary { - description - "A secondary LSP is an LSP that has been provisioned - in the control plane only; e.g. resource allocation - has not been committed at the data plane"; - } - } - description "LSP resource allocation type"; - reference "rfc4872, section 4.2.1"; - } - - leaf lsp-protection-role { - type enumeration { - enum working { - description - "A working LSP must be a primary LSP whilst a protecting - LSP can be either a primary or a secondary LSP. Also, - known as protected LSPs when working LSPs are associated - with protecting LSPs."; - } - enum protecting { - description - "A secondary LSP is an LSP that has been provisioned - in the control plane only; e.g. resource allocation - has not been committed at the data plane"; - } - } - description "LSP role type"; - reference "rfc4872, section 4.2.1"; - } - - leaf lsp-operational-status { - type empty; - description - "This bit is set when a protecting LSP is carrying the normal - traffic after protection switching"; - } - } - /*** End of TE LSP groupings ***/ - - /** - * TE global generic groupings - */ - - /* Global named admin-groups configuration data */ - grouping named-admin-groups_config { - description - "Global named administrative groups configuration - grouping"; - list named-admin-groups { - if-feature te-types:extended-admin-groups; - if-feature te-types:named-extended-admin-groups; - key "name"; - description - "List of named TE admin-groups"; - leaf name { - type string; - description - "A string name that uniquely identifies a TE - interface named admin-group"; - } - leaf bit-position { - type uint32; - description - "Bit position representing the administrative group"; - } - } - } - - /* Global named admin-srlgs configuration data */ - grouping named-srlgs_config { - description - "Global named SRLGs configuration - grouping"; - list named-srlgs { - if-feature te-types:named-srlg-groups; - key "name"; - description - "A list of named SRLG groups"; - leaf name { - type string; - description - "A string name that uniquely identifies a TE - interface named srlg"; - } - leaf group { - type te-types:srlg; - description "An SRLG value"; - } - } - } - - /* Global named explicit-paths configuration data */ - grouping named-explicit-paths_config { - description - "Global explicit path configuration - grouping"; - list named-explicit-paths { - key "name"; - description - "A list of explicit paths"; - leaf name { - type string; - description - "A string name that uniquely identifies an - explicit path"; - } - list explicit-route-objects { - key "index"; - description - "List of explicit route objects"; - leaf index { - type uint8 { - range "0..255"; - } - description - "Index of this explicit route object"; - } - leaf explicit-route-usage { - type identityref { - base te-types:route-usage-type; - } - description "An explicit-route hop action."; - } - uses te-types:explicit-route-subobject; - } - } - } - - /* Global named paths constraints configuration data */ - grouping named-path-constraints_config { - description - "Global named path constraints configuration - grouping"; - list named-constraints { - if-feature te-types:named-path-constraints; - key "name"; - description - "A list of named path constraints"; - leaf name { - type string; - description - "A string name that uniquely identifies a - path constraint set"; - } - uses te-types:tunnel-path-selection; - } - } - - /* TE globals container data */ - grouping globals-grouping { - description - "Globals TE system-wide configuration data grouping"; - container globals { - description - "Globals TE system-wide configuration data container"; - container config { - description - "Configuration parameters for system-wide - parameters"; - uses named-admin-groups_config; - uses named-srlgs_config; - uses named-explicit-paths_config; - uses named-path-constraints_config; - } - container state { - config false; - description - "State for system-wide parameters"; - uses named-admin-groups_config; - uses named-srlgs_config; - uses named-explicit-paths_config; - uses named-path-constraints_config; - } - } - } - - /* TE tunnels container data */ - grouping tunnels-grouping { - description - "Tunnels TE configuration data grouping"; - container tunnels { - description - "Tunnels TE configuration data container"; - - list tunnel { - key "name type"; - unique "identifier"; - description "TE tunnel."; - leaf name { - type leafref { - path "../config/name"; - } - description "TE tunnel name."; - } - leaf type { - type leafref { - path "../config/type"; - } - description "TE tunnel type."; - } - leaf identifier { - type leafref { - path "../config/identifier"; - } - description - "TE tunnel Identifier."; - } - uses tunnel-properties; - } - } - } - - /* TE LSPs ephemeral state container data */ - grouping lsps-state-grouping { - description - "LSPs state operational data grouping"; - container lsps-state { - config "false"; - description "LSPs operational state data."; - - list lsp { - key - "source destination tunnel-id lsp-id "+ - "extended-tunnel-id type"; - description - "List of LSPs associated with the tunnel."; - leaf source { - type inet:ip-address; - description - "Tunnel sender address extracted from - SENDER_TEMPLATE object"; - reference "RFC3209"; - } - leaf destination { - type inet:ip-address; - description - "Tunnel endpoint address extracted from - SESSION object"; - reference "RFC3209"; - } - leaf tunnel-id { - type uint16; - description - "Tunnel identifier used in the SESSION - that remains constant over the life - of the tunnel."; - reference "RFC3209"; - } - leaf lsp-id { - type uint16; - description - "Identifier used in the SENDER_TEMPLATE - and the FILTER_SPEC that can be changed - to allow a sender to share resources with - itself."; - reference "RFC3209"; - } - leaf extended-tunnel-id { - type inet:ip-address; - description - "Extended Tunnel ID of the LSP."; - reference "RFC3209"; - } - leaf type { - type identityref { - base te-types:tunnel-type; - } - description "The LSP type P2P or P2MP"; - } - uses lsp-properties_state; - uses lsp-record-route-information_state; - } - } - } - /*** End of TE global groupings ***/ - - /** - * TE configurations container - */ - container te { - presence "Enable TE feature."; - description - "TE global container."; - - /* TE Global Configuration Data */ - uses globals-grouping; - - /* TE Tunnel Configuration Data */ - uses tunnels-grouping; - - /* TE LSPs State Data */ - uses lsps-state-grouping; - } - - /* TE Global RPCs/execution Data */ - rpc globals-rpc { - description - "Execution data for TE global."; - } - - /* TE interfaces RPCs/execution Data */ - rpc interfaces-rpc { - description - "Execution data for TE interfaces."; - } - - /* TE Tunnel RPCs/execution Data */ - rpc tunnels-rpc { - description - "TE tunnels RPC nodes"; - } - - /* TE Global Notification Data */ - notification globals-notif { - description - "Notification messages for Global TE."; - } - - /* TE Tunnel Notification Data */ - notification tunnels-notif { - description - "Notification messages for TE tunnels."; - } -} diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-yang-types@2013-07-15.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-yang-types@2013-07-15.yang deleted file mode 100644 index 371a091d14..0000000000 --- a/apps/tenbi/yangmodel/src/main/yang/ietf-yang-types@2013-07-15.yang +++ /dev/null @@ -1,480 +0,0 @@ -module ietf-yang-types { - - namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; - prefix "yang"; - - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: David Kessens - - - WG Chair: Juergen Schoenwaelder - - - Editor: Juergen Schoenwaelder - "; - - description - "This module contains a collection of generally useful derived - YANG data types. - - Copyright (c) 2013 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 6991; see - the RFC itself for full legal notices."; - - revision 2013-07-15 { - description - "This revision adds the following new data types: - - yang-identifier - - hex-string - - uuid - - dotted-quad"; - reference - "RFC 6991: Common YANG Data Types"; - } - - revision 2010-09-24 { - description - "Initial revision."; - reference - "RFC 6021: Common YANG Data Types"; - } - - /*** collection of counter and gauge types ***/ - - typedef counter32 { - type uint32; - description - "The counter32 type represents a non-negative integer - that monotonically increases until it reaches a - maximum value of 2^32-1 (4294967295 decimal), when it - wraps around and starts increasing again from zero. - - Counters have no defined 'initial' value, and thus, a - single value of a counter has (in general) no information - content. Discontinuities in the monotonically increasing - value normally occur at re-initialization of the - management system, and at other times as specified in the - description of a schema node using this type. If such - other times can occur, for example, the creation of - a schema node of type counter32 at times other than - re-initialization, then a corresponding schema node - should be defined, with an appropriate type, to indicate - the last discontinuity. - - The counter32 type should not be used for configuration - schema nodes. A default statement SHOULD NOT be used in - combination with the type counter32. - - In the value set and its semantics, this type is equivalent - to the Counter32 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - - typedef zero-based-counter32 { - type yang:counter32; - default "0"; - description - "The zero-based-counter32 type represents a counter32 - that has the defined 'initial' value zero. - - A schema node of this type will be set to zero (0) on creation - and will thereafter increase monotonically until it reaches - a maximum value of 2^32-1 (4294967295 decimal), when it - wraps around and starts increasing again from zero. - - Provided that an application discovers a new schema node - of this type within the minimum time to wrap, it can use the - 'initial' value as a delta. It is important for a management - station to be aware of this minimum time and the actual time - between polls, and to discard data if the actual time is too - long or there is no defined minimum time. - - In the value set and its semantics, this type is equivalent - to the ZeroBasedCounter32 textual convention of the SMIv2."; - reference - "RFC 4502: Remote Network Monitoring Management Information - Base Version 2"; - } - - typedef counter64 { - type uint64; - description - "The counter64 type represents a non-negative integer - that monotonically increases until it reaches a - maximum value of 2^64-1 (18446744073709551615 decimal), - when it wraps around and starts increasing again from zero. - - Counters have no defined 'initial' value, and thus, a - single value of a counter has (in general) no information - content. Discontinuities in the monotonically increasing - value normally occur at re-initialization of the - management system, and at other times as specified in the - description of a schema node using this type. If such - other times can occur, for example, the creation of - a schema node of type counter64 at times other than - re-initialization, then a corresponding schema node - should be defined, with an appropriate type, to indicate - the last discontinuity. - - The counter64 type should not be used for configuration - schema nodes. A default statement SHOULD NOT be used in - combination with the type counter64. - - In the value set and its semantics, this type is equivalent - to the Counter64 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - - typedef zero-based-counter64 { - type yang:counter64; - default "0"; - description - "The zero-based-counter64 type represents a counter64 that - has the defined 'initial' value zero. - - - - - A schema node of this type will be set to zero (0) on creation - and will thereafter increase monotonically until it reaches - a maximum value of 2^64-1 (18446744073709551615 decimal), - when it wraps around and starts increasing again from zero. - - Provided that an application discovers a new schema node - of this type within the minimum time to wrap, it can use the - 'initial' value as a delta. It is important for a management - station to be aware of this minimum time and the actual time - between polls, and to discard data if the actual time is too - long or there is no defined minimum time. - - In the value set and its semantics, this type is equivalent - to the ZeroBasedCounter64 textual convention of the SMIv2."; - reference - "RFC 2856: Textual Conventions for Additional High Capacity - Data Types"; - } - - typedef gauge32 { - type uint32; - description - "The gauge32 type represents a non-negative integer, which - may increase or decrease, but shall never exceed a maximum - value, nor fall below a minimum value. The maximum value - cannot be greater than 2^32-1 (4294967295 decimal), and - the minimum value cannot be smaller than 0. The value of - a gauge32 has its maximum value whenever the information - being modeled is greater than or equal to its maximum - value, and has its minimum value whenever the information - being modeled is smaller than or equal to its minimum value. - If the information being modeled subsequently decreases - below (increases above) the maximum (minimum) value, the - gauge32 also decreases (increases). - - In the value set and its semantics, this type is equivalent - to the Gauge32 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - - typedef gauge64 { - type uint64; - description - "The gauge64 type represents a non-negative integer, which - may increase or decrease, but shall never exceed a maximum - value, nor fall below a minimum value. The maximum value - cannot be greater than 2^64-1 (18446744073709551615), and - the minimum value cannot be smaller than 0. The value of - a gauge64 has its maximum value whenever the information - being modeled is greater than or equal to its maximum - value, and has its minimum value whenever the information - being modeled is smaller than or equal to its minimum value. - If the information being modeled subsequently decreases - below (increases above) the maximum (minimum) value, the - gauge64 also decreases (increases). - - In the value set and its semantics, this type is equivalent - to the CounterBasedGauge64 SMIv2 textual convention defined - in RFC 2856"; - reference - "RFC 2856: Textual Conventions for Additional High Capacity - Data Types"; - } - - /*** collection of identifier-related types ***/ - - typedef object-identifier { - type string { - pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))' - + '(\.(0|([1-9]\d*)))*'; - } - description - "The object-identifier type represents administratively - assigned names in a registration-hierarchical-name tree. - - Values of this type are denoted as a sequence of numerical - non-negative sub-identifier values. Each sub-identifier - value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers - are separated by single dots and without any intermediate - whitespace. - - The ASN.1 standard restricts the value space of the first - sub-identifier to 0, 1, or 2. Furthermore, the value space - of the second sub-identifier is restricted to the range - 0 to 39 if the first sub-identifier is 0 or 1. Finally, - the ASN.1 standard requires that an object identifier - has always at least two sub-identifiers. The pattern - captures these restrictions. - - Although the number of sub-identifiers is not limited, - module designers should realize that there may be - implementations that stick with the SMIv2 limit of 128 - sub-identifiers. - - This type is a superset of the SMIv2 OBJECT IDENTIFIER type - since it is not restricted to 128 sub-identifiers. Hence, - this type SHOULD NOT be used to represent the SMIv2 OBJECT - IDENTIFIER type; the object-identifier-128 type SHOULD be - used instead."; - reference - "ISO9834-1: Information technology -- Open Systems - Interconnection -- Procedures for the operation of OSI - Registration Authorities: General procedures and top - arcs of the ASN.1 Object Identifier tree"; - } - - typedef object-identifier-128 { - type object-identifier { - pattern '\d*(\.\d*){1,127}'; - } - description - "This type represents object-identifiers restricted to 128 - sub-identifiers. - - In the value set and its semantics, this type is equivalent - to the OBJECT IDENTIFIER type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - - typedef yang-identifier { - type string { - length "1..max"; - pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; - pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; - } - description - "A YANG identifier string as defined by the 'identifier' - rule in Section 12 of RFC 6020. An identifier must - start with an alphabetic character or an underscore - followed by an arbitrary sequence of alphabetic or - numeric characters, underscores, hyphens, or dots. - - A YANG identifier MUST NOT start with any possible - combination of the lowercase or uppercase character - sequence 'xml'."; - reference - "RFC 6020: YANG - A Data Modeling Language for the Network - Configuration Protocol (NETCONF)"; - } - - /*** collection of types related to date and time***/ - - typedef date-and-time { - type string { - pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?' - + '(Z|[\+\-]\d{2}:\d{2})'; - } - description - "The date-and-time type is a profile of the ISO 8601 - standard for representation of dates and times using the - Gregorian calendar. The profile is defined by the - date-time production in Section 5.6 of RFC 3339. - - The date-and-time type is compatible with the dateTime XML - schema type with the following notable exceptions: - - (a) The date-and-time type does not allow negative years. - - (b) The date-and-time time-offset -00:00 indicates an unknown - time zone (see RFC 3339) while -00:00 and +00:00 and Z - all represent the same time zone in dateTime. - - (c) The canonical format (see below) of data-and-time values - differs from the canonical format used by the dateTime XML - schema type, which requires all times to be in UTC using - the time-offset 'Z'. - - This type is not equivalent to the DateAndTime textual - convention of the SMIv2 since RFC 3339 uses a different - separator between full-date and full-time and provides - higher resolution of time-secfrac. - - The canonical format for date-and-time values with a known time - zone uses a numeric time zone offset that is calculated using - the device's configured known offset to UTC time. A change of - the device's offset to UTC time will cause date-and-time values - to change accordingly. Such changes might happen periodically - in case a server follows automatically daylight saving time - (DST) time zone offset changes. The canonical format for - date-and-time values with an unknown time zone (usually - referring to the notion of local time) uses the time-offset - -00:00."; - reference - "RFC 3339: Date and Time on the Internet: Timestamps - RFC 2579: Textual Conventions for SMIv2 - XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; - } - - typedef timeticks { - type uint32; - description - "The timeticks type represents a non-negative integer that - represents the time, modulo 2^32 (4294967296 decimal), in - hundredths of a second between two epochs. When a schema - node is defined that uses this type, the description of - the schema node identifies both of the reference epochs. - - In the value set and its semantics, this type is equivalent - to the TimeTicks type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - } - - typedef timestamp { - type yang:timeticks; - description - "The timestamp type represents the value of an associated - timeticks schema node at which a specific occurrence - happened. The specific occurrence must be defined in the - description of any schema node defined using this type. When - the specific occurrence occurred prior to the last time the - associated timeticks attribute was zero, then the timestamp - value is zero. Note that this requires all timestamp values - to be reset to zero when the value of the associated timeticks - attribute reaches 497+ days and wraps around to zero. - - The associated timeticks schema node must be specified - in the description of any schema node using this type. - - In the value set and its semantics, this type is equivalent - to the TimeStamp textual convention of the SMIv2."; - reference - "RFC 2579: Textual Conventions for SMIv2"; - } - - /*** collection of generic address types ***/ - - typedef phys-address { - type string { - pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; - } - - - - - description - "Represents media- or physical-level addresses represented - as a sequence octets, each octet represented by two hexadecimal - numbers. Octets are separated by colons. The canonical - representation uses lowercase characters. - - In the value set and its semantics, this type is equivalent - to the PhysAddress textual convention of the SMIv2."; - reference - "RFC 2579: Textual Conventions for SMIv2"; - } - - typedef mac-address { - type string { - pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; - } - description - "The mac-address type represents an IEEE 802 MAC address. - The canonical representation uses lowercase characters. - - In the value set and its semantics, this type is equivalent - to the MacAddress textual convention of the SMIv2."; - reference - "IEEE 802: IEEE Standard for Local and Metropolitan Area - Networks: Overview and Architecture - RFC 2579: Textual Conventions for SMIv2"; - } - - /*** collection of XML-specific types ***/ - - typedef xpath1.0 { - type string; - description - "This type represents an XPATH 1.0 expression. - - When a schema node is defined that uses this type, the - description of the schema node MUST specify the XPath - context in which the XPath expression is evaluated."; - reference - "XPATH: XML Path Language (XPath) Version 1.0"; - } - - /*** collection of string types ***/ - - typedef hex-string { - type string { - pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; - } - description - "A hexadecimal string with octets represented as hex digits - separated by colons. The canonical representation uses - lowercase characters."; - } - - typedef uuid { - type string { - pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' - + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; - } - description - "A Universally Unique IDentifier in the string representation - defined in RFC 4122. The canonical representation uses - lowercase characters. - - The following is an example of a UUID in string representation: - f81d4fae-7dec-11d0-a765-00a0c91e6bf6 - "; - reference - "RFC 4122: A Universally Unique IDentifier (UUID) URN - Namespace"; - } - - typedef dotted-quad { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; - } - description - "An unsigned 32-bit number expressed in the dotted-quad - notation, i.e., four octets written as decimal numbers - and separated with the '.' (full stop) character."; - } -} diff --git a/apps/tetopology/BUILD b/apps/tetopology/BUILD deleted file mode 100644 index 9f16249141..0000000000 --- a/apps/tetopology/BUILD +++ /dev/null @@ -1,13 +0,0 @@ -BUNDLES = [ - "//apps/tetopology/api:onos-apps-tetopology-api", - "//apps/tetopology/app:onos-apps-tetopology-app", -] - -onos_app( - app_name = "org.onosproject.tetopology", - category = "Traffic Engineering", - description = "Application to create and manage hierarchical TE topologies.", - included_bundles = BUNDLES, - title = "TE Topology Core", - url = "http://onosproject.org", -) diff --git a/apps/tetopology/api/BUILD b/apps/tetopology/api/BUILD deleted file mode 100644 index f72e3bcff0..0000000000 --- a/apps/tetopology/api/BUILD +++ /dev/null @@ -1,3 +0,0 @@ -osgi_jar_with_tests( - deps = CORE_DEPS, -) diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/CommonTopologyData.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/CommonTopologyData.java deleted file mode 100644 index 9c32895e52..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/CommonTopologyData.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onosproject.net.DeviceId; - -import java.util.BitSet; - -/** - * Representation of topology common attributes. - */ -public class CommonTopologyData { - private final OptimizationType optimization; - private final BitSet flags; - private final KeyId networkId; - private final DeviceId ownerId; - - /** - * Create an instance of CommonTopologyData. - * - * @param networkId the network identifier - * @param optimization the TE topology optimization criteria - * @param flags the topology characteristics flags - * @param ownerId the controller identifier owning this topology - */ - public CommonTopologyData(KeyId networkId, OptimizationType optimization, - BitSet flags, DeviceId ownerId) { - this.optimization = optimization; - this.flags = flags; - this.networkId = networkId; - this.ownerId = ownerId; - } - - /** - * Creates an instance of CommonTopologyData from a given TE topology. - * - * @param teTopology the given TE Topology - */ - public CommonTopologyData(TeTopology teTopology) { - optimization = teTopology.optimization(); - flags = teTopology.flags(); - networkId = teTopology.networkId(); - ownerId = teTopology.ownerId(); - } - - - /** - * Returns the topology optimization type. - * - * @return the optimization type - */ - public OptimizationType optimization() { - return optimization; - } - - /** - * Returns the network identifier. - * - * @return the network id - */ - public KeyId networkId() { - return networkId; - } - - /** - * Returns the topology characteristics flags. - * - * @return the flags - */ - public BitSet flags() { - return flags; - } - - /** - * Returns the SDN controller identifier owning this topology. - * - * @return the SDN controller id - */ - public DeviceId ownerId() { - return ownerId; - } - - @Override - public int hashCode() { - return Objects.hashCode(optimization, flags, ownerId, networkId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof CommonTopologyData) { - CommonTopologyData that = (CommonTopologyData) object; - return Objects.equal(optimization, that.optimization) && - Objects.equal(flags, that.flags) && - Objects.equal(networkId, that.networkId) && - Objects.equal(ownerId, that.ownerId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("optimization", optimization) - .add("flags", flags) - .add("ownerId", ownerId) - .add("networkId", networkId) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetwork.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetwork.java deleted file mode 100644 index fd726c983d..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetwork.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import java.util.List; -import java.util.Map; - -import org.onosproject.net.DeviceId; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.node.NetworkNode; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -/** - * Default Network implementation. - */ -public class DefaultNetwork implements Network { - private final KeyId networkId; - private final List supportingNetworkIds; - private final Map nodes; - private final Map links; - private final TeTopologyId teTopologyId; - private final boolean serverProvided; - private final DeviceId ownerId; - private final OptimizationType optimization; - - /** - * Creates an instance of DefaultNetwork. - * - * @param networkId network identifier - * @param supportingNetworkIds supporting network identifier - * @param nodes list of nodes within the network - * @param links list of links within the network - * @param teTopologyId TE topology identifier associated with the network - * @param serverProvided whether the network is received from server - * @param ownerId the the controller identifier owning this topology - * @param optimization TE topology optimization criteria - */ - public DefaultNetwork(KeyId networkId, List supportingNetworkIds, - Map nodes, Map links, - TeTopologyId teTopologyId, boolean serverProvided, - DeviceId ownerId, OptimizationType optimization) { - this.networkId = networkId; - this.supportingNetworkIds = supportingNetworkIds != null ? - Lists.newArrayList(supportingNetworkIds) : null; - this.nodes = nodes != null ? Maps.newHashMap(nodes) : null; - this.links = links != null ? Maps.newHashMap(links) : null; - this.teTopologyId = teTopologyId; - this.serverProvided = serverProvided; - this.ownerId = ownerId; - this.optimization = optimization; - } - - - @Override - public KeyId networkId() { - return networkId; - } - - @Override - public List supportingNetworkIds() { - if (supportingNetworkIds == null) { - return null; - } - return ImmutableList.copyOf(supportingNetworkIds); - } - - @Override - public Map nodes() { - if (nodes == null) { - return null; - } - return ImmutableMap.copyOf(nodes); - } - - @Override - public NetworkNode node(KeyId nodeId) { - return nodes.get(nodeId); - } - - @Override - public Map links() { - if (links == null) { - return null; - } - return ImmutableMap.copyOf(links); - } - - @Override - public NetworkLink link(KeyId linkId) { - return links.get(linkId); - } - - @Override - public boolean isServerProvided() { - return serverProvided; - } - - @Override - public TeTopologyId teTopologyId() { - return teTopologyId; - } - - @Override - public DeviceId ownerId() { - return ownerId; - } - - @Override - public OptimizationType optimization() { - return optimization; - } - - @Override - public int hashCode() { - return Objects.hashCode(networkId, supportingNetworkIds, - nodes, links, serverProvided, teTopologyId, - ownerId, optimization); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof DefaultNetwork) { - DefaultNetwork that = (DefaultNetwork) object; - return Objects.equal(networkId, that.networkId) && - Objects.equal(supportingNetworkIds, that.supportingNetworkIds) && - Objects.equal(nodes, that.nodes) && - Objects.equal(links, that.links) && - Objects.equal(serverProvided, that.serverProvided) && - Objects.equal(teTopologyId, that.teTopologyId) && - Objects.equal(ownerId, that.ownerId) - && Objects.equal(optimization, that.optimization); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("networkId", networkId) - .add("supportingNetworkIds", supportingNetworkIds) - .add("nodes", nodes) - .add("links", links) - .add("serverProvided", serverProvided) - .add("teTopologyId", teTopologyId) - .add("ownerId", ownerId) - .add("optimization", optimization) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetworks.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetworks.java deleted file mode 100644 index b67b2f4e82..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultNetworks.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -import java.util.List; - -/** - * Default Networks implementation. - */ -public class DefaultNetworks implements Networks { - private final List networks; - - /** - * Creates an instance of DefaultNetworks. - * - * @param networks list of networks - */ - public DefaultNetworks(List networks) { - this.networks = networks != null ? - Lists.newArrayList(networks) : null; - } - - @Override - public List networks() { - if (networks == null) { - return null; - } - return ImmutableList.copyOf(networks); - } - - @Override - public int hashCode() { - return Objects.hashCode(networks); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof DefaultNetworks) { - DefaultNetworks that = (DefaultNetworks) object; - return Objects.equal(networks, that.networks); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("networks", networks) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopologies.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopologies.java deleted file mode 100644 index d5a83f71e8..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopologies.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableMap; - -import java.util.HashMap; -import java.util.Map; - -/** - * Default TeTopologies implementation. - */ -public class DefaultTeTopologies implements TeTopologies { - private final String name; - private final Map teTopologies; - - /** - * Creates an instance of DefaultTeTopologies. - * - * @param name the name of a TeTopology set - * @param teTopologies the list of TeTopology - */ - public DefaultTeTopologies(String name, Map teTopologies) { - this.name = name; - this.teTopologies = teTopologies != null ? - new HashMap<>(teTopologies) : null; - } - - @Override - public String name() { - return name; - } - - @Override - public Map teTopologies() { - if (teTopologies == null) { - return null; - } - return ImmutableMap.copyOf(teTopologies); - } - - @Override - public int hashCode() { - return Objects.hashCode(name, teTopologies); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof DefaultTeTopologies) { - DefaultTeTopologies that = (DefaultTeTopologies) object; - return Objects.equal(name, that.name) && - Objects.equal(teTopologies, that.teTopologies); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("name", name) - .add("teTopologies", teTopologies) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopology.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopology.java deleted file mode 100644 index e20f32efa2..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/DefaultTeTopology.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; -import org.onosproject.net.DeviceId; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkTpKey; -import org.onosproject.tetopology.management.api.node.TeNode; - -import java.util.BitSet; -import java.util.Map; - -/** - * Default implementation of TeTopology. - */ -public class DefaultTeTopology implements TeTopology { - private final TeTopologyKey teKey; - private final Map teNodes; - private final Map teLinks; - private final String idString; - private final CommonTopologyData common; - - /** - * Creates an instance of DefaultTeTopology. - * - * @param teKey the TE topology key used for searching - * @param teNodes the list of TE nodes in the topology - * @param teLinks the list of TE links in the topology - * @param idString the TE Topology id string value - * @param common the common topology attributes - */ - public DefaultTeTopology(TeTopologyKey teKey, Map teNodes, - Map teLinks, String idString, - CommonTopologyData common) { - this.teKey = teKey; - this.teNodes = teNodes != null ? Maps.newHashMap(teNodes) : null; - this.teLinks = teLinks != null ? Maps.newHashMap(teLinks) : null; - this.idString = idString; - this.common = common; - } - - @Override - public TeTopologyKey teTopologyId() { - return teKey; - } - - @Override - public BitSet flags() { - if (common == null) { - return null; - } - return common.flags(); - } - - @Override - public OptimizationType optimization() { - if (common == null) { - return null; - } - return common.optimization(); - } - - @Override - public Map teNodes() { - if (teNodes == null) { - return null; - } - return ImmutableMap.copyOf(teNodes); - } - - @Override - public TeNode teNode(long teNodeId) { - return teNodes.get(teNodeId); - } - - @Override - public Map teLinks() { - if (teLinks == null) { - return null; - } - return ImmutableMap.copyOf(teLinks); - } - - @Override - public TeLink teLink(TeLinkTpKey teLinkId) { - return teLinks.get(teLinkId); - } - - @Override - public String teTopologyIdStringValue() { - return idString; - } - - @Override - public KeyId networkId() { - if (common == null) { - return null; - } - return common.networkId(); - } - - @Override - public DeviceId ownerId() { - if (common == null) { - return null; - } - return common.ownerId(); - } - - @Override - public int hashCode() { - return Objects.hashCode(teKey, teNodes, - teLinks, common, idString); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof DefaultTeTopology) { - DefaultTeTopology that = (DefaultTeTopology) object; - return Objects.equal(teKey, that.teKey) && - Objects.equal(teNodes, that.teNodes) && - Objects.equal(teLinks, that.teLinks) && - Objects.equal(common, that.common) && - Objects.equal(idString, that.idString); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("teKey", teKey) - .add("teNodes", teNodes) - .add("teLinks", teLinks) - .add("common", common) - .add("idString", idString) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/EncodingType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/EncodingType.java deleted file mode 100644 index 8650753241..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/EncodingType.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -/** - * LSP encoding type. - * See RFC 3471 for details. - */ -public enum EncodingType { - - /** - * Designates Packet LSP encoding. - */ - LSP_ENCODING_PACKET(1), - - /** - * Designates Ethernet LSP encoding. - */ - LSP_ENCODING_ETHERNET(2), - - /** - * Designates ANSI/ETSI PDH encoding. - */ - LSP_ENCODING_PDH(3), - - /** - * Designates SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding. - */ - LSP_ENCODING_SDH(5), - - /** - * Designates Digital Wrapper LSP encoding. - */ - LSP_ENCODING_DIGITAL_WRAPPER(7), - - /** - * Designates Lambda (photonic) LSP encoding. - */ - LSP_ENCODING_LAMBDA(8), - - /** - * Designates Fiber LSP encoding. - */ - LSP_ENCODING_FIBER(9), - - /** - * Designates Fiber Channel LSP encoding. - */ - LSP_ENCODING_FIBER_CHANNEL(11), - - /** - * Designates G.709 ODUk (Digital Path)LSP encoding. - */ - LSP_ENCODING_ODUK(12); - - private int value; - - /** - * Creates an instance of EncodingType. - * - * @param value value of encoding type - */ - EncodingType(int value) { - this.value = value; - } - - /** - * Returns the corresponding integer value of the encoding type. - * - * @return corresponding integer value - */ - public int value() { - return value; - } - - /** - * Returns the encoding type constant corresponding to the given integer - * value. If the given value cannot be mapped to any valid encoding type, - * a null is returned. - * - * @param value integer value - * @return corresponding encoding type constant - */ - public static EncodingType of(int value) { - switch (value) { - case 1: - return LSP_ENCODING_PACKET; - case 2: - return LSP_ENCODING_ETHERNET; - case 3: - return LSP_ENCODING_PDH; - case 5: - return LSP_ENCODING_SDH; - case 7: - return LSP_ENCODING_DIGITAL_WRAPPER; - case 8: - return LSP_ENCODING_LAMBDA; - case 9: - return LSP_ENCODING_FIBER; - case 11: - return LSP_ENCODING_FIBER_CHANNEL; - case 12: - return LSP_ENCODING_ODUK; - default: - return null; - } - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/KeyId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/KeyId.java deleted file mode 100644 index 5c8b400203..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/KeyId.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetopology.management.api; - -import java.net.URI; -import java.util.Objects; - -/** - * Representation of an key identifier in URI. - */ -public class KeyId { - /** - * Represents either no uri, or an unspecified uri. - */ - public static final KeyId NONE = keyId("none:none"); - - private final URI uri; - private final String str; - - // Public construction is prohibited - private KeyId(URI uri) { - this.uri = uri; - //this.str = uri.toString().toLowerCase(); - this.str = uri.toString(); - } - - - /** - * Default constructor for serialization of KeyId. - */ - protected KeyId() { - this.uri = null; - this.str = null; - } - - /** - * Returns the backing URI. - * - * @return backing URI - */ - public URI uri() { - return uri; - } - - @Override - public int hashCode() { - return str.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof KeyId) { - KeyId that = (KeyId) obj; - return this.getClass() == that.getClass() && - Objects.equals(this.str, that.str); - } - return false; - } - - @Override - public String toString() { - return str; - } - - /** - * Creates a uri id using the supplied URI. - * - * @param uri URI - * @return UriId - */ - public static KeyId keyId(URI uri) { - return new KeyId(uri); - } - - /** - * Creates a uri id using the supplied URI string. - * - * @param string URI string - * @return UriId - */ - public static KeyId keyId(String string) { - return keyId(URI.create(string)); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/LongValue.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/LongValue.java deleted file mode 100644 index 17a488a47e..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/LongValue.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import com.google.common.base.MoreObjects; - -import java.util.Objects; - -/** - * Implementation of using a long integer to represent - * an ElementType. - */ -public class LongValue { - private final long value; - - /** - * Creates an instance of LongValue. - * - * @param value long value - */ - public LongValue(long value) { - this.value = value; - } - - /** - * Returns the long integer representing the ElementType. - * - * @return long integer - */ - public long value() { - return value; - } - - @Override - public int hashCode() { - return Objects.hash(value); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof LongValue) { - LongValue other = (LongValue) obj; - return Objects.equals(value, other.value); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("value", value) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Network.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Network.java deleted file mode 100644 index 0226a03b47..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Network.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import java.util.List; -import java.util.Map; - -import org.onosproject.net.DeviceId; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.node.NetworkNode; - -/** - * Abstraction of a network element. - */ -public interface Network extends TeTopologyEventSubject { - - /** - * Returns the network identifier / key. - * - * @return network identifier - */ - KeyId networkId(); - - /** - * Returns the network keys (or identifiers) of the supporting - * networks which serve as the underlay networks of the current - * network which is mapped by the specified network identifier. - * - * @return list of network keys - */ - List supportingNetworkIds(); - - /** - * Returns a collection of the network nodes of the network mapped - * by the specified network identifier. - * - * @return a collection of network nodes - */ - Map nodes(); - - /** - * Returns the network node corresponding to the given identifier - * which is encoded as a URI. If no node is found, a null - * is returned. - * - * @param nodeId node id - * @return value of node or null - */ - NetworkNode node(KeyId nodeId); - - /** - * Returns a collection of links in the network mapped by the specified - * network identifier. - * - * @return a collection of currently known links - */ - Map links(); - - /** - * Returns the link corresponding to the given identifier which is - * encoded as a URI. If no such a link is found, a null is returned. - * - * @param linkId link id - * @return value of the link - */ - NetworkLink link(KeyId linkId); - - /** - * Returns true if the network is provided by a server, or false if - * configured by a client. - * - * @return true if the network is provided by a server; false otherwise - */ - boolean isServerProvided(); - - /** - * Returns the TE topology identifier for this network. - * - * @return TE topology id - */ - TeTopologyId teTopologyId(); - - /** - * Returns the topology optimization criteria. - * - * @return the optimization - */ - OptimizationType optimization(); - - /** - * Returns the controller identifier owning this abstracted topology. - * - * @return the controller id - */ - DeviceId ownerId(); -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Networks.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Networks.java deleted file mode 100644 index 1a61a12582..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/Networks.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import java.util.List; - -/** - * Abstraction of an entity which represents the functionality of networks. - */ -public interface Networks { - - /** - * Returns the list of networks. - * - * @return list of networks - */ - List networks(); - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/OptimizationType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/OptimizationType.java deleted file mode 100644 index acef6a6f3d..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/OptimizationType.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -/** - * TE optimization type. - */ -public enum OptimizationType { - - /** - * Designates optimization is not applied. - */ - NOT_OPTIMIZED(0), - - /** - * Designates optimization criteria least cost. - */ - LEAST_COST(1), - - /** - * Designates optimization criteria shortest delay. - */ - SHORTEST_DELAY(2), - - /** - * Designates optimization criteria best link utilization. - */ - BEST_LINK_UTILIZATION(3), - - /** - * Designates optimization criteria best link protection. - */ - BEST_LINK_PROTECTION(4); - - private int value; - - /** - * Creates an instance of OptimizationType. - * - * @param value value of optimization type - */ - OptimizationType(int value) { - this.value = value; - } - - /** - * Returns the optimization type value. - * - * @return the value of optimization type - */ - public int value() { - return value; - } - - /** - * Returns the optimization constant corresponding to the given value. - * If the given value cannot be mapped to any optimization type, a null - * is returned. - * - * @param value the value of the optimization type - * @return corresponding optimization type constant - */ - public static OptimizationType of(int value) { - switch (value) { - case 0: - return OptimizationType.NOT_OPTIMIZED; - case 1: - return OptimizationType.LEAST_COST; - case 2: - return OptimizationType.SHORTEST_DELAY; - case 3: - return OptimizationType.BEST_LINK_UTILIZATION; - case 4: - return OptimizationType.BEST_LINK_PROTECTION; - default: - return null; - } - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/ProviderClientId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/ProviderClientId.java deleted file mode 100644 index f70bbe6f11..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/ProviderClientId.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.base.Objects; - -/** - * TE topology provider and client identifiers. - */ -public abstract class ProviderClientId { - private final long providerId; - private final long clientId; - - /** - * Creates an instance of TE topology provider client identifier. - * - * @param providerId provider identifier - * @param clientId client identifier - */ - public ProviderClientId(long providerId, long clientId) { - this.providerId = providerId; - this.clientId = clientId; - } - - /** - * Returns the provider identifier. - * - * @return provider identifier - */ - public long providerId() { - return providerId; - } - - /** - * Returns the client identifier. - * - * @return client identifier - */ - public long clientId() { - return clientId; - } - - @Override - public int hashCode() { - return Objects.hashCode(providerId, clientId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof ProviderClientId) { - ProviderClientId that = (ProviderClientId) object; - return Objects.equal(providerId, that.providerId) && - Objects.equal(clientId, that.clientId); - } - return false; - } - - /** - * Returns ToStringHelper with providerId and clientId. - * - * @return toStringHelper - */ - protected ToStringHelper toStringHelper() { - return MoreObjects.toStringHelper(this) - .add("providerId", providerId) - .add("clientId", clientId); - } - - @Override - public String toString() { - return toStringHelper().toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/SwitchingType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/SwitchingType.java deleted file mode 100644 index 34106724ca..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/SwitchingType.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -/** - * Type of switching on a link. - * See RFC 3471 for details. - */ -public enum SwitchingType { - - /** - * Designates packet-switch capable-1 (PSC-1). - */ - PACKET_SWITCH_CAPABLE1(1), - - /** - * Designates packet-switch capable-2 (PSC-2). - */ - PACKET_SWITCH_CAPABLE2(2), - - /** - * Designates packet-switch capable-3 (PSC-3). - */ - PACKET_SWITCH_CAPABLE3(3), - - /** - * Designates packet-switch capable-4 (PSC-4). - */ - PACKET_SWITCH_CAPABLE4(4), - - /** - * Designates ethernet virtual private line (EVPL). - */ - ETHERNET_VIRTUAL_PRIVATE_LINE(5), - - /** - * Designates layer-2 switch capable (L2SC). - */ - LAYER2_SWITCH_CAPABLE(51), - - /** - * Designates time-division-multiplex capable (TDM). - */ - TIME_DIVISION_MULTIPLEX_CAPABLE(100), - - /** - * Designates OTN-TDM capable. - */ - OTN_TDM_CAPABLE(101), - - /** - * Designates lambda-switch capable (LSC). - */ - LAMBDA_SWITCH_CAPABLE(150), - - /** - * Designates fiber-switch capable (FSC). - */ - FIBER_SWITCH_CAPABLE(200); - - private int value; - - /** - * Creates an instance of a switching type constant corresponding - * to the given integer value. - * - * @param value integer value - */ - SwitchingType(int value) { - this.value = value; - } - - /** - * Returns the integer value of the switching type. - * - * @return integer value - */ - public int value() { - return value; - } - - /** - * Returns the switching type corresponding to a given integer - * value. If the given value is not valid, a null is returned. - * - * @param value integer value - * @return corresponding switching type; or null if value is invalid - */ - public static SwitchingType of(int value) { - switch (value) { - case 1: - return PACKET_SWITCH_CAPABLE1; - case 2: - return PACKET_SWITCH_CAPABLE2; - case 3: - return PACKET_SWITCH_CAPABLE3; - case 4: - return PACKET_SWITCH_CAPABLE4; - case 5: - return ETHERNET_VIRTUAL_PRIVATE_LINE; - case 51: - return LAYER2_SWITCH_CAPABLE; - case 100: - return TIME_DIVISION_MULTIPLEX_CAPABLE; - case 101: - return OTN_TDM_CAPABLE; - case 150: - return LAMBDA_SWITCH_CAPABLE; - case 200: - return FIBER_SWITCH_CAPABLE; - default: - return null; - } - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeConstants.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeConstants.java deleted file mode 100644 index e95574ab06..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeConstants.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -/** - * The common TE constants. - */ -public final class TeConstants { - /** - * Lowest priority of a GMPLS traffic link. - */ - public static final short MIN_PRIORITY = 0; - - /** - * Highest priority of a GMPLS traffic link. - */ - public static final short MAX_PRIORITY = 7; - - /** - * Size of the BitSet flags used in TE Topology data structures, such as - * TE links, TE nodes, and TE topologies. - */ - public static final short FLAG_MAX_BITS = 16; - - /** - * Indication of a Nil flag or a uninitialized long integer. - */ - public static final long NIL_LONG_VALUE = 0; - - // no instantiation - private TeConstants() { - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeStatus.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeStatus.java deleted file mode 100644 index b914061623..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeStatus.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetopology.management.api; - -/** - * Represents ENUM data of teStatus. - */ -public enum TeStatus { - - /** - * Represents up. - */ - UP(0), - - /** - * Represents down. - */ - DOWN(1), - - /** - * Represents testing. - */ - TESTING(2), - - /** - * Represents preparingMaintenance. - */ - PREPARING_MAINTENANCE(3), - - /** - * Represents maintenance. - */ - MAINTENANCE(4), - - /** - * Status cannot be determined for some reason. - */ - UNKNOWN(5); - - private int teStatus; - - /** - * Creates an instance of teStatus. - * - * @param value value of teStatus - */ - TeStatus(int value) { - teStatus = value; - } - - /** - * Returns the attribute teStatus. - * - * @return value of teStatus - */ - public int teStatus() { - return teStatus; - } - - /** - * Returns the object of teAdminStatusEnumForTypeInt.Returns null - * when string conversion fails or converted integer value is not - * recognized. - * - * @param value value of teAdminStatusEnumForTypeInt - * @return Object of teAdminStatusEnumForTypeInt - */ - public static TeStatus of(int value) { - switch (value) { - case 0: - return TeStatus.UP; - case 1: - return TeStatus.DOWN; - case 2: - return TeStatus.TESTING; - case 3: - return TeStatus.PREPARING_MAINTENANCE; - case 4: - return TeStatus.MAINTENANCE; - case 5: - return TeStatus.UNKNOWN; - default : - return null; - } - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologies.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologies.java deleted file mode 100644 index 1fb5194fa2..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologies.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import java.util.Map; - -/** - * Abstraction of an entity which represents a set of TE topologies. - */ -public interface TeTopologies { - - /** - * Returns the name of the TE topology set. - * - * @return name - */ - String name(); - - /** - * Returns a collection of currently known TE topologies. - * - * @return list of TE topologies - */ - Map teTopologies(); - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopology.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopology.java deleted file mode 100644 index cdded32a4f..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopology.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import org.onosproject.net.DeviceId; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkTpKey; -import org.onosproject.tetopology.management.api.node.TeNode; - -import java.util.BitSet; -import java.util.Map; - -/** - * Abstraction of a TE topology. - */ -public interface TeTopology extends TeTopologyEventSubject { - /** - * Indicates that the specified topology is not usable for - * any ACTN operations. - */ - public static final int BIT_DISABLED = 0; - - /** - * Indicates that the topology is auto-constructed by - * the controller by an auto-discovery mechanism. - */ - public static final int BIT_LEARNT = 1; - - /** - * Indicates that the topology is merged from other - * supporting topologies. - */ - public static final int BIT_MERGED = 2; - - /** - * Indicates that the topology is customized based on - * another topology. - */ - public static final int BIT_CUSTOMIZED = 3; - - /** - * Returns the TE topology identifier. - * - * @return the topology id - */ - TeTopologyKey teTopologyId(); - - /** - * Returns the topology characteristics flags. - * - * @return the flags - */ - public BitSet flags(); - - /** - * Returns the topology optimization criteria. - * - * @return the optimization - */ - public OptimizationType optimization(); - - /** - * Returns a collection of TE nodes in the topology. - * - * @return a collection of currently known TE nodes - */ - Map teNodes(); - - /** - * Returns a TE node in the topology that matches the given node - * identifier. A null will be returned if no such node exists. - * - * @param teNodeId the TE node id - * @return the corresponding node; or null if not found - */ - TeNode teNode(long teNodeId); - - /** - * Returns a collection of links in the topology. - * - * @return a collection of currently known te links - */ - Map teLinks(); - - /** - * Returns a TE link in the topology that matches the given - * link identifier. If no such a link is found, a null is returned. - * - * @param teLinkId the TE link id - * @return the corresponding link; or null if not found - */ - TeLink teLink(TeLinkTpKey teLinkId); - - /** - * Returns the TE topology identifier string value. - * - * @return the topology id in String format - */ - String teTopologyIdStringValue(); - - /** - * Returns the network identifier. - * - * @return network identifier - */ - KeyId networkId(); - - /** - * Returns the identity of the controller owning this abstracted topology. - * - * @return the controller id - */ - DeviceId ownerId(); - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEvent.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEvent.java deleted file mode 100644 index 4c778b2d18..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEvent.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import org.onosproject.event.AbstractEvent; - -/** - * TE topology event. - */ -public class TeTopologyEvent - extends AbstractEvent { - - /** - * Type of TE topology events. - */ - public enum Type { - /** - * Designates addition of a network. - */ - NETWORK_ADDED, - - /** - * Designates update of a network. - */ - NETWORK_UPDATED, - - /** - * Designates removal of a network. - */ - NETWORK_REMOVED, - - /** - * Designates addition of a network node. - */ - NODE_ADDED, - - /** - * Designates update of a network node. - */ - NODE_UPDATED, - - /** - * Designates removal of a network node. - */ - NODE_REMOVED, - - /** - * Designates addition of a termination point. - */ - TP_ADDED, - - /** - * Designates update of a termination point. - */ - TP_UPDATED, - - /** - * Designates removal of a termination point. - */ - TP_REMOVED, - - /** - * Designates addition of a network link. - */ - LINK_ADDED, - - /** - * Designates update of a network link. - */ - LINK_UPDATED, - - /** - * Designates removal of a network link. - */ - LINK_REMOVED, - - /** - * Designates addition of a TE topology. - */ - TE_TOPOLOGY_ADDED, - - /** - * Designates update of a TE topology. - */ - TE_TOPOLOGY_UPDATED, - - /** - * Designates removal of a TE topology. - */ - TE_TOPOLOGY_REMOVED, - - /** - * Designates addition of a TE node. - */ - TE_NODE_ADDED, - - /** - * Designates update of a TE node. - */ - TE_NODE_UPDATED, - - /** - * Designates removal of a TE node. - */ - TE_NODE_REMOVED, - - /** - * Designates addition of a TE link. - */ - TE_LINK_ADDED, - - /** - * Designates update of a TE link. - */ - TE_LINK_UPDATED, - - /** - * Designates removal of a TE link. - */ - TE_LINK_REMOVED - } - - /** - * Constructor for TeTopologyEvent. - * - * @param type type of topology event - * @param subject event subject interface - */ - public TeTopologyEvent(Type type, TeTopologyEventSubject subject) { - super(type, subject); - } - - /** - * Constructor for TeTopologyEvent. - * - * @param type type of topology event - * @param subject event subject interface - * @param time event time - */ - public TeTopologyEvent(Type type, TeTopologyEventSubject subject, long time) { - super(type, subject, time); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEventSubject.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEventSubject.java deleted file mode 100644 index 585e423530..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEventSubject.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -/** - * Abstraction of TE network topology event subject. - */ -public interface TeTopologyEventSubject { - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyId.java deleted file mode 100644 index 1b88d003e2..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyId.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import com.google.common.base.Objects; - -/** - * TE Topology identifier in String format. - */ -public class TeTopologyId extends ProviderClientId { - private final String topologyId; - - /** - * Creates an instance of TE topology identifier. - * - * @param providerId value of provider identifier - * @param clientId value of client identifier - * @param topologyId value of topology identifier - */ - public TeTopologyId(long providerId, long clientId, String topologyId) { - super(providerId, clientId); - this.topologyId = topologyId; - } - - /** - * Returns the topology identifier. - * - * @return topology identifier - */ - public String topologyId() { - return topologyId; - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), topologyId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TeTopologyId) { - if (!super.equals(object)) { - return false; - } - TeTopologyId that = (TeTopologyId) object; - return Objects.equal(this.topologyId, that.topologyId); - } - return false; - } - - @Override - public String toString() { - return toStringHelper() - .add("topologyId", topologyId) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyKey.java deleted file mode 100644 index cfab616ce9..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyKey.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.base.Objects; - -/** - * TE topology key in long integer format. - */ -public class TeTopologyKey extends ProviderClientId { - private final long topologyId; - - /** - * Creates an instance of TE topology identifier. - * - * @param providerId provider identifier - * @param clientId client identifier - * @param topologyId topology identifier - */ - public TeTopologyKey(long providerId, long clientId, long topologyId) { - super(providerId, clientId); - this.topologyId = topologyId; - } - - /** - * Returns the topology identifier. - * - * @return topology identifier - */ - public long topologyId() { - return topologyId; - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), topologyId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TeTopologyKey) { - if (!super.equals(object)) { - return false; - } - TeTopologyKey that = (TeTopologyKey) object; - return Objects.equal(topologyId, that.topologyId); - } - return false; - } - - /** - * Returns ToStringHelper with additional topologyId. - * - * @return toStringHelper - */ - protected ToStringHelper toTopologyKeyStringHelper() { - return toStringHelper().add("topologyId", topologyId); - } - - @Override - public String toString() { - return toTopologyKeyStringHelper().toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyListener.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyListener.java deleted file mode 100644 index 2e71e6c8d5..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of receiving TE network Topology related events. - */ -public interface TeTopologyListener extends EventListener { - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProvider.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProvider.java deleted file mode 100644 index ab60408f3b..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProvider.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import org.onosproject.net.provider.Provider; - -/** - * Abstraction of an IETF network provider. - * APIs for Manager to signal Provider. - */ -public interface TeTopologyProvider extends Provider { - - /** - * TODO: - * - * Signals provider that abstract networks/network/link/node has been created/updated/deleted. - * It's used by producers. - * - */ - - // TODO: Need to look at the following functions are required for TE Nodes - - // TODO: consider how dirty the triggerProbe gets; if it costs too much, let's drop it - - /** - * Triggers an asynchronous probe of the specified device, intended to - * determine whether the device is present or not. An indirect result of this - * should be invocation of - * {@link org.onosproject.net.device.DeviceProviderService#deviceConnected} )} or - * {@link org.onosproject.net.device.DeviceProviderService#deviceDisconnected} - * at some later point in time. - * - * @param deviceId ID of device to be probed - */ - //void triggerProbe(DeviceId deviceId); - - /** - * Notifies the provider of a mastership role change for the specified - * device as decided by the core. - * - * @param deviceId device identifier - * @param newRole newly determined mastership role - */ - //void roleChanged(DeviceId deviceId, MastershipRole newRole); - - /** - * Checks the reachability (connectivity) of a device from this provider. - * - * @param deviceId device identifier - * @return true if reachable, false otherwise - */ - //boolean isReachable(DeviceId deviceId); - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderRegistry.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderRegistry.java deleted file mode 100644 index 2f6bef998f..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderRegistry.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import org.onosproject.net.provider.ProviderRegistry; - -/** - * Abstraction of TE topology provider registry. - */ -public interface TeTopologyProviderRegistry - extends ProviderRegistry { - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderService.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderService.java deleted file mode 100644 index 139343ae82..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyProviderService.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import org.onosproject.net.provider.ProviderService; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.TerminationPoint; -import org.onosproject.tetopology.management.api.node.TerminationPointKey; - -/** - * APIs for Provider to notify Manager about the network topology updates. - */ -public interface TeTopologyProviderService - extends ProviderService { - - /** - * Signals that a Network has been created/updated. - * - * @param network value of the network to be updated - */ - void networkUpdated(Network network); - - /** - * Signals that a Network has been removed. - * - * @param networkId network id in URI format - */ - void networkRemoved(KeyId networkId); - - /** - * Signals that a Link has been created/updated. - * - * @param linkKey link id - * @param link link object to be updated - */ - void linkUpdated(NetworkLinkKey linkKey, NetworkLink link); - - /** - * Signals that a Network has been removed. - * - * @param linkKey link id - */ - void linkRemoved(NetworkLinkKey linkKey); - - /** - * Signals that a Node has been created/updated. - * - * @param nodeKey node id - * @param node node object to be updated - */ - void nodeUpdated(NetworkNodeKey nodeKey, NetworkNode node); - - /** - * Signals that a Node has been removed. - * - * @param nodeKey node id - */ - void nodeRemoved(NetworkNodeKey nodeKey); - - /** - * Signals that a TerminationPoint has been created/updated. - * - * @param terminationPointKey termination point id - * @param terminationPoint termination point object to be updated - */ - void terminationPointUpdated(TerminationPointKey terminationPointKey, - TerminationPoint terminationPoint); - - /** - * Signals that a TerminationPoint has been removed. - * - * @param terminationPointKey termination point id - */ - void terminationPointRemoved(TerminationPointKey terminationPointKey); - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyService.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyService.java deleted file mode 100644 index dd4826bdd5..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyService.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import org.onosproject.event.ListenerService; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TerminationPointKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint; - -/** - * TE Topology Service API. - */ -public interface TeTopologyService - extends ListenerService { - - /** - * Returns a collection of currently known networks. - * - * @return a collection of networks - */ - Networks networks(); - - /** - * Returns the network identified by its network identifier. if no - * network can be found, a null is returned. - * - * @param networkId network id in URI format - * @return the corresponding network; or null if not found - */ - Network network(KeyId networkId); - - /** - * Updates the network. - * - * @param network network to be updated - */ - void updateNetwork(Network network); - - /** - * Removes the network corresponding to the given network identifier. - * - * @param networkId network id in URI format - */ - void removeNetwork(KeyId networkId); - - /** - * Returns a collection of currently known TE topologies. - * - * @return a collection of topologies - */ - TeTopologies teTopologies(); - - /** - * Returns the TE Topology identified by the given key. - * - * @param topologyKey the given TE topology Key - * @return the corresponding TE topology - */ - TeTopology teTopology(TeTopologyKey topologyKey); - - /** - * Returns the merged topology in MDSC. - * - * @return the merged topology - */ - TeTopology mergedTopology(); - - /** - * Creates or Updates a TE topology based on the given topology. - * - * @param teTopology the given TE topology - */ - void updateTeTopology(TeTopology teTopology); - - /** - * Removes the TE Topology identified by its key. Does nothing if - * no topology is found which matches the key. - * - * @param topologyKey the TE topology key - */ - void removeTeTopology(TeTopologyKey topologyKey); - - /** - * Returns the TE node identified by the given node key. If no TE - * node is found, a null is returned. - * - * @param nodeKey the TE node key - * @return the corresponding TE node,or null - */ - TeNode teNode(TeNodeKey nodeKey); - - /** - * Returns the TE link identified by the given TE link key. If no - * TE link is found, a null is returned. - * - * @param linkKey the TE link key - * @return the corresponding TE link or null - */ - TeLink teLink(TeLinkTpGlobalKey linkKey); - - /** - * Returns a tunnel termination point identified by the given tunnel - * termination point key. If no tunnel termination point is found, - * a null is returned. - * - * @param ttpKey the tunnel termination point key - * @return the corresponding tunnel termination point - */ - TunnelTerminationPoint tunnelTerminationPoint(TtpKey ttpKey); - - /** - * Returns the network Id for a TE Topology key. - * - * @param teTopologyKey the TE topology key - * @return value of network Id - */ - KeyId networkId(TeTopologyKey teTopologyKey); - - /** - * Returns the network node key for a TE node key. - * - * @param teNodeKey a TE node key - * @return value of network node key - */ - NetworkNodeKey nodeKey(TeNodeKey teNodeKey); - - /** - * Returns the network link key for a TE link key. - * - * @param teLinkKey a TE node key - * @return value of network link key - */ - NetworkLinkKey linkKey(TeLinkTpGlobalKey teLinkKey); - - /** - * Returns the termination point key for a TE termination point key. - * - * @param teTpKey a TE termination point key - * @return value of termination point key - */ - TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey); - - /** - * Returns the TE controller global identification. - * - * @return value of controller id - */ - long teContollerId(); -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeUtils.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeUtils.java deleted file mode 100644 index fe05ed70f0..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeUtils.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api; - -import com.google.common.collect.Lists; - -import java.util.Collection; -import java.util.List; - -/** - * TE utility functions. - */ -public final class TeUtils { - - // no instantiation - private TeUtils() { - } - - /** - * Returns true if the given collection is empty; false otherwise. - * - * @param c the given collection - * @return true or false - */ - public static boolean nonEmpty(Collection c) { - return c != null && !c.isEmpty(); - } - - /** - * Adds a given element to a given list. If element is null, the - * given list is returned without modification. If the list is null, - * the function will instantiate and return a new list. - * - * @param list the given list - * @param element the given list element - * @param the element type - * @return the resulting list - */ - public static List addListElement(List list, T element) { - if (element == null) { - return list; - } - - List result = (list == null) ? Lists.newArrayList() : list; - - result.add(element); - - return result; - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/AsNumber.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/AsNumber.java deleted file mode 100644 index 2e97f21a96..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/AsNumber.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -/** - * Implementation of Autonomous System (AS) number as an ElementType. - */ -public class AsNumber implements ElementType { - private final int asNumber; - - /** - * Creates an instance of AsNumber. - * - * @param asNumber autonomous system number - */ - public AsNumber(int asNumber) { - this.asNumber = asNumber; - } - - /** - * Returns the autonomous system number. - * - * @return the AS number - */ - public int asNumber() { - return asNumber; - } - - @Override - public int hashCode() { - return Objects.hash(asNumber); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof AsNumber) { - AsNumber other = (AsNumber) obj; - return Objects.equals(asNumber, other.asNumber); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("asNumber", asNumber) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/CommonLinkData.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/CommonLinkData.java deleted file mode 100644 index dd3724d38e..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/CommonLinkData.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.onosproject.tetopology.management.api.EncodingType; -import org.onosproject.tetopology.management.api.SwitchingType; -import org.onosproject.tetopology.management.api.TeStatus; - -import java.util.BitSet; -import java.util.List; - -/** - * Representation of link common attributes. - */ -public class CommonLinkData { - private final TeStatus adminStatus; - private final TeStatus opStatus; - private final BitSet flags; - - private final SwitchingType switchingLayer; - private final EncodingType encodingLayer; - - private final ExternalLink externalLink; - private final UnderlayPath underlayPath; - private final TePathAttributes teAttributes; - private final List interLayerLocks; - private final LinkBandwidth bandwidth; - private final Long adminGroup; - - /** - * Creates an instance of CommonLinkData. - * - * @param adminStatus the admin status - * @param opStatus the operational Status - * @param flags the flags - * @param switchingLayer the network layer switching type - * @param encodingLayer the network layer encoding type - * @param externalLink the external link specific attributes - * @param underlayPath the link underlay path and supporting tunnel - * @param teAttributes the link path TE attributes - * @param adminGroup the administrative group - * @param interLayerLocks the supported inter-layer locks - * @param bandwidth the link maximum and available bandwidth at - * each priority level - */ - public CommonLinkData(TeStatus adminStatus, - TeStatus opStatus, BitSet flags, SwitchingType switchingLayer, - EncodingType encodingLayer, ExternalLink externalLink, - UnderlayPath underlayPath, TePathAttributes teAttributes, - Long adminGroup, List interLayerLocks, - LinkBandwidth bandwidth) { - this.adminStatus = adminStatus; - this.opStatus = opStatus; - this.flags = flags; - this.switchingLayer = switchingLayer; - this.encodingLayer = encodingLayer; - this.externalLink = externalLink; - this.underlayPath = underlayPath; - this.teAttributes = teAttributes; - this.adminGroup = adminGroup; - this.interLayerLocks = interLayerLocks != null ? - Lists.newArrayList(interLayerLocks) : null; - this.bandwidth = bandwidth; - } - - /** - * Creates an instance of CommonLinkData with a TeLink. - * - * @param link the TE link - */ - public CommonLinkData(TeLink link) { - this.adminStatus = link.adminStatus(); - this.opStatus = link.opStatus(); - this.flags = link.flags(); - this.switchingLayer = link.switchingLayer(); - this.encodingLayer = link.encodingLayer(); - this.externalLink = link.externalLink(); - this.underlayPath = new UnderlayPath(link); - this.teAttributes = new TePathAttributes(link); - this.adminGroup = link.administrativeGroup(); - this.interLayerLocks = link.interLayerLocks() != null ? - Lists.newArrayList(link.interLayerLocks()) : null; - this.bandwidth = new LinkBandwidth(link); - } - - - /** - * Returns the admin status. - * - * @return the admin status - */ - public TeStatus adminStatus() { - return adminStatus; - } - - /** - * Returns the operational status. - * - * @return the optional status - */ - public TeStatus opStatus() { - return opStatus; - } - - /** - * Returns the flags. - * - * @return the flags - */ - public BitSet flags() { - return flags; - } - - /** - * Returns the network layer switching type for this link. - * - * @return the switching layer type - */ - public SwitchingType switchingLayer() { - return switchingLayer; - } - - /** - * Returns the network layer encoding type for this link. - * - * @return the encoding type - */ - public EncodingType encodingLayer() { - return encodingLayer; - } - - /** - * Returns the external link. - * - * @return the external link - */ - public ExternalLink externalLink() { - return externalLink; - } - - /** - * Returns the link underlay path and tunnel. - * - * @return the underlay path - */ - public UnderlayPath underlayPath() { - return underlayPath; - } - - /** - * Returns the path TE attributes. - * - * @return the path TE Attributes - */ - public TePathAttributes teAttributes() { - return teAttributes; - } - - /** - * Returns the link administrative group. - * - * @return the admin group - */ - public Long adminGroup() { - return adminGroup; - } - - /** - * Returns the supported inter-layer locks. - * - * @return the inter-layer locks - */ - public List interLayerLocks() { - if (interLayerLocks == null) { - return null; - } - return ImmutableList.copyOf(interLayerLocks); - } - - /** - * Returns the link maximum and available bandwidth at each priority level. - * - * @return the bandwidth - */ - public LinkBandwidth bandwidth() { - return bandwidth; - } - - @Override - public int hashCode() { - return Objects.hashCode(adminStatus, opStatus, flags, switchingLayer, - encodingLayer, externalLink, underlayPath, - teAttributes, interLayerLocks, bandwidth); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof CommonLinkData) { - CommonLinkData that = (CommonLinkData) object; - return Objects.equal(adminStatus, that.adminStatus) && - Objects.equal(opStatus, that.opStatus) && - Objects.equal(flags, that.flags) && - Objects.equal(switchingLayer, that.switchingLayer) && - Objects.equal(encodingLayer, that.encodingLayer) && - Objects.equal(externalLink, that.externalLink) && - Objects.equal(underlayPath, that.underlayPath) && - Objects.equal(teAttributes, that.teAttributes) && - Objects.equal(interLayerLocks, that.interLayerLocks) && - Objects.equal(bandwidth, that.bandwidth); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("adminStatus", adminStatus) - .add("opStatus", opStatus) - .add("flags", flags) - .add("switchingLayer", switchingLayer) - .add("encodingLayer", encodingLayer) - .add("externalLink", externalLink) - .add("underlayPath", underlayPath) - .add("teAttributes", teAttributes) - .add("interLayerLocks", interLayerLocks) - .add("bandwidth", bandwidth) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ConnectivityMatrixId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ConnectivityMatrixId.java deleted file mode 100644 index 056b1f03df..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ConnectivityMatrixId.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import org.onosproject.tetopology.management.api.LongValue; - -/** - * Implementation of Connectivity matrix entry id as an element type. - */ -public class ConnectivityMatrixId extends LongValue implements ElementType { - - /** - * Creates a connectivity matrix identifier. - * - * @param entryId the entry identifier - */ - public ConnectivityMatrixId(long entryId) { - super(entryId); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultNetworkLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultNetworkLink.java deleted file mode 100644 index d8f97f361c..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultNetworkLink.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.node.NodeTpKey; - -import java.util.List; - -/** - * Default implementation of a network link. - */ -public class DefaultNetworkLink implements NetworkLink { - private final KeyId linkId; - private final NodeTpKey source; - private final NodeTpKey destination; - private final List supportingLinkIds; - private final TeLink teLink; - - /** - * Creates an instance of a network link. - * - * @param linkId link identifier - * @param source source of termination point - * @param destination destination termination point - * @param supportingLinkIds supporting links - * @param teLink TE link which this network link maps to - */ - public DefaultNetworkLink(KeyId linkId, - NodeTpKey source, - NodeTpKey destination, - List supportingLinkIds, - TeLink teLink) { - this.linkId = linkId; - this.source = source; - this.destination = destination; - this.supportingLinkIds = supportingLinkIds != null ? - Lists.newArrayList(supportingLinkIds) : null; - this.teLink = teLink; - } - - @Override - public KeyId linkId() { - return linkId; - } - - @Override - public NodeTpKey source() { - return source; - } - - @Override - public NodeTpKey destination() { - return destination; - } - - @Override - public List supportingLinkIds() { - if (supportingLinkIds == null) { - return null; - } - return ImmutableList.copyOf(supportingLinkIds); - } - - @Override - public TeLink teLink() { - return teLink; - } - - @Override - public int hashCode() { - return Objects.hashCode(linkId, source, destination, - supportingLinkIds, teLink); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof DefaultNetworkLink) { - DefaultNetworkLink that = (DefaultNetworkLink) object; - return Objects.equal(linkId, that.linkId) && - Objects.equal(source, that.source) && - Objects.equal(destination, that.destination) && - Objects.equal(supportingLinkIds, that.supportingLinkIds) && - Objects.equal(teLink, that.teLink); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("linkId", linkId) - .add("source", source) - .add("destination", destination) - .add("supportingLinkIds", supportingLinkIds) - .add("teLink", teLink) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultTeLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultTeLink.java deleted file mode 100644 index fb728b8f3a..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/DefaultTeLink.java +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onosproject.tetopology.management.api.EncodingType; -import org.onosproject.tetopology.management.api.SwitchingType; -import org.onosproject.tetopology.management.api.TeConstants; -import org.onosproject.tetopology.management.api.TeStatus; -import org.onosproject.tetopology.management.api.TeTopologyKey; - -import java.util.BitSet; -import java.util.List; - -/** - * The default implementation of TE link. - */ -public class DefaultTeLink implements TeLink { - private final TeLinkTpKey teLinkKey; - private final TeLinkTpKey peerTeLinkKey; - private final TeTopologyKey underlayTopologyId; - private final TeLinkTpGlobalKey supportTeLinkId; - private final TeLinkTpGlobalKey sourceTeLinkId; - private final CommonLinkData teData; - - /** - * Creates an instance of a TE link. - * - * @param teLinkKey the TE link key - * @param peerTeLinkKey the bi-directional peer link key - * @param underlayTopologyId the link underlay TE topology id - * @param supportTeLinkId the supporting TE link id - * @param sourceTeLinkId the source TE link id - * @param teData the link common te data - */ - public DefaultTeLink(TeLinkTpKey teLinkKey, - TeLinkTpKey peerTeLinkKey, - TeTopologyKey underlayTopologyId, - TeLinkTpGlobalKey supportTeLinkId, - TeLinkTpGlobalKey sourceTeLinkId, - CommonLinkData teData) { - this.teLinkKey = teLinkKey; - this.peerTeLinkKey = peerTeLinkKey; - this.underlayTopologyId = underlayTopologyId; - this.supportTeLinkId = supportTeLinkId; - this.sourceTeLinkId = sourceTeLinkId; - this.teData = teData; - } - - @Override - public TeLinkTpKey teLinkKey() { - return teLinkKey; - } - - @Override - public TeLinkTpKey peerTeLinkKey() { - return peerTeLinkKey; - } - - @Override - public BitSet flags() { - if (teData == null) { - return null; - } - return teData.flags(); - } - - @Override - public SwitchingType switchingLayer() { - if (teData == null) { - return null; - } - return teData.switchingLayer(); - } - - @Override - public EncodingType encodingLayer() { - if (teData == null) { - return null; - } - return teData.encodingLayer(); - } - - @Override - public ExternalLink externalLink() { - if (teData == null) { - return null; - } - return teData.externalLink(); - } - - @Override - public TeTopologyKey underlayTeTopologyId() { - return underlayTopologyId; - } - - @Override - public UnderlayPrimaryPath primaryPath() { - if (teData == null || teData.underlayPath() == null) { - return null; - } - return teData.underlayPath().primaryPath(); - } - - @Override - public List backupPaths() { - if (teData == null || teData.underlayPath() == null) { - return null; - } - return teData.underlayPath().backupPaths(); - } - - @Override - public TunnelProtectionType tunnelProtectionType() { - if (teData == null || teData.underlayPath() == null) { - return null; - } - return teData.underlayPath().tunnelProtectionType(); - } - - @Override - public long sourceTtpId() { - if (teData == null || teData.underlayPath() == null) { - return TeConstants.NIL_LONG_VALUE; - } - return teData.underlayPath().srcTtpId(); - } - - @Override - public long destinationTtpId() { - if (teData == null || teData.underlayPath() == null) { - return TeConstants.NIL_LONG_VALUE; - } - return teData.underlayPath().dstTtpId(); - } - - @Override - public TeTunnelId teTunnelId() { - if (teData == null || teData.underlayPath() == null) { - return null; - } - return teData.underlayPath().teTunnelId(); - } - - @Override - public TeLinkTpGlobalKey supportingTeLinkId() { - return supportTeLinkId; - } - - @Override - public TeLinkTpGlobalKey sourceTeLinkId() { - return sourceTeLinkId; - } - - @Override - public Long cost() { - if (teData == null || teData.teAttributes() == null) { - return TeConstants.NIL_LONG_VALUE; - } - return teData.teAttributes().cost(); - } - - @Override - public Long delay() { - if (teData == null || teData.teAttributes() == null) { - return TeConstants.NIL_LONG_VALUE; - } - return teData.teAttributes().delay(); - } - - @Override - public List srlgs() { - if (teData == null || teData.teAttributes() == null) { - return null; - } - return teData.teAttributes().srlgs(); - } - - @Override - public Long administrativeGroup() { - if (teData == null) { - return null; - } - return teData.adminGroup(); - } - - @Override - public List interLayerLocks() { - if (teData == null) { - return null; - } - return teData.interLayerLocks(); - } - - @Override - public float[] maxBandwidth() { - if (teData == null || teData.bandwidth() == null) { - return null; - } - return teData.bandwidth().maxBandwidth(); - } - - @Override - public float[] availBandwidth() { - if (teData == null || teData.bandwidth() == null) { - return null; - } - return teData.bandwidth().availBandwidth(); - } - - @Override - public float[] maxAvailLspBandwidth() { - if (teData == null || teData.bandwidth() == null) { - return null; - } - return teData.bandwidth().maxAvailLspBandwidth(); - } - - @Override - public float[] minAvailLspBandwidth() { - if (teData == null || teData.bandwidth() == null) { - return null; - } - return teData.bandwidth().minAvailLspBandwidth(); - } - - @Override - public OduResource oduResource() { - if (teData == null || teData.bandwidth() == null) { - return null; - } - return teData.bandwidth().oduResource(); - } - - @Override - public TeStatus adminStatus() { - if (teData == null) { - return null; - } - return teData.adminStatus(); - } - - @Override - public TeStatus opStatus() { - if (teData == null) { - return null; - } - return teData.opStatus(); - } - - @Override - public int hashCode() { - return Objects.hashCode(teLinkKey, peerTeLinkKey, underlayTopologyId, - supportTeLinkId, sourceTeLinkId, teData); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof DefaultTeLink) { - DefaultTeLink that = (DefaultTeLink) object; - return Objects.equal(teLinkKey, that.teLinkKey) && - Objects.equal(peerTeLinkKey, that.peerTeLinkKey) && - Objects.equal(underlayTopologyId, that.underlayTopologyId) && - Objects.equal(supportTeLinkId, that.supportTeLinkId) && - Objects.equal(sourceTeLinkId, that.sourceTeLinkId) && - Objects.equal(teData, that.teData); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("teLinkKey", teLinkKey) - .add("peerTeLinkKey", peerTeLinkKey) - .add("underlayTopologyId", underlayTopologyId) - .add("supportTeLinkId", supportTeLinkId) - .add("sourceTeLinkId", sourceTeLinkId) - .add("teData", teData) - .toString(); - } - - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ElementType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ElementType.java deleted file mode 100644 index 3c938c83d6..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ElementType.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -/** - * Abstraction of a path element type. - */ -public interface ElementType { -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ExternalLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ExternalLink.java deleted file mode 100644 index cb91ed1c88..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/ExternalLink.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of an external domain link. - */ -public class ExternalLink { - private final TeLinkTpGlobalKey externalLinkKey; - private final Long plugId; - - /** - * Creates an instance of an external domain link. - * - * @param externalLinkKey external TE link key - * @param plugId global plug identifier - */ - public ExternalLink(TeLinkTpGlobalKey externalLinkKey, long plugId) { - this.externalLinkKey = externalLinkKey; - this.plugId = plugId; - } - - /** - * Returns the external TE link key. - * - * @return the externalLinkKey - */ - public TeLinkTpGlobalKey externalLinkKey() { - return externalLinkKey; - } - - /** - * Returns the global plug identifier. - * - * @return value of the global plug id - */ - public Long plugId() { - return plugId; - } - - @Override - public int hashCode() { - return Objects.hashCode(externalLinkKey, plugId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof ExternalLink) { - ExternalLink that = (ExternalLink) object; - return Objects.equal(externalLinkKey, that.externalLinkKey) && - Objects.equal(plugId, that.plugId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("externalLinkKey", externalLinkKey) - .add("plugId", plugId) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/Label.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/Label.java deleted file mode 100644 index 8130f787d0..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/Label.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import org.onosproject.tetopology.management.api.LongValue; - -/** - * Implementation of a label as an element type. - */ -public class Label extends LongValue implements ElementType { - /** - * Creates a label instance. - * - * @param label label value - */ - public Label(long label) { - super(label); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/LinkBandwidth.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/LinkBandwidth.java deleted file mode 100644 index 22b1c86075..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/LinkBandwidth.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -import java.util.Arrays; - -/** - * Representation the TE link bandwidths. - */ -public class LinkBandwidth { - /** - * Maximum bandwidth, Size is MAX_PRIORITY + 1. - */ - private final float[] maxBandwidth; - - /** - * Unreserved bandwidth, Size is MAX_PRIORITY + 1. - */ - private final float[] availBandwidth; - - /** - * Maximum available bandwidth for a LSP. - */ - private final float[] maxAvailLspBandwidth; - - /** - * Minimum available bandwidth for a LSP. - */ - private final float[] minAvailLspBandwidth; - - /** - * ODU resources. - */ - private final OduResource odu; - - /** - * Creates an instance of link bandwidth. - * - * @param maxBandwidth the maximum bandwidth at each priority level - * @param availBandwidth the available bandwidth at each priority level - * @param maxAvailLspBandwidth the maximum available bandwidth for a LSP at - * each priority level - * @param minAvailLspBandwidth the minimum available bandwidth for a LSP at - * each priority level - * @param odu ODU resources - */ - public LinkBandwidth(float[] maxBandwidth, - float[] availBandwidth, - float[] maxAvailLspBandwidth, - float[] minAvailLspBandwidth, - OduResource odu) { - this.maxBandwidth = maxBandwidth != null ? - Arrays.copyOf(maxBandwidth, maxBandwidth.length) : null; - this.availBandwidth = availBandwidth != null ? - Arrays.copyOf(availBandwidth, availBandwidth.length) : null; - this.maxAvailLspBandwidth = maxAvailLspBandwidth != null ? - Arrays.copyOf(maxAvailLspBandwidth, - maxAvailLspBandwidth.length) : null; - this.minAvailLspBandwidth = minAvailLspBandwidth != null ? - Arrays.copyOf(minAvailLspBandwidth, - minAvailLspBandwidth.length) : null; - this.odu = odu; - } - - /** - * Creates an instance of link bandwidth with a TE link. - * - * @param link the TE link - */ - public LinkBandwidth(TeLink link) { - this.maxBandwidth = link.maxBandwidth(); - this.availBandwidth = link.maxAvailLspBandwidth(); - this.maxAvailLspBandwidth = link.maxAvailLspBandwidth(); - this.minAvailLspBandwidth = link.minAvailLspBandwidth(); - this.odu = link.oduResource(); - } - - /** - * Returns the maximum bandwidth at each priority level. - * - * @return the maxBandwidth - */ - public float[] maxBandwidth() { - if (maxBandwidth == null) { - return null; - } - return Arrays.copyOf(maxBandwidth, maxBandwidth.length); - } - - /** - * Returns the available bandwidth at each priority level. - * - * @return the available bandwidth - */ - public float[] availBandwidth() { - if (availBandwidth == null) { - return null; - } - return Arrays.copyOf(availBandwidth, availBandwidth.length); - } - - /** - * Returns the maximum available bandwidth for a LSP at each priority - * level. - * - * @return the maximum available bandwidth - */ - public float[] maxAvailLspBandwidth() { - if (maxAvailLspBandwidth == null) { - return null; - } - return Arrays.copyOf(maxAvailLspBandwidth, maxAvailLspBandwidth.length); - } - - /** - * Returns the minimum available bandwidth for a LSP at each priority level. - * - * @return the minimum available bandwidth - */ - public float[] minAvailLspBandwidth() { - if (minAvailLspBandwidth == null) { - return null; - } - return Arrays.copyOf(minAvailLspBandwidth, minAvailLspBandwidth.length); - } - - /** - * Returns the link ODUk resources. - * - * @return the ODUk resources - */ - public OduResource oduResource() { - return odu; - } - - @Override - public int hashCode() { - return Objects.hashCode(Arrays.hashCode(maxBandwidth), - Arrays.hashCode(availBandwidth), - Arrays.hashCode(maxAvailLspBandwidth), - Arrays.hashCode(minAvailLspBandwidth), - odu); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof LinkBandwidth) { - LinkBandwidth that = (LinkBandwidth) object; - return Arrays.equals(maxBandwidth, that.maxBandwidth) && - Arrays.equals(availBandwidth, that.availBandwidth) && - Arrays.equals(maxAvailLspBandwidth, that.maxAvailLspBandwidth) && - Arrays.equals(minAvailLspBandwidth, that.minAvailLspBandwidth) && - Objects.equal(odu, that.odu); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("maxBandwidth", maxBandwidth) - .add("availBandwidth", availBandwidth) - .add("maxAvailLspBandwidth", maxAvailLspBandwidth) - .add("minAvailLspBandwidth", minAvailLspBandwidth) - .add("odu", odu) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLink.java deleted file mode 100644 index d40e6c11a4..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLink.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.node.NodeTpKey; - -import java.util.List; - -/** - * Abstraction of a base network link. - */ -public interface NetworkLink { - - /** - * Returns the link identifier. - * - * @return link identifier - */ - KeyId linkId(); - - /** - * Returns the link source termination point. - * - * @return source link termination point identifier - */ - NodeTpKey source(); - - /** - * Returns the link destination termination point. - * - * @return destination link termination point id - */ - NodeTpKey destination(); - - /** - * Returns the supporting link identifiers. - * - * @return list of the ids of the supporting links - */ - List supportingLinkIds(); - - /** - * Returns the link TE extension. - * - * @return TE link attributes - */ - TeLink teLink(); -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkEventSubject.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkEventSubject.java deleted file mode 100644 index 50d4100989..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkEventSubject.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onosproject.tetopology.management.api.TeTopologyEventSubject; - -/** - * Representation of a network link event. - */ -public class NetworkLinkEventSubject implements TeTopologyEventSubject { - private final NetworkLinkKey key; - private final NetworkLink networkLink; - - /** - * Creates a network link event instance. - * - * @param key the network link global key - * @param networkLink the network link object - */ - public NetworkLinkEventSubject(NetworkLinkKey key, NetworkLink networkLink) { - this.key = key; - this.networkLink = networkLink; - } - - /** - * Returns the network link global key. - * - * @return the key - */ - public NetworkLinkKey key() { - return key; - } - - /** - * Returns the network link. - * - * @return the network link - */ - public NetworkLink networkLink() { - return networkLink; - } - - @Override - public int hashCode() { - return Objects.hashCode(key, networkLink); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof NetworkLinkEventSubject) { - NetworkLinkEventSubject that = (NetworkLinkEventSubject) object; - return Objects.equal(key, that.key) && - Objects.equal(networkLink, that.networkLink); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("key", key) - .add("networkLink", networkLink) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkKey.java deleted file mode 100644 index 2e045663dd..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/NetworkLinkKey.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import org.onosproject.tetopology.management.api.KeyId; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of a link key or link reference. - */ -public class NetworkLinkKey { - private final KeyId networkId; - private final KeyId linkId; - - /** - * Creates an instance of NetworkLinkKey. - * - * @param networkId network identifier - * @param linkId link identifier - */ - public NetworkLinkKey(KeyId networkId, KeyId linkId) { - this.networkId = networkId; - this.linkId = linkId; - } - - /** - * Returns the network identifier. - * - * @return network identifier - */ - public KeyId networkId() { - return networkId; - } - - /** - * Returns the link identifier. - * - * @return link identifier - */ - public KeyId linkId() { - return linkId; - } - - @Override - public int hashCode() { - return Objects.hashCode(networkId, linkId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof NetworkLinkKey) { - NetworkLinkKey that = (NetworkLinkKey) object; - return Objects.equal(this.networkId, that.networkId) && - Objects.equal(this.linkId, that.linkId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("networkId", networkId) - .add("linkId", linkId) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/OduResource.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/OduResource.java deleted file mode 100644 index 93d5d1facb..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/OduResource.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of an ODU link resource. - */ -public class OduResource { - private final short odu0s; - private final short odu1s; - private final short odu2s; - private final short odu2es; - private final short odu3s; - private final short odu4s; - private final short oduFlexes; - - /** - * Creates an instance of an ODU link resource. - * - * @param odu0s number of available ODU0 containers - * @param odu1s number of available ODU1 containers - * @param odu2s number of available ODU2 containers - * @param odu2es number of available ODU2e containers - * @param odu3s number of available ODU3 containers - * @param odu4s number of available ODU4 containers - * @param oduFlexes available ODUflex bandwidth in terms of ODU0 containers - */ - public OduResource(short odu0s, short odu1s, short odu2s, - short odu2es, short odu3s, short odu4s, - short oduFlexes) { - this.odu0s = odu0s; - this.odu1s = odu1s; - this.odu2s = odu2s; - this.odu2es = odu2es; - this.odu3s = odu3s; - this.odu4s = odu4s; - this.oduFlexes = oduFlexes; - } - - /** - * Returns the number of available ODU0s. - * - * @return the odu0s - */ - public short odu0s() { - return odu0s; - } - - /** - * Returns the number of available ODU1s. - * - * @return the odu1s - */ - public short odu1s() { - return odu1s; - } - - /** - * Returns the number of available ODU2s. - * - * @return the odu2s - */ - public short odu2s() { - return odu2s; - } - - /** - * Returns the number of available ODU2es. - * - * @return the odu2es - */ - public short odu2es() { - return odu2es; - } - - /** - * Returns the number of available ODU3s. - * - * @return the odu3s - */ - public short odu3s() { - return odu3s; - } - - /** - * Returns the number of available ODU4s. - * - * @return the odu4s - */ - public short odu4s() { - return odu4s; - } - - /** - * Returns available ODUflex bandwidth in terms of ODU0 containers. - * - * @return the oduFlexes - */ - public short oduFlexes() { - return oduFlexes; - } - - @Override - public int hashCode() { - return Objects.hashCode(odu0s, odu1s, odu2s, odu2es, odu3s, - odu4s, oduFlexes); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof OduResource) { - OduResource that = (OduResource) object; - return (this.odu0s == that.odu0s) && - (this.odu1s == that.odu1s) && - (this.odu2s == that.odu2s) && - (this.odu2es == that.odu2es) && - (this.odu3s == that.odu3s) && - (this.odu4s == that.odu4s) && - (this.oduFlexes == that.oduFlexes); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("odu0s", odu0s) - .add("odu1s", odu1s) - .add("odu2s", odu2s) - .add("odu2es", odu2es) - .add("odu3s", odu3s) - .add("odu4s", odu4s) - .add("oduFlexes", oduFlexes) - .toString(); - } - - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/PathElement.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/PathElement.java deleted file mode 100644 index 3cbaae8776..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/PathElement.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of a path element. - */ -public class PathElement { - private final long pathElementId; - private final long teNodeId; - private final ElementType type; - private final boolean loose; - - /** - * Creates a path element. - * - * @param pathElementId path element identifier - * @param teNodeId identifier of the TE node to which this - * path element belongs - * @param type path element type - * @param loose loose if true; strict if false - */ - public PathElement(long pathElementId, long teNodeId, - ElementType type, boolean loose) { - this.pathElementId = pathElementId; - this.teNodeId = teNodeId; - this.type = type; - this.loose = loose; - } - - /** - * Returns the path element identifier. - * - * @return path element id - */ - public long pathElementId() { - return pathElementId; - } - - /** - * Returns the TE node identifier. - * - * @return te node id - */ - public long teNodeId() { - return teNodeId; - } - - /** - * Returns the path element type. - * - * @return path element type - */ - public ElementType type() { - return type; - } - - /** - * Returns the loose flag. true = loose; false = strict. - * - * @return loose value - */ - public boolean loose() { - return loose; - } - - @Override - public int hashCode() { - return Objects.hashCode(pathElementId, teNodeId, type, loose); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof PathElement) { - PathElement that = (PathElement) object; - return Objects.equal(pathElementId, that.pathElementId) && - Objects.equal(teNodeId, that.teNodeId) && - Objects.equal(type, that.type) && - Objects.equal(loose, that.loose); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("pathElementId", pathElementId) - .add("teNodeId", teNodeId) - .add("type", type) - .add("loose", loose) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv4.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv4.java deleted file mode 100644 index 454fed3ef7..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv4.java +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Copyright 2016 Open Networking Foundation - *

- * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import org.onlab.packet.Ip4Address; - -import java.util.Objects; - -/** - * Implementation of IPv4 address as an element type. - */ -public class TeIpv4 implements ElementType { - private final Ip4Address v4Address; - private final short v4PrefixLength; - - /** - * Creates an IPv4 address. - * - * @param v4Address the IPv4 address - * @param v4PrefixLength the length of IPv4 prefix - */ - public TeIpv4(Ip4Address v4Address, short v4PrefixLength) { - this.v4Address = v4Address; - this.v4PrefixLength = v4PrefixLength; - } - - /** - * Returns the IPv4 address. - * - * @return IPv4 address - */ - public Ip4Address v4Address() { - return v4Address; - } - - /** - * Returns the length of the IPv4 address prefix. - * - * @return IPv4 address prefix length - */ - public short v4PrefixLength() { - return v4PrefixLength; - } - - @Override - public int hashCode() { - return Objects.hash(v4Address, v4PrefixLength); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TeIpv4) { - TeIpv4 other = (TeIpv4) obj; - return Objects.equals(v4Address, other.v4Address) && - Objects.equals(v4PrefixLength, other.v4PrefixLength); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("v4Address", v4Address) - .add("v4PrefixLength", v4PrefixLength) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv6.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv6.java deleted file mode 100644 index baa033bf6c..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeIpv6.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import org.onlab.packet.Ip6Address; - -import java.util.Objects; - -/** - * Implementation of an IPv6 address as an element type. - */ -public class TeIpv6 implements ElementType { - private final Ip6Address v6Address; - private final short v6PrefixLength; - - /** - * Creates an IPv6 address. - * - * @param v6Address the IP v6 address to set - * @param v6PrefixLength the length of the IPv6 address prefix - */ - public TeIpv6(Ip6Address v6Address, short v6PrefixLength) { - this.v6Address = v6Address; - this.v6PrefixLength = v6PrefixLength; - } - - /** - * Returns the IPv6 address. - * - * @return the IPv6 address - */ - public Ip6Address v6Address() { - return v6Address; - } - - /** - * Returns the length of the IPv6 address prefix. - * - * @return IPv6 address prefix length - */ - public short v6PrefixLength() { - return v6PrefixLength; - } - - @Override - public int hashCode() { - return Objects.hash(v6Address, v6PrefixLength); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TeIpv6) { - TeIpv6 other = (TeIpv6) obj; - return Objects.equals(v6Address, other.v6Address) && - Objects.equals(v6PrefixLength, other.v6PrefixLength); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("v6Address", v6Address) - .add("v6PrefixLength", v6PrefixLength) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLink.java deleted file mode 100644 index b43f40614e..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLink.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import org.onosproject.tetopology.management.api.EncodingType; -import org.onosproject.tetopology.management.api.SwitchingType; -import org.onosproject.tetopology.management.api.TeStatus; -import org.onosproject.tetopology.management.api.TeTopologyKey; - -import java.util.BitSet; -import java.util.List; - -/** - * Abstraction of a TE link. - */ -public interface TeLink { - /** - * Indicates that the TE link belongs to an abstract topology. - */ - public static final short BIT_ABSTRACT = 0; - - /** - * Indicates that the underlay topology that supports this TE link - * is dynamically created as opposed to being created by provisioning. - */ - public static final short BIT_DYNAMIC = 1; - - /** - * Indicates that the underlay topology is committed to service. - */ - public static final short BIT_COMMITTED = 2; - - /** - * Indicates that the TE link connects 2 TE domains. - */ - public static final short BIT_ACCESS_INTERDOMAIN = 3; - - /** - * Indicates that the TE link is not numbered. - */ - public static final short BIT_UNNUMBERED = 4; - - /** - * Returns the TE link key. - * - * @return the TE link key - */ - TeLinkTpKey teLinkKey(); - - /** - * Returns the key of the bi-directional peer TE link. - * - * @return peer TE link key - */ - TeLinkTpKey peerTeLinkKey(); - - /** - * Returns the flags of this TE link. - * - * @return the flags - */ - BitSet flags(); - - /** - * Returns the network layer switching type for this link. - * - * @return the network layer switching type - */ - SwitchingType switchingLayer(); - - /** - * Returns the network layer encoding type for this link. - * - * @return the encoding type - */ - EncodingType encodingLayer(); - - /** - * Returns the external link. - * - * @return the external link - */ - ExternalLink externalLink(); - - /** - * Returns the underlay TE topology identifier for the link. - * - * @return the underlay TE topology id - */ - TeTopologyKey underlayTeTopologyId(); - - /** - * Returns the primary path. - * - * @return underlay primary path - */ - UnderlayPrimaryPath primaryPath(); - - /** - * Returns the backup paths. - * - * @return list of underlay backup paths - */ - List backupPaths(); - - /** - * Returns the supporting tunnel protection type. - * - * @return the tunnel protection type - */ - TunnelProtectionType tunnelProtectionType(); - - /** - * Returns the supporting tunnel's source tunnel termination point - * identifier. - * - * @return the source TTP id - */ - long sourceTtpId(); - - /** - * Returns the supporting tunnel's destination tunnel termination - * point identifier. - * - * @return the destination TTP id - */ - long destinationTtpId(); - - /** - * Returns the supporting tunnel identifier. - * - * @return the supporting tunnel id - */ - TeTunnelId teTunnelId(); - - /** - * Returns the supporting TE link identifier. - * - * @return the supporting TE link id - */ - TeLinkTpGlobalKey supportingTeLinkId(); - - /** - * Returns the source TE link identifier. - * - * @return the source link id - */ - TeLinkTpGlobalKey sourceTeLinkId(); - - /** - * Returns the link cost. - * - * @return the cost - */ - Long cost(); - - /** - * Returns the link delay. - * - * @return the delay - */ - Long delay(); - - /** - * Returns the link SRLG values. - * - * @return the srlgs - */ - List srlgs(); - - /** - * Returns the link administrative group. - * - * @return the adminGroup - */ - Long administrativeGroup(); - - /** - * Returns the supported inter-layer locks. - * - * @return the inter-layer locks - */ - List interLayerLocks(); - - /** - * Returns the maximum bandwidth at each priority level. - * - * @return a list of maximum bandwidths - */ - float[] maxBandwidth(); - - /** - * Returns the available bandwidth at each priority level. - * - * @return a list of available bandwidths - */ - float[] availBandwidth(); - - /** - * Returns the maximum available bandwidth for a LSP at each priority level. - * - * @return a list of maximum available bandwidths - */ - float[] maxAvailLspBandwidth(); - - /** - * Returns the minimum available bandwidth for a LSP at each priority level. - * - * @return a list of minimum available bandwidths - */ - float[] minAvailLspBandwidth(); - - /** - * Returns the administrative status of this TE link. - * - * @return the admin status - */ - TeStatus adminStatus(); - - /** - * Returns the operational status of this TE link. - * - * @return the operational status - */ - TeStatus opStatus(); - - /** - * Returns the link ODUk resources. - * - * @return the ODUk resources - */ - OduResource oduResource(); -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkAccessType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkAccessType.java deleted file mode 100644 index 5698ff9ba8..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkAccessType.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -/** - * Represents ENUM data of teLinkAccessType. - */ -public enum TeLinkAccessType { - /** - * Represents pointToPoint. - */ - POINT_TO_POINT(0), - - /** - * Represents multiAccess. - */ - MULTI_ACCESS(1); - - private int teLinkAccessType; - - TeLinkAccessType(int value) { - teLinkAccessType = value; - } - - /** - * Returns the attribute teLinkAccessType. - * - * @return value of teLinkAccessType - */ - public int teLinkAccessType() { - return teLinkAccessType; - } - - /** - * Returns the object of teLinkAccessType from input String. Returns null - * when string conversion fails or converted integer value is not recognized. - * - * @param valInString input String - * @return Object of teLinkAccessType - */ - public static TeLinkAccessType of(String valInString) { - try { - int tmpVal = Integer.parseInt(valInString); - return of(tmpVal); - } catch (NumberFormatException e) { - } - return null; - } - - /** - * Returns the object of teLinkAccessTypeForTypeInt. Returns null - * when the integer value is not recognized. - * - * @param value value of teLinkAccessTypeForTypeInt - * @return Object of teLinkAccessTypeForTypeInt - */ - public static TeLinkAccessType of(int value) { - switch (value) { - case 0: - return TeLinkAccessType.POINT_TO_POINT; - case 1: - return TeLinkAccessType.MULTI_ACCESS; - default : - return null; - } - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkEventSubject.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkEventSubject.java deleted file mode 100644 index 4a3a96101e..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkEventSubject.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onosproject.tetopology.management.api.TeTopologyEventSubject; - -/** - * Representation of a TE link event. - */ -public class TeLinkEventSubject implements TeTopologyEventSubject { - private final TeLinkTpGlobalKey key; - private final TeLink teLink; - - /** - * Creates an instance of TE link event. - * - * @param key the TE link key - * @param teLink the TE link - */ - public TeLinkEventSubject(TeLinkTpGlobalKey key, TeLink teLink) { - this.key = key; - this.teLink = teLink; - } - - /** - * Returns the TE link global key. - * - * @return the key - */ - public TeLinkTpGlobalKey key() { - return key; - } - - /** - * Returns the TE link. - * - * @return the TE link - */ - public TeLink teLink() { - return teLink; - } - - @Override - public int hashCode() { - return Objects.hashCode(key, teLink); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TeLinkEventSubject) { - TeLinkEventSubject that = (TeLinkEventSubject) object; - return Objects.equal(key, that.key) && - Objects.equal(teLink, that.teLink); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("key", key) - .add("teLink", teLink) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkId.java deleted file mode 100644 index 0be9032a30..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkId.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import org.onosproject.tetopology.management.api.LongValue; - -/** - * Implementation of a TE link identifier as an element type. - */ -public class TeLinkId extends LongValue implements ElementType { - - /** - * Creates a TE link identifier based on a given long integer. - * - * @param linkId TE link id - */ - public TeLinkId(long linkId) { - super(linkId); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpGlobalKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpGlobalKey.java deleted file mode 100644 index 63977db2c5..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpGlobalKey.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.node.TeNodeKey; - -import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.base.Objects; - -/** - * Representation of a global TE link TP (i.e., TE termination point) key. - */ -public class TeLinkTpGlobalKey extends TeNodeKey { - private final long teLinkTpId; - - /** - * Creates a global TE link TP key. - * - * @param providerId provider identifier - * @param clientId client identifier - * @param topologyId topology identifier - * @param teNodeId TE node identifier - * @param teLinkTpId TE link termination point identifier - */ - public TeLinkTpGlobalKey(long providerId, long clientId, - long topologyId, long teNodeId, - long teLinkTpId) { - super(providerId, clientId, topologyId, teNodeId); - this.teLinkTpId = teLinkTpId; - } - - /** - * Creates a global TE link TP key based on a given local TE node key. - * - * @param teNodeKey the local TE node key - * @param teLinkTpId TE link termination point identifier - */ - public TeLinkTpGlobalKey(TeNodeKey teNodeKey, long teLinkTpId) { - super(teNodeKey.providerId(), teNodeKey.clientId(), - teNodeKey.topologyId(), teNodeKey.teNodeId()); - this.teLinkTpId = teLinkTpId; - } - - /** - * Creates a global TE link TP key based on a given TE topology key - * and a local TE link TP key. - * - * @param teTopologyKey the key of TE Topology to which this link belongs - * @param teLinkTpKey the local TE link key - */ - public TeLinkTpGlobalKey(TeTopologyKey teTopologyKey, - TeLinkTpKey teLinkTpKey) { - super(teTopologyKey.providerId(), teTopologyKey.clientId(), - teTopologyKey.topologyId(), teLinkTpKey.teNodeId()); - this.teLinkTpId = teLinkTpKey.teLinkTpId(); - } - - /** - * Returns the TE link TP identifier. - * - * @return the TE link id - */ - public long teLinkTpId() { - return teLinkTpId; - } - - /** - * Returns the key of the TE node from which this link TP originates. - * - * @return the TE node key - */ - public TeNodeKey teNodeKey() { - return new TeNodeKey(providerId(), clientId(), topologyId(), teNodeId()); - } - - /** - * Returns the key of the TE Topology to which this link TP belongs. - * - * @return the TE topology key - */ - @Override - public TeTopologyKey teTopologyKey() { - return new TeTopologyKey(providerId(), clientId(), topologyId()); - } - - /** - * Returns the local TE link TP key. - * - * @return the TE link TP key - */ - public TeLinkTpKey teLinkTpKey() { - return new TeLinkTpKey(teNodeId(), teLinkTpId); - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), teLinkTpId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TeLinkTpGlobalKey) { - if (!super.equals(object)) { - return false; - } - TeLinkTpGlobalKey that = (TeLinkTpGlobalKey) object; - return Objects.equal(teLinkTpId, that.teLinkTpId); - } - return false; - } - - /** - * Returns a helper for toString() with additional TE link TP identifier. - * - * @return a toString helper - */ - protected ToStringHelper toTeLinkTpKeyStringHelper() { - return toTeNodeKeyStringHelper().add("teLinkTpId", teLinkTpId); - } - - @Override - public String toString() { - return toTeLinkTpKeyStringHelper().toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpKey.java deleted file mode 100644 index 2f88572095..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeLinkTpKey.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of the TE link TP (i.e., TE termination point) Key in - * the scope of a TE node. - */ -public final class TeLinkTpKey { - private final long teNodeId; - private final long teLinkTpId; - - /** - * Creates a TE link TP key. - * - * @param teNodeId TE Node identifier - * @param teLinkTpId TE Link termination point identifier - */ - public TeLinkTpKey(long teNodeId, long teLinkTpId) { - this.teNodeId = teNodeId; - this.teLinkTpId = teLinkTpId; - } - - /** - * Returns the TE Node identifier. - * - * @return the TE node id - */ - public long teNodeId() { - return teNodeId; - } - - /** - * Returns the TE link termination point identifier. - * - * @return the TE link TP id - */ - public long teLinkTpId() { - return teLinkTpId; - } - - @Override - public int hashCode() { - return Objects.hashCode(teNodeId, teLinkTpId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TeLinkTpKey) { - TeLinkTpKey that = (TeLinkTpKey) object; - return Objects.equal(teNodeId, that.teNodeId) && - Objects.equal(teLinkTpId, that.teLinkTpId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("teNodeId", teNodeId) - .add("teLinkTpId", teLinkTpId) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TePathAttributes.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TePathAttributes.java deleted file mode 100644 index b74694a420..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TePathAttributes.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -import java.util.List; - -/** - * Represents the common attributes of a TE path or segment. - */ -public class TePathAttributes { - private final Long cost; - private final Long delay; - private final List srlgs; - - /** - * Creates an instance of TE path attributes. - * - * @param cost the path's cost - * @param delay the path's delay - * @param srlgs the path's shared risk link groups (SRLGs) - */ - public TePathAttributes(Long cost, Long delay, List srlgs) { - this.cost = cost; - this.delay = delay; - this.srlgs = srlgs != null ? Lists.newArrayList(srlgs) : null; - } - - /** - * Creates an instance of TE path attributes based on a given TE link. - * - * @param link the TE link - */ - public TePathAttributes(TeLink link) { - this.cost = link.cost(); - this.delay = link.delay(); - this.srlgs = link.srlgs() != null ? - Lists.newArrayList(link.srlgs()) : null; - } - - /** - * Returns the path cost. - * - * @return the cost - */ - public Long cost() { - return cost; - } - - /** - * Returns the path delay. - * - * @return the delay - */ - public Long delay() { - return delay; - } - - /** - * Returns the path SRLG values. - * - * @return the srlgs - */ - public List srlgs() { - if (srlgs == null) { - return null; - } - return ImmutableList.copyOf(srlgs); - } - - @Override - public int hashCode() { - return Objects.hashCode(cost, delay, srlgs); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TePathAttributes) { - TePathAttributes that = (TePathAttributes) object; - return Objects.equal(cost, that.cost) && - Objects.equal(delay, that.delay) && - Objects.equal(srlgs, that.srlgs); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("cost", cost) - .add("delay", delay) - .add("srlgs", srlgs) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeTunnelId.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeTunnelId.java deleted file mode 100644 index 0744608f9c..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TeTunnelId.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of a TE tunnel identifier. - */ -public class TeTunnelId { - private final long srcTeNodeId; - private final long dstTeNodeId; - private final long tunnelId; - - /** - * Create a TE tunnel identifier. - * - * @param srcTeNodeId source TE node id - * @param dstTeNodeId destination TE node id - * @param tunnelId tunnel id - */ - public TeTunnelId(long srcTeNodeId, long dstTeNodeId, long tunnelId) { - this.srcTeNodeId = srcTeNodeId; - this.dstTeNodeId = dstTeNodeId; - this.tunnelId = tunnelId; - } - - /** - * Returns the source TE node identifier of the tunnel. - * - * @return the source TE node id - */ - public long sourceTeNodeId() { - return srcTeNodeId; - } - - /** - * Returns the destination TE node identifier of the tunnel. - * - * @return the destination TE node id - */ - public long destinationTeNodeId() { - return dstTeNodeId; - } - - /** - * Returns the tunnel identifier. - * - * @return the tunnel id - */ - public long tunnelId() { - return tunnelId; - } - - @Override - public int hashCode() { - return Objects.hashCode(srcTeNodeId, dstTeNodeId, tunnelId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TeTunnelId) { - TeTunnelId that = (TeTunnelId) object; - return (srcTeNodeId == that.srcTeNodeId) && - (dstTeNodeId == that.dstTeNodeId) && - (tunnelId == that.tunnelId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("srcTeNodeId", srcTeNodeId) - .add("dstTeNodeId", dstTeNodeId) - .add("tunnelId", tunnelId) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TunnelProtectionType.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TunnelProtectionType.java deleted file mode 100644 index 34174a0718..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/TunnelProtectionType.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetopology.management.api.link; - -/** - * Represents the tunnel protection type. - */ -public enum TunnelProtectionType { - - /** - * Represents unprotected. - */ - UNPROTECTED(0), - - /** - * Represents extra traffic. - */ - EXTRA_TRAFFIC(1), - - /** - * Represents shared. - */ - SHARED(2), - - /** - * Represents one-for-one. - */ - ONE_FOR_ONE(3), - - /** - * Represents one-plus-one. - */ - ONE_PLUS_ONE(4), - - /** - * Represents enhanced. - */ - ENHANCED(5); - - private int value; - - TunnelProtectionType(int value) { - this.value = value; - } - - /** - * Returns the value of the tunnel protection type. - * - * @return value of tunnel protection type - */ - public int value() { - return value; - } - - /** - * Returns the tunnel protection type constant corresponding to the given - * string. Returns null when string conversion fails or converted integer - * value is not recognized. - * - * @param s input string - * @return corresponding protection type constant - */ - public static TunnelProtectionType of(String s) { - try { - int tmpVal = Integer.parseInt(s); - return of(tmpVal); - } catch (NumberFormatException ignored) { - } - return null; - } - - /** - * Returns the tunnel protection type constant corresponding to the - * given integer. Returns null when the integer value is not recognized. - * - * @param value integer value - * @return corresponding protection type constant - */ - public static TunnelProtectionType of(int value) { - switch (value) { - case 0: - return UNPROTECTED; - case 1: - return EXTRA_TRAFFIC; - case 2: - return SHARED; - case 3: - return ONE_FOR_ONE; - case 4: - return ONE_PLUS_ONE; - case 5: - return ENHANCED; - default: - return null; - } - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayAbstractPath.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayAbstractPath.java deleted file mode 100644 index 43bfd7572b..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayAbstractPath.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import java.util.Collections; -import java.util.List; -import java.util.Objects; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.Lists; - -/** - * Represents the common definition of an underlay path that supports a TE link. - */ -public class UnderlayAbstractPath { - private final List pathElements; - private final Boolean loose; - - /** - * Creates a underlay abstract path. - * - * @param pathElements the list of elements along the path - * @param loose loose if true, or otherwise strict - */ - public UnderlayAbstractPath(List pathElements, Boolean loose) { - this.pathElements = Lists.newArrayList(pathElements); - this.loose = loose; - } - - /** - * Returns the loose flag, indicating whether the path is loose or strict. - * - * @return true if the path is loose, false if it is strict. - */ - public Boolean loose() { - return loose; - } - - /** - * Returns the list of path elements. - * - * @return list of path elements - */ - public List pathElements() { - return Collections.unmodifiableList(pathElements); - } - - @Override - public int hashCode() { - return Objects.hash(pathElements, loose); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof UnderlayAbstractPath) { - UnderlayAbstractPath other = (UnderlayAbstractPath) obj; - return Objects.equals(pathElements, other.pathElements) && - Objects.equals(loose, other.loose); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("pathElements", pathElements) - .add("loose", loose) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayBackupPath.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayBackupPath.java deleted file mode 100644 index 5b1a33f16e..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayBackupPath.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import java.util.List; -import java.util.Objects; - -import com.google.common.base.MoreObjects; - -/** - * Represents a list of backup service paths on the underlay topology that - * protect the underlay primary path. - */ -public class UnderlayBackupPath extends UnderlayAbstractPath { - private final long index; - - /** - * Creates a underlay backup path. - * - * @param index the path index - * @param pathElements list of backup service paths - * @param loose loose if true; restrict otherwise - */ - public UnderlayBackupPath(long index, List pathElements, - Boolean loose) { - super(pathElements, loose); - this.index = index; - } - - /** - * Returns the path index. - * - * @return path index - */ - public long index() { - return index; - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), index); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof UnderlayBackupPath) { - if (!super.equals(obj)) { - return false; - } - UnderlayBackupPath that = (UnderlayBackupPath) obj; - return this.index == that.index; - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("index", index) - .add("pathElements", pathElements()) - .add("loose", loose()) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPath.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPath.java deleted file mode 100644 index e244abb9df..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPath.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -import java.util.List; - -/** - * Represents the TE link underlay path and tunnel data. - */ -public class UnderlayPath { - private final UnderlayPrimaryPath primaryPath; - private final List backupPaths; - private final TunnelProtectionType tunnelProtectionType; - private final long srcTtpId; - private final long dstTtpId; - private final TeTunnelId teTunnelId; - - /** - * Creates a underlay path. - * - * @param primaryPath the underlay primary path - * @param backupPaths the underlay backup paths - * @param tunnelProtectionType the supporting tunnel protection type to set - * @param srcTtpId the source tunnel termination point id - * @param dstTtpId the destination tunnel termination point id - * @param teTunnelId the supporting TE tunnel id - */ - public UnderlayPath(UnderlayPrimaryPath primaryPath, - List backupPaths, - TunnelProtectionType tunnelProtectionType, - long srcTtpId, - long dstTtpId, - TeTunnelId teTunnelId) { - this.primaryPath = primaryPath; - this.backupPaths = backupPaths != null ? - Lists.newArrayList(backupPaths) : null; - this.tunnelProtectionType = tunnelProtectionType; - this.srcTtpId = srcTtpId; - this.dstTtpId = dstTtpId; - this.teTunnelId = teTunnelId; - } - - /** - * Creates a underlay path based on a TE link. - * - * @param link the TE link - */ - public UnderlayPath(TeLink link) { - this.primaryPath = link.primaryPath(); - this.backupPaths = link.backupPaths() != null ? - Lists.newArrayList(link.backupPaths()) : null; - this.tunnelProtectionType = link.tunnelProtectionType(); - this.srcTtpId = link.sourceTtpId(); - this.dstTtpId = link.destinationTtpId(); - this.teTunnelId = link.teTunnelId(); - } - - /** - * Returns the primary path. - * - * @return underlay primary path - */ - public UnderlayPrimaryPath primaryPath() { - return primaryPath; - } - - /** - * Returns the backup paths. - * - * @return list of underlay backup paths - */ - public List backupPaths() { - if (backupPaths == null) { - return null; - } - return ImmutableList.copyOf(backupPaths); - } - - /** - * Returns the supporting tunnel protection type. - * - * @return the supporting tunnel protection type - */ - public TunnelProtectionType tunnelProtectionType() { - return tunnelProtectionType; - } - - /** - * Returns the supporting TE tunnel's source tunnel termination point - * identifier. - * - * @return the supporting source TTP id - */ - public long srcTtpId() { - return srcTtpId; - } - - /** - * Returns the supporting TE tunnel's destination tunnel termination - * point identifier. - * - * @return the destination TTP id - */ - public long dstTtpId() { - return dstTtpId; - } - - /** - * Returns the supporting TE tunnel identifier. - * - * @return the supporting tunnel id - */ - public TeTunnelId teTunnelId() { - return teTunnelId; - } - - @Override - public int hashCode() { - return Objects.hashCode(primaryPath, backupPaths, tunnelProtectionType, - srcTtpId, dstTtpId, teTunnelId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof UnderlayPath) { - UnderlayPath that = (UnderlayPath) object; - return Objects.equal(primaryPath, that.primaryPath) && - Objects.equal(backupPaths, that.backupPaths) && - Objects.equal(tunnelProtectionType, that.tunnelProtectionType) && - Objects.equal(srcTtpId, that.srcTtpId) && - Objects.equal(dstTtpId, that.dstTtpId) && - Objects.equal(teTunnelId, that.teTunnelId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("primaryPath", primaryPath) - .add("backupPaths", backupPaths) - .add("tunnelProtectionType", tunnelProtectionType) - .add("srcTtpId", srcTtpId) - .add("dstTtpId", dstTtpId) - .add("teTunnelId", teTunnelId) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPrimaryPath.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPrimaryPath.java deleted file mode 100644 index d65dccd053..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnderlayPrimaryPath.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import java.util.List; - -/** - * Represents the underlay primary path that supports a TE link. - */ -public class UnderlayPrimaryPath extends UnderlayAbstractPath { - // Underlay primary path currently has the same data structure defined in - // the underlay abstract path. It may be extended per standard definitions. - - /** - * Creates an instance of UnderlayPrimaryPath. - * - * @param pathElements the list of elements along the path - * @param loose loose if true, or otherwise strict - */ - public UnderlayPrimaryPath(List pathElements, Boolean loose) { - super(pathElements, loose); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnnumberedLink.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnnumberedLink.java deleted file mode 100644 index d4f0638e70..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/UnnumberedLink.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.link; - -import com.google.common.base.MoreObjects; -import org.onlab.packet.IpAddress; - -import java.util.Objects; - -/** - * Implementation of unnumbered link as an element type. - */ -public class UnnumberedLink implements ElementType { - private final IpAddress routerId; - private final long interfaceId; - - /** - * Creates a unnumbered link. - * - * @param routerId the router id to set - * @param interfaceId the interface id to set - */ - public UnnumberedLink(IpAddress routerId, long interfaceId) { - this.routerId = routerId; - this.interfaceId = interfaceId; - } - - /** - * Returns the router identifier. - * - * @return router id - */ - public IpAddress routerId() { - return routerId; - } - - /** - * Returns the interface identifier. - * - * @return interface id - */ - public long interfaceId() { - return interfaceId; - } - - @Override - public int hashCode() { - return Objects.hash(routerId, interfaceId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof UnnumberedLink) { - UnnumberedLink other = (UnnumberedLink) obj; - return - Objects.equals(routerId, other.routerId) && - Objects.equals(interfaceId, other.interfaceId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("routerId", routerId) - .add("interfaceId", interfaceId) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/package-info.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/package-info.java deleted file mode 100644 index f12499d68c..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/link/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * TE link API. - */ -package org.onosproject.tetopology.management.api.link; \ No newline at end of file diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/AbstractConnectivity.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/AbstractConnectivity.java deleted file mode 100644 index 712c7bd63d..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/AbstractConnectivity.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import java.util.BitSet; -import java.util.Collections; -import java.util.List; - -import com.google.common.collect.Lists; -import org.onosproject.tetopology.management.api.link.ElementType; -import org.onosproject.tetopology.management.api.link.TePathAttributes; -import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * The abstraction of a TE node internal connectivity to link - * termination points. - */ -public class AbstractConnectivity { - // list of elements that can be constrained/connected to - private final List constrainingElements; - private final BitSet flags; - private final TePathAttributes teAttributes; - private final UnderlayAbstractPath underlayPath; - - /** - * Creates an abstract connectivity instance. - * - * @param constrainingElements list of elements that can be constrained - * or connected to - * @param flags indicate whether this connectivity is usable - * @param teAttributes the connectivity path TE attributes - * @param underlayPath the underlay path - */ - public AbstractConnectivity(List constrainingElements, - BitSet flags, - TePathAttributes teAttributes, - UnderlayAbstractPath underlayPath) { - this.constrainingElements = Lists.newArrayList(constrainingElements); - this.flags = flags; - this.teAttributes = teAttributes; - this.underlayPath = underlayPath; - } - - /** - * Returns the "constraining elements" that can be constrained - * or connected to "from" element. - * - * @return the "constraining elements" of the connectivity - */ - public List constrainingElements() { - return Collections.unmodifiableList(constrainingElements); - } - - /** - * Returns the flags indicating if the connectivity is usable. - * - * @return flags of the connectivity - */ - public BitSet flags() { - return flags; - } - - /** - * Returns the TE attributes of the connectivity. - * - * @return the TE attributes - */ - public TePathAttributes teAttributes() { - return teAttributes; - } - - /** - * Returns the underlay path. - * - * @return the underlay path - */ - public UnderlayAbstractPath underlayPath() { - return underlayPath; - } - - @Override - public int hashCode() { - return Objects.hashCode(constrainingElements, flags, - teAttributes, underlayPath); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof AbstractConnectivity) { - AbstractConnectivity that = (AbstractConnectivity) object; - return Objects.equal(constrainingElements, that.constrainingElements) && - Objects.equal(flags, that.flags) && - Objects.equal(teAttributes, that.teAttributes) && - Objects.equal(underlayPath, that.underlayPath); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("constrainingElements", constrainingElements) - .add("flags", flags) - .add("teAttributes", teAttributes) - .add("underlayPath", underlayPath) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/CommonNodeData.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/CommonNodeData.java deleted file mode 100644 index 35daf8b6cc..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/CommonNodeData.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import java.util.BitSet; - -import org.onosproject.tetopology.management.api.TeStatus; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of common node attributes. - */ -public class CommonNodeData { - private final String name; - private final TeStatus adminStatus; - private final TeStatus opStatus; - private final BitSet flags; - - /** - * Creates a common node data instance. - * - * @param name the TE node name - * @param adminStatus the admin status - * @param opStatus the operational status - * @param flags the node flags - */ - public CommonNodeData(String name, TeStatus adminStatus, - TeStatus opStatus, BitSet flags) { - this.name = name; - this.adminStatus = adminStatus; - this.opStatus = opStatus; - this.flags = flags; - } - - /** - * Creates a common node data instance based on a given TE node. - * - * @param node the given TE node - */ - public CommonNodeData(TeNode node) { - this.name = node.name(); - this.adminStatus = node.adminStatus(); - this.opStatus = node.opStatus(); - this.flags = node.flags(); - } - - /** - * Returns the TE node name. - * - * @return the name - */ - public String name() { - return name; - } - - /** - * Returns the administrative status. - * - * @return the admin status - */ - public TeStatus adminStatus() { - return adminStatus; - } - - /** - * Returns the operational status. - * - * @return the operational status - */ - public TeStatus opStatus() { - return opStatus; - } - - /** - * Returns the flags in the common node data. - * - * @return the flags - */ - public BitSet flags() { - return flags; - } - - @Override - public int hashCode() { - return Objects.hashCode(name, adminStatus, opStatus, flags); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof CommonNodeData) { - CommonNodeData that = (CommonNodeData) object; - return Objects.equal(name, that.name) && - Objects.equal(adminStatus, that.adminStatus) && - Objects.equal(opStatus, that.opStatus) && - Objects.equal(flags, that.flags); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("name", name) - .add("adminStatus", adminStatus) - .add("opStatus", opStatus) - .add("flags", flags) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrix.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrix.java deleted file mode 100644 index b30d110923..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrix.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.onosproject.tetopology.management.api.link.ElementType; -import org.onosproject.tetopology.management.api.link.TePathAttributes; -import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath; - -import java.util.BitSet; -import java.util.List; - -/** - * Represents node's switching limitations. - */ -public class ConnectivityMatrix extends AbstractConnectivity { - /** - * Indicates that switching is disallowed. - */ - public static final short BIT_DISALLOWED = 0; - - /** - * Indicates that an alternative switching connection path - * is available. - */ - public static final short BIT_ALTERNATIVE_PATH_AVAILABLE = 1; - - /** - * Indicates that switching in this node is disabled. - */ - public static final short BIT_DISABLED = 2; - - private final long key; - private final ElementType from; - // list of elements that can be merged with the "from" element - private final List mergingList; - - /** - * Creates a connectivity matrix instance. - * - * @param key the connectivity matrix key - * @param from the "from" element (e.g. TE link id or - * label) in the matrix - * @param mergingList the list of elements that can be merged - * with the "from" element - * @param constrainingElements the list of elements that can be constrained - * or connected to the "from" element - * @param flags the indicator whether this connectivity - * matrix is usable - * @param teAttributes the connectivity TE attributes of this matrix - * @param underlayPath the underlay path of the matrix - */ - public ConnectivityMatrix(long key, - ElementType from, - List mergingList, - List constrainingElements, - BitSet flags, - TePathAttributes teAttributes, - UnderlayAbstractPath underlayPath) { - super(constrainingElements, flags, teAttributes, underlayPath); - this.key = key; - this.from = from; - this.mergingList = mergingList != null ? - Lists.newArrayList(mergingList) : null; - } - - /** - * Returns the key. - * - * @return connectivity matrix key - */ - public long key() { - return key; - } - - /** - * Returns the "from" element of a connectivity matrix. - * - * @return the "from" of the connectivity matrix - */ - public ElementType from() { - return from; - } - - /** - * Returns the "merging list" can be merged with the "from" element. - * - * @return the "merging list" of the connectivity matrix - */ - public List mergingList() { - if (mergingList == null) { - return null; - } - return ImmutableList.copyOf(mergingList); - } - - @Override - public int hashCode() { - return Objects.hashCode(key, from, mergingList, super.hashCode()); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof ConnectivityMatrix) { - if (!super.equals(object)) { - return false; - } - ConnectivityMatrix that = (ConnectivityMatrix) object; - return Objects.equal(this.key, that.key) && - Objects.equal(this.from, that.from) && - Objects.equal(this.mergingList, that.mergingList); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("key", key) - .add("from", from) - .add("mergingList", mergingList) - .add("constrainingElements", constrainingElements()) - .add("flags", flags()) - .add("teAttributes", teAttributes()) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrixKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrixKey.java deleted file mode 100644 index 598954e3e4..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/ConnectivityMatrixKey.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.base.Objects; - -/** - * Representation of a TE connectivity matrix entry key. - */ -public class ConnectivityMatrixKey extends TeNodeKey { - private final long entryId; - - /** - * Creates a connectivity matrix key. - * - * @param providerId provider identifier - * @param clientId client identifier - * @param topologyId topology identifier - * @param teNodeId TE node identifier - * @param entryId connectivity matrix entry id - */ - public ConnectivityMatrixKey(long providerId, long clientId, - long topologyId, long teNodeId, - long entryId) { - super(providerId, clientId, topologyId, teNodeId); - this.entryId = entryId; - } - - /** - * Creates a connectivity matrix key base on a given TE node key. - * - * @param teNodeKey TE node key - * @param entryId connectivity matrix entry id - */ - public ConnectivityMatrixKey(TeNodeKey teNodeKey, long entryId) { - super(teNodeKey.providerId(), teNodeKey.clientId(), - teNodeKey.topologyId(), teNodeKey.teNodeId()); - this.entryId = entryId; - } - - /** - * Returns the TE node key. - * - * @return the TE node key - */ - public TeNodeKey teNodekey() { - return new TeNodeKey(providerId(), clientId(), topologyId(), teNodeId()); - } - - /** - * Returns the connectivity matrix entry identifier. - * - * @return the connectivity matrix entry id - */ - public long entryId() { - return entryId; - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), entryId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof ConnectivityMatrixKey) { - if (!super.equals(object)) { - return false; - } - ConnectivityMatrixKey that = (ConnectivityMatrixKey) object; - return Objects.equal(this.entryId, that.entryId); - } - return false; - } - - /** - * Returns ToStringHelper with additional entry identifier. - * - * @return toStringHelper - */ - protected ToStringHelper toConnMatrixKeyStringHelper() { - return toTeNodeKeyStringHelper().add("entryId", entryId); - } - - @Override - public String toString() { - return toConnMatrixKeyStringHelper().toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultNetworkNode.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultNetworkNode.java deleted file mode 100644 index 6062617fbe..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultNetworkNode.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import org.onosproject.tetopology.management.api.KeyId; - -import java.util.List; -import java.util.Map; - -/** - * Default network node implementation. - */ -public class DefaultNetworkNode implements NetworkNode { - private final KeyId id; - private final List supportingNodeIds; - private final TeNode teNode; - private final Map tps; - - - /** - * Creates a network node instance. - * - * @param id network node identifier - * @param nodeIds support node identifiers - * @param teNode te parameter of the node - * @param tps the tps to set - */ - public DefaultNetworkNode(KeyId id, - List nodeIds, - TeNode teNode, - Map tps) { - this.id = id; - this.supportingNodeIds = nodeIds != null ? - Lists.newArrayList(nodeIds) : null; - this.teNode = teNode; - this.tps = tps != null ? Maps.newHashMap(tps) : null; - } - - /** - * Returns the node identifier. - * - * @return node identifier - */ - @Override - public KeyId nodeId() { - return id; - } - - /** - * Returns the list of supporting node identifiers for this node. - * - * @return list of supporting node identifiers - */ - @Override - public List supportingNodeIds() { - if (supportingNodeIds == null) { - return null; - } - return ImmutableList.copyOf(supportingNodeIds); - } - - /** - * Returns the node TE attributes. - * - * @return TE attributes of this node - */ - @Override - public TeNode teNode() { - return teNode; - } - - /** - * Returns the list of termination points associated with this node. - * - * @return a list of termination points - */ - @Override - public Map terminationPoints() { - if (tps == null) { - return null; - } - return ImmutableMap.copyOf(tps); - } - - /** - * Returns the termination point. - * - * @return the termination point - */ - @Override - public TerminationPoint terminationPoint(KeyId tpId) { - return tps.get(tpId); - } - - @Override - public int hashCode() { - return Objects.hashCode(id, supportingNodeIds, teNode, tps); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof DefaultNetworkNode) { - DefaultNetworkNode that = (DefaultNetworkNode) object; - return Objects.equal(id, that.id) && - Objects.equal(supportingNodeIds, that.supportingNodeIds) && - Objects.equal(teNode, that.teNode) && - Objects.equal(tps, that.tps); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("id", id) - .add("supportingNodeIds", supportingNodeIds) - .add("teNode", teNode) - .add("tps", tps) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTeNode.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTeNode.java deleted file mode 100644 index 71cd9c9bb5..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTeNode.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import org.onosproject.tetopology.management.api.TeStatus; -import org.onosproject.tetopology.management.api.TeTopologyKey; - -import java.util.BitSet; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * The default implementation of TE Node. - */ -public class DefaultTeNode implements TeNode { - private final long teNodeId; - private final TeTopologyKey underlayTopologyId; - private final TeNodeKey supportTeNodeId; - private final TeNodeKey sourceTeNodeId; - private final CommonNodeData teData; - private final Map connMatrices; - private final List teLinkIds; - private final Map ttps; - private final List teTpIds; - - /** - * Creates a TE node instance. - * - * @param teNodeId TE node identifier - * @param underlayTopologyIdId the node underlay TE topology id - * @param supportTeNodeId the supporting TE node id - * @param sourceTeNodeId the source TE node id - * @param teData the node common te data - * @param connMatrices the connectivity matrix table - * @param teLinkIds the list of TE link ids originating from the node - * @param ttps the list of tunnel termination points - * @param teTpIds the currently known termination point ids - */ - public DefaultTeNode(long teNodeId, - TeTopologyKey underlayTopologyIdId, - TeNodeKey supportTeNodeId, - TeNodeKey sourceTeNodeId, - CommonNodeData teData, - Map connMatrices, - List teLinkIds, - Map ttps, - List teTpIds) { - this.teNodeId = teNodeId; - this.underlayTopologyId = underlayTopologyIdId; - this.supportTeNodeId = supportTeNodeId; - this.sourceTeNodeId = sourceTeNodeId; - this.teData = teData; - this.connMatrices = connMatrices != null ? - Maps.newHashMap(connMatrices) : null; - this.teLinkIds = teLinkIds != null ? - Lists.newArrayList(teLinkIds) : null; - this.ttps = ttps != null ? Maps.newHashMap(ttps) : null; - this.teTpIds = teTpIds != null ? - Lists.newArrayList(teTpIds) : null; - } - - @Override - public long teNodeId() { - return teNodeId; - } - - @Override - public String name() { - if (teData == null) { - return null; - } - return teData.name(); - } - - @Override - public BitSet flags() { - if (teData == null) { - return null; - } - return teData.flags(); - } - - @Override - public TeTopologyKey underlayTeTopologyId() { - return underlayTopologyId; - } - - @Override - public TeNodeKey supportingTeNodeId() { - return supportTeNodeId; - } - - @Override - public TeNodeKey sourceTeNodeId() { - return sourceTeNodeId; - } - - @Override - public Map connectivityMatrices() { - if (connMatrices == null) { - return null; - } - return ImmutableMap.copyOf(connMatrices); - } - - @Override - public ConnectivityMatrix connectivityMatrix(long entryId) { - return connMatrices.get(entryId); - } - - @Override - public List teLinkIds() { - if (teLinkIds == null) { - return null; - } - return ImmutableList.copyOf(teLinkIds); - } - - @Override - public Map tunnelTerminationPoints() { - if (ttps == null) { - return null; - } - return ImmutableMap.copyOf(ttps); - } - - @Override - public TunnelTerminationPoint tunnelTerminationPoint(long ttpId) { - return ttps.get(ttpId); - } - - @Override - public TeStatus adminStatus() { - if (teData == null) { - return null; - } - return teData.adminStatus(); - } - - @Override - public TeStatus opStatus() { - if (teData == null) { - return null; - } - return teData.opStatus(); - } - - @Override - public List teTerminationPointIds() { - return Collections.unmodifiableList(teTpIds); - } - - @Override - public int hashCode() { - return Objects.hashCode(teNodeId, underlayTopologyId, - supportTeNodeId, sourceTeNodeId, teData, - connMatrices, teLinkIds, ttps, teTpIds); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof DefaultTeNode) { - DefaultTeNode that = (DefaultTeNode) object; - return Objects.equal(teNodeId, that.teNodeId) && - Objects.equal(underlayTopologyId, that.underlayTopologyId) && - Objects.equal(supportTeNodeId, that.supportTeNodeId) && - Objects.equal(sourceTeNodeId, that.sourceTeNodeId) && - Objects.equal(teData, that.teData) && - Objects.equal(connMatrices, that.connMatrices) && - Objects.equal(teLinkIds, that.teLinkIds) && - Objects.equal(ttps, that.ttps) && - Objects.equal(teTpIds, that.teTpIds); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("teNodeId", teNodeId) - .add("underlayTopologyId", underlayTopologyId) - .add("supportTeNodeId", supportTeNodeId) - .add("sourceTeNodeId", sourceTeNodeId) - .add("teData", teData) - .add("connMatrices", connMatrices) - .add("teLinkIds", teLinkIds) - .add("ttps", ttps) - .add("teTpIds", teTpIds) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTerminationPoint.java deleted file mode 100644 index b3afd85fe3..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTerminationPoint.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.onosproject.tetopology.management.api.KeyId; - -import java.util.List; - -/** - * The default implementation of TE termination point. - */ -public class DefaultTerminationPoint implements TerminationPoint { - private final KeyId tpId; - private final List supportingTpIds; - private final Long teTpId; - - /** - * Creates a termination point. - * - * @param tpId termination point identifier - * @param tps support termination point identifier - * @param teTpId TE termination point identifier - */ - public DefaultTerminationPoint(KeyId tpId, - List tps, - Long teTpId) { - this.tpId = tpId; - this.supportingTpIds = tps != null ? Lists.newArrayList(tps) : null; - this.teTpId = teTpId; - } - - @Override - public KeyId tpId() { - return tpId; - } - - @Override - public Long teTpId() { - return teTpId; - } - - @Override - public List supportingTpIds() { - if (supportingTpIds == null) { - return null; - } - return ImmutableList.copyOf(supportingTpIds); - } - - @Override - public int hashCode() { - return Objects.hashCode(tpId, supportingTpIds, teTpId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof DefaultTerminationPoint) { - DefaultTerminationPoint that = (DefaultTerminationPoint) object; - return Objects.equal(tpId, that.tpId) && - Objects.equal(supportingTpIds, that.supportingTpIds) && - Objects.equal(teTpId, that.teTpId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("tpId", tpId) - .add("supportingTpIds", supportingTpIds) - .add("teTpId", teTpId) - .toString(); - } - - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java deleted file mode 100644 index efe82f1b7b..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import java.util.Arrays; -import java.util.BitSet; -import java.util.List; - -import org.onosproject.tetopology.management.api.EncodingType; -import org.onosproject.tetopology.management.api.SwitchingType; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -/** - * Default implementation of a tunnel termination point. - */ -public class DefaultTunnelTerminationPoint implements TunnelTerminationPoint { - private final long ttpId; - private final SwitchingType switchingLayer; - private final EncodingType encodingLayer; - private final BitSet flags; - private final List interLayerLockList; - private final List localLinkConnectivityList; - private final float[] availAdaptBandwidth; - private final TtpKey supportTtpKey; - - /** - * Create a tunnel termination point. - * - * @param ttpId tunnel termination point id - * @param switchingLayer switching network layer to which this - * TTP belongs - * @param encodingLayer encoding layer to which this TTP belongs - * @param flags the TTP flags - * @param interLayerLockList the supported inter-layer locks - * @param localLinkConnectivityList the local link connectivity list - * @param availAdaptBandwidth the remaining adaptation bandwidth - * at each priority level - * @param supportTtpKey supporting TTP key from underlay topology - */ - public DefaultTunnelTerminationPoint(long ttpId, - SwitchingType switchingLayer, - EncodingType encodingLayer, - BitSet flags, - List interLayerLockList, - List localLinkConnectivityList, - float[] availAdaptBandwidth, - TtpKey supportTtpKey) { - this.ttpId = ttpId; - this.switchingLayer = switchingLayer; - this.encodingLayer = encodingLayer; - this.flags = flags; - this.interLayerLockList = interLayerLockList != null ? - Lists.newArrayList(interLayerLockList) : null; - this.localLinkConnectivityList = localLinkConnectivityList != null ? - Lists.newArrayList(localLinkConnectivityList) : null; - this.availAdaptBandwidth = availAdaptBandwidth != null ? - Arrays.copyOf(availAdaptBandwidth, - availAdaptBandwidth.length) : null; - this.supportTtpKey = supportTtpKey; - } - - @Override - public long ttpId() { - return ttpId; - } - - @Override - public SwitchingType switchingLayer() { - return switchingLayer; - } - - @Override - public EncodingType encodingLayer() { - return encodingLayer; - } - - @Override - public BitSet flags() { - return flags; - } - - @Override - public List interLayerLockList() { - if (interLayerLockList == null) { - return null; - } - return ImmutableList.copyOf(interLayerLockList); - } - - @Override - public List localLinkConnectivityList() { - if (localLinkConnectivityList == null) { - return null; - } - return ImmutableList.copyOf(localLinkConnectivityList); - } - - @Override - public float[] availAdaptBandwidth() { - if (availAdaptBandwidth == null) { - return null; - } - return Arrays.copyOf(availAdaptBandwidth, availAdaptBandwidth.length); - } - - @Override - public TtpKey supportingTtpId() { - return supportTtpKey; - } - - @Override - public int hashCode() { - return Objects.hashCode(ttpId, switchingLayer, encodingLayer, flags, - interLayerLockList, localLinkConnectivityList, - Arrays.hashCode(availAdaptBandwidth), supportTtpKey); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof DefaultTunnelTerminationPoint) { - DefaultTunnelTerminationPoint that = (DefaultTunnelTerminationPoint) object; - return Objects.equal(ttpId, that.ttpId) && - Objects.equal(switchingLayer, that.switchingLayer) && - Objects.equal(encodingLayer, that.encodingLayer) && - Objects.equal(flags, that.flags) && - Objects.equal(interLayerLockList, that.interLayerLockList) && - Objects.equal(localLinkConnectivityList, that.localLinkConnectivityList) && - Arrays.equals(availAdaptBandwidth, that.availAdaptBandwidth) && - Objects.equal(supportTtpKey, that.supportTtpKey); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("ttpId", ttpId) - .add("switchingLayer", switchingLayer) - .add("encodingLayer", encodingLayer) - .add("flags", flags) - .add("interLayerLockList", interLayerLockList) - .add("localLinkConnectivityList", localLinkConnectivityList) - .add("availAdaptBandwidth", availAdaptBandwidth) - .add("supportTtpKey", supportTtpKey) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/LocalLinkConnectivity.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/LocalLinkConnectivity.java deleted file mode 100644 index ae8f3142c3..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/LocalLinkConnectivity.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import org.onosproject.tetopology.management.api.link.ElementType; -import org.onosproject.tetopology.management.api.link.TePathAttributes; -import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath; - -import java.util.BitSet; -import java.util.List; - -/** - * The connectivity between tunnel termination point and link termination - * points. - */ -public class LocalLinkConnectivity extends AbstractConnectivity { - /** - * Indicates that the link connectivity is disabled. - */ - public static final short BIT_DISABLED = 0; - - /** - * Indicates that an alternative path of the link connection is - * available. - */ - public static final short BIT_ALTERNATIVE_PATH_AVAILABLE = 1; - - /** - * Creates a local link connectivity instance. - * - * @param constrainingElements list of elements that can be constrained - * or connected to - * @param flags indicate whether this connectivity is usable - * @param teAttributes the connectivity path TE attributes - * @param underlayPath the underlay path - */ - public LocalLinkConnectivity(List constrainingElements, BitSet flags, - TePathAttributes teAttributes, - UnderlayAbstractPath underlayPath) { - super(constrainingElements, flags, teAttributes, underlayPath); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNode.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNode.java deleted file mode 100644 index 3d45806dff..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNode.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import java.util.List; -import java.util.Map; - -import org.onosproject.tetopology.management.api.KeyId; - -/** - * Abstraction of a network node. - */ -public interface NetworkNode { - - /** - * Returns the node identifier. - * - * @return node identifier - */ - KeyId nodeId(); - - /** - * Returns the supporting node identifiers. - * - * @return list of the ids of the supporting nodes - */ - List supportingNodeIds(); - - /** - * Returns the node TE extension attributes. - * - * @return node TE extension attributes - */ - TeNode teNode(); - - /** - * Returns a collection of currently known termination points. - * - * @return a collection of termination points associated with this node - */ - Map terminationPoints(); - - /** - * Returns the termination point. - * - * @param tpId termination point id - * @return value of termination point - */ - TerminationPoint terminationPoint(KeyId tpId); - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeEventSubject.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeEventSubject.java deleted file mode 100644 index 12fa5a0935..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeEventSubject.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onosproject.tetopology.management.api.TeTopologyEventSubject; - -/** - * Representation of a network node event. - */ -public class NetworkNodeEventSubject implements TeTopologyEventSubject { - private final NetworkNodeKey key; - private final NetworkNode node; - - /** - * Creates a network node event. - * - * @param key the network node global key - * @param node the network node - */ - public NetworkNodeEventSubject(NetworkNodeKey key, NetworkNode node) { - this.key = key; - this.node = node; - } - - /** - * Returns the network node global key. - * - * @return the key - */ - public NetworkNodeKey key() { - return key; - } - - /** - * Returns the network node. - * - * @return the node - */ - public NetworkNode neworkNode() { - return node; - } - - @Override - public int hashCode() { - return Objects.hashCode(key, node); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof NetworkNodeEventSubject) { - NetworkNodeEventSubject that = (NetworkNodeEventSubject) object; - return Objects.equal(key, that.key) && - Objects.equal(node, that.node); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("key", key) - .add("node", node) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeKey.java deleted file mode 100644 index 22b806ace6..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NetworkNodeKey.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import org.onosproject.tetopology.management.api.KeyId; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of a node key or node reference. - */ -public class NetworkNodeKey { - private final KeyId networkId; - private final KeyId nodeId; - - /** - * Creates an instance of NetworkNodeKey. - * - * @param networkId network identifier - * @param nodeId node identifier - */ - public NetworkNodeKey(KeyId networkId, KeyId nodeId) { - this.networkId = networkId; - this.nodeId = nodeId; - } - - /** - * Returns the network identifier. - * - * @return network identifier - */ - public KeyId networkId() { - return networkId; - } - - /** - * Returns the node identifier. - * - * @return node identifier - */ - public KeyId nodeId() { - return nodeId; - } - - @Override - public int hashCode() { - return Objects.hashCode(networkId, nodeId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof NetworkNodeKey) { - NetworkNodeKey that = (NetworkNodeKey) object; - return Objects.equal(this.networkId, that.networkId) && - Objects.equal(this.nodeId, that.nodeId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("networkId", networkId) - .add("nodeId", nodeId) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NodeTpKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NodeTpKey.java deleted file mode 100644 index 4ad3b290d9..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/NodeTpKey.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import org.onosproject.tetopology.management.api.KeyId; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of a node's termination point key under a known network. - */ -public class NodeTpKey { - private final KeyId nodeId; - private final KeyId tpId; - - /** - * Creates a node's termination point key. - * - * @param nodeId node identifier - * @param tpId termination point identifier - */ - public NodeTpKey(KeyId nodeId, KeyId tpId) { - this.nodeId = nodeId; - this.tpId = tpId; - } - - /** - * Returns the node identifier. - * - * @return node id - */ - public KeyId nodeId() { - return nodeId; - } - - /** - * Returns the termination point identifier. - * - * @return termination point identifier - */ - public KeyId tpId() { - return tpId; - } - - @Override - public int hashCode() { - return Objects.hashCode(nodeId, tpId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof NodeTpKey) { - NodeTpKey that = (NodeTpKey) object; - return Objects.equal(nodeId, that.nodeId) && - Objects.equal(tpId, that.tpId); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("nodeId", nodeId) - .add("tpId", tpId) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNode.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNode.java deleted file mode 100644 index 2387576ca5..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNode.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import java.util.BitSet; -import java.util.List; -import java.util.Map; - -import org.onosproject.tetopology.management.api.TeStatus; -import org.onosproject.tetopology.management.api.TeTopologyKey; - -/** - * Abstraction of a TE node. - */ -public interface TeNode { - /** - * Indicates that the TE node belongs to an abstract topology. - */ - public static final short BIT_ABSTRACT = 0; - - /** - * Indicates that the TE node is disabled. - */ - public static final short BIT_DISABLED = 1; - - /** - * Returns the TE node identifier. - * - * @return TE node identifier - */ - long teNodeId(); - - /** - * Returns the TE node name. - * - * @return the te node name - */ - String name(); - - /** - * Returns the flags. - * - * @return the flags - */ - BitSet flags(); - - /** - * Returns the underlay TE topology identifier for the node. - * - * @return the underlay TE topology id - */ - TeTopologyKey underlayTeTopologyId(); - - /** - * Returns the supporting TE node identifier. - * - * @return the id of the supporting node - */ - TeNodeKey supportingTeNodeId(); - - /** - * Returns the source TE node identifier. - * - * @return the id of the source node - */ - TeNodeKey sourceTeNodeId(); - - /** - * Returns the connectivity matrix table of the node. - * - * @return the connectivity matrix table - */ - Map connectivityMatrices(); - - /** - * Returns the connectivity matrix identified by its entry identifier. - * - * @param entryId connection matrix id - * @return the connectivity matrix - */ - ConnectivityMatrix connectivityMatrix(long entryId); - - /** - * Returns a list of TE link identifiers originating from the node. - * - * @return a list of TE link ids - */ - List teLinkIds(); - - /** - * Returns a collection of currently known tunnel termination points. - * - * @return a collection of tunnel termination points associated with this node - */ - Map tunnelTerminationPoints(); - - /** - * Returns a tunnel termination point identified by its identifier. - * - * @param ttpId tunnel termination point identifier - * @return the tunnel termination point - */ - TunnelTerminationPoint tunnelTerminationPoint(long ttpId); - - /** - * Returns the admin status. - * - * @return the adminStatus - */ - TeStatus adminStatus(); - - /** - * Returns the operational status. - * - * @return the opStatus - */ - TeStatus opStatus(); - - /** - * Returns a collection of currently known TE termination point identifiers. - * - * @return a collection of termination point ids associated with this node - */ - List teTerminationPointIds(); -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeEventSubject.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeEventSubject.java deleted file mode 100644 index 6faa846acc..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeEventSubject.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import org.onosproject.tetopology.management.api.TeTopologyEventSubject; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * Representation of TE node event. - */ -public class TeNodeEventSubject implements TeTopologyEventSubject { - private final TeNodeKey key; - private final TeNode teNode; - - /** - * Creates a TE node event. - * - * @param key the TE node global key - * @param teNode the TE node - */ - public TeNodeEventSubject(TeNodeKey key, TeNode teNode) { - this.key = key; - this.teNode = teNode; - } - - /** - * Returns the TE node global key. - * - * @return the key - */ - public TeNodeKey key() { - return key; - } - - /** - * Returns the TE node. - * - * @return the TE node - */ - public TeNode teNode() { - return teNode; - } - - @Override - public int hashCode() { - return Objects.hashCode(key, teNode); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TeNodeEventSubject) { - TeNodeEventSubject that = (TeNodeEventSubject) object; - return Objects.equal(key, that.key) && - Objects.equal(teNode, that.teNode); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("key", key) - .add("teNode", teNode) - .toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeKey.java deleted file mode 100644 index f0b71495b2..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TeNodeKey.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import org.onosproject.tetopology.management.api.TeTopologyKey; - -import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.base.Objects; - -/** - * TE node Key. - */ -public class TeNodeKey extends TeTopologyKey { - private final long teNodeId; - - /** - * Creates a TE node key. - * - * @param providerId provider identifier - * @param clientId client identifier - * @param topologyId topology identifier - * @param teNodeId TE node identifier - */ - public TeNodeKey(long providerId, long clientId, - long topologyId, long teNodeId) { - super(providerId, clientId, topologyId); - this.teNodeId = teNodeId; - } - - /** - * Creates a TE node key based on a given TE topology key and a - * TE node identifier. - * - * @param teTopologyKey the key of TE Topology to which this node belongs - * @param nodeId TE node identifier - */ - public TeNodeKey(TeTopologyKey teTopologyKey, long nodeId) { - super(teTopologyKey.providerId(), teTopologyKey.clientId(), - teTopologyKey.topologyId()); - this.teNodeId = nodeId; - } - - /** - * Returns the TE Node identifier. - * - * @return the TE node id - */ - public long teNodeId() { - return teNodeId; - } - - public TeTopologyKey teTopologyKey() { - return new TeTopologyKey(providerId(), clientId(), topologyId()); - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), teNodeId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TeNodeKey) { - if (!super.equals(object)) { - return false; - } - TeNodeKey that = (TeNodeKey) object; - return Objects.equal(this.teNodeId, that.teNodeId); - } - return false; - } - - /** - * Returns ToStringHelper with an additional TE node identifier. - * - * @return toStringHelper - */ - protected ToStringHelper toTeNodeKeyStringHelper() { - return toTopologyKeyStringHelper().add("teNodeId", teNodeId); - } - - @Override - public String toString() { - return toTeNodeKeyStringHelper().toString(); - } -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPoint.java deleted file mode 100644 index 9880098f9a..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPoint.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import java.util.List; - -import org.onosproject.tetopology.management.api.KeyId; - -/** - * Abstraction of a termination point. - */ -public interface TerminationPoint { - - /** - * Returns the termination point identifier. - * - * @return termination point id - */ - KeyId tpId(); - - /** - * Returns list of supporting termination point identifiers. - * - * @return the supporting termination point ids - */ - List supportingTpIds(); - - /** - * Returns TE termination point identifier. - * - * @return the TE TP id - */ - Long teTpId(); -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPointKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPointKey.java deleted file mode 100644 index 249c88f39f..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TerminationPointKey.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import com.google.common.base.Objects; -import org.onosproject.tetopology.management.api.KeyId; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Representation of a termination point key or reference. - */ -public class TerminationPointKey extends NetworkNodeKey { - private final KeyId tpId; - - /** - * Creates a termination point key. - * - * @param networkId network identifier - * @param nodeId node identifier - * @param tpId termination point identifier - */ - public TerminationPointKey(KeyId networkId, KeyId nodeId, KeyId tpId) { - super(networkId, nodeId); - this.tpId = tpId; - } - - /** - * Creates an instance of termination point key based on a given - * network node key. - * - * @param nodeKey node key - * @param tpId termination point identifier - */ - public TerminationPointKey(NetworkNodeKey nodeKey, KeyId tpId) { - super(nodeKey.networkId(), nodeKey.nodeId()); - this.tpId = tpId; - } - - /** - * Returns the termination point identifier. - * - * @return termination point identifier - */ - public NetworkNodeKey networkNodeKey() { - return new NetworkNodeKey(networkId(), nodeId()); - } - - /** - * Returns the termination point identifier. - * - * @return termination point identifier - */ - public KeyId tpId() { - return tpId; - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), tpId); - } - - @Override - public boolean equals(Object object) { - if (object instanceof TerminationPointKey) { - if (!super.equals(object)) { - return false; - } - TerminationPointKey that = (TerminationPointKey) object; - return Objects.equal(tpId, that.tpId); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("networkId", networkId()) - .add("nodeId", nodeId()) - .add("tpId", tpId) - .toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TtpKey.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TtpKey.java deleted file mode 100644 index e43200a5f5..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TtpKey.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.base.Objects; - -/** - * Representation of a TE tunnel termination point key. - */ -public class TtpKey extends TeNodeKey { - private final long ttpId; - - /** - * Creates a TE tunnel termination point key. - * - * @param providerId provider identifier - * @param clientId client identifier - * @param topologyId topology identifier - * @param teNodeId TE node identifier - * @param ttpId tunnel termination point identifier - */ - public TtpKey(long providerId, long clientId, long topologyId, - long teNodeId, long ttpId) { - super(providerId, clientId, topologyId, teNodeId); - this.ttpId = ttpId; - } - - /** - * Creates a TE tunnel termination point key based on a given TE node - * key and a tunnel termination point identifier. - * - * @param teNodeKey TE node key - * @param ttpId tunnel termination point id - */ - public TtpKey(TeNodeKey teNodeKey, long ttpId) { - super(teNodeKey.providerId(), teNodeKey.clientId(), - teNodeKey.topologyId(), teNodeKey.teNodeId()); - this.ttpId = ttpId; - } - - /** - * Returns the TE node key. - * - * @return the TE node key - */ - public TeNodeKey teNodekey() { - return new TeNodeKey(providerId(), clientId(), topologyId(), teNodeId()); - } - - /** - * Returns the tunnel termination point identifier. - * - * @return the tunnel termination point id - */ - public long ttpId() { - return ttpId; - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), ttpId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TtpKey) { - if (!super.equals(object)) { - return false; - } - TtpKey that = (TtpKey) object; - return Objects.equal(ttpId, that.ttpId); - } - return false; - } - - /** - * Returns ToStringHelper with an additional tunnel termination point - * identifier. - * - * @return toStringHelper - */ - protected ToStringHelper toTtpKeyStringHelper() { - return toTeNodeKeyStringHelper().add("ttpId", ttpId); - } - - @Override - public String toString() { - return toTtpKeyStringHelper().toString(); - } - -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TunnelTerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TunnelTerminationPoint.java deleted file mode 100644 index 9f488f1dd2..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TunnelTerminationPoint.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.api.node; - -import java.util.BitSet; -import java.util.List; - -import org.onosproject.tetopology.management.api.EncodingType; -import org.onosproject.tetopology.management.api.SwitchingType; - -/** - * Representation of a tunnel termination point. - */ -public interface TunnelTerminationPoint { - /** - * Indicates that the TTP supports one-plus-one protection. - */ - public static final short BIT_1PLUS1_PROTECTION_CAPABLE = 0; - - /** - * Indicates that the TTP is disabled. - */ - public static final short BIT_DISABLED = 1; - - /** - * Indicates that the TTP is operationally down. - */ - public static final short BIT_STATUS_DOWN = 2; - - /** - * Returns the tunnel termination point identifier. - * - * @return tunnel termination point id - */ - long ttpId(); - - /** - * Returns the network layer switching type to which this TTP belongs. - * - * @return the switching type - */ - SwitchingType switchingLayer(); - - /** - * Returns the network layer encoding type to which this TTP belongs. - * - * @return the encoding type - */ - EncodingType encodingLayer(); - - /** - * Returns the flags of this TTP. - * - * @return the flags - */ - BitSet flags(); - - /** - * Returns the supported inter-layer locks. - * - * @return list of inter-layer locks - */ - List interLayerLockList(); - - /** - * Returns the local link connectivity list. - * - * @return the local link connectivity list - */ - List localLinkConnectivityList(); - - /** - * Returns the remaining adaptation bandwidth at each priority level. - * - * @return list of available adaptation bandwidth - */ - float[] availAdaptBandwidth(); - - /** - * Returns the supporting TTP identifier. - * - * @return the supporting TTP key - */ - TtpKey supportingTtpId(); -} diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/package-info.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/package-info.java deleted file mode 100644 index 6dbf03b56c..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * TE node API. - */ -package org.onosproject.tetopology.management.api.node; \ No newline at end of file diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/package-info.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/package-info.java deleted file mode 100644 index 5dca9ebf52..0000000000 --- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * TE topology management API. - */ -package org.onosproject.tetopology.management.api; \ No newline at end of file diff --git a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeLinkApiTest.java b/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeLinkApiTest.java deleted file mode 100644 index 04621b5911..0000000000 --- a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeLinkApiTest.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.manager.api; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.tetopology.management.api.link.ElementType; -import org.onosproject.tetopology.management.api.link.Label; -import org.onosproject.tetopology.management.api.link.PathElement; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.link.UnderlayBackupPath; - -import java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - - -/** - * Unit tests for TE link APIs. - */ -public class TeLinkApiTest { - private static final long DEFAULT_PROVIDER_ID = 123; - private static final long DEFAULT_CLIENT_ID = 456; - private static final long DEFAULT_TOPOLOGY_ID = 789; - private static final long DEFAULT_TE_NODE_ID = 1234; - private static final long DEFAULT_TE_LINK_TP_ID = 5678; - private static final String DEFAULT_TOPOLOGY_ID_STRING = - "default-topology-123"; - private static final long DEFAULT_PATH_ELEMENT_ID = 234; - private static final long DEFAULT_UNDERLAY_BACKUP_PATH_IDX = 10; - - private long providerId; - private long clientId; - private long topologyId; - private long teNodeId; - private long teLinkTpId; - private long pathElementId; - private long underlayBackupPathIndex; - - private String topologyIdString; - - @Before - public void setUp() { - providerId = DEFAULT_PROVIDER_ID; - clientId = DEFAULT_CLIENT_ID; - topologyId = DEFAULT_TOPOLOGY_ID; - teNodeId = DEFAULT_TE_NODE_ID; - teLinkTpId = DEFAULT_TE_LINK_TP_ID; - topologyIdString = DEFAULT_TOPOLOGY_ID_STRING; - pathElementId = DEFAULT_PATH_ELEMENT_ID; - underlayBackupPathIndex = DEFAULT_UNDERLAY_BACKUP_PATH_IDX; - } - - @Test - public void teLinkTpGlobalKeyEqualOperatorTest() { - TeLinkTpGlobalKey key1 = new TeLinkTpGlobalKey(providerId, clientId, - topologyId, teNodeId, - teLinkTpId); - TeLinkTpGlobalKey key2 = new TeLinkTpGlobalKey(providerId, clientId, - topologyId, teNodeId, - teLinkTpId); - TeLinkTpGlobalKey key3 = new TeLinkTpGlobalKey(providerId + 1, clientId, - topologyId, teNodeId, - teLinkTpId); - TeLinkTpGlobalKey key4 = new TeLinkTpGlobalKey(providerId, clientId + 1, - topologyId, teNodeId, - teLinkTpId); - TeLinkTpGlobalKey key5 = new TeLinkTpGlobalKey(providerId, clientId, - topologyId + 1, - teNodeId, teLinkTpId); - TeLinkTpGlobalKey key6 = new TeLinkTpGlobalKey(providerId, clientId, - topologyId, - teNodeId + 1, teLinkTpId); - TeLinkTpGlobalKey key7 = new TeLinkTpGlobalKey(providerId, clientId, - topologyId, - teNodeId, teLinkTpId + 1); - - assertTrue("Two topology Ids must be equal", key1.equals(key2)); - - assertFalse("Two topology Ids must be unequal", key1.equals(key3)); - assertFalse("Two topology Ids must be unequal", key3.equals(key1)); - - assertFalse("Two topology Ids must be unequal", key1.equals(key4)); - assertFalse("Two topology Ids must be unequal", key4.equals(key1)); - - assertFalse("Two topology Ids must be unequal", key1.equals(key5)); - assertFalse("Two topology Ids must be unequal", key5.equals(key1)); - - assertFalse("Two topology Ids must be unequal", key1.equals(key6)); - assertFalse("Two topology Ids must be unequal", key6.equals(key1)); - - assertFalse("Two topology Ids must be unequal", key1.equals(key7)); - assertFalse("Two topology Ids must be unequal", key7.equals(key1)); - } - - @Test - public void underLayBackupPathEqualOperatorTest() { - ElementType pathElementType1 = new Label(pathElementId + 1); - ElementType pathElementType2 = new Label(pathElementId + 2); - ElementType pathElementType3 = new Label(pathElementId + 3); - ElementType pathElementType4 = new Label(pathElementId + 4); - - PathElement pathElement1 = new PathElement(pathElementId, teNodeId, - pathElementType1, true); - PathElement pathElement2 = new PathElement(pathElementId + 1, - teNodeId + 1, - pathElementType2, true); - PathElement pathElement3 = new PathElement(pathElementId + 2, - teNodeId + 2, - pathElementType3, true); - PathElement pathElement4 = new PathElement(pathElementId + 3, - teNodeId + 3, - pathElementType4, true); - - List pathElementList1 = new ArrayList<>(); - pathElementList1.add(pathElement1); - pathElementList1.add(pathElement2); - pathElementList1.add(pathElement3); - - List pathElementList2 = new ArrayList<>(); - pathElementList1.add(pathElement1); - pathElementList1.add(pathElement2); - pathElementList1.add(pathElement4); - - // bp1 and bp2 are the same. bp3, bp4, and bp5 differ by one - // attribute comparing to bp1. - UnderlayBackupPath bp1 = new UnderlayBackupPath( - underlayBackupPathIndex, pathElementList1, true); - UnderlayBackupPath bp2 = new UnderlayBackupPath( - underlayBackupPathIndex, pathElementList1, true); - - UnderlayBackupPath bp3 = new UnderlayBackupPath( - underlayBackupPathIndex + 1, pathElementList1, true); - UnderlayBackupPath bp4 = new UnderlayBackupPath( - underlayBackupPathIndex, pathElementList2, true); - UnderlayBackupPath bp5 = new UnderlayBackupPath( - underlayBackupPathIndex, pathElementList1, false); - - - assertTrue("Two backup paths must be equal", bp1.equals(bp2)); - - assertFalse("Two backup paths must be unequal", bp1.equals(bp3)); - assertFalse("Two backup paths must be unequal", bp3.equals(bp1)); - - assertFalse("Two backup paths must be unequal", bp1.equals(bp4)); - assertFalse("Two backup paths must be unequal", bp4.equals(bp1)); - - assertFalse("Two backup paths must be unequal", bp1.equals(bp5)); - assertFalse("Two backup paths must be unequal", bp5.equals(bp1)); - } -} diff --git a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNetworkApiTest.java b/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNetworkApiTest.java deleted file mode 100644 index 77d14f535f..0000000000 --- a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNetworkApiTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.manager.api; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.tetopology.management.api.TeTopologyId; -import org.onosproject.tetopology.management.api.TeTopologyKey; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - - -/** - * Unit tests for TE topology APIs. - */ -public class TeNetworkApiTest { - private static final long DEFAULT_PROVIDER_ID = 1234; - private static final long DEFAULT_CLIENT_ID = 5678; - private static final long DEFAULT_TOPOLOGY_ID = 9876; - private static final String DEFAULT_TOPOLOGY_ID_STRING = - "default-topology-123"; - - private long providerId; - private long clientId; - private long topologyId; - private String topologyIdString; - - @Before - public void setUp() { - providerId = DEFAULT_PROVIDER_ID; - clientId = DEFAULT_CLIENT_ID; - topologyId = DEFAULT_TOPOLOGY_ID; - topologyIdString = DEFAULT_TOPOLOGY_ID_STRING; - } - - @Test - public void topologyIdEqualOperatorTest() { - TeTopologyId id1 = new TeTopologyId(providerId, clientId, - topologyIdString); - TeTopologyId id2 = new TeTopologyId(providerId, clientId, - topologyIdString); - TeTopologyId id3 = new TeTopologyId(providerId + 1, clientId, - topologyIdString); - TeTopologyId id4 = new TeTopologyId(providerId, clientId + 1, - topologyIdString); - TeTopologyId id5 = new TeTopologyId(providerId, clientId, - topologyIdString + "abc"); - - assertTrue("Two topology ids must be equal", id1.equals(id2)); - - assertFalse("Two topology ids must be unequal", id1.equals(id3)); - assertFalse("Two topology ids must be unequal", id3.equals(id1)); - - assertFalse("Two topology ids must be unequal", id1.equals(id4)); - assertFalse("Two topology ids must be unequal", id4.equals(id1)); - - assertFalse("Two topology ids must be unequal", id1.equals(id5)); - assertFalse("Two topology ids must be unequal", id5.equals(id1)); - } - - @Test - public void topologyKeyEqualOperatorTest() { - TeTopologyKey key1 = new TeTopologyKey(providerId, clientId, - topologyId); - TeTopologyKey key2 = new TeTopologyKey(providerId, clientId, - topologyId); - TeTopologyKey key3 = new TeTopologyKey(providerId + 1, clientId, - topologyId); - TeTopologyKey key4 = new TeTopologyKey(providerId, clientId + 1, - topologyId); - TeTopologyKey key5 = new TeTopologyKey(providerId, clientId, - topologyId + 1); - - assertTrue("Two topology keys must be equal", key1.equals(key2)); - - assertFalse("Two topology keys must be unequal", key1.equals(key3)); - assertFalse("Two topology keys must be unequal", key3.equals(key1)); - - assertFalse("Two topology keys must be unequal", key1.equals(key4)); - assertFalse("Two topology keys must be unequal", key4.equals(key1)); - - assertFalse("Two topology keys must be unequal", key1.equals(key5)); - assertFalse("Two topology keys must be unequal", key5.equals(key1)); - } -} diff --git a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNodeApiTest.java b/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNodeApiTest.java deleted file mode 100644 index fb4b8b84ec..0000000000 --- a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNodeApiTest.java +++ /dev/null @@ -1,349 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.manager.api; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.tetopology.management.api.link.ConnectivityMatrixId; -import org.onosproject.tetopology.management.api.link.ElementType; -import org.onosproject.tetopology.management.api.link.Label; -import org.onosproject.tetopology.management.api.link.PathElement; -import org.onosproject.tetopology.management.api.link.TePathAttributes; -import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath; -import org.onosproject.tetopology.management.api.link.UnderlayBackupPath; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrix; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrixKey; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; - -import java.util.ArrayList; -import java.util.BitSet; -import java.util.List; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - - -/** - * Unit tests for TE node APIs. - */ -public class TeNodeApiTest { - private static final long DEFAULT_PROVIDER_ID = 123; - private static final long DEFAULT_CLIENT_ID = 456; - private static final long DEFAULT_TOPOLOGY_ID = 789; - private static final long DEFAULT_TE_NODE_ID = 1234; - private static final long DEFAULT_CONNECTIVITY_ENTRY_ID = 5678; - private static final long DEFAULT_TTP_ID = 897; - private static final String DEFAULT_TOPOLOGY_ID_STRING = - "default-topology-123"; - private static final long DEFAULT_PATH_ELEMENT_ID = 234; - private static final long DEFAULT_UNDERLAY_BACKUP_PATH_IDX = 10; - - private long providerId; - private long clientId; - private long topologyId; - private long teNodeId; - private long connectivityMatrixEntryId; - private long pathElementId; - private long underlayBackupPathIndex; - private long ttpId; - - private String topologyIdString; - - @Before - public void setUp() { - providerId = DEFAULT_PROVIDER_ID; - clientId = DEFAULT_CLIENT_ID; - topologyId = DEFAULT_TOPOLOGY_ID; - teNodeId = DEFAULT_TE_NODE_ID; - connectivityMatrixEntryId = DEFAULT_CONNECTIVITY_ENTRY_ID; - topologyIdString = DEFAULT_TOPOLOGY_ID_STRING; - pathElementId = DEFAULT_PATH_ELEMENT_ID; - underlayBackupPathIndex = DEFAULT_UNDERLAY_BACKUP_PATH_IDX; - ttpId = DEFAULT_TTP_ID; - } - - @Test - public void connectivityMatrixKeyEqualOperatorTest() { - ConnectivityMatrixKey key1 = new ConnectivityMatrixKey(providerId, - clientId, - topologyId, - teNodeId, - connectivityMatrixEntryId); - ConnectivityMatrixKey key2 = new ConnectivityMatrixKey(providerId, - clientId, - topologyId, - teNodeId, - connectivityMatrixEntryId); - ConnectivityMatrixKey key3 = new ConnectivityMatrixKey(providerId + 1, - clientId, - topologyId, - teNodeId, - connectivityMatrixEntryId); - ConnectivityMatrixKey key4 = new ConnectivityMatrixKey(providerId, - clientId + 1, - topologyId, - teNodeId, - connectivityMatrixEntryId); - ConnectivityMatrixKey key5 = new ConnectivityMatrixKey(providerId, - clientId, - topologyId + 1, - teNodeId, - connectivityMatrixEntryId); - ConnectivityMatrixKey key6 = new ConnectivityMatrixKey(providerId, - clientId, - topologyId, - teNodeId + 1, - connectivityMatrixEntryId); - ConnectivityMatrixKey key7 = new ConnectivityMatrixKey(providerId, - clientId, - topologyId, - teNodeId, - connectivityMatrixEntryId + 1); - - assertTrue("Two matrix keys must be equal", key1.equals(key2)); - - assertFalse("Two matrix keys must be unequal", key1.equals(key3)); - assertFalse("Two matrix keys must be unequal", key3.equals(key1)); - - assertFalse("Two matrix keys must be unequal", key1.equals(key4)); - assertFalse("Two matrix keys must be unequal", key4.equals(key1)); - - assertFalse("Two matrix keys must be unequal", key1.equals(key5)); - assertFalse("Two matrix keys must be unequal", key5.equals(key1)); - - assertFalse("Two matrix keys must be unequal", key1.equals(key6)); - assertFalse("Two matrix keys must be unequal", key6.equals(key1)); - - assertFalse("Two matrix keys must be unequal", key1.equals(key7)); - assertFalse("Two matrix keys must be unequal", key7.equals(key1)); - } - - @Test - public void underlayBackupPathEqualOperatorTest() { - ElementType pathElementType1 = new Label(pathElementId + 1); - ElementType pathElementType2 = new Label(pathElementId + 2); - ElementType pathElementType3 = new Label(pathElementId + 3); - ElementType pathElementType4 = new Label(pathElementId + 4); - - PathElement pathElement1 = new PathElement(pathElementId, teNodeId, - pathElementType1, true); - PathElement pathElement2 = new PathElement(pathElementId + 1, - teNodeId + 1, - pathElementType2, true); - PathElement pathElement3 = new PathElement(pathElementId + 2, - teNodeId + 2, - pathElementType3, true); - PathElement pathElement4 = new PathElement(pathElementId + 3, - teNodeId + 3, - pathElementType4, true); - - List pathElementList1 = new ArrayList<>(); - pathElementList1.add(pathElement1); - pathElementList1.add(pathElement2); - pathElementList1.add(pathElement3); - - List pathElementList2 = new ArrayList<>(); - pathElementList2.add(pathElement1); - pathElementList2.add(pathElement2); - pathElementList2.add(pathElement4); - - // bp1 and bp2 are the same. bp3, bp4, and bp5 differ by one - // attribute comparing to bp1. - UnderlayBackupPath bp1 = new UnderlayBackupPath( - underlayBackupPathIndex, pathElementList1, true); - UnderlayBackupPath bp2 = new UnderlayBackupPath( - underlayBackupPathIndex, pathElementList1, true); - - UnderlayBackupPath bp3 = new UnderlayBackupPath( - underlayBackupPathIndex + 1, pathElementList1, true); - UnderlayBackupPath bp4 = new UnderlayBackupPath( - underlayBackupPathIndex, pathElementList2, true); - UnderlayBackupPath bp5 = new UnderlayBackupPath( - underlayBackupPathIndex, pathElementList1, false); - - - assertTrue("Two backup paths must be equal", bp1.equals(bp2)); - - assertFalse("Two backup paths must be unequal", bp1.equals(bp3)); - assertFalse("Two backup paths must be unequal", bp3.equals(bp1)); - - assertFalse("Two backup paths must be unequal", bp1.equals(bp4)); - assertFalse("Two backup paths must be unequal", bp4.equals(bp1)); - - assertFalse("Two backup paths must be unequal", bp1.equals(bp5)); - assertFalse("Two backup paths must be unequal", bp5.equals(bp1)); - } - - - @Test - public void connectivityMatrixEqualOperatorTest() { - long key1 = connectivityMatrixEntryId; - long key2 = connectivityMatrixEntryId + 1; - - ElementType pathElementType1 = new Label(pathElementId + 1); - ElementType pathElementType2 = new Label(pathElementId + 2); - ElementType pathElementType3 = new Label(pathElementId + 3); - ElementType pathElementType4 = new Label(pathElementId + 4); - - PathElement pathElement1 = new PathElement(pathElementId, teNodeId, - pathElementType1, true); - PathElement pathElement2 = new PathElement(pathElementId + 1, - teNodeId + 1, - pathElementType2, true); - PathElement pathElement3 = new PathElement(pathElementId + 2, - teNodeId + 2, - pathElementType3, true); - PathElement pathElement4 = new PathElement(pathElementId + 3, - teNodeId + 3, - pathElementType4, true); - - List pathElementList1 = new ArrayList<>(); - pathElementList1.add(pathElement1); - pathElementList1.add(pathElement2); - pathElementList1.add(pathElement3); - - List pathElementList2 = new ArrayList<>(); - pathElementList2.add(pathElement1); - pathElementList2.add(pathElement2); - pathElementList2.add(pathElement4); - - UnderlayAbstractPath abstractPath1 = new UnderlayAbstractPath( - pathElementList1, true); - UnderlayAbstractPath abstractPath2 = new UnderlayAbstractPath( - pathElementList2, true); - - ElementType from = new ConnectivityMatrixId(connectivityMatrixEntryId); - List mergingList = new ArrayList<>(); - mergingList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 1)); - mergingList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 2)); - - List constrainList = new ArrayList<>(); - constrainList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 3)); - constrainList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 4)); - - BitSet flags = new BitSet(1); - - List srlgs = new ArrayList<>(); - srlgs.add(new Long(10)); - TePathAttributes tePathAttributes = new TePathAttributes(new Long(10), - new Long(10), - srlgs); - - ConnectivityMatrix matrix1 = new ConnectivityMatrix(key1, - from, - mergingList, - constrainList, - flags, - tePathAttributes, - abstractPath1); - ConnectivityMatrix matrix2 = new ConnectivityMatrix(key1, - from, - mergingList, - constrainList, - flags, - tePathAttributes, - abstractPath1); - ConnectivityMatrix matrix3 = new ConnectivityMatrix(key1, - from, - mergingList, - constrainList, - flags, - tePathAttributes, - abstractPath2); - ConnectivityMatrix matrix4 = new ConnectivityMatrix(key2, - from, - mergingList, - constrainList, - flags, - tePathAttributes, - abstractPath1); - - assertTrue("Two conn matrices must be equal", matrix1.equals(matrix2)); - - assertFalse("Two conn matrices must be unequal", matrix1.equals(matrix3)); - assertFalse("Two conn matrices must be unequal", matrix3.equals(matrix1)); - - assertFalse("Two conn matrices must be unequal", matrix1.equals(matrix4)); - assertFalse("Two conn matrices must be unequal", matrix4.equals(matrix1)); - } - - @Test - public void teNodeKeyEqualOperatorTest() { - TeNodeKey key1 = new TeNodeKey(providerId, clientId, - topologyId, teNodeId); - TeNodeKey key2 = new TeNodeKey(providerId, clientId, - topologyId, teNodeId); - TeNodeKey key3 = new TeNodeKey(providerId + 1, clientId, - topologyId, teNodeId); - TeNodeKey key4 = new TeNodeKey(providerId, clientId + 1, - topologyId, teNodeId); - TeNodeKey key5 = new TeNodeKey(providerId, clientId, - topologyId + 1, teNodeId); - TeNodeKey key6 = new TeNodeKey(providerId, clientId, - topologyId, teNodeId + 1); - - assertTrue("Two matrix keys must be equal", key1.equals(key2)); - - assertFalse("Two matrix keys must be unequal", key1.equals(key3)); - assertFalse("Two matrix keys must be unequal", key3.equals(key1)); - - assertFalse("Two matrix keys must be unequal", key1.equals(key4)); - assertFalse("Two matrix keys must be unequal", key4.equals(key1)); - - assertFalse("Two matrix keys must be unequal", key1.equals(key5)); - assertFalse("Two matrix keys must be unequal", key5.equals(key1)); - - assertFalse("Two matrix keys must be unequal", key1.equals(key6)); - assertFalse("Two matrix keys must be unequal", key6.equals(key1)); - } - - @Test - public void ttpMatrixKeyEqualOperatorTest() { - TtpKey key1 = new TtpKey(providerId, clientId, topologyId, - teNodeId, ttpId); - TtpKey key2 = new TtpKey(providerId, clientId, topologyId, - teNodeId, ttpId); - TtpKey key3 = new TtpKey(providerId + 1, clientId, topologyId, - teNodeId, ttpId); - TtpKey key4 = new TtpKey(providerId, clientId + 1, topologyId, - teNodeId, ttpId); - TtpKey key5 = new TtpKey(providerId, clientId, topologyId + 1, - teNodeId, ttpId); - TtpKey key6 = new TtpKey(providerId, clientId, topologyId, - teNodeId + 1, ttpId); - TtpKey key7 = new TtpKey(providerId, clientId, topologyId, - teNodeId, ttpId + 1); - - assertTrue("Two TTP keys must be equal", key1.equals(key2)); - - assertFalse("Two TTP keys must be unequal", key1.equals(key3)); - assertFalse("Two TTP keys must be unequal", key3.equals(key1)); - - assertFalse("Two TTP keys must be unequal", key1.equals(key4)); - assertFalse("Two TTP keys must be unequal", key4.equals(key1)); - - assertFalse("Two TTP keys must be unequal", key1.equals(key5)); - assertFalse("Two TTP keys must be unequal", key5.equals(key1)); - - assertFalse("Two TTP keys must be unequal", key1.equals(key6)); - assertFalse("Two TTP keys must be unequal", key6.equals(key1)); - - assertFalse("Two TTP keys must be unequal", key1.equals(key7)); - assertFalse("Two TTP keys must be unequal", key7.equals(key1)); - } - -} diff --git a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/package-info.java b/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/package-info.java deleted file mode 100644 index 928c96dabf..0000000000 --- a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016 Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * The TE topology APis test functions. - * - */ -package org.onosproject.tetopology.manager.api; diff --git a/apps/tetopology/app/BUILD b/apps/tetopology/app/BUILD deleted file mode 100644 index d38ffbca97..0000000000 --- a/apps/tetopology/app/BUILD +++ /dev/null @@ -1,13 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + [ - "//apps/tetopology/api:onos-apps-tetopology-api", - "//core/store/serializers:onos-core-serializers", -] - -TEST_DEPS = TEST_ADAPTERS + [ - "//utils/osgi:onlab-osgi-tests", -] - -osgi_jar_with_tests( - test_deps = TEST_DEPS, - deps = COMPILE_DEPS, -) diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java deleted file mode 100644 index 4b3785758d..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java +++ /dev/null @@ -1,1424 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.MapUtils; -import org.onlab.util.KryoNamespace; -import org.onosproject.net.DeviceId; -import org.onosproject.store.AbstractStore; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.AtomicCounter; -import org.onosproject.store.service.ConsistentMap; -import org.onosproject.store.service.MapEvent; -import org.onosproject.store.service.MapEventListener; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.onosproject.tetopology.management.api.CommonTopologyData; -import org.onosproject.tetopology.management.api.DefaultNetwork; -import org.onosproject.tetopology.management.api.DefaultTeTopologies; -import org.onosproject.tetopology.management.api.DefaultTeTopology; -import org.onosproject.tetopology.management.api.EncodingType; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.LongValue; -import org.onosproject.tetopology.management.api.Network; -import org.onosproject.tetopology.management.api.OptimizationType; -import org.onosproject.tetopology.management.api.ProviderClientId; -import org.onosproject.tetopology.management.api.SwitchingType; -import org.onosproject.tetopology.management.api.TeConstants; -import org.onosproject.tetopology.management.api.TeStatus; -import org.onosproject.tetopology.management.api.TeTopologies; -import org.onosproject.tetopology.management.api.TeTopology; -import org.onosproject.tetopology.management.api.TeTopologyEvent; -import org.onosproject.tetopology.management.api.TeTopologyEvent.Type; -import org.onosproject.tetopology.management.api.TeTopologyId; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.TeUtils; -import org.onosproject.tetopology.management.api.link.AsNumber; -import org.onosproject.tetopology.management.api.link.CommonLinkData; -import org.onosproject.tetopology.management.api.link.ConnectivityMatrixId; -import org.onosproject.tetopology.management.api.link.DefaultNetworkLink; -import org.onosproject.tetopology.management.api.link.DefaultTeLink; -import org.onosproject.tetopology.management.api.link.ElementType; -import org.onosproject.tetopology.management.api.link.ExternalLink; -import org.onosproject.tetopology.management.api.link.Label; -import org.onosproject.tetopology.management.api.link.LinkBandwidth; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.OduResource; -import org.onosproject.tetopology.management.api.link.PathElement; -import org.onosproject.tetopology.management.api.link.TeIpv4; -import org.onosproject.tetopology.management.api.link.TeIpv6; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkId; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpKey; -import org.onosproject.tetopology.management.api.link.TePathAttributes; -import org.onosproject.tetopology.management.api.link.TunnelProtectionType; -import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath; -import org.onosproject.tetopology.management.api.link.UnderlayBackupPath; -import org.onosproject.tetopology.management.api.link.UnderlayPath; -import org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath; -import org.onosproject.tetopology.management.api.link.UnnumberedLink; -import org.onosproject.tetopology.management.api.node.CommonNodeData; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrix; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrixKey; -import org.onosproject.tetopology.management.api.node.DefaultNetworkNode; -import org.onosproject.tetopology.management.api.node.DefaultTeNode; -import org.onosproject.tetopology.management.api.node.DefaultTerminationPoint; -import org.onosproject.tetopology.management.api.node.DefaultTunnelTerminationPoint; -import org.onosproject.tetopology.management.api.node.LocalLinkConnectivity; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.NodeTpKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TerminationPoint; -import org.onosproject.tetopology.management.api.node.TerminationPointKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.BitSet; -import java.util.List; -import java.util.Map; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; - -import static org.onosproject.tetopology.management.api.OptimizationType.NOT_OPTIMIZED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_UPDATED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_UPDATED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_UPDATED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_UPDATED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_UPDATED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_UPDATED; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Implementation of the TE network store. - */ -@Component(immediate = true, service = TeTopologyStore.class) -public class DistributedTeTopologyStore - extends AbstractStore - implements TeTopologyStore { - private static final String STORE_NAME = "TE_NETWORK_TOPOLOGY_STORE"; - private static final String COUNTER_NAME = "TeTopology-TeTopologyId"; - private static final String TETOPOLOGYKEY_INTERNALTETOPOLOGY = "TeTopologyKey-InternalTeTopology"; - private static final String NETWORKID_NETWORK = "NetworkId-InternalNetwork"; - private static final String TENODEKEY_INTERNALTENODE = "TeNodeKey-InternalTeNode"; - private static final String CONNMATRIXKEY_CONNECTIVITYMATRIX = "ConnMatrixKey-ConnectivityMatrix"; - private static final String NETWORKNODEKEY_INTERNALNETWORKNODE = "NetworkNodeKey-InternalNetworkNode"; - private static final String TELINKGLOBALKEY_INTERNALTELINK = "TeLinkGlobalKey-InternalTeLink"; - private static final String NETWORKLINKKEY_INTERNALNETWORKLINK = "NetworkLinkKey-InternalNetworkLink"; - private static final String TPKEY_INTERNALTERMINATIONPOINT = "tpKey-InternalTerminationPoint"; - private static final String TELINKTPGLOBALKEY_TERMINATIONPOINTKEY = "TeLinkGlobalKey-TerminationPointKey"; - private static final String TTPKEY_TUNNELTERMINATIONPOINT = "TtpKey-TunnelTerminationPoint"; - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - // Track TE topologies by TE Topology key - private ConsistentMap teTopologyConsistentMap; - private Map teTopologyMap; - private AtomicCounter nextTeTopologyId; - // Listener for te topology events - private final MapEventListener teTopologyListener = - new InternalTeTopologyListener(); - // Track networks by network Id - private ConsistentMap networkConsistentMap; - private Map networkMap; - // Listener for network events - private final MapEventListener networkListener = - new InternalNetworkListener(); - // Track TE nodes by TE node key - private ConsistentMap teNodeConsistentMap; - private Map teNodeMap; - // Track ConnectivityMatrix by its key - private ConsistentMap connMatrixConsistentMap; - private Map connMatrixMap; - // Track Tunnel Termination Points by its key - private ConsistentMap ttpConsistentMap; - private Map ttpMap; - // Listener for TE node events - private final MapEventListener teNodeListener = - new InternalTeNodeListener(); - // Track network nodes by network node key - private ConsistentMap networkNodeConsistentMap; - private Map networkNodeMap; - // Listener for network node events - private final MapEventListener networkNodeListener = - new InternalNetworkNodeListener(); - // Track TE links by its key - private ConsistentMap teLinkConsistentMap; - private Map teLinkMap; - // Listener for te link events - private final MapEventListener teLinkListener = - new InternalTeLinkListener(); - // Track network links by network link key - private ConsistentMap networkLinkConsistentMap; - private Map networkLinkMap; - // Listener for network link events - private final MapEventListener networkLinkListener = - new InternalNetworkLinkListener(); - // Track Termination points by termination point key - private ConsistentMap tpConsistentMap; - private Map tpMap; - // Track termination point keys by TE termination point Key - private ConsistentMap tpKeyConsistentMap; - private Map tpKeyMap; - private final BlockingQueue mapEventQueue = new LinkedBlockingQueue<>(); - - private long providerId; - private static final Serializer TETOPOLOGY_SERIALIZER = Serializer - .using(new KryoNamespace.Builder().register(KryoNamespaces.API) - .register(TeTopologyKey.class) - .register(ProviderClientId.class) - .register(TeNodeKey.class) - .register(TeLinkTpGlobalKey.class) - .register(CommonTopologyData.class) - .register(KeyId.class) - .register(OptimizationType.class) - .register(InternalTeTopology.class) - .register(InternalNetwork.class) - .register(InternalTerminationPoint.class) - .register(InternalTeNode.class) - .register(InternalNetworkNode.class) - .register(CommonNodeData.class) - .register(ConnectivityMatrixKey.class) - .register(ConnectivityMatrix.class) - .register(TtpKey.class) - .register(NetworkNodeKey.class) - .register(TeStatus.class) - .register(ElementType.class) - .register(TeIpv4.class) - .register(TeIpv6.class) - .register(AsNumber.class) - .register(Label.class) - .register(UnnumberedLink.class) - .register(TeLinkId.class) - .register(ConnectivityMatrixId.class) - .register(InternalTeLink.class) - .register(InternalNetworkLink.class) - .register(TeLinkTpKey.class) - .register(NetworkLinkKey.class) - .register(NodeTpKey.class) - .register(CommonLinkData.class) - .register(SwitchingType.class) - .register(EncodingType.class) - .register(ExternalLink.class) - .register(UnderlayPath.class) - .register(LinkBandwidth.class) - .register(OduResource.class) - .register(PathElement.class) - .register(UnderlayAbstractPath.class) - .register(UnderlayBackupPath.class) - .register(UnderlayPrimaryPath.class) - .register(TePathAttributes.class) - .register(TerminationPoint.class) - .register(TunnelTerminationPoint.class) - .register(DefaultTunnelTerminationPoint.class) - .register(TerminationPointKey.class) - .register(TunnelProtectionType.class) - .register(LongValue.class) - .register(LocalLinkConnectivity.class) - .build()); - - /** - * Distributed network store service activate method. - */ - @Activate - public void activate() { - teTopologyConsistentMap = storageService - .consistentMapBuilder() - .withSerializer(TETOPOLOGY_SERIALIZER) - .withName(TETOPOLOGYKEY_INTERNALTETOPOLOGY) - .withRelaxedReadConsistency() - .build(); - teTopologyConsistentMap.addListener(teTopologyListener); - teTopologyMap = teTopologyConsistentMap.asJavaMap(); - networkConsistentMap = storageService - .consistentMapBuilder() - .withSerializer(TETOPOLOGY_SERIALIZER) - .withName(NETWORKID_NETWORK) - .withRelaxedReadConsistency() - .build(); - networkConsistentMap.addListener(networkListener); - networkMap = networkConsistentMap.asJavaMap(); - teNodeConsistentMap = storageService - .consistentMapBuilder() - .withSerializer(TETOPOLOGY_SERIALIZER) - .withName(TENODEKEY_INTERNALTENODE) - .withRelaxedReadConsistency() - .build(); - teNodeConsistentMap.addListener(teNodeListener); - teNodeMap = teNodeConsistentMap.asJavaMap(); - connMatrixConsistentMap = storageService - .consistentMapBuilder() - .withSerializer(TETOPOLOGY_SERIALIZER) - .withName(CONNMATRIXKEY_CONNECTIVITYMATRIX) - .withRelaxedReadConsistency() - .build(); - connMatrixMap = connMatrixConsistentMap.asJavaMap(); - networkNodeConsistentMap = storageService - .consistentMapBuilder() - .withSerializer(TETOPOLOGY_SERIALIZER) - .withName(NETWORKNODEKEY_INTERNALNETWORKNODE) - .withRelaxedReadConsistency() - .build(); - networkNodeConsistentMap.addListener(networkNodeListener); - networkNodeMap = networkNodeConsistentMap.asJavaMap(); - teLinkConsistentMap = storageService - .consistentMapBuilder() - .withSerializer(TETOPOLOGY_SERIALIZER) - .withName(TELINKGLOBALKEY_INTERNALTELINK) - .withRelaxedReadConsistency() - .build(); - teLinkConsistentMap.addListener(teLinkListener); - teLinkMap = teLinkConsistentMap.asJavaMap(); - networkLinkConsistentMap = storageService - .consistentMapBuilder() - .withSerializer(TETOPOLOGY_SERIALIZER) - .withName(NETWORKLINKKEY_INTERNALNETWORKLINK) - .withRelaxedReadConsistency() - .build(); - networkLinkConsistentMap.addListener(networkLinkListener); - networkLinkMap = networkLinkConsistentMap.asJavaMap(); - tpConsistentMap = storageService - .consistentMapBuilder() - .withSerializer(TETOPOLOGY_SERIALIZER) - .withName(TPKEY_INTERNALTERMINATIONPOINT) - .withRelaxedReadConsistency() - .build(); - tpMap = tpConsistentMap.asJavaMap(); - tpKeyConsistentMap = storageService - .consistentMapBuilder() - .withSerializer(TETOPOLOGY_SERIALIZER) - .withName(TELINKTPGLOBALKEY_TERMINATIONPOINTKEY) - .withRelaxedReadConsistency() - .build(); - tpKeyMap = tpKeyConsistentMap.asJavaMap(); - ttpConsistentMap = storageService - .consistentMapBuilder() - .withSerializer(TETOPOLOGY_SERIALIZER) - .withName(TTPKEY_TUNNELTERMINATIONPOINT) - .withRelaxedReadConsistency() - .build(); - ttpMap = ttpConsistentMap.asJavaMap(); - - nextTeTopologyId = storageService.getAtomicCounter(COUNTER_NAME); - log.info("Started"); - } - - /** - * Distributed network store service deactivate method. - */ - @Deactivate - public void deactivate() { - teTopologyConsistentMap.removeListener(teTopologyListener); - teTopologyConsistentMap.destroy(); - teTopologyMap.clear(); - networkConsistentMap.removeListener(networkListener); - networkConsistentMap.destroy(); - networkMap.clear(); - teNodeConsistentMap.removeListener(teNodeListener); - teNodeConsistentMap.destroy(); - teNodeMap.clear(); - connMatrixConsistentMap.destroy(); - connMatrixMap.clear(); - networkNodeConsistentMap.destroy(); - networkNodeConsistentMap.removeListener(networkNodeListener); - networkNodeMap.clear(); - teLinkConsistentMap.removeListener(teLinkListener); - teLinkConsistentMap.destroy(); - teLinkMap.clear(); - networkLinkConsistentMap.destroy(); - networkLinkConsistentMap.removeListener(networkLinkListener); - networkLinkMap.clear(); - tpConsistentMap.destroy(); - tpMap.clear(); - tpKeyConsistentMap.destroy(); - tpKeyMap.clear(); - ttpConsistentMap.destroy(); - ttpMap.clear(); - mapEventQueue.clear(); - log.info("Stopped"); - } - - /** - * Listener class to map listener map events to the TETOPOLOGY events. - */ - private class InternalTeTopologyListener implements MapEventListener { - @Override - public void event(MapEvent event) { - Type type = null; - switch (event.type()) { - case INSERT: - type = TE_TOPOLOGY_ADDED; - break; - case UPDATE: - if (event.newValue().value().childUpdate()) { - // Masked by the child events (e.g. Removal) - break; - } - type = TE_TOPOLOGY_UPDATED; - break; - case REMOVE: - type = TE_TOPOLOGY_REMOVED; - break; - default: - log.error("Unsupported event type: {}", event.type()); - } - if (type != null) { - TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type); - mapEvent.setTeTopologyKey(event.key()); - try { - mapEventQueue.put(mapEvent); - } catch (InterruptedException e) { - log.warn("Unable to queue event {} ", mapEvent, e); - Thread.currentThread().interrupt(); - } - } - } - } - - /** - * Listener class to map listener map events to the network events. - */ - private class InternalNetworkListener implements MapEventListener { - @Override - public void event(MapEvent event) { - Type type = null; - switch (event.type()) { - case INSERT: - type = NETWORK_ADDED; - break; - case UPDATE: - if (event.newValue().value().childUpdate()) { - // Masked by the child events (e.g. Removal) - break; - } - type = NETWORK_UPDATED; - break; - case REMOVE: - type = NETWORK_REMOVED; - break; - default: - log.error("Unsupported event type: {}", event.type()); - } - if (type != null) { - TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type); - mapEvent.setNetworkKey(event.key()); - try { - mapEventQueue.put(mapEvent); - } catch (InterruptedException e) { - log.warn("Unable to queue event {} ", mapEvent, e); - Thread.currentThread().interrupt(); - } - } - } - } - - /** - * Listener class to map listener map events to the TENODE events. - */ - private class InternalTeNodeListener implements MapEventListener { - @Override - public void event(MapEvent event) { - Type type = null; - switch (event.type()) { - case INSERT: - if (event.newValue().value().parentUpdate()) { - // Masked by the parent event (e.g. Add) - break; - } - type = TE_NODE_ADDED; - break; - case UPDATE: - if (event.newValue().value().childUpdate() || - event.newValue().value().parentUpdate()) { - // Masked by the child event (e.g. Removal) or parent event - break; - } - type = TE_NODE_UPDATED; - break; - case REMOVE: - type = TE_NODE_REMOVED; - break; - default: - log.error("Unsupported event type: {}", event.type()); - } - if (type != null) { - TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type); - mapEvent.setTeNodeKey(event.key()); - try { - mapEventQueue.put(mapEvent); - } catch (InterruptedException e) { - log.warn("Unable to queue event {} ", mapEvent, e); - Thread.currentThread().interrupt(); - } - } - } - } - - /** - * Listener class to map listener map events to the NETWORK NODE events. - */ - private class InternalNetworkNodeListener implements MapEventListener { - @Override - public void event(MapEvent event) { - Type type = null; - switch (event.type()) { - case INSERT: - if (event.newValue().value().parentUpdate()) { - // Masked by the parent event (e.g. Add) - break; - } - type = NODE_ADDED; - break; - case UPDATE: - if (event.newValue().value().childUpdate() || - event.newValue().value().parentUpdate()) { - // Masked by the child event (e.g. Removal) or parent event - break; - } - type = NODE_UPDATED; - break; - case REMOVE: - type = NODE_REMOVED; - break; - default: - log.error("Unsupported event type: {}", event.type()); - } - if (type != null) { - TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type); - mapEvent.setNetworkNodeKey(event.key()); - try { - mapEventQueue.put(mapEvent); - } catch (InterruptedException e) { - log.warn("Unable to queue event {} ", mapEvent, e); - Thread.currentThread().interrupt(); - } - } - } - } - - /** - * Listener class to map listener map events to the TELINK events. - */ - private class InternalTeLinkListener implements MapEventListener { - @Override - public void event(MapEvent event) { - Type type = null; - switch (event.type()) { - case INSERT: - if (event.newValue().value().parentUpdate()) { - // Masked by the parent event (e.g. Add) - break; - } - type = TE_LINK_ADDED; - break; - case UPDATE: - if (event.newValue().value().parentUpdate()) { - // Masked by parent event - break; - } - type = TE_LINK_UPDATED; - break; - case REMOVE: - type = TE_LINK_REMOVED; - break; - default: - log.error("Unsupported event type: {}", event.type()); - } - if (type != null) { - TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type); - mapEvent.setTeLinkKey(event.key()); - try { - mapEventQueue.put(mapEvent); - } catch (InterruptedException e) { - log.warn("Unable to queue event {} ", mapEvent, e); - Thread.currentThread().interrupt(); - } - } - } - } - - /** - * Listener class to map listener map events to the NETWORK LINK events. - */ - private class InternalNetworkLinkListener implements MapEventListener { - @Override - public void event(MapEvent event) { - Type type = null; - switch (event.type()) { - case INSERT: - if (event.newValue().value().parentUpdate()) { - // Masked by the parent event (e.g. Add) - break; - } - type = LINK_ADDED; - break; - case UPDATE: - if (event.newValue().value().parentUpdate()) { - // Masked by the child event (e.g. Removal) or parent event - break; - } - type = LINK_UPDATED; - break; - case REMOVE: - type = LINK_REMOVED; - break; - default: - log.error("Unsupported event type: {}", event.type()); - } - if (type != null) { - TeTopologyMapEvent mapEvent = new TeTopologyMapEvent(type); - mapEvent.setNetworkLinkKey(event.key()); - try { - mapEventQueue.put(mapEvent); - } catch (InterruptedException e) { - log.warn("Unable to queue event {} ", mapEvent, e); - Thread.currentThread().interrupt(); - } - } - } - } - - @Override - public TeTopologies teTopologies() { - Map teTopologies = Maps.newHashMap(); - if (MapUtils.isNotEmpty(teTopologyMap)) { - for (TeTopologyKey key : teTopologyMap.keySet()) { - teTopologies.put(key, teTopology(key)); - } - } - return new DefaultTeTopologies(STORE_NAME, teTopologies); - } - - private TeTopology teTopology(TeTopologyKey topologyId, - InternalTeTopology intTopology) { - if (intTopology == null) { - return null; - } - Map teNodes = null; - if (CollectionUtils.isNotEmpty(intTopology.teNodeKeys())) { - teNodes = Maps.newHashMap(); - for (TeNodeKey key : intTopology.teNodeKeys()) { - teNodes.put(key.teNodeId(), teNode(key)); - } - } - Map teLinks = null; - if (CollectionUtils.isNotEmpty(intTopology.teLinkKeys())) { - teLinks = Maps.newHashMap(); - for (TeLinkTpGlobalKey key : intTopology.teLinkKeys()) { - teLinks.put(key.teLinkTpKey(), teLink(key)); - } - } - return new DefaultTeTopology(topologyId, teNodes, teLinks, - intTopology.teTopologyId(), intTopology.topologyData()); - } - - @Override - public TeTopology teTopology(TeTopologyKey topologyId) { - InternalTeTopology intTopology = teTopologyMap.get(topologyId); - return teTopology(topologyId, intTopology); - } - - private void removeTopologyeMapEntrys(InternalTeTopology curTopology) { - // Remove TE nodes - if (CollectionUtils.isNotEmpty(curTopology.teNodeKeys())) { - for (TeNodeKey key : curTopology.teNodeKeys()) { - removeTeNode(key, true); - } - } - // Remove TE Links - if (CollectionUtils.isNotEmpty(curTopology.teLinkKeys())) { - for (TeLinkTpGlobalKey key : curTopology.teLinkKeys()) { - removeTeLink(key, true); - } - } - } - - @Override - public void updateTeTopology(TeTopology teTopology) { - InternalTeTopology curTopology = teTopologyMap.get(teTopology.teTopologyId()); - // Update TE nodes - List nodeIds = null; - if (MapUtils.isNotEmpty(teTopology.teNodes())) { - nodeIds = Lists.newArrayList(); - for (Map.Entry entry : teTopology.teNodes().entrySet()) { - TeNodeKey teNodeKey = new TeNodeKey(teTopology.teTopologyId(), entry.getKey()); - NetworkNodeKey nodeKey = TeMgrUtil.networkNodeKey(teNodeKey); - updateTeNode(teNodeKey, entry.getValue(), true, true, nodeKey); - nodeIds.add(nodeKey); - } - } - // Update TE links - List linkIds = null; - if (MapUtils.isNotEmpty(teTopology.teLinks())) { - linkIds = Lists.newArrayList(); - for (Map.Entry entry : teTopology.teLinks().entrySet()) { - TeLinkTpGlobalKey teLinkKey = new TeLinkTpGlobalKey(teTopology.teTopologyId(), - entry.getKey()); - NetworkLinkKey linkKey = TeMgrUtil.networkLinkKey(teLinkKey); - updateTeLink(teLinkKey, entry.getValue(), true, true, linkKey); - linkIds.add(linkKey); - } - } - // Finally Update teTopologyMap - InternalTeTopology newTopology = new InternalTeTopology(teTopology); - teTopologyMap.put(teTopology.teTopologyId(), newTopology); - - if (curTopology == null) { - // New topology, update networkMap - InternalNetwork intNetwork = new InternalNetwork(); - intNetwork.setServerProvided(false); - intNetwork.setTeTopologyKey(teTopology.teTopologyId()); - intNetwork.setNodeIds(nodeIds); - intNetwork.setLinkIds(linkIds); - networkMap.put(teTopology.networkId(), intNetwork); - } - } - - @Override - public void removeTeTopology(TeTopologyKey topologyId) { - // Remove it from teTopologyMap - InternalTeTopology topology = teTopologyMap.remove(topologyId); - if (topology != null) { - removeTopologyeMapEntrys(topology); - // Remove it from networkMap; - networkMap.remove(topology.topologyData().networkId()); - } - } - - @Override - public List networks() { - if (MapUtils.isEmpty(networkMap)) { - return null; - } - List networks = Lists.newArrayList(); - for (KeyId networkId : networkMap.keySet()) { - networks.add(network(networkId)); - } - return networks; - } - - private Network network(KeyId networkId, InternalNetwork curNetwork) { - if (curNetwork == null) { - return null; - } - List supportingNetworkIds = curNetwork.supportingNetworkIds(); - Map nodes = null; - if (CollectionUtils.isNotEmpty(curNetwork.nodeIds())) { - nodes = Maps.newHashMap(); - for (NetworkNodeKey key : curNetwork.nodeIds()) { - nodes.put(key.nodeId(), networkNode(key)); - } - } - Map links = null; - if (CollectionUtils.isNotEmpty(curNetwork.linkIds())) { - links = Maps.newHashMap(); - for (NetworkLinkKey key : curNetwork.linkIds()) { - links.put(key.linkId(), networkLink(key)); - } - } - TeTopologyId topologyId = null; - DeviceId ownerId = null; - OptimizationType opt = NOT_OPTIMIZED; - if (curNetwork.teTopologyKey() != null && - teTopologyMap.get(curNetwork.teTopologyKey()) != null) { - topologyId = new TeTopologyId(curNetwork.teTopologyKey().providerId(), - curNetwork.teTopologyKey().clientId(), - teTopologyMap.get(curNetwork.teTopologyKey()) - .teTopologyId()); - ownerId = teTopologyMap.get(curNetwork.teTopologyKey()) - .topologyData().ownerId(); - opt = teTopologyMap.get(curNetwork.teTopologyKey()).topologyData().optimization(); - } - return new DefaultNetwork(networkId, supportingNetworkIds, nodes, links, - topologyId, curNetwork.serverProvided(), ownerId, opt); - } - - @Override - public Network network(KeyId networkId) { - InternalNetwork curNetwork = networkMap.get(networkId); - return network(networkId, curNetwork); - } - - private void removeNetworkMapEntrys(InternalNetwork curNetwork, boolean teRemove) { - // Remove TE nodes - if (CollectionUtils.isNotEmpty(curNetwork.nodeIds())) { - for (NetworkNodeKey key : curNetwork.nodeIds()) { - removeNetworkNode(key, teRemove); - } - } - // Remove TE Links - if (CollectionUtils.isNotEmpty(curNetwork.linkIds())) { - for (NetworkLinkKey key : curNetwork.linkIds()) { - removeNetworkLink(key, teRemove); - } - } - } - - private TeTopologyKey newTeTopologyKey(TeTopologyId teTopologyId) { - long idValue; - try { - idValue = Long.parseLong(teTopologyId.topologyId()); - } catch (NumberFormatException e) { - // Can't get the long value from the string. - // Use an assigned id value from local id pool, - // Ideally id should be assigned per provider base. - idValue = nextTeTopologyId(); - } - return new TeTopologyKey(teTopologyId.providerId(), teTopologyId.clientId(), idValue); - } - - @Override - public void updateNetwork(Network network) { - log.debug("updateNetwork {}", network); - InternalNetwork curNetwork = networkMap.get(network.networkId()); - TeTopologyKey topoKey = null; - if (network.teTopologyId() != null) { - topoKey = newTeTopologyKey(network.teTopologyId()); - } - // Update TE nodes - List teNodeKeys = null; - if (MapUtils.isNotEmpty(network.nodes())) { - teNodeKeys = Lists.newArrayList(); - for (Map.Entry entry : network.nodes().entrySet()) { - NetworkNodeKey nodeKey = new NetworkNodeKey(network.networkId(), entry.getKey()); - TeNodeKey teNodeKey = null; - if (topoKey != null && entry.getValue().teNode() != null) { - teNodeKey = new TeNodeKey(topoKey, entry.getValue().teNode().teNodeId()); - } - updateNetworkNode(nodeKey, entry.getValue(), true, false, teNodeKey); - teNodeKeys.add(teNodeKey); - } - } - // Update TE links - List teLinkKeys = null; - if (MapUtils.isNotEmpty(network.links())) { - teLinkKeys = Lists.newArrayList(); - for (Map.Entry entry : network.links().entrySet()) { - NetworkLinkKey linkKey = new NetworkLinkKey(network.networkId(), entry.getKey()); - TeLinkTpGlobalKey teLinkKey = null; - if (topoKey != null && entry.getValue().teLink() != null) { - teLinkKey = new TeLinkTpGlobalKey(topoKey, entry.getValue().teLink().teLinkKey()); - } - updateNetworkLink(linkKey, entry.getValue(), true, false, teLinkKey); - teLinkKeys.add(teLinkKey); - } - } - - // New network, update TE Topology first - if (curNetwork == null) { - InternalTeTopology intTopo = new InternalTeTopology(network.teTopologyId().topologyId()); - intTopo.setTeNodeKeys(teNodeKeys); - intTopo.setTeLinkKeys(teLinkKeys); - BitSet flags = new BitSet(TeConstants.FLAG_MAX_BITS); - flags.set(TeTopology.BIT_LEARNT); - if (network.teTopologyId().clientId() == providerId) { - // Hard rule for now - flags.set(TeTopology.BIT_CUSTOMIZED); - } - CommonTopologyData common = new CommonTopologyData(network.networkId(), - network.optimization(), - flags, - network.ownerId()); - intTopo.setTopologydata(common); - teTopologyMap.put(topoKey, intTopo); - } - // Finally Update networkMap - InternalNetwork newNetwork = new InternalNetwork(network); - newNetwork.setTeTopologyKey(topoKey); - networkMap.put(network.networkId(), newNetwork); - } - - @Override - public void removeNetwork(KeyId networkId) { - // Remove it from networkMap - InternalNetwork network = networkMap.remove(networkId); - if (network != null && network.teTopologyKey() != null) { - removeNetworkMapEntrys(network, false); - teTopologyMap.remove(network.teTopologyKey()); - } - } - - private TeNode teNode(TeNodeKey nodeKey, InternalTeNode intNode) { - if (intNode == null) { - return null; - } - Map connMatrices = null; - if (CollectionUtils.isNotEmpty(intNode.connMatrixKeys())) { - connMatrices = Maps.newHashMap(); - for (ConnectivityMatrixKey key : intNode.connMatrixKeys()) { - connMatrices.put(key.entryId(), connMatrixMap.get(key)); - } - } - List teLinkIds = null; - if (CollectionUtils.isNotEmpty(intNode.teLinkTpKeys())) { - teLinkIds = Lists.newArrayList(); - for (TeLinkTpGlobalKey key : intNode.teLinkTpKeys()) { - teLinkIds = TeUtils.addListElement(teLinkIds, key.teLinkTpId()); - } - } - List tps = null; - if (CollectionUtils.isNotEmpty(intNode.teTpKeys())) { - tps = Lists.newArrayList(); - for (TeLinkTpGlobalKey key : intNode.teTpKeys()) { - tps = TeUtils.addListElement(tps, key.teLinkTpId()); - } - } - Map ttps = null; - if (CollectionUtils.isNotEmpty(intNode.ttpKeys())) { - ttps = Maps.newHashMap(); - for (TtpKey key : intNode.ttpKeys()) { - ttps.put(key.ttpId(), ttpMap.get(key)); - } - } - return new DefaultTeNode(nodeKey.teNodeId(), - intNode.underlayTopologyKey(), - intNode.supportNodeKey(), - intNode.sourceTeNodeKey(), - intNode.teData(), - connMatrices, teLinkIds, ttps, tps); - } - - @Override - public TeNode teNode(TeNodeKey nodeKey) { - InternalTeNode intNode = teNodeMap.get(nodeKey); - return teNode(nodeKey, intNode); - } - - private void removeTeNodeMapEntrys(InternalTeNode intNode) { - // Remove connMatrixMap entries for the node - if (CollectionUtils.isNotEmpty(intNode.connMatrixKeys())) { - for (ConnectivityMatrixKey key : intNode.connMatrixKeys()) { - connMatrixMap.remove(key); - } - } - // Remove ttpMap entries for the node - if (CollectionUtils.isNotEmpty(intNode.ttpKeys())) { - for (TtpKey key : intNode.ttpKeys()) { - ttpMap.remove(key); - } - } - } - - private void updateTeNode(TeNodeKey nodeKey, TeNode node, boolean parentUpdate, - boolean teNodeUpdate, NetworkNodeKey networkNodeKey) { - InternalTeTopology intTopo = teTopologyMap.get(nodeKey.teTopologyKey()); - if (intTopo == null && !parentUpdate) { - log.error("TE Topology is not in dataStore for nodeUpdate {}", nodeKey); - return; - } - InternalTeNode curNode = teNodeMap.get(nodeKey); - // Update connMatrixMap - if (MapUtils.isNotEmpty(node.connectivityMatrices())) { - for (Map.Entry entry : node.connectivityMatrices().entrySet()) { - connMatrixMap.put(new ConnectivityMatrixKey(nodeKey, entry.getKey()), - entry.getValue()); - } - } - // Update ttpMap - if (MapUtils.isNotEmpty(node.tunnelTerminationPoints())) { - for (Map.Entry entry : node.tunnelTerminationPoints().entrySet()) { - ttpMap.put(new TtpKey(nodeKey, entry.getKey()), entry.getValue()); - } - } - // Update teNodeMap - InternalTeNode intNode = new InternalTeNode(nodeKey, node, networkNodeKey, parentUpdate); - teNodeMap.put(nodeKey, intNode); - if (curNode == null && !parentUpdate && intTopo != null) { - // Update InternalTeTopology - intTopo.setChildUpdate(true); - TeUtils.addListElement(intTopo.teNodeKeys(), nodeKey); - } - // Update networkNodeMap - if (teNodeUpdate) { - updateNetworkNode(networkNodeKey, networkNode(node), parentUpdate, - teNodeUpdate, nodeKey); - } - } - - private NetworkNode networkNode(TeNode node) { - KeyId nodeId = KeyId.keyId(Long.toString(node.teNodeId())); - List supportingNodeIds = null; - if (node.supportingTeNodeId() != null) { - supportingNodeIds = Lists.newArrayList(); - supportingNodeIds.add(new NetworkNodeKey( - TeMgrUtil.toNetworkId((node.supportingTeNodeId().teTopologyKey())), - KeyId.keyId(Long.toString(node.supportingTeNodeId().teNodeId())))); - } - Map tps = null; - if (node.teTerminationPointIds() != null) { - tps = Maps.newHashMap(); - for (Long teTpId : node.teTerminationPointIds()) { - tps.put(KeyId.keyId(Long.toString(teTpId)), - new DefaultTerminationPoint(KeyId.keyId(Long.toString(teTpId)), - null, teTpId)); - } - } - return new DefaultNetworkNode(nodeId, supportingNodeIds, node, tps); - } - - @Override - public void updateTeNode(TeNodeKey nodeKey, TeNode node) { - updateTeNode(nodeKey, node, false, true, TeMgrUtil.networkNodeKey(nodeKey)); - } - - private void removeTeNode(TeNodeKey nodeKey, boolean teNodeRemove) { - // Remove it from InternalTeTopology first - InternalTeTopology intTopo = teTopologyMap.get(nodeKey.teTopologyKey()); - if (intTopo != null && CollectionUtils.isNotEmpty(intTopo.teNodeKeys())) { - intTopo.setChildUpdate(true); - intTopo.teNodeKeys().remove(nodeKey); - } - // Then remove it from teNodeMap - InternalTeNode node = teNodeMap.remove(nodeKey); - - if (node == null) { - log.error("No node found for nodeKey {}", nodeKey); - return; - } - - removeTeNodeMapEntrys(node); - // Remove it from networkNodeMap - if (teNodeRemove && node != null) { - removeNetworkNode(node.networkNodeKey(), teNodeRemove); - } - } - - @Override - public void removeTeNode(TeNodeKey nodeKey) { - removeTeNode(nodeKey, true); - } - - private NetworkNode networkNode(NetworkNodeKey nodeKey, InternalNetworkNode intNode) { - if (intNode == null) { - return null; - } - Map tps = Maps.newHashMap(); - for (KeyId tpId : intNode.tpIds()) { - tps.put(tpId, terminationPoint( - new TerminationPointKey(nodeKey, tpId))); - - } - return new DefaultNetworkNode(nodeKey.nodeId(), intNode.supportingNodeIds(), - teNode(intNode.teNodeKey()), tps); - } - - @Override - public NetworkNode networkNode(NetworkNodeKey nodeKey) { - InternalNetworkNode intNode = networkNodeMap.get(nodeKey); - return networkNode(nodeKey, intNode); - } - - private void updateNetworkNode(NetworkNodeKey nodeKey, NetworkNode node, - boolean parentUpdate, boolean teNodeUpdate, TeNodeKey teNodeKey) { - InternalNetwork intNework = null; - if (!parentUpdate) { - intNework = networkMap.get(nodeKey.networkId()); - if (intNework == null) { - log.error("Network is not in dataStore for nodeUpdate {}", nodeKey); - return; - } - } - - InternalNetworkNode exNode = networkNodeMap.get(nodeKey); - if (exNode != null && CollectionUtils.isNotEmpty(exNode.tpIds())) { - // Remove the TerminationPoints first - for (KeyId tpId : exNode.tpIds()) { - removeTerminationPoint(new TerminationPointKey(nodeKey, tpId)); - } - } - - if (MapUtils.isNotEmpty(node.terminationPoints())) { - // Update with new TerminationPoints - for (Map.Entry entry : node.terminationPoints().entrySet()) { - updateTerminationPoint(new TerminationPointKey(nodeKey, entry.getKey()), - entry.getValue(), parentUpdate, teNodeKey); - } - } - - // Update teNodeMap first - if (!teNodeUpdate && teNodeKey != null && node.teNode() != null) { - updateTeNode(teNodeKey, node.teNode(), parentUpdate, teNodeUpdate, nodeKey); - } - // Update networkNodeMap - InternalNetworkNode intNode = new InternalNetworkNode(node, parentUpdate); - intNode.setTeNodeKey(teNodeKey); - networkNodeMap.put(nodeKey, intNode); - if (exNode == null && !parentUpdate && intNework != null) { - // Update the InternalNetwork - intNework.setChildUpdate(true); - TeUtils.addListElement(intNework.nodeIds(), nodeKey); - } - } - - @Override - public void updateNetworkNode(NetworkNodeKey nodeKey, NetworkNode node) { - TeNodeKey teNodeKey = null; - if (node.teNode() != null) { - teNodeKey = new TeNodeKey(networkMap.get(nodeKey.networkId()).teTopologyKey(), - node.teNode().teNodeId()); - } - updateNetworkNode(nodeKey, node, false, false, teNodeKey); - } - - private void removeNetworkNode(NetworkNodeKey nodeKey, boolean teNodeRemove) { - // Update the InternalNetwork - InternalNetwork intNework = networkMap.get(nodeKey.networkId()); - if (intNework != null && CollectionUtils.isNotEmpty(intNework.nodeIds())) { - intNework.setChildUpdate(true); - intNework.nodeIds().remove(nodeKey); - } - InternalNetworkNode intNode = networkNodeMap.remove(nodeKey); - if (intNode != null && CollectionUtils.isNotEmpty(intNode.tpIds())) { - // Remove the TerminationPoints first - for (KeyId tpId : intNode.tpIds()) { - removeTerminationPoint(new TerminationPointKey(nodeKey, tpId)); - } - } - if (!teNodeRemove && intNode != null) { - // Now remove it from teNodeMap - removeTeNode(intNode.teNodeKey(), teNodeRemove); - } - } - - @Override - public void removeNetworkNode(NetworkNodeKey nodeKey) { - removeNetworkNode(nodeKey, false); - } - - private TeLink teLink(TeLinkTpGlobalKey linkKey, InternalTeLink intLink) { - if (intLink == null) { - return null; - } - return new DefaultTeLink(linkKey.teLinkTpKey(), - intLink.peerTeLinkKey(), - intLink.underlayTopologyKey(), - intLink.supportingLinkKey(), - intLink.sourceTeLinkKey(), - intLink.teData()); - } - - @Override - public TeLink teLink(TeLinkTpGlobalKey linkKey) { - InternalTeLink intLink = teLinkMap.get(linkKey); - return teLink(linkKey, intLink); - } - - private void updateTeLink(TeLinkTpGlobalKey linkKey, TeLink link, - boolean parentUpdate, boolean teLinkUpdate, NetworkLinkKey networkLinkKey) { - InternalTeTopology intTopo = teTopologyMap.get(linkKey.teTopologyKey()); - if (intTopo == null && !parentUpdate) { - log.error("TE Topology is not in dataStore for linkUpdate {}", linkKey); - return; - } - InternalTeNode intNode = teNodeMap.get(linkKey.teNodeKey()); - if (intNode == null && !parentUpdate) { - log.error("TE node is not in dataStore for linkUpdate {}", linkKey); - return; - } - InternalTeLink exLink = teLinkMap.get(linkKey); - - // Update teLinkMap - InternalTeLink intLink = new InternalTeLink(link, parentUpdate); - intLink.setNetworkLinkKey(networkLinkKey); - teLinkMap.put(linkKey, intLink); - if (exLink == null && !parentUpdate) { - if (intTopo != null) { - // Update the InternalTeTopology - intTopo.setChildUpdate(true); - intTopo.setTeLinkKeys(TeUtils.addListElement(intTopo.teLinkKeys(), linkKey)); - } - if (intNode != null) { - // Update the InternalNode - intNode.setChildUpdate(true); - intNode.setTeLinkTpKeys(TeUtils.addListElement(intNode.teLinkTpKeys(), linkKey)); - } - } - - // Update networkLinkMap - if (teLinkUpdate) { - updateNetworkLink(networkLinkKey, networkLink(link), parentUpdate, - teLinkUpdate, linkKey); - } - } - - private NetworkLink networkLink(TeLink link) { - KeyId linkId = TeMgrUtil.toNetworkLinkId(link.teLinkKey()); - NodeTpKey source = null; - if (link.teLinkKey() != null) { - source = new NodeTpKey(KeyId.keyId(Long.toString(link.teLinkKey().teNodeId())), - KeyId.keyId(Long.toString(link.teLinkKey().teLinkTpId()))); - } - NodeTpKey dest = null; - if (link.peerTeLinkKey() != null) { - dest = new NodeTpKey(KeyId.keyId(Long.toString(link.peerTeLinkKey().teNodeId())), - KeyId.keyId(Long.toString(link.peerTeLinkKey().teLinkTpId()))); - } - List supportingLinkIds = null; - if (link.supportingTeLinkId() != null) { - supportingLinkIds = Lists.newArrayList(); - supportingLinkIds.add(new NetworkLinkKey( - TeMgrUtil.toNetworkId(link.supportingTeLinkId().teTopologyKey()), - TeMgrUtil.toNetworkLinkId(link.supportingTeLinkId().teLinkTpKey()))); - } - return new DefaultNetworkLink(linkId, source, dest, supportingLinkIds, link); - } - - @Override - public void updateTeLink(TeLinkTpGlobalKey linkKey, TeLink link) { - updateTeLink(linkKey, link, false, true, TeMgrUtil.networkLinkKey(linkKey)); - } - - private void removeTeLink(TeLinkTpGlobalKey linkKey, boolean teLinkRemove) { - // Remove it from InternalTeTopology first - InternalTeTopology intTopo = teTopologyMap.get(linkKey.teTopologyKey()); - if (intTopo != null && CollectionUtils.isNotEmpty(intTopo.teLinkKeys())) { - intTopo.setChildUpdate(true); - intTopo.teLinkKeys().remove(linkKey); - } - // Remove it from InternalTeNode - InternalTeNode intNode = teNodeMap.get(linkKey.teNodeKey()); - if (intNode != null && CollectionUtils.isNotEmpty(intNode.teLinkTpKeys())) { - intNode.setChildUpdate(true); - intNode.teLinkTpKeys().remove(linkKey); - } - // Then remove it from teLinkMap - InternalTeLink link = teLinkMap.remove(linkKey); - if (teLinkRemove && link != null) { - // Remove it from networkLinkMap - removeNetworkLink(link.networkLinkKey(), teLinkRemove); - } - } - - @Override - public void removeTeLink(TeLinkTpGlobalKey linkKey) { - removeTeLink(linkKey, true); - } - - private NetworkLink networkLink(NetworkLinkKey linkKey, InternalNetworkLink intLink) { - if (intLink == null) { - return null; - } - return new DefaultNetworkLink(linkKey.linkId(), intLink.source(), - intLink.destination(), intLink.supportingLinkIds(), teLink(intLink.teLinkKey())); - } - - @Override - public NetworkLink networkLink(NetworkLinkKey linkKey) { - InternalNetworkLink intLink = networkLinkMap.get(linkKey); - return networkLink(linkKey, intLink); - } - - private void updateNetworkLink(NetworkLinkKey linkKey, NetworkLink link, - boolean parentUpdate, boolean teLinkUpdate, TeLinkTpGlobalKey teLinkKey) { - InternalNetwork intNework = null; - if (!parentUpdate) { - intNework = networkMap.get(linkKey.networkId()); - if (intNework == null) { - log.error("Network is not in dataStore for linkUpdate {}", linkKey); - return; - } - } - - InternalNetworkLink exLink = networkLinkMap.get(linkKey); - - // Now update teLinkMap first - if (!teLinkUpdate && teLinkKey != null) { - updateTeLink(teLinkKey, link.teLink(), parentUpdate, teLinkUpdate, linkKey); - } - // Update networkLinkMap - InternalNetworkLink intLink = new InternalNetworkLink(link, parentUpdate); - intLink.setTeLinkKey(teLinkKey); - networkLinkMap.put(linkKey, intLink); - if (exLink == null && !parentUpdate && intNework != null) { - // Update the InternalNetwork - intNework.setChildUpdate(true); - TeUtils.addListElement(intNework.linkIds(), linkKey); - } - } - - @Override - public void updateNetworkLink(NetworkLinkKey linkKey, NetworkLink link) { - TeLinkTpGlobalKey teLinkKey = null; - if (link.teLink() != null) { - teLinkKey = new TeLinkTpGlobalKey(networkMap.get(linkKey.networkId()).teTopologyKey(), - link.teLink().teLinkKey()); - } - - updateNetworkLink(linkKey, link, false, false, teLinkKey); - } - - private void removeNetworkLink(NetworkLinkKey linkKey, boolean teLinkRemove) { - // Update the InternalNetwork - InternalNetwork intNework = networkMap.get(linkKey.networkId()); - if (intNework != null && CollectionUtils.isNotEmpty(intNework.linkIds())) { - intNework.setChildUpdate(true); - intNework.linkIds().remove(linkKey); - } - // Remove it from networkLinkMap - InternalNetworkLink intLink = networkLinkMap.remove(linkKey); - if (!teLinkRemove && intLink != null && intLink.teLinkKey() != null) { - // Now remove it from teLinkMap - removeTeLink(intLink.teLinkKey(), teLinkRemove); - } - } - - @Override - public void removeNetworkLink(NetworkLinkKey linkKey) { - removeNetworkLink(linkKey, false); - } - - private TerminationPoint terminationPoint(TerminationPointKey tpKey) { - InternalTerminationPoint intTp = tpMap.get(tpKey); - if (intTp == null) { - return null; - } - return new DefaultTerminationPoint(tpKey.tpId(), intTp.supportingTpIds(), - intTp.teTpKey().teLinkTpId()); - } - - private void updateTerminationPoint(TerminationPointKey tpKey, - TerminationPoint tp, boolean parentUpdate, TeNodeKey teNodeKey) { - TeNodeKey myTeNodeKey; - InternalNetworkNode intNode = null; - if (!parentUpdate) { - intNode = networkNodeMap.get(tpKey); - if (intNode == null) { - log.error(" node is not in dataStore for tp update {}", tpKey); - return; - } - myTeNodeKey = intNode.teNodeKey(); - } else { - myTeNodeKey = teNodeKey; - } - TeLinkTpGlobalKey teTpKey = new TeLinkTpGlobalKey(myTeNodeKey, tp.teTpId()); - - boolean newTp = tpMap.get(tpKey) == null; - InternalTerminationPoint intTp = new InternalTerminationPoint(tp); - intTp.setTeTpKey(teTpKey); - tpMap.put(tpKey, intTp); - if (newTp) { - // Update tpKeyMap - tpKeyMap.put(teTpKey, tpKey); - if (!parentUpdate && intNode != null) { - // Update InternalNetworkNode - intNode.setChildUpdate(true); - intNode.setTpIds(TeUtils.addListElement(intNode.tpIds(), tpKey.tpId())); - } - } - } - - @Override - public void updateTerminationPoint(TerminationPointKey tpKey, - TerminationPoint tp) { - updateTerminationPoint(tpKey, tp, false, null); - } - - @Override - public void removeTerminationPoint(TerminationPointKey tpKey) { - // Update InternalNetworkNode - InternalNetworkNode intNode = networkNodeMap.get(tpKey); - if (intNode != null && CollectionUtils.isNotEmpty(intNode.tpIds())) { - intNode.setChildUpdate(true); - intNode.tpIds().remove(tpKey.tpId()); - } - // Remove it from tpMap - InternalTerminationPoint tp = tpMap.remove(tpKey); - // Remove it from tpKeyMap - if (tp != null) { - tpKeyMap.remove(tp.teTpKey()); - } - } - - @Override - public TunnelTerminationPoint tunnelTerminationPoint(TtpKey ttpId) { - return ttpMap.get(ttpId); - } - - @Override - public long nextTeTopologyId() { - return nextTeTopologyId.getAndIncrement(); - } - - @Override - public long nextTeNodeId(TeTopologyKey topoKey) { - return teTopologyMap.get(topoKey).nextTeNodeId(); - } - - @Override - public void setNextTeNodeId(TeTopologyKey topoKey, long nextNodeId) { - teTopologyMap.get(topoKey).setNextTeNodeId(nextNodeId); - } - - @Override - public KeyId networkId(TeTopologyKey teTopologyKey) { - return teTopologyMap.get(teTopologyKey) == null || - teTopologyMap.get(teTopologyKey).topologyData() == null ? null : - teTopologyMap.get(teTopologyKey).topologyData().networkId(); - } - - @Override - public NetworkNodeKey nodeKey(TeNodeKey teNodeKey) { - return teNodeMap.get(teNodeKey) == null ? null : - teNodeMap.get(teNodeKey).networkNodeKey(); - } - - @Override - public NetworkLinkKey linkKey(TeLinkTpGlobalKey teLinkKey) { - return teLinkMap.get(teLinkKey) == null ? null : - teLinkMap.get(teLinkKey).networkLinkKey(); - } - - @Override - public TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey) { - return tpKeyMap.get(teTpKey); - } - - @Override - public BlockingQueue mapEventQueue() { - return mapEventQueue; - } - - @Override - public void setProviderId(long providerId) { - this.providerId = providerId; - } -} - diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetwork.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetwork.java deleted file mode 100644 index 710a567583..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetwork.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import java.util.List; -import java.util.Map; - -import org.apache.commons.collections.MapUtils; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.Network; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -/** - * Network representation in store. - */ -public class InternalNetwork { - private TeTopologyKey teTopologyKey; - private List supportingNetworkIds; - private boolean serverProvided; - private List nodeIds; - private List linkIds; - private boolean childUpdate = false; - - /** - * Creates an instance of InternalNetwork. - * - * @param network the Network object - */ - public InternalNetwork(Network network) { - this.supportingNetworkIds = network - .supportingNetworkIds() == null ? null - : Lists.newArrayList(network - .supportingNetworkIds()); - this.serverProvided = network.isServerProvided(); - // NetworkNodeKey - if (MapUtils.isNotEmpty(network.nodes())) { - this.nodeIds = Lists.newArrayList(); - for (Map.Entry entry : network.nodes().entrySet()) { - this.nodeIds.add(new NetworkNodeKey(network.networkId(), entry.getKey())); - } - } - // NetworkLinkKey - if (MapUtils.isNotEmpty(network.links())) { - this.linkIds = Lists.newArrayList(); - for (Map.Entry entry : network.links().entrySet()) { - this.linkIds.add(new NetworkLinkKey(network.networkId(), entry.getKey())); - } - } - } - - /** - * Creates a default instance of InternalNetwork. - */ - public InternalNetwork() { - } - - /** - * Returns the supporting network Ids. - * - * @return the supportingNetworkIds - */ - public List supportingNetworkIds() { - if (supportingNetworkIds == null) { - return null; - } - return ImmutableList.copyOf(supportingNetworkIds); - } - - /** - * Returns if the network topology is provided by a server or is - * configured by a client. - * - * @return true if the network is provided by a server; false otherwise - */ - public boolean serverProvided() { - return serverProvided; - } - - /** - * @param serverProvided the serverProvided to set - */ - public void setServerProvided(boolean serverProvided) { - this.serverProvided = serverProvided; - } - - /** - * Returns the list of node Ids in the network. - * - * @return the nodeIds - */ - public List nodeIds() { - return nodeIds; - } - - /** - * Returns the TE topology key for the network. - * - * @return the teTopologyKey - */ - public TeTopologyKey teTopologyKey() { - return teTopologyKey; - } - - /** - * Sets the TE topology key for the network. - * - * @param teTopologyKey the teTopologyKey to set - */ - public void setTeTopologyKey(TeTopologyKey teTopologyKey) { - this.teTopologyKey = teTopologyKey; - } - - /** - * Set the list of node Ids in the network. - * - * @param nodeIds the nodeIds to set - */ - public void setNodeIds(List nodeIds) { - this.nodeIds = nodeIds; - } - - /** - * Returns the list of link Ids in the network. - * - * @return the linkIds - */ - public List linkIds() { - return linkIds; - } - - /** - * Set the list of link Ids in the network. - * - * @param linkIds the linkIds to set - */ - public void setLinkIds(List linkIds) { - this.linkIds = linkIds; - } - - /** - * Returns the flag if the data was updated by child change. - * - * @return value of childUpdate - */ - public boolean childUpdate() { - return childUpdate; - } - - /** - * Sets the flag if the data was updated by child change. - * - * @param childUpdate the childUpdate value to set - */ - public void setChildUpdate(boolean childUpdate) { - this.childUpdate = childUpdate; - } - - @Override - public int hashCode() { - return Objects.hashCode(teTopologyKey, nodeIds, linkIds, - supportingNetworkIds, serverProvided); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof InternalNetwork) { - InternalNetwork that = (InternalNetwork) object; - return Objects.equal(this.teTopologyKey, that.teTopologyKey) && - Objects.equal(this.nodeIds, that.nodeIds) && - Objects.equal(this.linkIds, that.linkIds) && - Objects.equal(this.supportingNetworkIds, that.supportingNetworkIds) && - Objects.equal(this.serverProvided, that.serverProvided); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("teTopologyKey", teTopologyKey) - .add("nodeIds", nodeIds) - .add("linkIds", linkIds) - .add("supportingNetworkIds", supportingNetworkIds) - .add("serverProvided", serverProvided) - .add("childUpdate", childUpdate) - .toString(); - } - -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkLink.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkLink.java deleted file mode 100644 index 7d822959b4..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkLink.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import java.util.List; - -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.node.NodeTpKey; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -/** - * Network Link representation in store. - */ -public class InternalNetworkLink { - private NodeTpKey source; - private NodeTpKey destination; - private List supportingLinkIds; - private TeLinkTpGlobalKey teLinkKey; - private boolean parentUpdate; - - /** - * Creates an instance of InternalNetworkLink. - * - * @param link the network link - * @param parentUpdate the flag if the data is updated by parent - */ - public InternalNetworkLink(NetworkLink link, boolean parentUpdate) { - source = link.source(); - destination = link.destination(); - supportingLinkIds = link - .supportingLinkIds() == null ? null - : Lists.newArrayList(link - .supportingLinkIds()); - this.parentUpdate = parentUpdate; - } - - /** - * Returns the link source termination point. - * - * @return source link termination point id - */ - public NodeTpKey source() { - return source; - } - - /** - * Returns the link destination termination point. - * - * @return destination link termination point id - */ - public NodeTpKey destination() { - return destination; - } - - /** - * Returns the supporting link ids. - * - * @return list of the ids of the supporting links - */ - public List supportingLinkIds() { - return supportingLinkIds == null ? null - : ImmutableList - .copyOf(supportingLinkIds); - } - - /** - * Returns the TE link key. - * - * @return the teLinkKey - */ - public TeLinkTpGlobalKey teLinkKey() { - return teLinkKey; - } - - /** - * Sets the TE link key. - * - * @param teLinkKey the teLinkKey to set - */ - public void setTeLinkKey(TeLinkTpGlobalKey teLinkKey) { - this.teLinkKey = teLinkKey; - } - - /** - * Returns the flag if the data was updated by parent change. - * - * @return value of parentUpdate - */ - public boolean parentUpdate() { - return parentUpdate; - } - - @Override - public int hashCode() { - return Objects.hashCode(source, destination, supportingLinkIds, teLinkKey); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof InternalNetworkLink) { - InternalNetworkLink that = (InternalNetworkLink) object; - return Objects.equal(source, that.source) - && Objects.equal(destination, that.destination) - && Objects.equal(supportingLinkIds, that.supportingLinkIds) - && Objects.equal(teLinkKey, that.teLinkKey); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("source", source) - .add("destination", destination) - .add("supportingLinkIds", supportingLinkIds) - .add("teLinkKey", teLinkKey) - .toString(); - } -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkNode.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkNode.java deleted file mode 100644 index f70210b116..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalNetworkNode.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import java.util.List; -import java.util.Map; - -import org.apache.commons.collections.MapUtils; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TerminationPoint; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -/** - * Network Node representation in store. - */ -public class InternalNetworkNode { - private List supportingNodeIds; - private List tpIds; - private TeNodeKey teNodeKey; - private boolean parentUpdate; - private boolean childUpdate; - - /** - * Creates an instance of InternalNetworkNode. - * - * @param node the network node - * @param parentUpdate the flag if the data is updated by parent - */ - public InternalNetworkNode(NetworkNode node, boolean parentUpdate) { - supportingNodeIds = node - .supportingNodeIds() == null ? null - : Lists.newArrayList(node - .supportingNodeIds()); - if (MapUtils.isNotEmpty(node.terminationPoints())) { - tpIds = Lists.newArrayList(); - for (Map.Entry entry : node - .terminationPoints().entrySet()) { - tpIds.add(entry.getKey()); - } - } - this.parentUpdate = parentUpdate; - } - - /** - * Returns the list of supporting node Ids. - * - * @return the supporting nodeIds - */ - public List supportingNodeIds() { - return supportingNodeIds == null ? null - : ImmutableList - .copyOf(supportingNodeIds); - } - - /** - * Sets the list of supporting node Ids. - * - * @param supportingNodeIds the supportingNodeIds to set - */ - public void setSupportingNodeIds(List supportingNodeIds) { - this.supportingNodeIds = supportingNodeIds == null ? null - : Lists.newArrayList(supportingNodeIds); - } - - /** - * Returns the list of termination point Ids. - * - * @return the termination point Ids - */ - public List tpIds() { - return tpIds; - } - - /** - * Sets the list of termination point Ids. - * - * @param tpIds the tpIds to set - */ - public void setTpIds(List tpIds) { - this.tpIds = tpIds; - } - - /** - * Returns the TE Node key. - * - * @return the teNodeKey - */ - public TeNodeKey teNodeKey() { - return teNodeKey; - } - - /** - * Sets the TE Node key. - * - * @param teNodeKey the teNodeKey to set - */ - public void setTeNodeKey(TeNodeKey teNodeKey) { - this.teNodeKey = teNodeKey; - } - - /** - * Returns the flag if the data was updated by parent change. - * - * @return value of parentUpdate - */ - public boolean parentUpdate() { - return parentUpdate; - } - - /** - * Returns the flag if the data was updated by child change. - * - * @return value of childUpdate - */ - public boolean childUpdate() { - return childUpdate; - } - - /** - * Sets the flag if the data was updated by child change. - * - * @param childUpdate the childUpdate value to set - */ - public void setChildUpdate(boolean childUpdate) { - this.childUpdate = childUpdate; - } - - @Override - public int hashCode() { - return Objects.hashCode(supportingNodeIds, tpIds, teNodeKey); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof InternalNetworkNode) { - InternalNetworkNode that = (InternalNetworkNode) object; - return Objects.equal(supportingNodeIds, that.supportingNodeIds) - && Objects.equal(tpIds, that.tpIds) - && Objects.equal(teNodeKey, that.teNodeKey); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("supportingNodeIds", supportingNodeIds) - .add("tpIds", tpIds) - .add("teNodeKey", teNodeKey) - .add("parentUpdate", parentUpdate) - .add("childUpdate", childUpdate) - .toString(); - } -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeLink.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeLink.java deleted file mode 100644 index 799ed307c2..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeLink.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.link.CommonLinkData; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpKey; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; - -/** - * The TE link representation in store. - */ -public class InternalTeLink { - private TeLinkTpKey peerTeLinkKey; - private TeTopologyKey underlayTopologyKey; - private TeLinkTpGlobalKey supportingLinkKey; - private TeLinkTpGlobalKey sourceTeLinkKey; - private CommonLinkData teData; - private NetworkLinkKey networkLinkKey; - private boolean parentUpdate; - - /** - * Creates an instance of InternalLink. - * - * @param link the TE link - * @param parentUpdate indicator the TE node is updated by parent - */ - public InternalTeLink(TeLink link, boolean parentUpdate) { - this.parentUpdate = parentUpdate; - // Peer link key - this.peerTeLinkKey = link.peerTeLinkKey(); - // Underlay topology - this.underlayTopologyKey = link.underlayTeTopologyId(); - // Supporting topology - this.supportingLinkKey = link.supportingTeLinkId(); - // Source topology - this.sourceTeLinkKey = link.sourceTeLinkId(); - // Common data - this.teData = new CommonLinkData(link); - } - - /** - * Returns the bi-directional peer link key. - * - * @return the peerTeLinkKey - */ - public TeLinkTpKey peerTeLinkKey() { - return peerTeLinkKey; - } - - /** - * Sets the bi-directional peer link key. - * - * @param peerTeLinkKey the peerTeLinkKey to set - */ - public void setPeerTeLinkKey(TeLinkTpKey peerTeLinkKey) { - this.peerTeLinkKey = peerTeLinkKey; - } - - /** - * Returns the link underlay topology key. - * - * @return the underlayTopologyKey - */ - public TeTopologyKey underlayTopologyKey() { - return underlayTopologyKey; - } - - /** - * Sets the link underlay topology key. - * - * @param underlayTopologyKey the underlayTopologyKey to set - */ - public void setUnderlayTopologyKey(TeTopologyKey underlayTopologyKey) { - this.underlayTopologyKey = underlayTopologyKey; - } - - /** - * Returns the supporting link key. - * - * @return the supportingLinkKey - */ - public TeLinkTpGlobalKey supportingLinkKey() { - return supportingLinkKey; - } - - /** - * Sets the supporting link key. - * - * @param supportingLinkKey the supportingLinkKey to set - */ - public void setSupportingLinkKey(TeLinkTpGlobalKey supportingLinkKey) { - this.supportingLinkKey = supportingLinkKey; - } - - /** - * Returns the source link key. - * - * @return the sourceTeLinkKey - */ - public TeLinkTpGlobalKey sourceTeLinkKey() { - return sourceTeLinkKey; - } - - /** - * Sets the source link key. - * - * @param sourceTeLinkKey the sourceTeLinkKey to set - */ - public void setSourceTeNodeKey(TeLinkTpGlobalKey sourceTeLinkKey) { - this.sourceTeLinkKey = sourceTeLinkKey; - } - - /** - * Returns the link common data. - * - * @return the teData - */ - public CommonLinkData teData() { - return teData; - } - - /** - * Sets the link common data. - * - * @param teData the teData to set - */ - public void setTeData(CommonLinkData teData) { - this.teData = teData; - } - - /** - * Sets the network link key. - * - * @param networkLinkKey the networkLinkKey to set - */ - public void setNetworkLinkKey(NetworkLinkKey networkLinkKey) { - this.networkLinkKey = networkLinkKey; - } - - /** - * Returns the network link key. - * - * @return the networkLinkKey - */ - public NetworkLinkKey networkLinkKey() { - return networkLinkKey; - } - - /** - * Returns the indicator if the data was updated by parent. - * - * @return value of parentUpdate - */ - public boolean parentUpdate() { - return parentUpdate; - } - - @Override - public int hashCode() { - return Objects.hashCode(peerTeLinkKey, underlayTopologyKey, - supportingLinkKey, sourceTeLinkKey, teData, networkLinkKey); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof InternalTeLink) { - InternalTeLink that = (InternalTeLink) object; - return Objects.equal(peerTeLinkKey, that.peerTeLinkKey) - && Objects.equal(underlayTopologyKey, - that.underlayTopologyKey) - && Objects.equal(supportingLinkKey, that.supportingLinkKey) - && Objects.equal(sourceTeLinkKey, that.sourceTeLinkKey) - && Objects.equal(networkLinkKey, that.networkLinkKey) - && Objects.equal(teData, that.teData); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("peerTeLinkKey", peerTeLinkKey) - .add("underlayTopologyKey", underlayTopologyKey) - .add("supportingLinkKey", supportingLinkKey) - .add("sourceTeLinkKey", sourceTeLinkKey) - .add("teData", teData) - .add("networkLinkKey", networkLinkKey) - .add("parentUpdate", parentUpdate) - .toString(); - } -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeNode.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeNode.java deleted file mode 100644 index cd47929514..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeNode.java +++ /dev/null @@ -1,348 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import java.util.List; -import java.util.Map; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.MapUtils; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.node.CommonNodeData; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrix; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrixKey; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.Lists; - -/** - * The Node representation in store. - */ -public class InternalTeNode { - private CommonNodeData teData; - private TeTopologyKey underlayTopologyKey; - private TeNodeKey supportNodeKey; - private TeNodeKey sourceTeNodeKey; - private List connMatrixKeys; - private List teLinkTpKeys; - private List teTpKeys; - private List ttpKeys; - private NetworkNodeKey networkNodeKey; - private boolean parentUpdate; - private boolean childUpdate; - - // Next available TE link Id egressing from the TE node. - private long nextTeLinkId; - - /** - * Creates an instance of InternalTeNode. - * - * @param nodeKey the TE node key - * @param node the TE node - * @param networkNodeKey the network node key - * @param parentUpdate the flag if the data is updated by parent - */ - public InternalTeNode(TeNodeKey nodeKey, TeNode node, - NetworkNodeKey networkNodeKey, boolean parentUpdate) { - this.networkNodeKey = networkNodeKey; - this.parentUpdate = parentUpdate; - // Underlay topology - this.underlayTopologyKey = node.underlayTeTopologyId(); - // Supporting topology - this.supportNodeKey = node.supportingTeNodeId(); - // Source topology - this.sourceTeNodeKey = node.sourceTeNodeId(); - // Common data - this.teData = new CommonNodeData(node); - // Connectivity matrix - if (MapUtils.isNotEmpty(node.connectivityMatrices())) { - this.connMatrixKeys = Lists.newArrayList(); - for (Map.Entry entry : node.connectivityMatrices().entrySet()) { - this.connMatrixKeys.add(new ConnectivityMatrixKey(nodeKey, entry.getKey())); - } - } - // Tunnel termination point - if (MapUtils.isNotEmpty(node.tunnelTerminationPoints())) { - this.ttpKeys = Lists.newArrayList(); - for (Map.Entry entry : node.tunnelTerminationPoints().entrySet()) { - this.ttpKeys.add(new TtpKey(nodeKey, entry.getKey())); - } - } - // teLink Keys - if (CollectionUtils.isNotEmpty(node.teLinkIds())) { - this.teLinkTpKeys = Lists.newArrayList(); - for (Long linkId : node.teLinkIds()) { - this.teLinkTpKeys.add(new TeLinkTpGlobalKey(nodeKey, linkId)); - } - - } - // teTp Keys - if (CollectionUtils.isNotEmpty(node.teTerminationPointIds())) { - this.teTpKeys = Lists.newArrayList(); - for (Long tpId : node.teTerminationPointIds()) { - this.teTpKeys.add(new TeLinkTpGlobalKey(nodeKey, tpId)); - } - } - } - - /** - * Returns the node common data. - * - * @return the teData - */ - public CommonNodeData teData() { - return teData; - } - - /** - * Sets the node common data. - * - * @param teData the teData to set - */ - public void setTeData(CommonNodeData teData) { - this.teData = teData; - } - - /** - * Returns the node underlay topology key. - * - * @return the underlayTopologyKey - */ - public TeTopologyKey underlayTopologyKey() { - return underlayTopologyKey; - } - - /** - * Sets the node underlay topology key. - * - * @param underlayTopologyKey the underlayTopologyKey to set - */ - public void setUnderlayTopologyKey(TeTopologyKey underlayTopologyKey) { - this.underlayTopologyKey = underlayTopologyKey; - } - - /** - * Returns the supporting node key. - * - * @return the supportNodeKey - */ - public TeNodeKey supportNodeKey() { - return supportNodeKey; - } - - /** - * Sets the supporting node key. - * - * @param supportNodeKey the supportNodeKey to set - */ - public void setSupportNodeKey(TeNodeKey supportNodeKey) { - this.supportNodeKey = supportNodeKey; - } - - /** - * Returns the source node key. - * - * @return the sourceTeNodeKey - */ - public TeNodeKey sourceTeNodeKey() { - return sourceTeNodeKey; - } - - /** - * Sets the source node key. - * - * @param sourceTeNodeKey the sourceTeNodeKey to set - */ - public void setSourceTeNodeKey(TeNodeKey sourceTeNodeKey) { - this.sourceTeNodeKey = sourceTeNodeKey; - } - - /** - * Returns the node connect matrix keys. - * - * @return the connMatrixKeys - */ - public List connMatrixKeys() { - return connMatrixKeys; - } - - /** - * Sets the node connect matrix keys. - * - * @param connMatrixKeys the connMatrixKeys to set - */ - public void setConnMatrixKeys(List connMatrixKeys) { - this.connMatrixKeys = connMatrixKeys; - } - - /** - * Returns the TE link Ids. - * - * @return the teLinkTpKeys - */ - public List teLinkTpKeys() { - return teLinkTpKeys; - } - - /** - * Sets the TE link Ids from the node. - * - * @param teLinkTpKeys the teLinkTpKeys to set - */ - public void setTeLinkTpKeys(List teLinkTpKeys) { - this.teLinkTpKeys = teLinkTpKeys; - } - - /** - * Returns the TE termitation point Ids. - * - * @return the teTpKeys - */ - public List teTpKeys() { - return teTpKeys; - } - - /** - * Sets the TE termitation point Ids. - * - * @param teTpKeys the teTpKeys to set - */ - public void setTeTpKeys(List teTpKeys) { - this.teTpKeys = teTpKeys; - } - - /** - * Returns the list of Tunnel Termination Point keys of the node. - * - * @return the ttpKeys - */ - public List ttpKeys() { - return ttpKeys; - } - - /** - * Sets the list of Tunnel Termination Point keys. - * - * @param ttpKeys the ttpKeys to set - */ - public void setTtpKeys(List ttpKeys) { - this.ttpKeys = ttpKeys; - } - - /** - * Returns the network node Key. - * - * @return the networkNodeKey - */ - public NetworkNodeKey networkNodeKey() { - return networkNodeKey; - } - - /** - * Returns the next available TE link id from the node. - * - * @return the nextTeLinkId - */ - public long nextTeLinkId() { - return nextTeLinkId; - } - - /** - * Sets the next available TE link id. - * - * @param nextTeLinkId the nextTeLinkId to set - */ - public void setNextTeLinkId(long nextTeLinkId) { - this.nextTeLinkId = nextTeLinkId; - } - - /** - * Returns the flag if the data was updated by parent change. - * - * @return value of parentUpdate - */ - public boolean parentUpdate() { - return parentUpdate; - } - - /** - * Returns the flag if the data was updated by child change. - * - * @return value of childUpdate - */ - public boolean childUpdate() { - return childUpdate; - } - - /** - * Sets the flag if the data was updated by child change. - * - * @param childUpdate the childUpdate value to set - */ - public void setChildUpdate(boolean childUpdate) { - this.childUpdate = childUpdate; - } - - @Override - public int hashCode() { - return Objects.hashCode(teData, underlayTopologyKey, supportNodeKey, - sourceTeNodeKey, connMatrixKeys, teLinkTpKeys, ttpKeys, networkNodeKey); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof InternalTeNode) { - InternalTeNode that = (InternalTeNode) object; - return Objects.equal(teData, that.teData) - && Objects.equal(underlayTopologyKey, - that.underlayTopologyKey) - && Objects.equal(supportNodeKey, that.supportNodeKey) - && Objects.equal(sourceTeNodeKey, that.sourceTeNodeKey) - && Objects.equal(connMatrixKeys, that.connMatrixKeys) - && Objects.equal(teLinkTpKeys, that.teLinkTpKeys) - && Objects.equal(ttpKeys, that.ttpKeys) - && Objects.equal(networkNodeKey, that.networkNodeKey); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("teData", teData) - .add("underlayTopologyKey", underlayTopologyKey) - .add("supportNodeKey", supportNodeKey) - .add("sourceTeNodeKey", sourceTeNodeKey) - .add("connMatrixKeys", connMatrixKeys) - .add("teLinkTpKeys", teLinkTpKeys) - .add("ttpKeys", ttpKeys) - .add("nextTeLinkId", nextTeLinkId) - .add("networkNodeKey", networkNodeKey) - .add("parentUpdate", parentUpdate) - .add("childUpdate", childUpdate) - .toString(); - } -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeTopology.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeTopology.java deleted file mode 100644 index 247e93454a..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTeTopology.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import static org.onosproject.tetopology.management.api.TeConstants.NIL_LONG_VALUE; - -import java.util.List; -import java.util.Map; - -import org.apache.commons.collections.MapUtils; -import org.onosproject.tetopology.management.api.CommonTopologyData; -import org.onosproject.tetopology.management.api.TeTopology; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeKey; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.Lists; - -/** - * TE topology representation in store. - */ -public class InternalTeTopology { - private String teTopologyId; - private List teNodeKeys; - private List teLinkKeys; - private CommonTopologyData topologyData; - private long nextTeNodeId = NIL_LONG_VALUE; - private boolean childUpdate; - - /** - * Creates an instance of InternalTeTopology. - * - * @param teTopology the TE Topology object - */ - public InternalTeTopology(TeTopology teTopology) { - this.teTopologyId = teTopology.teTopologyIdStringValue(); - this.topologyData = new CommonTopologyData(teTopology); - // teNodeKeys - if (MapUtils.isNotEmpty(teTopology.teNodes())) { - this.teNodeKeys = Lists.newArrayList(); - for (Map.Entry entry : teTopology.teNodes().entrySet()) { - this.teNodeKeys.add(new TeNodeKey(teTopology.teTopologyId(), entry.getKey())); - } - } - // teLink Keys - if (MapUtils.isNotEmpty(teTopology.teLinks())) { - this.teLinkKeys = Lists.newArrayList(); - for (Map.Entry entry : teTopology.teLinks().entrySet()) { - this.teLinkKeys.add(new TeLinkTpGlobalKey(teTopology.teTopologyId(), entry.getKey())); - } - } - } - - /** - * Creates a default instance of InternalNetwork. - * - * @param teTopologyId string value of id - */ - public InternalTeTopology(String teTopologyId) { - this.teTopologyId = teTopologyId; - } - - /** - * Returns the TE Topology Id string value. - * - * @return the teTopologyId - */ - public String teTopologyId() { - return teTopologyId; - } - - /** - * Returns the list of TE node keys in the topology. - * - * @return the teNodeKeys - */ - public List teNodeKeys() { - return teNodeKeys; - } - - /** - * Sets the list of TE node keys. - * - * @param teNodeKeys the teNodeKeys to set - */ - public void setTeNodeKeys(List teNodeKeys) { - this.teNodeKeys = teNodeKeys; - } - - /** - * Returns the list of TE link keys in the topology. - * - * @return the teLinkKeys - */ - public List teLinkKeys() { - return teLinkKeys; - } - - /** - * Sets the list of TE link keys. - * - * @param teLinkKeys the teLinkKeys to set - */ - public void setTeLinkKeys(List teLinkKeys) { - this.teLinkKeys = teLinkKeys; - } - - /** - * Returns the common TE topology data. - * - * @return the topology data - */ - public CommonTopologyData topologyData() { - return topologyData; - } - - /** - * Sets the common TE topology data. - * - * @param topologyData the topologyData to set - */ - public void setTopologydata(CommonTopologyData topologyData) { - this.topologyData = topologyData; - } - - /** - * Returns the next available TE node Id. - * - * @return the next TE nodeId - */ - public long nextTeNodeId() { - return nextTeNodeId; - } - - /** - * Sets the next available TE node Id. - * - * @param nextTeNodeId the nextTeNodeId to set - */ - public void setNextTeNodeId(long nextTeNodeId) { - this.nextTeNodeId = nextTeNodeId; - } - - /** - * Returns the flag if the data was updated by child change. - * - * @return value of childUpdate - */ - public boolean childUpdate() { - return childUpdate; - } - - /** - * Sets the flag if the data was updated by child change. - * - * @param childUpdate the childUpdate value to set - */ - public void setChildUpdate(boolean childUpdate) { - this.childUpdate = childUpdate; - } - - @Override - public int hashCode() { - return Objects.hashCode(teTopologyId, teNodeKeys, teLinkKeys, - topologyData); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof InternalTeTopology) { - InternalTeTopology that = (InternalTeTopology) object; - return Objects.equal(teTopologyId, that.teTopologyId) - && Objects.equal(teNodeKeys, that.teNodeKeys) - && Objects.equal(teLinkKeys, that.teLinkKeys) - && Objects.equal(topologyData, that.topologyData); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("teTopologyId", teTopologyId) - .add("teNodeKeys", teNodeKeys) - .add("teLinkKeys", teLinkKeys) - .add("topologyData", topologyData) - .add("nextTeNodeId", nextTeNodeId) - .add("childUpdate", childUpdate) - .toString(); - } -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTerminationPoint.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTerminationPoint.java deleted file mode 100644 index f47f0d99c5..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/InternalTerminationPoint.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import java.util.List; - -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.node.TerminationPoint; -import org.onosproject.tetopology.management.api.node.TerminationPointKey; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -/** - * The TerminationPoint representation in store. - */ -public class InternalTerminationPoint { - private TeLinkTpGlobalKey teTpKey; - private List supportingTpIds; - - /** - * Creates an instance of InternalTerminationPoint. - * - * @param tp the termination point - */ - public InternalTerminationPoint(TerminationPoint tp) { - this.supportingTpIds = tp - .supportingTpIds() == null ? null - : Lists.newArrayList(tp - .supportingTpIds()); - } - - /** - * Returns the TE termination point key. - * - * @return the teTpKey - */ - public TeLinkTpGlobalKey teTpKey() { - return teTpKey; - } - - /** - * Returns the supporting termination point Ids. - * - * @return the supportingTpIds - */ - public List supportingTpIds() { - return supportingTpIds == null ? null - : ImmutableList.copyOf(supportingTpIds); - } - - /** - * Sets the TE termination point key. - * - * @param teTpKey the teTpKey to set - */ - public void setTeTpKey(TeLinkTpGlobalKey teTpKey) { - this.teTpKey = teTpKey; - } - - /** - * Sets the supporting termination point Ids. - * - * @param supportingTpIds the supportingTpIds to set - */ - public void setSupportingTpIds(List supportingTpIds) { - this.supportingTpIds = supportingTpIds == null ? null - : Lists.newArrayList(supportingTpIds); - } - - @Override - public int hashCode() { - return Objects.hashCode(supportingTpIds, teTpKey); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof InternalTerminationPoint) { - InternalTerminationPoint that = (InternalTerminationPoint) object; - return Objects.equal(supportingTpIds, that.supportingTpIds) - && Objects.equal(teTpKey, that.teTpKey); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("supportingTpIds", supportingTpIds) - .add("teTpKey", teTpKey) - .toString(); - } - -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeMgrUtil.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeMgrUtil.java deleted file mode 100644 index 93170d1c53..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeMgrUtil.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import java.util.List; -import java.util.Map; - -import org.apache.commons.collections.MapUtils; -import org.onlab.packet.Ip4Address; -import org.onosproject.tetopology.management.api.DefaultNetwork; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.Network; -import org.onosproject.tetopology.management.api.TeTopology; -import org.onosproject.tetopology.management.api.TeTopologyId; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.link.DefaultNetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpKey; -import org.onosproject.tetopology.management.api.node.DefaultNetworkNode; -import org.onosproject.tetopology.management.api.node.DefaultTerminationPoint; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.NodeTpKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TerminationPoint; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -/** - * TE Topology Manager utility functions. - */ -public final class TeMgrUtil { - private static final String TENODE_ID = "teNodeId/"; - private static final String TELINK_ID = "/teLinkId/"; - private static final String PROVIDER_ID = "providerId/"; - private static final String CLIENT_ID = "/clientId/"; - private static final String TOPOLOGY_ID = "/topologyId/"; - - // no instantiation - private TeMgrUtil() { - } - - /** - * Returns the network link id for a TE link local key. - * - * @param key TE link local key - * @return value of network link id - */ - public static KeyId toNetworkLinkId(TeLinkTpKey key) { - return KeyId.keyId(new StringBuilder() - .append(TENODE_ID) - .append(Ip4Address.valueOf((int) key.teNodeId()).toString()) - .append(TELINK_ID) - .append(key.teLinkTpId()).toString()); - } - - /** - * Returns the network id for a TE topology id. - * - * @param teTopologyId TE topology id - * @return value of network id - */ - public static KeyId toNetworkId(TeTopologyId teTopologyId) { - return KeyId.keyId(new StringBuilder() - .append(PROVIDER_ID) - .append(teTopologyId.providerId()) - .append(CLIENT_ID) - .append(teTopologyId.clientId()) - .append(TOPOLOGY_ID) - .append(teTopologyId.topologyId()).toString()); - } - - /** - * Returns the network id for a TE topology key. - * - * @param teTopologyKey TE topology key - * @return value of network id - */ - public static KeyId toNetworkId(TeTopologyKey teTopologyKey) { - return KeyId.keyId(new StringBuilder() - .append(PROVIDER_ID) - .append(teTopologyKey.providerId()) - .append(CLIENT_ID) - .append(teTopologyKey.clientId()) - .append(TOPOLOGY_ID) - .append(teTopologyKey.topologyId()).toString()); - } - - /** - * Returns the network node key for a TE node global key. - * - * @param teNodeKey TE node global key - * @return value of network node key - */ - public static NetworkNodeKey networkNodeKey(TeNodeKey teNodeKey) { - return new NetworkNodeKey(toNetworkId(teNodeKey.teTopologyKey()), - KeyId.keyId(Ip4Address - .valueOf((int) teNodeKey.teNodeId()) - .toString())); - } - - /** - * Returns the network link key for a TE link global key. - * - * @param teLinkKey TE link global key - * @return value of network link key - */ - public static NetworkLinkKey networkLinkKey(TeLinkTpGlobalKey teLinkKey) { - return new NetworkLinkKey(toNetworkId(teLinkKey.teTopologyKey()), - toNetworkLinkId(teLinkKey.teLinkTpKey())); - } - - /** - * Returns the TE topology id for a TE topology. - * - * @param teTopology an instance of TE topology - * @return value of TE topology id - */ - public static TeTopologyId teTopologyId(TeTopology teTopology) { - return new TeTopologyId(teTopology.teTopologyId().providerId(), - teTopology.teTopologyId().clientId(), - teTopology.teTopologyIdStringValue()); - } - - /** - * Returns a default instance of termination point for a TE termination point id. - * - * @param teTpId TE termination point id - * @return an instance of termination point - */ - private static TerminationPoint tpBuilder(long teTpId) { - return new DefaultTerminationPoint(KeyId.keyId(Long.toString(teTpId)), null, teTpId); - } - - /** - * Returns an instance of network node for a TE node. - * - * @param id value of the network node id - * @param teNode value of TE node - * @return an instance of network node - */ - public static NetworkNode nodeBuilder(KeyId id, TeNode teNode) { - List supportingNodeIds = null; - if (teNode.supportingTeNodeId() != null) { - supportingNodeIds = Lists.newArrayList(networkNodeKey(teNode.supportingTeNodeId())); - } - Map tps = Maps.newConcurrentMap(); - for (Long teTpid : teNode.teTerminationPointIds()) { - tps.put(KeyId.keyId(Long.toString(teTpid)), tpBuilder(teTpid)); - } - return new DefaultNetworkNode(id, supportingNodeIds, teNode, tps); - } - - /** - * Returns the network node termination point key for a TE link end point key. - * - * @param teLinkKey TE link end point key - * @return value of network node termination point key - */ - public static NodeTpKey nodeTpKey(TeLinkTpKey teLinkKey) { - return new NodeTpKey(KeyId.keyId(Ip4Address - .valueOf((int) teLinkKey.teNodeId()).toString()), - KeyId.keyId(Long.toString(teLinkKey.teLinkTpId()))); - } - - /** - * Returns an instance of network link for a TE link. - * - * @param id value of the network link id - * @param teLink value of TE link - * @return an instance of network link - */ - public static NetworkLink linkBuilder(KeyId id, TeLink teLink) { - NodeTpKey source = nodeTpKey(teLink.teLinkKey()); - NodeTpKey destination = null; - if (teLink.peerTeLinkKey() != null) { - destination = nodeTpKey(teLink.peerTeLinkKey()); - } - List supportingLinkIds = null; - if (teLink.supportingTeLinkId() != null) { - supportingLinkIds = Lists.newArrayList(networkLinkKey(teLink.supportingTeLinkId())); - } - return new DefaultNetworkLink(id, source, destination, supportingLinkIds, teLink); - } - - /** - * Returns an instance of network for a TE topology. - * - * @param teTopology value of TE topology - * @return an instance of network - */ - public static Network networkBuilder(TeTopology teTopology) { - KeyId networkId = TeMgrUtil.toNetworkId(teTopology.teTopologyId()); - TeTopologyId topologyId = teTopologyId(teTopology); - Map nodes = null; - if (MapUtils.isNotEmpty(teTopology.teNodes())) { - nodes = Maps.newHashMap(); - for (TeNode tenode : teTopology.teNodes().values()) { - KeyId key = KeyId.keyId(Ip4Address - .valueOf((int) tenode.teNodeId()).toString()); - nodes.put(key, nodeBuilder(key, tenode)); - } - } - Map links = null; - if (MapUtils.isNotEmpty(teTopology.teLinks())) { - links = Maps.newHashMap(); - for (TeLink telink : teTopology.teLinks().values()) { - KeyId key = toNetworkLinkId(telink.teLinkKey()); - links.put(key, linkBuilder(key, telink)); - - } - } - return new DefaultNetwork(networkId, null, nodes, links, - topologyId, false, teTopology.ownerId(), - teTopology.optimization()); - } - -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyConfig.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyConfig.java deleted file mode 100644 index c52d9ee3db..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyConfig.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import org.onlab.packet.Ip4Address; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.config.ConfigException; -import org.onosproject.net.config.Config; - -/** - * Configuration for TE Topology parameters. - */ -public class TeTopologyConfig extends Config { - private static final String CONFIG_VALUE_ERROR = "Error parsing config value"; - private static final String PROVIDER_ID = "provider-id"; - private static final String MDSC = "mdsc"; - private static final String TENODE_ID_START = "tenode-id-start"; - private static final String TENODE_ID_END = "tenode-id-end"; - - /** - * Retrieves TE topology provider identifier. - * - * @return provider Id - * @throws ConfigException if the parameters are not correctly configured - * or conversion of the parameters fails - */ - public long providerId() throws ConfigException { - try { - return object.path(PROVIDER_ID).asLong(); - } catch (IllegalArgumentException e) { - throw new ConfigException(CONFIG_VALUE_ERROR, e); - } - } - - /** - * Retrieves TE node starting IPv4 address. - * - * @return the IPv4 address - * @throws ConfigException if the parameters are not correctly configured - * or conversion of the parameters fails - */ - public Ip4Address teNodeIpStart() throws ConfigException { - try { - return Ip4Address.valueOf(object.path(TENODE_ID_START).asText()); - } catch (IllegalArgumentException e) { - throw new ConfigException(CONFIG_VALUE_ERROR, e); - } - } - - /** - * Retrieves TE node end IPv4 address. - * - * @return the IPv4 address - * @throws ConfigException if the parameters are not correctly configured - * or conversion of the parameters fails - */ - public Ip4Address teNodeIpEnd() throws ConfigException { - try { - return Ip4Address.valueOf(object.path(TENODE_ID_END).asText()); - } catch (IllegalArgumentException e) { - throw new ConfigException(CONFIG_VALUE_ERROR, e); - } - } - - /** - * Retrieves if this is a MDSC(Multi-Domain Super Controller). - * - * @return MDSC value - * @throws ConfigException if the parameters are not correctly configured or - * conversion of the parameters fails - */ - public String mdsc() throws ConfigException { - try { - return object.path(MDSC).asText(); - } catch (IllegalArgumentException e) { - throw new ConfigException(CONFIG_VALUE_ERROR, e); - } - } - -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java deleted file mode 100644 index a3c0aed632..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java +++ /dev/null @@ -1,1019 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import com.google.common.base.MoreObjects; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.MapUtils; -import org.onlab.packet.Ip4Address; -import org.onosproject.app.ApplicationException; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.DeviceId; -import org.onosproject.net.config.ConfigException; -import org.onosproject.net.config.ConfigFactory; -import org.onosproject.net.config.NetworkConfigEvent; -import org.onosproject.net.config.NetworkConfigListener; -import org.onosproject.net.config.NetworkConfigRegistry; -import org.onosproject.net.device.DeviceProviderRegistry; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.link.LinkProviderRegistry; -import org.onosproject.net.link.LinkService; -import org.onosproject.net.provider.AbstractListenerProviderRegistry; -import org.onosproject.net.provider.AbstractProviderService; -import org.onosproject.tetopology.management.api.CommonTopologyData; -import org.onosproject.tetopology.management.api.DefaultNetwork; -import org.onosproject.tetopology.management.api.DefaultNetworks; -import org.onosproject.tetopology.management.api.DefaultTeTopologies; -import org.onosproject.tetopology.management.api.DefaultTeTopology; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.Network; -import org.onosproject.tetopology.management.api.Networks; -import org.onosproject.tetopology.management.api.TeConstants; -import org.onosproject.tetopology.management.api.TeTopologies; -import org.onosproject.tetopology.management.api.TeTopology; -import org.onosproject.tetopology.management.api.TeTopologyEvent; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.TeTopologyListener; -import org.onosproject.tetopology.management.api.TeTopologyProvider; -import org.onosproject.tetopology.management.api.TeTopologyProviderRegistry; -import org.onosproject.tetopology.management.api.TeTopologyProviderService; -import org.onosproject.tetopology.management.api.TeTopologyService; -import org.onosproject.tetopology.management.api.link.CommonLinkData; -import org.onosproject.tetopology.management.api.link.DefaultTeLink; -import org.onosproject.tetopology.management.api.link.ExternalLink; -import org.onosproject.tetopology.management.api.link.LinkBandwidth; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkEventSubject; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkEventSubject; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpKey; -import org.onosproject.tetopology.management.api.link.TePathAttributes; -import org.onosproject.tetopology.management.api.link.UnderlayPath; -import org.onosproject.tetopology.management.api.node.CommonNodeData; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrix; -import org.onosproject.tetopology.management.api.node.DefaultTeNode; -import org.onosproject.tetopology.management.api.node.DefaultTunnelTerminationPoint; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeEventSubject; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeEventSubject; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TerminationPoint; -import org.onosproject.tetopology.management.api.node.TerminationPointKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.BitSet; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ExecutorService; - -import static java.util.concurrent.Executors.newFixedThreadPool; -import static org.onlab.util.Tools.groupedThreads; -import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_ADDED; -import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_UPDATED; -import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY; -import static org.onosproject.tetopology.management.api.OptimizationType.NOT_OPTIMIZED; -import static org.onosproject.tetopology.management.api.TeTopology.BIT_CUSTOMIZED; -import static org.onosproject.tetopology.management.api.TeTopology.BIT_LEARNT; -import static org.onosproject.tetopology.management.api.TeTopology.BIT_MERGED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.LINK_UPDATED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NODE_UPDATED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_LINK_UPDATED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_UPDATED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_REMOVED; -import static org.onosproject.tetopology.management.api.link.TeLink.BIT_ACCESS_INTERDOMAIN; -import static org.onosproject.tetopology.management.impl.TeMgrUtil.linkBuilder; -import static org.onosproject.tetopology.management.impl.TeMgrUtil.networkBuilder; -import static org.onosproject.tetopology.management.impl.TeMgrUtil.networkLinkKey; -import static org.onosproject.tetopology.management.impl.TeMgrUtil.networkNodeKey; -import static org.onosproject.tetopology.management.impl.TeMgrUtil.nodeBuilder; -import static org.onosproject.tetopology.management.impl.TeMgrUtil.toNetworkId; -import static org.onosproject.tetopology.management.impl.TeMgrUtil.toNetworkLinkId; - -/** - * Implementation of the topology management service. - */ -@Component(immediate = true, service = { TeTopologyService.class, TeTopologyProviderRegistry.class }) -public class TeTopologyManager - extends AbstractListenerProviderRegistry - implements TeTopologyService, TeTopologyProviderRegistry { - private static final String APP_NAME = "org.onosproject.tetopology"; - private static final long DEFAULT_PROVIDER_ID = 77777; - private static final long DEFAULT_CLIENT_ID = 0x00L; - private long providerId = DEFAULT_PROVIDER_ID; - private static final int MAX_THREADS = 1; - private static final Ip4Address DEFAULT_TENODE_ID_START = Ip4Address.valueOf("10.10.10.10"); - private static final Ip4Address DEFAULT_TENODE_ID_END = Ip4Address.valueOf("250.250.250.250"); - private Ip4Address teNodeIpStart = DEFAULT_TENODE_ID_START; - private Ip4Address teNodeIpEnd = DEFAULT_TENODE_ID_END; - private long nextTeNodeId = teNodeIpStart.toInt(); - private boolean mdsc = true; - private static final String MDSC_MODE = "true"; - - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected NetworkConfigRegistry cfgService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DeviceService deviceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected LinkService linkService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DeviceProviderRegistry deviceProviderRegistry; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected LinkProviderRegistry linkProviderRegistry; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - public TeTopologyStore store; - - private TeTopologyStoreDelegate delegate = this::post; - private final ConfigFactory factory = - new ConfigFactory(APP_SUBJECT_FACTORY, - TeTopologyConfig.class, - "teTopologyCfg", - false) { - @Override - public TeTopologyConfig createConfig() { - return new TeTopologyConfig(); - } - }; - private final NetworkConfigListener cfgLister = new InternalConfigListener(); - private ApplicationId appId; - // The topology merged in MDSC - private TeTopology mergedTopology = null; - private TeTopologyKey mergedTopologyKey; - private Network mergedNetwork = null; - // Track new TE node id by its source TE node key - private Map sourceNewTeNodeIdMap = Maps.newHashMap(); - // Track the external link keys by the plugId - private Map externalLinkMap = Maps.newHashMap(); - private ExecutorService executor; - - /** - * Activation helper function. - */ - public void activateBasics() { - store.setDelegate(delegate); - store.setProviderId(providerId); - eventDispatcher.addSink(TeTopologyEvent.class, listenerRegistry); - } - - /** - * Deactivation helper function. - */ - public void deactivateBasics() { - store.unsetDelegate(delegate); - eventDispatcher.removeSink(TeTopologyEvent.class); - } - - @Activate - public void activate() { - activateBasics(); - appId = coreService.registerApplication(APP_NAME); - cfgService.registerConfigFactory(factory); - executor = newFixedThreadPool(MAX_THREADS, groupedThreads("onos/tetopology", "build-%d", log)); - - cfgService.addListener(cfgLister); - executor.execute(new TopologyMergerTask()); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - deactivateBasics(); - externalLinkMap.clear(); - cfgService.removeListener(cfgLister); - cfgService.unregisterConfigFactory(factory); - executor.shutdownNow(); - executor = null; - log.info("Stopped"); - } - - @Override - protected TeTopologyProviderService createProviderService(TeTopologyProvider provider) { - return new InternalTopologyProviderService(provider); - } - - private class InternalTopologyProviderService - extends AbstractProviderService - implements TeTopologyProviderService { - - protected InternalTopologyProviderService(TeTopologyProvider provider) { - super(provider); - } - - @Override - public void networkUpdated(Network network) { - store.updateNetwork(network); - } - - @Override - public void networkRemoved(KeyId networkId) { - store.removeNetwork(networkId); - } - - @Override - public void linkUpdated(NetworkLinkKey linkKey, NetworkLink link) { - store.updateNetworkLink(linkKey, link); - } - - @Override - public void linkRemoved(NetworkLinkKey linkKey) { - store.removeNetworkLink(linkKey); - } - - @Override - public void nodeUpdated(NetworkNodeKey nodeKey, NetworkNode node) { - store.updateNetworkNode(nodeKey, node); - } - - @Override - public void nodeRemoved(NetworkNodeKey nodeKey) { - store.removeNetworkNode(nodeKey); - } - - @Override - public void terminationPointUpdated(TerminationPointKey terminationPointKey, - TerminationPoint terminationPoint) { - store.updateTerminationPoint(terminationPointKey, terminationPoint); - } - - @Override - public void terminationPointRemoved(TerminationPointKey terminationPointKey) { - store.removeTerminationPoint(terminationPointKey); - } - } - - private boolean isCustomizedLearnedTopology(TeTopologyKey key) { - if (store.teTopology(key).flags().get(BIT_CUSTOMIZED) && - store.teTopology(key).flags().get(BIT_LEARNT)) { - return true; - } - return false; - } - - // Task for merge the learned topology. - private class TopologyMergerTask implements Runnable { - - public TopologyMergerTask() { - } - - @Override - public void run() { - try { - TeTopologyMapEvent event; - while ((event = store.mapEventQueue().take()) != null) { - switch (event.type()) { - case TE_TOPOLOGY_ADDED: - case TE_TOPOLOGY_UPDATED: - TeTopology teTopology = store.teTopology(event.teTopologyKey()); - post(new TeTopologyEvent(event.type(), teTopology)); - if (mdsc && event.type() == TE_TOPOLOGY_ADDED && - teTopology.flags().get(BIT_CUSTOMIZED) && - teTopology.flags().get(BIT_LEARNT)) { - log.debug("TeTopology to be merged: {}", teTopology); - mergeTopology(teTopology); - } - break; - case TE_TOPOLOGY_REMOVED: - post(new TeTopologyEvent(TE_TOPOLOGY_REMOVED, - new DefaultTeTopology(event.teTopologyKey(), - null, null, null, null))); - break; - case TE_NODE_ADDED: - case TE_NODE_UPDATED: - if (store.teTopology(event.teNodeKey().teTopologyKey()) == null) { - // Event should be ignored when the topology is not there. - break; - } - TeNode teNode = store.teNode(event.teNodeKey()); - post(new TeTopologyEvent(event.type(), - new TeNodeEventSubject(event.teNodeKey(), teNode))); - if (mdsc && isCustomizedLearnedTopology(event.teNodeKey().teTopologyKey())) { - updateSourceTeNode(mergedTopology.teNodes(), - event.teNodeKey().teTopologyKey(), teNode, true); - } - break; - case TE_NODE_REMOVED: - if (store.teTopology(event.teNodeKey().teTopologyKey()) == null) { - // Event should be ignored when the topology is not there. - break; - } - post(new TeTopologyEvent(TE_NODE_REMOVED, - new TeNodeEventSubject(event.teNodeKey(), null))); - if (mdsc && isCustomizedLearnedTopology(event.teNodeKey().teTopologyKey())) { - removeSourceTeNode(mergedTopology.teNodes(), event.teNodeKey(), true); - } - break; - case TE_LINK_ADDED: - case TE_LINK_UPDATED: - if (store.teTopology(event.teLinkKey().teTopologyKey()) == null || - store.teNode(event.teLinkKey().teNodeKey()) == null) { - // Event should be ignored when the topology or node is not there. - break; - } - TeLink teLink = store.teLink(event.teLinkKey()); - post(new TeTopologyEvent(event.type(), - new TeLinkEventSubject(event.teLinkKey(), teLink))); - if (mdsc && isCustomizedLearnedTopology(event.teLinkKey().teTopologyKey())) { - Map teLinks = Maps.newHashMap(mergedTopology.teLinks()); - updateSourceTeLink(teLinks, event.teLinkKey().teTopologyKey(), teLink, true); - updateMergedTopology(mergedTopology.teNodes(), teLinks); - } - break; - case TE_LINK_REMOVED: - if (store.teTopology(event.teLinkKey().teTopologyKey()) == null || - store.teNode(event.teLinkKey().teNodeKey()) == null) { - // Event should be ignored when the topology or node is not there. - break; - } - post(new TeTopologyEvent(TE_LINK_REMOVED, - new TeLinkEventSubject(event.teLinkKey(), null))); - if (mdsc && isCustomizedLearnedTopology(event.teLinkKey().teTopologyKey())) { - Map teLinks = Maps.newHashMap(mergedTopology.teLinks()); - removeSourceTeLink(teLinks, event.teLinkKey(), true); - updateMergedTopology(mergedTopology.teNodes(), teLinks); - } - break; - case NETWORK_ADDED: - case NETWORK_UPDATED: - Network network = store.network(event.networkKey()); - post(new TeTopologyEvent(event.type(), network)); - break; - case NETWORK_REMOVED: - post(new TeTopologyEvent(NETWORK_REMOVED, - new DefaultNetwork(event.networkKey(), null, null, - null, null, false, null, - NOT_OPTIMIZED))); - break; - case NODE_ADDED: - case NODE_UPDATED: - if (store.network(event.networkNodeKey().networkId()) == null) { - // Event should be ignored when the network is not there. - break; - } - NetworkNode node = store.networkNode(event.networkNodeKey()); - post(new TeTopologyEvent(event.type(), - new NetworkNodeEventSubject(event.networkNodeKey(), node))); - break; - case NODE_REMOVED: - if (store.network(event.networkNodeKey().networkId()) == null) { - // Event should be ignored when the network is not there. - break; - } - post(new TeTopologyEvent(NODE_REMOVED, - new NetworkNodeEventSubject(event.networkNodeKey(), null))); - break; - case LINK_ADDED: - case LINK_UPDATED: - if (store.network(event.networkLinkKey().networkId()) == null) { - // Event should be ignored when the network is not there. - break; - } - NetworkLink link = store.networkLink(event.networkLinkKey()); - post(new TeTopologyEvent(event.type(), - new NetworkLinkEventSubject(event.networkLinkKey(), link))); - break; - case LINK_REMOVED: - if (store.network(event.networkLinkKey().networkId()) == null) { - // Event should be ignored when the network is not there. - break; - } - post(new TeTopologyEvent(LINK_REMOVED, - new NetworkLinkEventSubject(event.networkLinkKey(), null))); - break; - default: - break; - } - } - } catch (InterruptedException e) { - log.warn("TopologyMergerTask is interrupted"); - Thread.currentThread().interrupt(); - } catch (Exception e) { - log.warn("Unable to merge topology", e); - } - } - } - - private void removeSourceTeNode(Map teNodes, - TeNodeKey srcNodeKey, boolean postEvent) { - Long mergedTeNodeId = sourceNewTeNodeIdMap.remove(srcNodeKey); - if (mergedTeNodeId == null) { - return; - } - if (teNodes.remove(mergedTeNodeId) != null && postEvent) { - TeNodeKey nodeKey = new TeNodeKey(mergedTopologyKey, - mergedTeNodeId); - post(new TeTopologyEvent(TE_NODE_REMOVED, - new TeNodeEventSubject(nodeKey, null))); - post(new TeTopologyEvent(NODE_REMOVED, - new NetworkNodeEventSubject(TeMgrUtil - .networkNodeKey(nodeKey), null))); - } - } - - private void updateSourceTeNode(Map teNodes, TeTopologyKey srcTopoKey, - TeNode srcNode, boolean postEvent) { - TeNodeKey sourceTeNodeId = new TeNodeKey(srcTopoKey, srcNode.teNodeId()); - Long mergedTeNodeId = sourceNewTeNodeIdMap.get(sourceTeNodeId); - boolean addNode = false; - if (mergedTeNodeId == null) { - // New node - addNode = true; - mergedTeNodeId = nextTeNodeId; - nextTeNodeId++; - if (nextTeNodeId >= teNodeIpEnd.toInt()) { - nextTeNodeId = teNodeIpStart.toInt(); - log.warn("TE node Id is wrapped back"); - } - sourceNewTeNodeIdMap.put(sourceTeNodeId, mergedTeNodeId); - } - TeTopologyKey underlayTopologyId = null; // No underlay - TeNodeKey supportTeNodeId = null; // No supporting - - CommonNodeData common = new CommonNodeData(srcNode.name(), srcNode.adminStatus(), - srcNode.opStatus(), srcNode.flags()); // No change - Map connMatrices = srcNode.connectivityMatrices(); - List teLinkIds = srcNode.teLinkIds(); // No change - Map ttps = null; - if (MapUtils.isNotEmpty(srcNode.tunnelTerminationPoints())) { - ttps = Maps.newHashMap(); - for (Map.Entry entry : srcNode.tunnelTerminationPoints().entrySet()) { - TunnelTerminationPoint ttp = entry.getValue(); - ttps.put(entry.getKey(), - new DefaultTunnelTerminationPoint(ttp.ttpId(), ttp.switchingLayer(), - ttp.encodingLayer(), ttp.flags(), - ttp.interLayerLockList(), - ttp.localLinkConnectivityList(), - ttp.availAdaptBandwidth(), - null)); //Remove supporting TTP Ids - } - } - - List teTpIds = srcNode.teTerminationPointIds(); // No change - DefaultTeNode newNode = new DefaultTeNode(mergedTeNodeId, underlayTopologyId, - supportTeNodeId, sourceTeNodeId, common, connMatrices, teLinkIds, - ttps, teTpIds); - teNodes.put(mergedTeNodeId, newNode); - if (postEvent) { - //Post event for the TE node in the merged topology - TeNodeKey globalKey = new TeNodeKey(mergedTopologyKey, mergedTeNodeId); - post(new TeTopologyEvent(addNode ? TE_NODE_ADDED : TE_NODE_UPDATED, - new TeNodeEventSubject(globalKey, newNode))); - post(new TeTopologyEvent(addNode ? NODE_ADDED : NODE_UPDATED, - new NetworkNodeEventSubject(networkNodeKey(globalKey), - nodeBuilder(KeyId.keyId( - Ip4Address.valueOf((int) newNode.teNodeId()).toString()), - newNode)))); - } - } - - // Merge TE nodes - private void mergeNodes(Map nodes, TeTopology topology) { - - if (!MapUtils.isEmpty(topology.teNodes())) { - for (Map.Entry entry : topology.teNodes().entrySet()) { - updateSourceTeNode(nodes, topology.teTopologyId(), entry.getValue(), - mergedTopology != null); - } - } - } - - // Returns a new TeLink based on an existing TeLink with new attributes - private TeLink updateTeLink(TeLinkTpKey newKey, TeLinkTpKey peerTeLinkKey, - TeTopologyKey underlayTopologyId, TeLinkTpGlobalKey supportTeLinkId, - TeLinkTpGlobalKey sourceTeLinkId, ExternalLink externalLink, - TeLink exLink) { - UnderlayPath underlayPath = null; - if (underlayTopologyId != null && - underlayTopologyId.equals(exLink.underlayTeTopologyId())) { - underlayPath = new UnderlayPath(exLink.primaryPath(), - exLink.backupPaths(), exLink.tunnelProtectionType(), - exLink.sourceTtpId(), exLink.destinationTtpId(), - exLink.teTunnelId() - ); - } - - TePathAttributes teAttributes = new TePathAttributes(exLink.cost(), - exLink.delay(), exLink.srlgs()); - LinkBandwidth bandwidth = new LinkBandwidth(exLink.maxBandwidth(), - exLink.availBandwidth(), - exLink.maxAvailLspBandwidth(), - exLink.minAvailLspBandwidth(), - exLink.oduResource()); - BitSet flags = exLink.flags(); - if (peerTeLinkKey != null && - externalLink != null && externalLink.plugId() != null) { - // Assuming this is an inter-domain link which is merged with its peer, - // needs to clear BIT_ACCESS_INTERDOMAIN - flags.clear(BIT_ACCESS_INTERDOMAIN); - } else if (peerTeLinkKey == null && - externalLink != null && externalLink.plugId() != null) { - // Assuming this is an inter-domain link which lost its peer, - // needs to clear BIT_ACCESS_INTERDOMAIN - flags.set(BIT_ACCESS_INTERDOMAIN); - } - - CommonLinkData common = new CommonLinkData(exLink.adminStatus(), exLink.opStatus(), - flags, exLink.switchingLayer(), exLink.encodingLayer(), - externalLink, underlayPath, teAttributes, - exLink.administrativeGroup(), exLink.interLayerLocks(), - bandwidth); - return new DefaultTeLink(newKey, peerTeLinkKey, underlayTopologyId, - supportTeLinkId, sourceTeLinkId, common); - } - - private class LinkKeyPair { - private TeLinkTpKey firstKey; - private TeLinkTpKey secondKey; - - public LinkKeyPair(TeLinkTpKey firstKey) { - this.firstKey = firstKey; - } - - public TeLinkTpKey firstKey() { - return firstKey; - } - - public void setFirstKey(TeLinkTpKey firstKey) { - this.firstKey = firstKey; - } - - public TeLinkTpKey secondKey() { - return secondKey; - } - - public void setSecondKey(TeLinkTpKey secondKey) { - this.secondKey = secondKey; - } - - public boolean isFirstKey(TeLinkTpKey linkKey) { - return firstKey == null ? false : firstKey.equals(linkKey); - } - - public boolean isSecondKey(TeLinkTpKey linkKey) { - return secondKey == null ? false : secondKey.equals(linkKey); - } - - public boolean isEmpty() { - return firstKey == null && secondKey == null; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("firstKey", firstKey) - .add("secondKey", secondKey) - .toString(); - } - } - - private void removeSourceTeLink(Map teLinks, TeLinkTpGlobalKey teLinkKey, - boolean postEvent) { - TeNodeKey sourceTeNodeKey = teLinkKey.teNodeKey(); - Long newTeNodeId = sourceNewTeNodeIdMap.get(sourceTeNodeKey); - if (newTeNodeId == null) { - return; - } - TeLinkTpKey newLinkKey = new TeLinkTpKey(newTeNodeId, teLinkKey.teLinkTpId()); - TeLink teLink = teLinks.remove(newLinkKey); - if (teLink == null) { - return; - } - //Post event - if (postEvent) { - TeLinkTpGlobalKey globalKey = new TeLinkTpGlobalKey(mergedTopologyKey, - newLinkKey); - post(new TeTopologyEvent(TE_LINK_REMOVED, - new TeLinkEventSubject(globalKey, null))); - post(new TeTopologyEvent(LINK_REMOVED, - new NetworkLinkEventSubject(networkLinkKey(globalKey), - null))); - } - - if (teLink.externalLink() != null && teLink.externalLink().plugId() != null) { - // Update the LinkKeyPair in externalLinkMap - LinkKeyPair pair = externalLinkMap.get(teLink.externalLink().plugId()); - if (pair.isFirstKey(newLinkKey)) { - pair.setFirstKey(null); - } else if (pair.isSecondKey(newLinkKey)) { - pair.setSecondKey(null); - } - if (pair.isEmpty()) { - externalLinkMap.remove(teLink.externalLink().plugId()); - } - } - TeLinkTpKey peerTeLinkKey = teLink.peerTeLinkKey(); - if (peerTeLinkKey != null) { - // Update peerLink's peerTeLinkKey to null - TeLink peerLink = teLinks.get(peerTeLinkKey); - if (peerLink == null || peerLink.peerTeLinkKey() == null) { - return; - } - TeLink newPeerLink = updateTeLink(peerTeLinkKey, null, - peerLink.underlayTeTopologyId(), peerLink.supportingTeLinkId(), - peerLink.sourceTeLinkId(), peerLink.externalLink(), peerLink); - teLinks.put(peerTeLinkKey, newPeerLink); - if (postEvent) { - TeLinkTpGlobalKey globalKey = new TeLinkTpGlobalKey(mergedTopologyKey, - peerTeLinkKey); - post(new TeTopologyEvent(TE_LINK_UPDATED, - new TeLinkEventSubject(globalKey, - newPeerLink))); - post(new TeTopologyEvent(LINK_UPDATED, - new NetworkLinkEventSubject(networkLinkKey(globalKey), - linkBuilder(toNetworkLinkId(peerTeLinkKey), - newPeerLink)))); - } - } - } - - private void updateSourceTeLink(Map teLinks, TeTopologyKey srcTopoKey, - TeLink srcLink, boolean postEvent) { - TeNodeKey sourceTeNodeId = new TeNodeKey(srcTopoKey, - srcLink.teLinkKey().teNodeId()); - TeLinkTpKey newKey = new TeLinkTpKey( - sourceNewTeNodeIdMap.get(sourceTeNodeId), - srcLink.teLinkKey().teLinkTpId()); - TeLinkTpKey peerTeLinkKey = null; - if (srcLink.peerTeLinkKey() != null) { - TeNodeKey sourcePeerNode = new TeNodeKey(srcTopoKey, - srcLink.peerTeLinkKey().teNodeId()); - peerTeLinkKey = new TeLinkTpKey( - sourceNewTeNodeIdMap.get(sourcePeerNode), - srcLink.peerTeLinkKey().teLinkTpId()); - } - - if (srcLink.externalLink() != null && - srcLink.externalLink().plugId() != null) { - // externalLinkKey doesn't have topology Id. - // using plugId for now - LinkKeyPair pair = externalLinkMap.get(srcLink.externalLink().plugId()); - if (pair == null) { - // Store it in the map - externalLinkMap.put(srcLink.externalLink().plugId(), - new LinkKeyPair(newKey)); - } else { - if (newKey.equals(pair.firstKey())) { - peerTeLinkKey = pair.secondKey(); - } else if (newKey.equals(pair.secondKey())) { - peerTeLinkKey = pair.firstKey(); - } else if (pair.firstKey() == null) { - peerTeLinkKey = pair.secondKey(); - pair.setFirstKey(newKey); - } else if (pair.secondKey() == null) { - peerTeLinkKey = pair.firstKey(); - pair.setSecondKey(newKey); - } - - if (peerTeLinkKey != null) { - TeLink peerLink = teLinks.get(peerTeLinkKey); - if (peerLink != null && (peerLink.peerTeLinkKey() == null - || !peerLink.peerTeLinkKey().equals(newKey))) { - // Update peer Link with local link key - TeLink newPeerLink = updateTeLink(peerTeLinkKey, newKey, - peerLink.underlayTeTopologyId(), - peerLink.supportingTeLinkId(), - peerLink.sourceTeLinkId(), - peerLink.externalLink(), - peerLink); - teLinks.put(peerTeLinkKey, newPeerLink); - if (postEvent) { - TeLinkTpGlobalKey globalKey = new TeLinkTpGlobalKey(mergedTopologyKey, - peerTeLinkKey); - post(new TeTopologyEvent(TE_LINK_UPDATED, - new TeLinkEventSubject(globalKey, - newPeerLink))); - post(new TeTopologyEvent(LINK_UPDATED, - new NetworkLinkEventSubject( - networkLinkKey(globalKey), - linkBuilder(toNetworkLinkId(peerTeLinkKey), - newPeerLink)))); - } - } - } - } - } - - TeTopologyKey underlayTopologyId = null; // No underlay - TeLinkTpGlobalKey supportTeLinkId = null; // No support - // Source link for the new updated link - TeLinkTpGlobalKey sourceTeLinkId = new TeLinkTpGlobalKey(srcTopoKey, srcLink.teLinkKey()); - TeLink updatedLink = updateTeLink(newKey, peerTeLinkKey, underlayTopologyId, - supportTeLinkId, sourceTeLinkId, - srcLink.externalLink(), srcLink); - TeLinkTpGlobalKey newGlobalKey = new TeLinkTpGlobalKey(mergedTopologyKey, newKey); - boolean newLink = teLinks.get(newKey) == null ? true : false; - teLinks.put(newKey, updatedLink); - if (postEvent) { - //Post event - post(new TeTopologyEvent(newLink ? TE_LINK_ADDED : TE_LINK_UPDATED, - new TeLinkEventSubject(newGlobalKey, updatedLink))); - post(new TeTopologyEvent(newLink ? LINK_ADDED : LINK_UPDATED, - new NetworkLinkEventSubject(networkLinkKey(newGlobalKey), - linkBuilder(toNetworkLinkId(updatedLink.teLinkKey()), - updatedLink)))); - } - } - - // Merge TE links - private void mergeLinks(Map teLinks, TeTopology topology) { - if (!MapUtils.isEmpty(topology.teLinks())) { - for (Map.Entry entry : topology.teLinks().entrySet()) { - TeLink srcLink = entry.getValue(); - updateSourceTeLink(teLinks, topology.teTopologyId(), srcLink, - mergedTopology != null); - } - } - } - - // Update the merged topology with new TE nodes and links - private void updateMergedTopology(Map teNodes, Map teLinks) { - boolean newTopology = mergedTopology == null; - BitSet flags = newTopology ? new BitSet(TeConstants.FLAG_MAX_BITS) : mergedTopology.flags(); - flags.set(BIT_MERGED); - CommonTopologyData commonData = new CommonTopologyData(newTopology ? - toNetworkId(mergedTopologyKey) : - mergedTopology.networkId(), - NOT_OPTIMIZED, - flags, DeviceId.deviceId("localHost")); - mergedTopology = new DefaultTeTopology(mergedTopologyKey, teNodes, teLinks, - Long.toString(mergedTopologyKey.topologyId()), commonData); - mergedNetwork = networkBuilder(mergedTopology); - log.info("Nodes# {}, Links# {}", mergedTopology.teNodes().size(), mergedTopology.teLinks().size()); - } - - // Merge the new learned topology - private void mergeTopology(TeTopology topology) { - boolean newTopology = mergedTopology == null; - mergedTopologyKey = newTopology ? - new TeTopologyKey(providerId, DEFAULT_CLIENT_ID, - store.nextTeTopologyId()) : - mergedTopology.teTopologyId(); - - Map teNodes = newTopology || mergedTopology.teNodes() == null ? - Maps.newHashMap() : Maps.newHashMap(mergedTopology.teNodes()); - mergeNodes(teNodes, topology); - Map teLinks = newTopology || mergedTopology.teLinks() == null ? - Maps.newHashMap() : Maps.newHashMap(mergedTopology.teLinks()); - mergeLinks(teLinks, topology); - updateMergedTopology(teNodes, teLinks); - log.debug("mergedTopology {}", mergedTopology); - - if (newTopology) { - // Post events for the merged network topology; - post(new TeTopologyEvent(TE_TOPOLOGY_ADDED, mergedTopology)); - post(new TeTopologyEvent(NETWORK_ADDED, mergedNetwork)); - } - } - - private TeTopologyKey newTeTopologyKey(TeTopology teTopology) { - TeTopologyKey key = teTopology.teTopologyId(); - if (key == null || teTopology.teTopologyIdStringValue() == null) { - log.error("Ignoring the non-TE topology"); - throw new ApplicationException("Missing TE topology ID"); - } - // Get the topologyId numeric value - long idValue = key.topologyId(); - if (idValue == TeConstants.NIL_LONG_VALUE) { - if (teTopology.teTopologyIdStringValue() != null) { - try { - idValue = Long.parseLong(teTopology.teTopologyIdStringValue()); - } catch (NumberFormatException e) { - // Can't get the long value from the string. - // Use an assigned id value from local id pool, - idValue = store.nextTeTopologyId(); - } - return new TeTopologyKey(key.providerId(), key.clientId(), idValue); - } - } - return null; - } - - private class InternalConfigListener implements NetworkConfigListener { - - @Override - public void event(NetworkConfigEvent event) { - try { - providerId = cfgService.getConfig(appId, TeTopologyConfig.class) - .providerId(); - store.setProviderId(providerId); - teNodeIpStart = cfgService.getConfig(appId, TeTopologyConfig.class) - .teNodeIpStart(); - teNodeIpEnd = cfgService.getConfig(appId, TeTopologyConfig.class) - .teNodeIpEnd(); - mdsc = cfgService.getConfig(appId, TeTopologyConfig.class) - .mdsc().equals(MDSC_MODE); - nextTeNodeId = teNodeIpStart.toInt(); - } catch (ConfigException e) { - log.error("Configuration error {}", e); - } - } - - @Override - public boolean isRelevant(NetworkConfigEvent event) { - return event.configClass().equals(TeTopologyConfig.class) && - (event.type() == CONFIG_ADDED || - event.type() == CONFIG_UPDATED); - } - } - - @Override - public TeTopologies teTopologies() { - Map map; - if (MapUtils.isNotEmpty(store.teTopologies().teTopologies())) { - map = Maps.newHashMap(store.teTopologies().teTopologies()); - } else { - map = Maps.newHashMap(); - } - if (mergedTopology != null) { - map.put(mergedTopologyKey, mergedTopology); - } - return new DefaultTeTopologies(store.teTopologies().name(), map); - } - - @Override - public TeTopology teTopology(TeTopologyKey topologyId) { - if (mergedTopology != null && - topologyId != null && - topologyId.equals(mergedTopologyKey)) { - return mergedTopology; - } - return store.teTopology(topologyId); - } - - @Override - public TeTopology mergedTopology() { - return mergedTopology; - } - - @Override - public void updateTeTopology(TeTopology teTopology) { - TeTopologyKey newKey = null; - try { - newKey = newTeTopologyKey(teTopology); - } catch (ApplicationException e) { - log.error("Ignoring the non-TE topology"); - return; - } - - // TE topology is updated here from other APP or NBI, the flag - // BIT_CUSTOMIZED or BIT_MERGED should be set. - BitSet flags = teTopology.flags(); - if (flags == null || - !(flags.get(BIT_CUSTOMIZED) || flags.get(BIT_MERGED))) { - log.error("TE topology flags {} are not set properly", flags); - return; - } - - if (newKey != null) { - DefaultTeTopology newTopology = new DefaultTeTopology( - newKey, - teTopology.teNodes(), teTopology.teLinks(), - teTopology.teTopologyIdStringValue(), new CommonTopologyData(teTopology)); - // Update with new data - store.updateTeTopology(newTopology); - } else { - store.updateTeTopology(teTopology); - } - } - - @Override - public void removeTeTopology(TeTopologyKey topologyId) { - store.removeTeTopology(topologyId); - } - - @Override - public Networks networks() { - List networks; - if (CollectionUtils.isNotEmpty(store.networks())) { - networks = Lists.newArrayList(store.networks()); - } else { - networks = Lists.newArrayList(); - } - if (mergedNetwork != null) { - networks.add(mergedNetwork); - } - return new DefaultNetworks(networks); - } - - @Override - public Network network(KeyId networkId) { - if (mergedNetwork != null && - mergedNetwork.networkId().equals(networkId)) { - return mergedNetwork; - } - return store.network(networkId); - } - - @Override - public void updateNetwork(Network network) { - // TODO: This will be implemented if required. - } - - @Override - public void removeNetwork(KeyId networkId) { - // TODO: This will be implemented if required. - } - - @Override - public TeNode teNode(TeNodeKey nodeId) { - return nodeId.teTopologyKey().equals(mergedTopologyKey) ? - mergedTopology.teNode(nodeId.teNodeId()) : - store.teNode(nodeId); - } - - @Override - public TeLink teLink(TeLinkTpGlobalKey linkId) { - return linkId.teTopologyKey().equals(mergedTopologyKey) ? - mergedTopology.teLink(linkId.teLinkTpKey()) : - store.teLink(linkId); - } - - @Override - public TunnelTerminationPoint tunnelTerminationPoint(TtpKey ttpId) { - return ttpId.teTopologyKey().equals(mergedTopologyKey) ? - mergedTopology.teNode(ttpId.teNodeId()).tunnelTerminationPoint(ttpId.ttpId()) : - store.tunnelTerminationPoint(ttpId); - } - - @Override - public KeyId networkId(TeTopologyKey teTopologyKey) { - return teTopologyKey.equals(mergedTopologyKey) ? - mergedNetwork.networkId() : - store.networkId(teTopologyKey); - } - - @Override - public NetworkNodeKey nodeKey(TeNodeKey teNodeKey) { - return teNodeKey.teTopologyKey().equals(mergedTopologyKey) ? - networkNodeKey(teNodeKey) : - store.nodeKey(teNodeKey); - } - - @Override - public NetworkLinkKey linkKey(TeLinkTpGlobalKey teLinkKey) { - return teLinkKey.teTopologyKey().equals(mergedTopologyKey) ? - networkLinkKey(teLinkKey) : - store.linkKey(teLinkKey); - } - - @Override - public TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey) { - return teTpKey.teTopologyKey().equals(mergedTopologyKey) ? - new TerminationPointKey(networkNodeKey(teTpKey.teNodeKey()), - KeyId.keyId(Long.toString(teTpKey.teLinkTpId()))) : - store.terminationPointKey(teTpKey); - } - - @Override - public long teContollerId() { - return providerId; - } -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyMapEvent.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyMapEvent.java deleted file mode 100644 index 285c5a5338..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyMapEvent.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.TeTopologyEvent.Type; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.TeNodeKey; - -import com.google.common.base.MoreObjects; - -public class TeTopologyMapEvent { - private final Type type; - private TeTopologyKey teTopologyKey; - private TeNodeKey teNodeKey; - private TeLinkTpGlobalKey teLinkKey; - private KeyId networkKey; - private NetworkNodeKey networkNodeKey; - private NetworkLinkKey networkLinkKey; - - /** - * Creates an instance of TeTopologyMapEvent. - * - * @param type the map event type - */ - public TeTopologyMapEvent(Type type) { - this.type = type; - } - - /** - * Returns the map event type. - * - * @return the type - */ - public Type type() { - return type; - } - - /** - * Returns the TE topology key of the event. - * - * @return the teTopologyKey - */ - public TeTopologyKey teTopologyKey() { - return teTopologyKey; - } - - /** - * Sets the TE topology key of the event. - * - * @param teTopologyKey the teTopologyKey to set - */ - public void setTeTopologyKey(TeTopologyKey teTopologyKey) { - this.teTopologyKey = teTopologyKey; - } - - /** - * Returns the TE node key of the event. - * - * @return the teNodeKey - */ - public TeNodeKey teNodeKey() { - return teNodeKey; - } - - /** - * Sets the TE node key of the event. - * - * @param teNodeKey the teNodeKey to set - */ - public void setTeNodeKey(TeNodeKey teNodeKey) { - this.teNodeKey = teNodeKey; - } - - /** - * Returns the TE link key of the event. - * - * @return the teLinkKey - */ - public TeLinkTpGlobalKey teLinkKey() { - return teLinkKey; - } - - /** - * Sets the TE link key of the event. - * - * @param teLinkKey the teLinkKey to set - */ - public void setTeLinkKey(TeLinkTpGlobalKey teLinkKey) { - this.teLinkKey = teLinkKey; - } - - /** - * Returns the network key of the event. - * - * @return the networkKey - */ - public KeyId networkKey() { - return networkKey; - } - - /** - * Sets the network key of the event. - * - * @param networkKey the networkKey to set - */ - public void setNetworkKey(KeyId networkKey) { - this.networkKey = networkKey; - } - - /** - * Returns the network node key of the event. - * - * @return the networkNodeKey - */ - public NetworkNodeKey networkNodeKey() { - return networkNodeKey; - } - - /** - * Sets the network node key of the event. - * - * @param networkNodeKey the networkNodeKey to set - */ - public void setNetworkNodeKey(NetworkNodeKey networkNodeKey) { - this.networkNodeKey = networkNodeKey; - } - - /** - * Returns the network link key of the event. - * - * @return the networkLinkKey - */ - public NetworkLinkKey networkLinkKey() { - return networkLinkKey; - } - - /** - * Sets the network link key of the event. - * - * @param networkLinkKey the networkLinkKey to set - */ - public void setNetworkLinkKey(NetworkLinkKey networkLinkKey) { - this.networkLinkKey = networkLinkKey; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("type", type) - .add("teTopologyKey", teTopologyKey) - .add("teNodeKey", teNodeKey) - .add("teLinkKey", teLinkKey) - .add("networkKey", networkKey) - .add("networkNodeKey", networkNodeKey) - .add("networkLinkKey", networkLinkKey) - .toString(); - } - -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStore.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStore.java deleted file mode 100644 index 007d9403f4..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStore.java +++ /dev/null @@ -1,290 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import java.util.List; -import java.util.concurrent.BlockingQueue; - -import org.onosproject.store.Store; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.Network; -import org.onosproject.tetopology.management.api.TeTopologies; -import org.onosproject.tetopology.management.api.TeTopology; -import org.onosproject.tetopology.management.api.TeTopologyEvent; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TerminationPoint; -import org.onosproject.tetopology.management.api.node.TerminationPointKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint; - -/** - * Inventory of TE network topology. - */ -public interface TeTopologyStore - extends Store { - - /** - * Returns a collection of currently known networks. - * - * @return a collection of stored networks - */ - List networks(); - - /** - * Returns a network. - * - * @param networkId network id in URI format - * @return value of network - */ - Network network(KeyId networkId); - - /** - * Updates a network. - * - * @param network value of the network to be updated - */ - void updateNetwork(Network network); - - /** - * Removes a network. - * - * @param networkId network id in URI format - */ - void removeNetwork(KeyId networkId); - - /** - * Returns a network link. - * - * @param linkKey link key - * @return value of network link - */ - NetworkLink networkLink(NetworkLinkKey linkKey); - - /** - * Updates a network link. - * - * @param linkKey link key - * @param link link object to be updated - */ - void updateNetworkLink(NetworkLinkKey linkKey, NetworkLink link); - - /** - * Removes a network link. - * - * @param linkKey link key - */ - void removeNetworkLink(NetworkLinkKey linkKey); - - /** - * Returns a network node. - * - * @param nodeKey node key - * @return value of network node - */ - NetworkNode networkNode(NetworkNodeKey nodeKey); - - /** - * Updates a network node. - * - * @param nodeKey node key - * @param node node object to be updated - */ - void updateNetworkNode(NetworkNodeKey nodeKey, NetworkNode node); - - /** - * Removes a network node. - * - * @param nodeKey node key - */ - void removeNetworkNode(NetworkNodeKey nodeKey); - - /** - * Updates a terminationPoint. - * - * @param terminationPointKey termination point id - * @param terminationPoint termination point object to be updated - */ - void updateTerminationPoint(TerminationPointKey terminationPointKey, - TerminationPoint terminationPoint); - - /** - * Removes a terminationPoint. - * - * @param terminationPointKey termination point id - */ - void removeTerminationPoint(TerminationPointKey terminationPointKey); - - /** - * Returns a collection of currently known TE topologies. - * - * @return a collection of topologies - */ - TeTopologies teTopologies(); - - /** - * Returns the TE Topology identified by its Id. - * - * @param topologyId TE topology Key - * @return value of TeTopology - */ - TeTopology teTopology(TeTopologyKey topologyId); - - /** - * Creates or updates a TE topology. - * - * @param teTopology value of the TE topology to be updated - */ - void updateTeTopology(TeTopology teTopology); - - /** - * Removes the TE Topology identified by its Id. - * - * @param topologyId TE topology key - */ - void removeTeTopology(TeTopologyKey topologyId); - - /** - * Returns the TE node identified by its Id. - * - * @param nodeId the te node key - * @return value of node - */ - TeNode teNode(TeNodeKey nodeId); - - /** - * Creates or updates a TE Node. - * - * @param nodeKey te node id - * @param node node object to be updated - */ - void updateTeNode(TeNodeKey nodeKey, TeNode node); - - /** - * Removes the TE node identified by its Id. - * - * @param nodeId the te node key - */ - void removeTeNode(TeNodeKey nodeId); - - /** - * Returns the TE link identified by its Id. - * - * @param linkId the te link key - * @return value of link - */ - TeLink teLink(TeLinkTpGlobalKey linkId); - - /** - * Creates or updates a TE Link. - * - * @param linkKey link id - * @param link teLink object to be updated - */ - void updateTeLink(TeLinkTpGlobalKey linkKey, TeLink link); - - /** - * Removes the TE link identified by its Id. - * - * @param linkId the te link key - */ - void removeTeLink(TeLinkTpGlobalKey linkId); - - /** - * Returns a tunnel termination point identified by its id. - * - * @param ttpId the tunnel termination point key - * @return the tunnel termination point - */ - TunnelTerminationPoint tunnelTerminationPoint(TtpKey ttpId); - - /** - * Returns the network Id for a TE Topology key. - * - * @param teTopologyKey a TE topology key - * @return value of network Id - */ - KeyId networkId(TeTopologyKey teTopologyKey); - - /** - * Returns the network node key for a TE node key. - * - * @param teNodeKey a TE node key - * @return value of network node key - */ - NetworkNodeKey nodeKey(TeNodeKey teNodeKey); - - /** - * Returns the network link key for a TE link key. - * - * @param teLinkKey a TE node key - * @return value of network link key - */ - NetworkLinkKey linkKey(TeLinkTpGlobalKey teLinkKey); - - /** - * Returns the termination point key for a TE termination point key. - * - * @param teTpKey a TE termination point key - * @return value of termination point key - */ - TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey); - - /** - * Returns the long value of next available TE topology id. - * - * @return value of TE topology id - */ - long nextTeTopologyId(); - - /** - * Returns the next available TE node Id in a TE topology. - * - * @param topologyKey TE topology key - * @return value of TE node id - */ - long nextTeNodeId(TeTopologyKey topologyKey); - - /** - * Sets the next available TE node Id in a TE topology. - * - * @param topologyKey TE topology key - * @param nextNodeId value of next TE node id - */ - void setNextTeNodeId(TeTopologyKey topologyKey, long nextNodeId); - - /** - * Returns the queue to store the events originating from consistent maps. - * - * @return value of the blocking queue - */ - BlockingQueue mapEventQueue(); - - /** - * Sets the provider ID. - * - * @param providerId value of provider Id - */ - void setProviderId(long providerId); - -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStoreDelegate.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStoreDelegate.java deleted file mode 100644 index cfecd63e7d..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStoreDelegate.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management.impl; - -import org.onosproject.store.StoreDelegate; -import org.onosproject.tetopology.management.api.TeTopologyEvent; - -/** - * Abstraction of TE networks store delegate. - */ -public interface TeTopologyStoreDelegate extends StoreDelegate { - -} diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/package-info.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/package-info.java deleted file mode 100644 index fb0324e430..0000000000 --- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * TE Topology Management implementation. - */ -package org.onosproject.tetopology.management.impl; diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/DefaultBuilder.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/DefaultBuilder.java deleted file mode 100644 index 1c82fcc03a..0000000000 --- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/DefaultBuilder.java +++ /dev/null @@ -1,332 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management; - -import java.util.BitSet; -import java.util.List; -import java.util.Map; - -import org.onlab.packet.Ip4Address; -import org.onosproject.net.DeviceId; -import org.onosproject.tetopology.management.api.DefaultNetwork; -import org.onosproject.tetopology.management.api.EncodingType; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.Network; -import org.onosproject.tetopology.management.api.OptimizationType; -import org.onosproject.tetopology.management.api.SwitchingType; -import org.onosproject.tetopology.management.api.TeConstants; -import org.onosproject.tetopology.management.api.TeStatus; -import org.onosproject.tetopology.management.api.TeTopologyId; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.link.CommonLinkData; -import org.onosproject.tetopology.management.api.link.DefaultNetworkLink; -import org.onosproject.tetopology.management.api.link.DefaultTeLink; -import org.onosproject.tetopology.management.api.link.ExternalLink; -import org.onosproject.tetopology.management.api.link.LinkBandwidth; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.OduResource; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpKey; -import org.onosproject.tetopology.management.api.link.TePathAttributes; -import org.onosproject.tetopology.management.api.link.UnderlayPath; -import org.onosproject.tetopology.management.api.node.CommonNodeData; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrix; -import org.onosproject.tetopology.management.api.node.DefaultNetworkNode; -import org.onosproject.tetopology.management.api.node.DefaultTeNode; -import org.onosproject.tetopology.management.api.node.DefaultTerminationPoint; -import org.onosproject.tetopology.management.api.node.DefaultTunnelTerminationPoint; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.NodeTpKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TerminationPoint; -import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint; -import org.onosproject.tetopology.management.impl.TeMgrUtil; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -/** - * Builds a sample abstract TE Topology, which consists of one node(represents - * an entire network), one inter-domain link and one TTP. - */ -public final class DefaultBuilder { - private static final String NODEIP = "100.10.10.10"; - // Bandwidth in GigaBits/second - private static final float[] ODU0BW = {1.25f, 1.25f, 1.25f, 1.25f, 1.25f, 1.25f, 1.25f, 1.25f}; - private static final float[] ODU2BW = {10, 10, 10, 10, 10, 10, 10, 10}; - private static final float[] ODU3BW = {40, 40, 40, 40, 40, 40, 40, 40}; - private static final float[] ODU4BW = {100, 100, 100, 100, 100, 100, 100, 100}; - - private static final String ODU2 = "ODU2"; - private static final String ODU3 = "ODU3"; - private static final String ODU4 = "ODU4"; - - private static final long PROVIDER_ID = 0x100; - private static final long CLIENT_ID = 0x0a0a0a0a; - private static final long CLIENT_NIL = 0; - private static final long ABSTRACT_TOPOLOGY_ID = 100; - private static final long NATIVE_TOPOLOGY_ID = 1; - private static final long NUM_TPS = 1; - private static final long NUM_TTPS = 1; - private static final boolean ABSTRACT = true; - private static final boolean UNABSTRACT = false; - private static final int FIRST_INDEX = 0; - private static final long INTER_DOMAIN_LINK_PLUGID = 100; - private static final long LINK_COST = 500; - private static final long LINK_DELAY = 2000; - private static final long LINK_SRLG = 150; - private static final String DOMAIN_ID = "DomainX"; - - private static NetworkNode networkNode; - private static TeNode teNode; - private static NetworkLink networkLink; - private static TeLink teLink; - private static Network network; - private static TunnelTerminationPoint ttp; - - private static TeTopologyKey teTopologyKey = new TeTopologyKey(PROVIDER_ID, - CLIENT_ID, - ABSTRACT_TOPOLOGY_ID); - - // no instantiation - private DefaultBuilder() { - } - - private static TunnelTerminationPoint ttpBuilder(long ttpId) { - return new DefaultTunnelTerminationPoint(ttpId, SwitchingType.OTN_TDM_CAPABLE, - EncodingType.LSP_ENCODING_ODUK, - new BitSet(TeConstants.FLAG_MAX_BITS), - null, null, - ODU2BW, null); //10G for ODU2 - } - - private static TerminationPoint tpBuilder(long teTpId) { - return new DefaultTerminationPoint(KeyId.keyId(Long.toString(teTpId)), null, teTpId); - } - - private static NetworkNode nodeBuilder(String nodeIp, long numTps, long numTtps, - TeTopologyKey underlayTopologyId, TeNodeKey supportTeNodeId, - TeNodeKey sourceTeNodeId, boolean isAbstract) { - long teNodeId = Ip4Address.valueOf(nodeIp).toInt(); - BitSet flags = new BitSet(TeConstants.FLAG_MAX_BITS); - - if (isAbstract) { - flags.set(TeNode.BIT_ABSTRACT); - } - CommonNodeData common = new CommonNodeData(nodeIp, TeStatus.UP, TeStatus.UP, flags); - Map connMatrices = null; - List teTpIds = Lists.newArrayList(); - Map tps = Maps.newHashMap(); - for (long i = 0; i < numTps; i++) { - teTpIds.add(i); - tps.put(KeyId.keyId(Long.toString(i)), tpBuilder(i)); - } - //TTP - Map ttps = Maps.newHashMap(); - for (long i = 0; i < numTtps; i++) { - ttps.put(i, ttpBuilder(i)); - } - ttp = ttps.get((long) FIRST_INDEX); - //TeNode - teNode = new DefaultTeNode(teNodeId, underlayTopologyId, - supportTeNodeId, sourceTeNodeId, - common, connMatrices, teTpIds, ttps, teTpIds); - List supportingNodeIds = null; - if (supportTeNodeId != null) { - supportingNodeIds = Lists - .newArrayList(TeMgrUtil.networkNodeKey(supportTeNodeId)); - } - - return new DefaultNetworkNode(KeyId.keyId(nodeIp), supportingNodeIds, teNode, tps); - } - - private static LinkBandwidth linkBwBuilder(String odu) { - - float[] maxBandwidth; //Maximum bandwidth, Size is MAX_PRIORITY + 1 - float[] avaiBandwidth; //Unreserved bandwidth, Size is MAX_PRIORITY + 1 - float[] maxAvialLspBandwidth; //Maximum available bandwidth for a LSP - float[] minAvialLspBandwidth; //Minimum available bandwidth for a LSP - short odu0s; - short odu1s; - short odu2s; - short odu2es = 0; - short odu3s; - short odu4s; - short oduFlexes = 0; - - switch (odu) { - case ODU3: - maxBandwidth = ODU3BW; - avaiBandwidth = ODU3BW; - maxAvialLspBandwidth = ODU3BW; - minAvialLspBandwidth = ODU0BW; - odu0s = 32; - odu1s = 16; - odu2s = 4; - odu3s = 1; - odu4s = 0; - break; - case ODU4: - maxBandwidth = ODU4BW; - avaiBandwidth = ODU4BW; - maxAvialLspBandwidth = ODU4BW; - minAvialLspBandwidth = ODU0BW; - odu0s = 80; - odu1s = 40; - odu2s = 10; - odu3s = 2; - odu4s = 1; - break; - default: - maxBandwidth = ODU2BW; - avaiBandwidth = ODU2BW; - maxAvialLspBandwidth = ODU2BW; - minAvialLspBandwidth = ODU0BW; - odu0s = 8; - odu1s = 4; - odu2s = 1; - odu3s = 0; - odu4s = 0; - } - - OduResource oduRrc = new OduResource(odu0s, odu1s, odu2s, odu2es, odu3s, - odu4s, oduFlexes); - return new LinkBandwidth(maxBandwidth, avaiBandwidth, maxAvialLspBandwidth, - minAvialLspBandwidth, oduRrc); - } - - private static NetworkLink linkBuilder(TeLinkTpKey teLinkKey, TeLinkTpKey peerTeLinkKey, - TeTopologyKey underlayTopologyId, TeLinkTpGlobalKey supportTeLinkId, - TeLinkTpGlobalKey sourceTeLinkId, boolean isAbstract, Long plugid, - Long cost, Long delay, List srlgs, String odu) { - //NetworkLink - KeyId linkId = TeMgrUtil.toNetworkLinkId(teLinkKey); - NodeTpKey source = TeMgrUtil.nodeTpKey(teLinkKey); - NodeTpKey destination = null; - if (peerTeLinkKey != null) { - destination = TeMgrUtil.nodeTpKey(peerTeLinkKey); - } - List supportingLinkIds = null; - if (supportTeLinkId != null) { - supportingLinkIds = Lists - .newArrayList(TeMgrUtil.networkLinkKey(supportTeLinkId)); - } - BitSet flags = new BitSet(TeConstants.FLAG_MAX_BITS); - if (isAbstract) { - flags.set(TeLink.BIT_ABSTRACT); - } - ExternalLink externalLink = null; - - if (plugid != null) { - // Inter-Domain Link - flags.set(TeLink.BIT_ACCESS_INTERDOMAIN); - externalLink = new ExternalLink(null, plugid); - } - UnderlayPath underlayPath = null; - Long adminGroup = null; - List interLayerLocks = null; - teLink = new DefaultTeLink(teLinkKey, peerTeLinkKey, underlayTopologyId, - supportTeLinkId, sourceTeLinkId, - new CommonLinkData(TeStatus.UP, TeStatus.UP, flags, - SwitchingType.OTN_TDM_CAPABLE, - EncodingType.LSP_ENCODING_ODUK, - externalLink, underlayPath, - new TePathAttributes(cost, delay, srlgs), - adminGroup, interLayerLocks, linkBwBuilder(odu))); - return new DefaultNetworkLink(linkId, source, destination, supportingLinkIds, teLink); - } - - private static Network networkBuilder(TeTopologyId teTopologyId, KeyId supportingNetworkId, - Map nodes, - Map links, - boolean serverProvided, - DeviceId ownerId, - OptimizationType optType) { - KeyId networkId = TeMgrUtil.toNetworkId(teTopologyId); - List supportingNetworkIds = null; - if (supportingNetworkId != null) { - supportingNetworkIds = Lists.newArrayList(supportingNetworkId); - } - return new DefaultNetwork(networkId, supportingNetworkIds, nodes, links, teTopologyId, - serverProvided, ownerId, optType); - } - - /** - * Returns the key for the sample TE Topology. - * - * @return value of TE Topology key - */ - public static TeTopologyKey teTopologyKey() { - return teTopologyKey; - } - - /** - * Returns the abstract TE Node in the sample TE Topology. - * - * @return value of TE node - */ - public static TeNode teNode() { - return teNode; - } - - /** - * Returns the TE link in the sample TE Topology. - * - * @return value of TE link - */ - public static TeLink teLink() { - return teLink; - } - - /** - * Builds a sample abstract TE Topology, which consists of one abstract node - * representing an entire physical network, one inter-domain link and one - * TTP. - * - * @return value of network with an abstract TE Topology - */ - public static Network buildSampleAbstractNetwork() { - TeTopologyKey underlayTopologyId = new TeTopologyKey(PROVIDER_ID, - CLIENT_NIL, - NATIVE_TOPOLOGY_ID); - Map nodes = Maps.newHashMap(); - networkNode = nodeBuilder(NODEIP, NUM_TPS, NUM_TTPS, underlayTopologyId, - null, null, ABSTRACT); - nodes.put(networkNode.nodeId(), networkNode); - - Map links = Maps.newHashMap(); - TeLinkTpKey node1tp1 = new TeLinkTpKey(networkNode.teNode().teNodeId(), - networkNode.teNode() - .teTerminationPointIds() - .get(FIRST_INDEX)); - networkLink = linkBuilder(node1tp1, null, null, null, null, UNABSTRACT, - INTER_DOMAIN_LINK_PLUGID, LINK_COST, - LINK_DELAY, Lists.newArrayList(LINK_SRLG), - ODU4); - links.put(networkLink.linkId(), networkLink); - DeviceId ownerId = DeviceId.deviceId(DOMAIN_ID); - TeTopologyId topologyId = new TeTopologyId(PROVIDER_ID, CLIENT_ID, - Long.toString(ABSTRACT_TOPOLOGY_ID)); - network = networkBuilder(topologyId, null, nodes, links, false, - ownerId, OptimizationType.NOT_OPTIMIZED); - return network; - } - -} diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java deleted file mode 100644 index 24dcad5259..0000000000 --- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java +++ /dev/null @@ -1,1037 +0,0 @@ -/** - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.MapUtils; -import org.onosproject.net.DeviceId; -import org.onosproject.store.AbstractStore; -import org.onosproject.tetopology.management.api.CommonTopologyData; -import org.onosproject.tetopology.management.api.DefaultNetwork; -import org.onosproject.tetopology.management.api.DefaultTeTopologies; -import org.onosproject.tetopology.management.api.DefaultTeTopology; -import org.onosproject.tetopology.management.api.KeyId; -import org.onosproject.tetopology.management.api.Network; -import org.onosproject.tetopology.management.api.OptimizationType; -import org.onosproject.tetopology.management.api.TeConstants; -import org.onosproject.tetopology.management.api.TeTopologies; -import org.onosproject.tetopology.management.api.TeTopology; -import org.onosproject.tetopology.management.api.TeTopologyEvent; -import org.onosproject.tetopology.management.api.TeTopologyId; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.TeUtils; -import org.onosproject.tetopology.management.api.link.DefaultNetworkLink; -import org.onosproject.tetopology.management.api.link.DefaultTeLink; -import org.onosproject.tetopology.management.api.link.NetworkLink; -import org.onosproject.tetopology.management.api.link.NetworkLinkKey; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.link.TeLinkTpKey; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrix; -import org.onosproject.tetopology.management.api.node.ConnectivityMatrixKey; -import org.onosproject.tetopology.management.api.node.DefaultNetworkNode; -import org.onosproject.tetopology.management.api.node.DefaultTeNode; -import org.onosproject.tetopology.management.api.node.DefaultTerminationPoint; -import org.onosproject.tetopology.management.api.node.NetworkNode; -import org.onosproject.tetopology.management.api.node.NetworkNodeKey; -import org.onosproject.tetopology.management.api.node.NodeTpKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TerminationPoint; -import org.onosproject.tetopology.management.api.node.TerminationPointKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetopology.management.api.node.TunnelTerminationPoint; -import org.onosproject.tetopology.management.impl.InternalNetwork; -import org.onosproject.tetopology.management.impl.InternalNetworkLink; -import org.onosproject.tetopology.management.impl.InternalNetworkNode; -import org.onosproject.tetopology.management.impl.InternalTeLink; -import org.onosproject.tetopology.management.impl.InternalTeNode; -import org.onosproject.tetopology.management.impl.InternalTeTopology; -import org.onosproject.tetopology.management.impl.InternalTerminationPoint; -import org.onosproject.tetopology.management.impl.TeMgrUtil; -import org.onosproject.tetopology.management.impl.TeTopologyMapEvent; -import org.onosproject.tetopology.management.impl.TeTopologyStore; -import org.onosproject.tetopology.management.impl.TeTopologyStoreDelegate; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.slf4j.Logger; - -import java.util.BitSet; -import java.util.List; -import java.util.Map; -import java.util.concurrent.BlockingQueue; - -import static org.onosproject.tetopology.management.api.OptimizationType.NOT_OPTIMIZED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_REMOVED; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Implementation of the TE network store. - */ -@Component(immediate = true, service = TeTopologyStore.class) -public class SimpleTeTopologyStore - extends AbstractStore - implements TeTopologyStore { - private static final String STORE_NAME = "TE_NETWORK_TOPOLOGY_STORE"; - private final Logger log = getLogger(getClass()); - - // Track TE topologies by TE Topology key - private Map teTopologyMap = Maps - .newConcurrentMap(); - // Track networks by network Id - private Map networkMap = Maps.newConcurrentMap(); - // Track TE nodes by TE node key - private Map teNodeMap = Maps.newConcurrentMap(); - // Track ConnectivityMatrix by its key - private Map connMatrixMap = Maps - .newConcurrentMap(); - // Track Tunnel Termination Points by its key - private Map ttpMap = Maps - .newConcurrentMap(); - // Track network nodes by network node key - private Map networkNodeMap = Maps - .newConcurrentMap(); - // Track TE links by its key - private Map teLinkMap = Maps - .newConcurrentMap(); - // Track network links by network link key - private Map networkLinkMap = Maps - .newConcurrentMap(); - // Track Termination points by termination point key - private Map tpMap = Maps - .newConcurrentMap(); - // Track termination point keys by TE termination point Key - private Map tpKeyMap = Maps - .newConcurrentMap(); - private long providerId; - - @Activate - public void activate() { - log.info("Started"); - } - - @Deactivate - public void deactivate() { - teTopologyMap.clear(); - networkMap.clear(); - teNodeMap.clear(); - connMatrixMap.clear(); - networkNodeMap.clear(); - teLinkMap.clear(); - networkLinkMap.clear(); - tpMap.clear(); - tpKeyMap.clear(); - ttpMap.clear(); - log.info("Stopped"); - } - - @Override - public TeTopologies teTopologies() { - Map teTopologies = Maps.newHashMap(); - if (MapUtils.isNotEmpty(teTopologyMap)) { - for (TeTopologyKey key : teTopologyMap.keySet()) { - teTopologies.put(key, teTopology(key)); - } - } - return new DefaultTeTopologies(STORE_NAME, teTopologies); - } - - private TeTopology teTopology(TeTopologyKey topologyId, - InternalTeTopology intTopology) { - if (intTopology == null) { - return null; - } - Map teNodes = null; - if (CollectionUtils.isNotEmpty(intTopology.teNodeKeys())) { - teNodes = Maps.newHashMap(); - for (TeNodeKey key : intTopology.teNodeKeys()) { - teNodes.put(key.teNodeId(), teNode(key)); - } - } - Map teLinks = null; - if (CollectionUtils.isNotEmpty(intTopology.teLinkKeys())) { - teLinks = Maps.newHashMap(); - for (TeLinkTpGlobalKey key : intTopology.teLinkKeys()) { - teLinks.put(key.teLinkTpKey(), teLink(key)); - } - } - return new DefaultTeTopology(topologyId, teNodes, teLinks, - intTopology.teTopologyId(), - intTopology.topologyData()); - } - - @Override - public TeTopology teTopology(TeTopologyKey topologyId) { - InternalTeTopology intTopology = teTopologyMap.get(topologyId); - return teTopology(topologyId, intTopology); - } - - private void removeTopologyeMapEntrys(InternalTeTopology curTopology) { - // Remove TE nodes - if (CollectionUtils.isNotEmpty(curTopology.teNodeKeys())) { - for (TeNodeKey key : curTopology.teNodeKeys()) { - removeTeNode(key, true); - } - } - // Remove TE Links - if (CollectionUtils.isNotEmpty(curTopology.teLinkKeys())) { - for (TeLinkTpGlobalKey key : curTopology.teLinkKeys()) { - removeTeLink(key, true); - } - } - } - - @Override - public void updateTeTopology(TeTopology teTopology) { - InternalTeTopology curTopology = teTopologyMap - .get(teTopology.teTopologyId()); - if (curTopology != null) { - // Existing topology update - // Remove existing map entries first, which should be removed by - // its own events - removeTopologyeMapEntrys(curTopology); - } - // Update TE nodes - List nodeIds = null; - if (MapUtils.isNotEmpty(teTopology.teNodes())) { - nodeIds = Lists.newArrayList(); - for (Map.Entry entry : teTopology.teNodes() - .entrySet()) { - TeNodeKey teNodeKey = new TeNodeKey(teTopology.teTopologyId(), - entry.getKey()); - NetworkNodeKey nodeKey = TeMgrUtil.networkNodeKey(teNodeKey); - updateTeNode(teNodeKey, entry.getValue(), true, true, nodeKey); - nodeIds.add(nodeKey); - } - } - // Update TE links - List linkIds = null; - if (MapUtils.isNotEmpty(teTopology.teLinks())) { - linkIds = Lists.newArrayList(); - for (Map.Entry entry : teTopology.teLinks() - .entrySet()) { - TeLinkTpGlobalKey teLinkKey = new TeLinkTpGlobalKey(teTopology - .teTopologyId(), entry.getKey()); - NetworkLinkKey linkKey = TeMgrUtil.networkLinkKey(teLinkKey); - updateTeLink(teLinkKey, entry.getValue(), true, true, linkKey); - linkIds.add(linkKey); - } - } - // Finally Update teTopologyMap - InternalTeTopology newTopology = new InternalTeTopology(teTopology); - teTopologyMap.put(teTopology.teTopologyId(), newTopology); - - if (curTopology == null) { - // New topology, update networkMap - InternalNetwork intNetwork = new InternalNetwork(); - intNetwork.setServerProvided(false); - intNetwork.setTeTopologyKey(teTopology.teTopologyId()); - intNetwork.setNodeIds(nodeIds); - intNetwork.setLinkIds(linkIds); - networkMap.put(teTopology.networkId(), intNetwork); - } - } - - @Override - public void removeTeTopology(TeTopologyKey topologyId) { - // Remove it from teTopologyMap - InternalTeTopology topology = teTopologyMap.remove(topologyId); - if (topology != null) { - removeTopologyeMapEntrys(topology); - // Remove it from networkMap; - networkMap.remove(topology.topologyData().networkId()); - } - } - - @Override - public List networks() { - if (MapUtils.isEmpty(networkMap)) { - return null; - } - List networks = Lists.newArrayList(); - for (KeyId networkId : networkMap.keySet()) { - networks.add(network(networkId)); - } - return networks; - } - - private Network network(KeyId networkId, InternalNetwork curNetwork) { - if (curNetwork == null) { - return null; - } - List supportingNetworkIds = curNetwork.supportingNetworkIds(); - Map nodes = null; - if (CollectionUtils.isNotEmpty(curNetwork.nodeIds())) { - nodes = Maps.newHashMap(); - for (NetworkNodeKey key : curNetwork.nodeIds()) { - nodes.put(key.nodeId(), networkNode(key)); - } - } - Map links = null; - if (CollectionUtils.isNotEmpty(curNetwork.linkIds())) { - links = Maps.newHashMap(); - for (NetworkLinkKey key : curNetwork.linkIds()) { - links.put(key.linkId(), networkLink(key)); - } - } - TeTopologyId topologyId = null; - DeviceId ownerId = null; - OptimizationType opt = NOT_OPTIMIZED; - if (curNetwork.teTopologyKey() != null - && teTopology(curNetwork.teTopologyKey()) != null) { - topologyId = new TeTopologyId(curNetwork.teTopologyKey() - .providerId(), curNetwork.teTopologyKey().clientId(), - teTopology(curNetwork.teTopologyKey()) - .teTopologyIdStringValue()); - ownerId = teTopology(curNetwork.teTopologyKey()).ownerId(); - opt = teTopologyMap.get(curNetwork.teTopologyKey()).topologyData() - .optimization(); - } - return new DefaultNetwork(networkId, supportingNetworkIds, nodes, links, - topologyId, curNetwork.serverProvided(), - ownerId, opt); - } - - @Override - public Network network(KeyId networkId) { - InternalNetwork curNetwork = networkMap.get(networkId); - return network(networkId, curNetwork); - } - - private void removeNetworkMapEntrys(InternalNetwork curNetwork, - boolean teRemove) { - // Remove TE nodes - if (CollectionUtils.isNotEmpty(curNetwork.nodeIds())) { - for (NetworkNodeKey key : curNetwork.nodeIds()) { - removeNetworkNode(key, teRemove); - } - } - // Remove TE Links - if (CollectionUtils.isNotEmpty(curNetwork.linkIds())) { - for (NetworkLinkKey key : curNetwork.linkIds()) { - removeNetworkLink(key, teRemove); - } - } - } - - private TeTopologyKey newTeTopologyKey(TeTopologyId teTopologyId) { - long idValue; - try { - idValue = Long.parseLong(teTopologyId.topologyId()); - } catch (NumberFormatException e) { - // Can't get the long value from the string. - // Use an assigned id value from local id pool, - // Ideally id should be assigned per provider base. - idValue = nextTeTopologyId(); - } - return new TeTopologyKey(teTopologyId.providerId(), - teTopologyId.clientId(), idValue); - } - - @Override - public void updateNetwork(Network network) { - InternalNetwork curNetwork = networkMap.get(network.networkId()); - if (curNetwork != null) { - // Existing topology update - // Remove existing map entries first, - removeNetworkMapEntrys(curNetwork, false); - } - TeTopologyKey topoKey = null; - if (network.teTopologyId() != null) { - topoKey = newTeTopologyKey(network.teTopologyId()); - } - // Update TE nodes - List teNodeKeys = null; - if (MapUtils.isNotEmpty(network.nodes())) { - teNodeKeys = Lists.newArrayList(); - for (Map.Entry entry : network.nodes() - .entrySet()) { - NetworkNodeKey nodeKey = new NetworkNodeKey(network.networkId(), - entry.getKey()); - TeNodeKey teNodeKey = null; - if (topoKey != null && entry.getValue().teNode() != null) { - teNodeKey = new TeNodeKey(topoKey, entry.getValue().teNode() - .teNodeId()); - } - updateNetworkNode(nodeKey, entry.getValue(), true, false, - teNodeKey); - teNodeKeys.add(teNodeKey); - } - } - // Update TE links - List teLinkKeys = null; - if (MapUtils.isNotEmpty(network.links())) { - teLinkKeys = Lists.newArrayList(); - for (Map.Entry entry : network.links() - .entrySet()) { - NetworkLinkKey linkKey = new NetworkLinkKey(network.networkId(), - entry.getKey()); - TeLinkTpGlobalKey teLinkKey = null; - if (topoKey != null && entry.getValue().teLink() != null) { - teLinkKey = new TeLinkTpGlobalKey(topoKey, entry.getValue() - .teLink().teLinkKey()); - } - updateNetworkLink(linkKey, entry.getValue(), true, false, - teLinkKey); - teLinkKeys.add(teLinkKey); - } - } - - // New network, update TE Topology first - if (curNetwork == null) { - InternalTeTopology intTopo = new InternalTeTopology(network - .teTopologyId().topologyId()); - intTopo.setTeNodeKeys(teNodeKeys); - intTopo.setTeLinkKeys(teLinkKeys); - BitSet flags = new BitSet(TeConstants.FLAG_MAX_BITS); - flags.set(TeTopology.BIT_LEARNT); - if (network.teTopologyId().clientId() == providerId) { - // Hard rule for now - flags.set(TeTopology.BIT_CUSTOMIZED); - } - CommonTopologyData common = new CommonTopologyData(network.networkId(), NOT_OPTIMIZED, - flags, network.ownerId()); - intTopo.setTopologydata(common); - teTopologyMap.put(topoKey, intTopo); - // Assume new topology - TeTopologyEvent topologyEvent = new TeTopologyEvent(TE_TOPOLOGY_ADDED, - teTopology(topoKey)); - notifyDelegate(topologyEvent); - } - // Finally Update networkMap - InternalNetwork newNetwork = new InternalNetwork(network); - newNetwork.setTeTopologyKey(topoKey); - networkMap.put(network.networkId(), newNetwork); - // Assume new network - TeTopologyEvent topologyEvent = new TeTopologyEvent(NETWORK_ADDED, - network(network.networkId())); - notifyDelegate(topologyEvent); - } - - @Override - public void removeNetwork(KeyId networkId) { - // Remove it from networkMap - InternalNetwork network = networkMap.remove(networkId); - TeTopologyEvent topologyEvent = new TeTopologyEvent(NETWORK_REMOVED, - new DefaultNetwork(networkId, - null, - null, - null, - null, - false, - null, - NOT_OPTIMIZED)); - notifyDelegate(topologyEvent); - if (network != null && network.teTopologyKey() != null) { - removeNetworkMapEntrys(network, false); - teTopologyMap.remove(network.teTopologyKey()); - topologyEvent = new TeTopologyEvent(TE_TOPOLOGY_REMOVED, - new DefaultTeTopology(network - .teTopologyKey(), null, null, null, null)); - notifyDelegate(topologyEvent); - } - } - - private TeNode teNode(TeNodeKey nodeKey, InternalTeNode intNode) { - if (intNode == null) { - return null; - } - Map connMatrices = null; - if (CollectionUtils.isNotEmpty(intNode.connMatrixKeys())) { - connMatrices = Maps.newHashMap(); - for (ConnectivityMatrixKey key : intNode.connMatrixKeys()) { - connMatrices.put(key.entryId(), connMatrixMap.get(key)); - } - } - List teLinkIds = null; - if (CollectionUtils.isNotEmpty(intNode.teLinkTpKeys())) { - teLinkIds = Lists.newArrayList(); - for (TeLinkTpGlobalKey key : intNode.teLinkTpKeys()) { - teLinkIds = TeUtils.addListElement(teLinkIds, key.teLinkTpId()); - } - } - List tps = null; - if (CollectionUtils.isNotEmpty(intNode.teTpKeys())) { - tps = Lists.newArrayList(); - for (TeLinkTpGlobalKey key : intNode.teTpKeys()) { - tps = TeUtils.addListElement(tps, key.teLinkTpId()); - } - } - Map ttps = null; - if (CollectionUtils.isNotEmpty(intNode.ttpKeys())) { - ttps = Maps.newHashMap(); - for (TtpKey key : intNode.ttpKeys()) { - ttps.put(key.ttpId(), ttpMap.get(key)); - } - } - return new DefaultTeNode(nodeKey.teNodeId(), - intNode.underlayTopologyKey(), - intNode.supportNodeKey(), - intNode.sourceTeNodeKey(), intNode.teData(), - connMatrices, teLinkIds, ttps, tps); - } - - @Override - public TeNode teNode(TeNodeKey nodeKey) { - InternalTeNode intNode = teNodeMap.get(nodeKey); - return teNode(nodeKey, intNode); - } - - private void removeTeNodeMapEntrys(InternalTeNode intNode) { - // Remove connMatrixMap entries for the node - if (CollectionUtils.isNotEmpty(intNode.connMatrixKeys())) { - for (ConnectivityMatrixKey key : intNode.connMatrixKeys()) { - connMatrixMap.remove(key); - } - } - // Remove ttpMap entries for the node - if (CollectionUtils.isNotEmpty(intNode.ttpKeys())) { - for (TtpKey key : intNode.ttpKeys()) { - ttpMap.remove(key); - } - } - } - - private void updateTeNode(TeNodeKey nodeKey, TeNode node, - boolean parentUpdate, boolean teNodeUpdate, - NetworkNodeKey networkNodeKey) { - InternalTeTopology intTopo = teTopologyMap.get(nodeKey.teTopologyKey()); - if (intTopo == null && !parentUpdate) { - log.error("TE Topology is not in dataStore for nodeUpdate {}", - nodeKey); - return; - } - InternalTeNode curNode = teNodeMap.get(nodeKey); - // Update connMatrixMap - if (MapUtils.isNotEmpty(node.connectivityMatrices())) { - for (Map.Entry entry : node - .connectivityMatrices().entrySet()) { - connMatrixMap - .put(new ConnectivityMatrixKey(nodeKey, entry.getKey()), - entry.getValue()); - } - } - // Update ttpMap - if (MapUtils.isNotEmpty(node.tunnelTerminationPoints())) { - for (Map.Entry entry : node - .tunnelTerminationPoints().entrySet()) { - ttpMap.put(new TtpKey(nodeKey, entry.getKey()), - entry.getValue()); - } - } - // Update TE Termination Points - - // Update teNodeMap - InternalTeNode intNode = new InternalTeNode(nodeKey, node, - networkNodeKey, - parentUpdate); - teNodeMap.put(nodeKey, intNode); - if (curNode == null && !parentUpdate && intTopo != null) { - // Update InternalTeTopology - intTopo.setChildUpdate(true); - TeUtils.addListElement(intTopo.teNodeKeys(), nodeKey); - } - // Update networkNodeMap - if (teNodeUpdate) { - updateNetworkNode(networkNodeKey, networkNode(node), parentUpdate, - teNodeUpdate, nodeKey); - } - } - - private NetworkNode networkNode(TeNode node) { - KeyId nodeId = KeyId.keyId(Long.toString(node.teNodeId())); - List supportingNodeIds = null; - if (node.supportingTeNodeId() != null) { - supportingNodeIds = Lists.newArrayList(); - supportingNodeIds.add(new NetworkNodeKey(TeMgrUtil.toNetworkId((node - .supportingTeNodeId().teTopologyKey())), KeyId.keyId(Long - .toString(node.supportingTeNodeId().teNodeId())))); - } - Map tps = null; - if (node.teTerminationPointIds() != null) { - tps = Maps.newHashMap(); - for (Long teTpId : node.teTerminationPointIds()) { - tps.put(KeyId.keyId(Long.toString(teTpId)), - new DefaultTerminationPoint(KeyId - .keyId(Long.toString(teTpId)), null, teTpId)); - } - } - return new DefaultNetworkNode(nodeId, supportingNodeIds, node, tps); - } - - @Override - public void updateTeNode(TeNodeKey nodeKey, TeNode node) { - updateTeNode(nodeKey, node, false, true, - TeMgrUtil.networkNodeKey(nodeKey)); - } - - private void removeTeNode(TeNodeKey nodeKey, boolean teNodeRemove) { - // Remove it from InternalTeTopology first - InternalTeTopology intTopo = teTopologyMap.get(nodeKey.teTopologyKey()); - if (intTopo != null - && CollectionUtils.isNotEmpty(intTopo.teNodeKeys())) { - intTopo.setChildUpdate(true); - intTopo.teNodeKeys().remove(nodeKey); - } - // Then remove it from teNodeMap - InternalTeNode node = teNodeMap.remove(nodeKey); - removeTeNodeMapEntrys(node); - // Remove it from networkNodeMap - if (teNodeRemove && node != null) { - removeNetworkNode(node.networkNodeKey(), teNodeRemove); - } - } - - @Override - public void removeTeNode(TeNodeKey nodeKey) { - removeTeNode(nodeKey, true); - } - - private NetworkNode networkNode(NetworkNodeKey nodeKey, - InternalNetworkNode intNode) { - if (intNode == null) { - return null; - } - Map tps = Maps.newHashMap(); - for (KeyId tpId : intNode.tpIds()) { - tps.put(tpId, - terminationPoint(new TerminationPointKey(nodeKey, tpId))); - - } - return new DefaultNetworkNode(nodeKey.nodeId(), - intNode.supportingNodeIds(), - teNode(intNode.teNodeKey()), tps); - } - - @Override - public NetworkNode networkNode(NetworkNodeKey nodeKey) { - InternalNetworkNode intNode = networkNodeMap.get(nodeKey); - return networkNode(nodeKey, intNode); - } - - private void updateNetworkNode(NetworkNodeKey nodeKey, NetworkNode node, - boolean parentUpdate, boolean teNodeUpdate, - TeNodeKey teNodeKey) { - InternalNetwork intNework = null; - if (!parentUpdate) { - intNework = networkMap.get(nodeKey.networkId()); - if (intNework == null) { - log.error("Network is not in dataStore for nodeUpdate {}", - nodeKey); - return; - } - } - - InternalNetworkNode exNode = networkNodeMap.get(nodeKey); - if (exNode != null && CollectionUtils.isNotEmpty(exNode.tpIds())) { - // Remove the TerminationPoints first - for (KeyId tpId : exNode.tpIds()) { - removeTerminationPoint(new TerminationPointKey(nodeKey, tpId)); - } - } - - if (MapUtils.isNotEmpty(node.terminationPoints())) { - // Update with new TerminationPoints - for (Map.Entry entry : node - .terminationPoints().entrySet()) { - updateTerminationPoint(new TerminationPointKey(nodeKey, - entry.getKey()), - entry.getValue(), parentUpdate, - teNodeKey); - } - } - - // Update teNodeMap first - if (!teNodeUpdate && teNodeKey != null && node.teNode() != null) { - updateTeNode(teNodeKey, node.teNode(), parentUpdate, teNodeUpdate, - nodeKey); - } - // Update networkNodeMap - InternalNetworkNode intNode = new InternalNetworkNode(node, - parentUpdate); - intNode.setTeNodeKey(teNodeKey); - networkNodeMap.put(nodeKey, intNode); - if (exNode == null && !parentUpdate && intNework != null) { - // Update the InternalNetwork - intNework.setChildUpdate(true); - TeUtils.addListElement(intNework.nodeIds(), nodeKey); - } - } - - @Override - public void updateNetworkNode(NetworkNodeKey nodeKey, NetworkNode node) { - TeNodeKey teNodeKey = null; - if (node.teNode() != null) { - teNodeKey = new TeNodeKey(networkMap.get(nodeKey.networkId()) - .teTopologyKey(), node.teNode().teNodeId()); - } - updateNetworkNode(nodeKey, node, false, false, teNodeKey); - } - - private void removeNetworkNode(NetworkNodeKey nodeKey, - boolean teNodeRemove) { - // Update the InternalNetwork - InternalNetwork intNework = networkMap.get(nodeKey.networkId()); - if (intNework != null - && CollectionUtils.isNotEmpty(intNework.nodeIds())) { - intNework.setChildUpdate(true); - intNework.nodeIds().remove(nodeKey); - } - InternalNetworkNode intNode = networkNodeMap.remove(nodeKey); - if (intNode != null && CollectionUtils.isNotEmpty(intNode.tpIds())) { - // Remove the TerminationPoints first - for (KeyId tpId : intNode.tpIds()) { - removeTerminationPoint(new TerminationPointKey(nodeKey, tpId)); - } - } - if (!teNodeRemove && intNode != null) { - // Now remove it from teNodeMap - removeTeNode(intNode.teNodeKey(), teNodeRemove); - } - } - - @Override - public void removeNetworkNode(NetworkNodeKey nodeKey) { - removeNetworkNode(nodeKey, false); - } - - private TeLink teLink(TeLinkTpGlobalKey linkKey, InternalTeLink intLink) { - if (intLink == null) { - return null; - } - return new DefaultTeLink(linkKey.teLinkTpKey(), intLink.peerTeLinkKey(), - intLink.underlayTopologyKey(), - intLink.supportingLinkKey(), - intLink.sourceTeLinkKey(), intLink.teData()); - } - - @Override - public TeLink teLink(TeLinkTpGlobalKey linkKey) { - InternalTeLink intLink = teLinkMap.get(linkKey); - return teLink(linkKey, intLink); - } - - private void updateTeLink(TeLinkTpGlobalKey linkKey, TeLink link, - boolean parentUpdate, boolean teLinkUpdate, - NetworkLinkKey networkLinkKey) { - InternalTeTopology intTopo = teTopologyMap.get(linkKey.teTopologyKey()); - if (intTopo == null && !parentUpdate) { - log.error("TE Topology is not in dataStore for linkUpdate {}", - linkKey); - return; - } - InternalTeNode intNode = teNodeMap.get(linkKey.teNodeKey()); - if (intNode == null && !parentUpdate) { - log.error("TE node is not in dataStore for linkUpdate {}", linkKey); - return; - } - InternalTeLink exLink = teLinkMap.get(linkKey); - - // Update teLinkMap - InternalTeLink intLink = new InternalTeLink(link, parentUpdate); - intLink.setNetworkLinkKey(networkLinkKey); - teLinkMap.put(linkKey, intLink); - if (exLink == null && !parentUpdate) { - if (intTopo != null) { - // Update the InternalTeTopology - intTopo.setChildUpdate(true); - intTopo.setTeLinkKeys(TeUtils - .addListElement(intTopo.teLinkKeys(), linkKey)); - } - if (intNode != null) { - // Update the InternalNode - intNode.setChildUpdate(true); - intNode.setTeLinkTpKeys(TeUtils - .addListElement(intNode.teLinkTpKeys(), linkKey)); - } - } - - // Update networkLinkMap - if (teLinkUpdate) { - updateNetworkLink(networkLinkKey, networkLink(link), parentUpdate, - teLinkUpdate, linkKey); - } - } - - private NetworkLink networkLink(TeLink link) { - KeyId linkId = TeMgrUtil.toNetworkLinkId(link.teLinkKey()); - NodeTpKey source = null; - if (link.teLinkKey() != null) { - source = new NodeTpKey(KeyId - .keyId(Long.toString(link.teLinkKey().teNodeId())), KeyId - .keyId(Long - .toString(link.teLinkKey().teLinkTpId()))); - } - NodeTpKey dest = null; - if (link.peerTeLinkKey() != null) { - dest = new NodeTpKey(KeyId - .keyId(Long.toString(link.peerTeLinkKey().teNodeId())), - KeyId.keyId(Long.toString(link.peerTeLinkKey() - .teLinkTpId()))); - } - List supportingLinkIds = null; - if (link.supportingTeLinkId() != null) { - supportingLinkIds = Lists.newArrayList(); - supportingLinkIds.add(new NetworkLinkKey(TeMgrUtil.toNetworkId(link - .supportingTeLinkId().teTopologyKey()), TeMgrUtil - .toNetworkLinkId(link.supportingTeLinkId() - .teLinkTpKey()))); - } - return new DefaultNetworkLink(linkId, source, dest, supportingLinkIds, - link); - } - - @Override - public void updateTeLink(TeLinkTpGlobalKey linkKey, TeLink link) { - updateTeLink(linkKey, link, false, true, - TeMgrUtil.networkLinkKey(linkKey)); - } - - private void removeTeLink(TeLinkTpGlobalKey linkKey, boolean teLinkRemove) { - // Remove it from InternalTeTopology first - InternalTeTopology intTopo = teTopologyMap.get(linkKey.teTopologyKey()); - if (intTopo != null - && CollectionUtils.isNotEmpty(intTopo.teLinkKeys())) { - intTopo.setChildUpdate(true); - intTopo.teLinkKeys().remove(linkKey); - } - // Remove it from InternalTeNode - InternalTeNode intNode = teNodeMap.get(linkKey.teNodeKey()); - if (intNode != null - && CollectionUtils.isNotEmpty(intNode.teLinkTpKeys())) { - intNode.setChildUpdate(true); - intNode.teLinkTpKeys().remove(linkKey); - } - // Then remove it from teLinkMap - InternalTeLink link = teLinkMap.remove(linkKey); - if (teLinkRemove && link != null) { - // Remove it from networkLinkMap - removeNetworkLink(link.networkLinkKey(), teLinkRemove); - } - } - - @Override - public void removeTeLink(TeLinkTpGlobalKey linkKey) { - removeTeLink(linkKey, true); - } - - private NetworkLink networkLink(NetworkLinkKey linkKey, - InternalNetworkLink intLink) { - if (intLink == null) { - return null; - } - return new DefaultNetworkLink(linkKey.linkId(), intLink.source(), - intLink.destination(), - intLink.supportingLinkIds(), - teLink(intLink.teLinkKey())); - } - - @Override - public NetworkLink networkLink(NetworkLinkKey linkKey) { - InternalNetworkLink intLink = networkLinkMap.get(linkKey); - return networkLink(linkKey, intLink); - } - - private void updateNetworkLink(NetworkLinkKey linkKey, NetworkLink link, - boolean parentUpdate, boolean teLinkUpdate, - TeLinkTpGlobalKey teLinkKey) { - InternalNetwork intNework = null; - if (!parentUpdate) { - intNework = networkMap.get(linkKey.networkId()); - if (intNework == null) { - log.error("Network is not in dataStore for linkUpdate {}", - linkKey); - return; - } - } - - InternalNetworkLink exLink = networkLinkMap.get(linkKey); - - // Now update teLinkMap first - if (!teLinkUpdate && teLinkKey != null) { - updateTeLink(teLinkKey, link.teLink(), parentUpdate, teLinkUpdate, - linkKey); - } - // Update networkLinkMap - InternalNetworkLink intLink = new InternalNetworkLink(link, - parentUpdate); - intLink.setTeLinkKey(teLinkKey); - networkLinkMap.put(linkKey, intLink); - if (exLink == null && !parentUpdate && intNework != null) { - // Update the InternalNetwork - intNework.setChildUpdate(true); - TeUtils.addListElement(intNework.linkIds(), linkKey); - } - } - - @Override - public void updateNetworkLink(NetworkLinkKey linkKey, NetworkLink link) { - TeLinkTpGlobalKey teLinkKey = null; - if (link.teLink() != null) { - teLinkKey = new TeLinkTpGlobalKey(networkMap - .get(linkKey.networkId()).teTopologyKey(), - link.teLink().teLinkKey()); - } - - updateNetworkLink(linkKey, link, false, false, teLinkKey); - } - - private void removeNetworkLink(NetworkLinkKey linkKey, - boolean teLinkRemove) { - // Update the InternalNetwork - InternalNetwork intNework = networkMap.get(linkKey.networkId()); - if (intNework != null - && CollectionUtils.isNotEmpty(intNework.linkIds())) { - intNework.setChildUpdate(true); - intNework.linkIds().remove(linkKey); - } - // Remove it from networkLinkMap - InternalNetworkLink intLink = networkLinkMap.remove(linkKey); - if (!teLinkRemove && intLink != null && intLink.teLinkKey() != null) { - // Now remove it from teLinkMap - removeTeLink(intLink.teLinkKey(), teLinkRemove); - } - } - - @Override - public void removeNetworkLink(NetworkLinkKey linkKey) { - removeNetworkLink(linkKey, false); - } - - private TerminationPoint terminationPoint(TerminationPointKey tpKey) { - InternalTerminationPoint intTp = tpMap.get(tpKey); - if (intTp == null) { - return null; - } - return new DefaultTerminationPoint(tpKey.tpId(), - intTp.supportingTpIds(), - intTp.teTpKey().teLinkTpId()); - } - - private void updateTerminationPoint(TerminationPointKey tpKey, - TerminationPoint tp, - boolean parentUpdate, - TeNodeKey teNodeKey) { - TeNodeKey myTeNodeKey; - InternalNetworkNode intNode = null; - if (!parentUpdate) { - intNode = networkNodeMap.get(tpKey); - if (intNode == null) { - log.error(" node is not in dataStore for tp update {}", tpKey); - return; - } - myTeNodeKey = intNode.teNodeKey(); - } else { - myTeNodeKey = teNodeKey; - } - TeLinkTpGlobalKey teTpKey = new TeLinkTpGlobalKey(myTeNodeKey, - tp.teTpId()); - - boolean newTp = tpMap.get(tpKey) == null; - InternalTerminationPoint intTp = new InternalTerminationPoint(tp); - intTp.setTeTpKey(teTpKey); - tpMap.put(tpKey, intTp); - if (newTp) { - // Update tpKeyMap - tpKeyMap.put(teTpKey, tpKey); - if (!parentUpdate && intNode != null) { - // Update InternalNetworkNode - intNode.setChildUpdate(true); - intNode.setTpIds(TeUtils.addListElement(intNode.tpIds(), - tpKey.tpId())); - } - } - } - - @Override - public void updateTerminationPoint(TerminationPointKey tpKey, - TerminationPoint tp) { - updateTerminationPoint(tpKey, tp, false, null); - } - - @Override - public void removeTerminationPoint(TerminationPointKey tpKey) { - // Update InternalNetworkNode - InternalNetworkNode intNode = networkNodeMap.get(tpKey); - if (intNode != null && CollectionUtils.isNotEmpty(intNode.tpIds())) { - intNode.setChildUpdate(true); - intNode.tpIds().remove(tpKey.tpId()); - } - // Remove it from tpMap - InternalTerminationPoint tp = tpMap.remove(tpKey); - // Remove it from tpKeyMap - if (tp != null) { - tpKeyMap.remove(tp.teTpKey()); - } - } - - @Override - public TunnelTerminationPoint tunnelTerminationPoint(TtpKey ttpId) { - return ttpMap.get(ttpId); - } - - @Override - public long nextTeTopologyId() { - return 0; - } - - @Override - public long nextTeNodeId(TeTopologyKey topoKey) { - return teTopologyMap.get(topoKey).nextTeNodeId(); - } - - @Override - public void setNextTeNodeId(TeTopologyKey topoKey, long nextNodeId) { - teTopologyMap.get(topoKey).setNextTeNodeId(nextNodeId); - } - - @Override - public KeyId networkId(TeTopologyKey teTopologyKey) { - return teTopologyMap.get(teTopologyKey).topologyData().networkId(); - } - - @Override - public NetworkNodeKey nodeKey(TeNodeKey teNodeKey) { - return teNodeMap.get(teNodeKey).networkNodeKey(); - } - - @Override - public NetworkLinkKey linkKey(TeLinkTpGlobalKey teLinkKey) { - return teLinkMap.get(teLinkKey).networkLinkKey(); - } - - @Override - public TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey) { - return tpKeyMap.get(teTpKey); - } - - @Override - public void setProviderId(long providerId) { - this.providerId = providerId; - } - - @Override - public BlockingQueue mapEventQueue() { - return null; - } -} - diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/TeTopologyManagerTest.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/TeTopologyManagerTest.java deleted file mode 100644 index 770b2c9b73..0000000000 --- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/TeTopologyManagerTest.java +++ /dev/null @@ -1,183 +0,0 @@ -/** - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.tetopology.management; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.onosproject.net.NetTestTools.injectEventDispatcher; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_REMOVED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_ADDED; -import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_REMOVED; - -import java.util.List; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.common.event.impl.TestEventDispatcher; -import org.onosproject.event.Event; -import org.onosproject.net.provider.AbstractProvider; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.tetopology.management.api.Network; -import org.onosproject.tetopology.management.api.TeTopology; -import org.onosproject.tetopology.management.api.TeTopologyEvent; -import org.onosproject.tetopology.management.api.TeTopologyListener; -import org.onosproject.tetopology.management.api.TeTopologyProvider; -import org.onosproject.tetopology.management.api.TeTopologyProviderRegistry; -import org.onosproject.tetopology.management.api.TeTopologyProviderService; -import org.onosproject.tetopology.management.api.TeTopologyService; -import org.onosproject.tetopology.management.api.link.TeLink; -import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey; -import org.onosproject.tetopology.management.api.node.TeNode; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.impl.TeMgrUtil; -import org.onosproject.tetopology.management.impl.TeTopologyManager; - -import com.google.common.collect.Lists; - -/** - * Test TeTopology service and TeTopologyProvider service. - */ -public class TeTopologyManagerTest { - private static final ProviderId PID = new ProviderId("test", "TeTopologyManagerTest"); - - private TeTopologyManager mgr; - protected TeTopologyService service; - protected TeTopologyProviderRegistry registry; - protected TeTopologyProviderService providerService; - protected TestProvider provider; - protected TestListener listener = new TestListener(); - - @Before - public void setUp() { - mgr = new TeTopologyManager(); - service = mgr; - registry = mgr; - mgr.store = new SimpleTeTopologyStore(); - - injectEventDispatcher(mgr, new TestEventDispatcher()); - - mgr.activateBasics(); - service.addListener(listener); - - provider = new TestProvider(); - providerService = registry.register(provider); - assertTrue("providerService should not be null", providerService != null); - assertTrue("Provider should be registered", - registry.getProviders().contains(provider.id())); - } - - @After - public void tearDown() { - registry.unregister(provider); - assertFalse("provider should not be registered", - registry.getProviders().contains(provider.id())); - service.removeListener(listener); - mgr.deactivateBasics(); - } - - private void createNetwork() { - Network originNetwork = DefaultBuilder.buildSampleAbstractNetwork(); - providerService.networkUpdated(originNetwork); - Network network = service - .network(TeMgrUtil.toNetworkId(DefaultBuilder.teTopologyKey())); - assertNotNull("Network should be found", network); - } - - /** - * Checks the right events are received when a network with TE topology is - * added. - */ - @Test - public void networkAdded() { - createNetwork(); - validateEvents(TE_TOPOLOGY_ADDED, NETWORK_ADDED); - } - - /** - * Checks the TE topology components are set properly in Manager and Store - * when a network is added. - */ - @Test - public void teTopologyVerify() { - createNetwork(); - TeTopology teTopology = service - .teTopology(DefaultBuilder.teTopologyKey()); - assertNotNull("TeTopology should be found", teTopology); - assertTrue("Number of TE nodes should be 1", - teTopology.teNodes().size() == 1); - assertTrue("Number of TE links should be 1", - teTopology.teLinks().size() == 1); - TeNode teNode = service - .teNode(new TeNodeKey(DefaultBuilder.teTopologyKey(), - DefaultBuilder.teNode().teNodeId())); - assertNotNull("TeNode should be found", teNode); - assertTrue("TE node should be identical", teNode.equals(DefaultBuilder.teNode())); - assertTrue("Number of TTPs should be 1", - teNode.tunnelTerminationPoints().size() == 1); - TeLink teLink = service - .teLink(new TeLinkTpGlobalKey(DefaultBuilder - .teTopologyKey(), DefaultBuilder.teLink().teLinkKey())); - assertNotNull("TeLink should be found", teLink); - } - - /** - * Checks the right events are received when a network with TE topology is - * added and then removed. - */ - @Test - public void networkRemoved() { - createNetwork(); - providerService.networkRemoved(TeMgrUtil - .toNetworkId(DefaultBuilder.teTopologyKey())); - validateEvents(TE_TOPOLOGY_ADDED, NETWORK_ADDED, NETWORK_REMOVED, - TE_TOPOLOGY_REMOVED); - } - - /** - * Validates whether the manager receives the right events. - * - * @param types a set of types of control message event - */ - protected void validateEvents(Enum... types) { - int i = 0; - assertEquals("wrong events received", types.length, listener.events.size()); - for (Event event : listener.events) { - assertEquals("incorrect event type", types[i], event.type()); - i++; - } - listener.events.clear(); - } - - private class TestProvider extends AbstractProvider implements TeTopologyProvider { - protected TestProvider() { - super(PID); - } - } - - private static class TestListener implements TeTopologyListener { - final List events = Lists.newArrayList(); - - @Override - public void event(TeTopologyEvent event) { - events.add(event); - } - } - -} diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/package-info.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/package-info.java deleted file mode 100644 index a9bb817ed4..0000000000 --- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * The TE topology implementation test functions. - */ -package org.onosproject.tetopology.management; diff --git a/apps/tetunnel/BUILD b/apps/tetunnel/BUILD deleted file mode 100644 index 9467b005bc..0000000000 --- a/apps/tetunnel/BUILD +++ /dev/null @@ -1,15 +0,0 @@ -BUNDLES = [ - "//apps/tunnel/api:onos-apps-tunnel-api", - "//apps/tetunnel/api:onos-apps-tetunnel-api", - "//apps/tetunnel/app:onos-apps-tetunnel-app", -] - -onos_app( - app_name = "org.onosproject.tetunnel", - category = "Traffic Engineering", - description = "Application to create and manage TE tunnels.", - included_bundles = BUNDLES, - required_apps = ["org.onosproject.tetopology"], - title = "TE Tunnel Core", - url = "http://onosproject.org", -) diff --git a/apps/tetunnel/api/BUILD b/apps/tetunnel/api/BUILD deleted file mode 100644 index 0d454779be..0000000000 --- a/apps/tetunnel/api/BUILD +++ /dev/null @@ -1,8 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + [ - "//apps/tunnel/api:onos-apps-tunnel-api", - "//apps/tetopology/api:onos-apps-tetopology-api", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelAdminService.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelAdminService.java deleted file mode 100644 index d99d988cc9..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelAdminService.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api; - -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; - -import java.util.List; - -/** - * Service for administering the TE Tunnel attributes. - *

- * Please note that this service works with the existing Tunnel subsystem - * together, just as an extension to the tunnel subsystem, and only focuses - * on TE Tunnel attributes management. - */ -public interface TeTunnelAdminService extends TeTunnelService { - - /** - * Creates a TE Tunnel with the supplied attributes, and returns an - * identifier for the tunnel on success, or null on failure. - * - * @param teTunnel TE Tunnel attributes - * @return created tunnel identifier or null if failed - */ - TunnelId createTeTunnel(TeTunnel teTunnel); - - /** - * Sets the corresponding Tunnel identifier of the TE Tunnel specified - * by the given key. - * - * @param teTunnelKey TE Tunnel key - * @param tunnelId corresponding tunnel identifier - */ - void setTunnelId(TeTunnelKey teTunnelKey, TunnelId tunnelId); - - /** - * Updates TE Tunnel attributes with supplied information, the old - * attributes will be totally overwrote by the new attributes. - * - * @param teTunnel new TE Tunnel attributes - */ - void updateTeTunnel(TeTunnel teTunnel); - - /** - * Updates state of a TE tunnel specified by the given key. - * - * @param key TE tunnel key - * @param state new state of the tunnel - */ - void updateTunnelState(TeTunnelKey key, Tunnel.State state); - - /** - * Removes a TE Tunnel specified by the given key. - * - * @param teTunnelKey TE Tunnel key - */ - void removeTeTunnel(TeTunnelKey teTunnelKey); - - /** - * Sets segment tunnels of a E2E cross-domain tunnel. - * - * @param e2eTunnelKey key of the E2E tunnel - * @param segmentTunnels list of segment tunnels - */ - void setSegmentTunnel(TeTunnelKey e2eTunnelKey, - List segmentTunnels); - - //TODO: add interfaces for teGlobal and teLspState -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelProviderService.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelProviderService.java deleted file mode 100644 index f1038e98c0..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelProviderService.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api; - -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.tetunnel.api.lsp.TeLsp; -import org.onosproject.tetunnel.api.lsp.TeLspKey; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; - -/** - * Service through which tunnel providers can inject TE Tunnel attributes - * into the system. - *

- * Please note that this service works with the existing Tunnel subsystem - * together, just as an extension to the tunnel subsystem, and only focus on TE - * Tunnel attributes management. - */ -public interface TeTunnelProviderService { - - /** - * Signals that a TE Tunnel is created with supplied attributes. - * - * @param teTunnel new created TE Tunnel attributes - * @return created tunnel identifier or null if failed - */ - TunnelId teTunnelAdded(TeTunnel teTunnel); - - /** - * Signals that a TE Tunnel with specified attributes is removed. - * - * @param teTunnel removed TE Tunnel - */ - void teTunnelRemoved(TeTunnel teTunnel); - - /** - * Updates TE Tunnel attributes with supplied information, the old - * attributes will be totally overwrote by the new attributes. - * - * @param teTunnel new TE Tunnel attributes - */ - void updateTeTunnel(TeTunnel teTunnel); - - /** - * Updates state of a TE tunnel specified by the given key. - * - * @param key TE tunnel key - * @param state new state of the tunnel - */ - void updateTunnelState(TeTunnelKey key, Tunnel.State state); - - /** - * Signifies that a TE LSP is created. - * - * @param lsp new created TE LSP attributes - * @return key of the TE LSP or null if failed - */ - TeLspKey teLspAdded(TeLsp lsp); - - /** - * Signifies that a TE LSP is removed. - * - * @param lsp removed TE LSP - */ - void teLspRemoved(TeLsp lsp); - - /** - * Updates TE LSP attributes. - * - * @param lsp new TE LSP attributes - */ - void updateTeLsp(TeLsp lsp); - - //TODO: add interfaces for teGlobal and teLspState -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelService.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelService.java deleted file mode 100644 index b6106214b3..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelService.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api; - -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetunnel.api.lsp.TeLsp; -import org.onosproject.tetunnel.api.lsp.TeLspKey; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; - -import java.util.Collection; - -/** - * Service for TE Tunnel attributes management. - *

- * Please note that this service works with the existing Tunnel subsystem - * together, just as an extension to the tunnel subsystem, and only focus on TE - * Tunnel attributes management. - */ -public interface TeTunnelService { - - /** - * Returns the TE Tunnel with the specified key. - * - * @param teTunnelKey TE Tunnel key - * @return TeTunnel or null if one with the given key is not known - */ - TeTunnel getTeTunnel(TeTunnelKey teTunnelKey); - - /** - * Returns the TE Tunnel with the specified identifier. - * - * @param tunnelId corresponding tunnel identifier - * @return TeTunnel or null if one with the given identifier is not known - */ - TeTunnel getTeTunnel(TunnelId tunnelId); - - /** - * Returns the corresponding tunnel identifier of a TE tunnel with the - * specified key. - * - * @param teTunnelKey TE Tunnel key - * @return corresponding tunnel identifier or null if one with the given - * key is not known - */ - TunnelId getTunnelId(TeTunnelKey teTunnelKey); - - /** - * Returns a collection of currently known TE tunnels. - * - * @return collection of TE tunnels - */ - Collection getTeTunnels(); - - /** - * Returns a collection of currently known TE Tunnels filtered by the - * specified TE tunnel type. - * - * @param type TE tunnel type to filter by - * @return filtered collection of TE tunnels - */ - Collection getTeTunnels(TeTunnel.Type type); - - /** - * Returns a collection of currently known TE tunnels filtered by specified - * TE topology key. - * - * @param teTopologyKey TE topology key to filter by - * @return filtered collection of TE tunnels - */ - Collection getTeTunnels(TeTopologyKey teTopologyKey); - - /** - * Returns the TE LSP with the specified key. - * - * @param key TE LSP key - * @return TeLsp or null if one with the given key is not known - */ - TeLsp getTeLsp(TeLspKey key); - - /** - * Returns a collection of currently known TE LSPs. - * - * @return collection of TeLsp - */ - Collection getTeLsps(); - - //TODO: add interfaces for teGlobal and teLspState -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelStore.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelStore.java deleted file mode 100644 index 13d834eeba..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/TeTunnelStore.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api; - -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetunnel.api.lsp.TeLsp; -import org.onosproject.tetunnel.api.lsp.TeLspKey; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; - -import java.util.Collection; - -/** - * Manages TE tunnel attributes. - *

- * Please note that this service works with the existing Tunnel subsystem - * together, just as an extension to the tunnel subsystem, and only focus on TE - * Tunnel attributes management. - */ -public interface TeTunnelStore { - - /** - * Creates a TE Tunnel with the supplied attributes, and returns true on - * success, or false on failure. - * - * @param teTunnel TE Tunnel attributes - * @return true on success, or false on failure - */ - boolean addTeTunnel(TeTunnel teTunnel); - - /** - * Sets the corresponding Tunnel identifier of the TE Tunnel specified - * by the given key. - * - * @param teTunnelKey TE Tunnel key - * @param tunnelId corresponding tunnel identifier - */ - void setTunnelId(TeTunnelKey teTunnelKey, TunnelId tunnelId); - - /** - * Returns the corresponding Tunnel identifier of the TE tunnel. - * - * @param teTunnelKey TE Tunnel key - * @return corresponding Tunnel identifier - */ - TunnelId getTunnelId(TeTunnelKey teTunnelKey); - - /** - * Updates TE Tunnel attributes with supplied information, the old - * attributes will be totally overwrote by the new attributes. - * - * @param teTunnel new TE Tunnel attributes - */ - void updateTeTunnel(TeTunnel teTunnel); - - /** - * Removes a TE Tunnel specified by the given key. - * - * @param teTunnelKey TE Tunnel key - */ - void removeTeTunnel(TeTunnelKey teTunnelKey); - - /** - * Returns the TE Tunnel with the specified key. - * - * @param teTunnelKey TE Tunnel key - * @return TeTunnel or null if one with the given key is not known - */ - TeTunnel getTeTunnel(TeTunnelKey teTunnelKey); - - /** - * Returns the TE Tunnel with the specified identifier. - * - * @param tunnelId corresponding tunnel identifier - * @return TeTunnel or null if one with the given identifier is not known - */ - TeTunnel getTeTunnel(TunnelId tunnelId); - - - /** - * Returns a collection of currently known TE Tunnels. - * - * @return collection of TeTunnels - */ - Collection getTeTunnels(); - - /** - * Returns a collection of currently known TE Tunnels filtered by the - * specified TE tunnel type. - * - * @param type TE tunnel type to filter by - * @return filtered collection of TE tunnels - */ - Collection getTeTunnels(TeTunnel.Type type); - - /** - * Returns a collection of currently known TE tunnels filtered by specified - * TE topology key. - * - * @param teTopologyKey TE topology key to filter by - * @return filtered collection of TE tunnels - */ - Collection getTeTunnels(TeTopologyKey teTopologyKey); - - /** - * Adds a TE LSP. - * - * @param lsp TE LSP attributes - * @return true when success - */ - boolean addTeLsp(TeLsp lsp); - - /** - * Updates TE LSP attributes. - * - * @param lsp new TE LSP attributes - */ - void updateTeLsp(TeLsp lsp); - - /** - * Removes a TE LSP. - * - * @param key TE LSP key - */ - void removeTeLsp(TeLspKey key); - - /** - * Returns the TE LSP with the specified key. - * - * @param key TE LSP key - * @return TeLsp or null if one with the given key is not known - */ - TeLsp getTeLsp(TeLspKey key); - - /** - * Returns a collection of currently known TE LSP. - * - * @return collection of TeLsp - */ - Collection getTeLsps(); -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/DefaultTeLsp.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/DefaultTeLsp.java deleted file mode 100644 index 2f75900417..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/DefaultTeLsp.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.lsp; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; -import org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject; - -import java.util.List; - -/** - * Default implementation of TE LSP. - */ -public class DefaultTeLsp implements TeLsp { - - private final TeLspKey teLspKey; - private final TeNodeKey srcNode; - private final TeNodeKey dstNode; - private final TtpKey srcTp; - private final TtpKey dstTp; - private final TeTunnelKey teTunnelKey; - private final TeTunnel.Type tunnelType; - private final TeTunnel.State operStatus; - private final LspProtectionRole lspProtectionRole; - private final OriginType originType; - private final List lspRecordRoutes; - - /** - * Creates an instance of default TE LSP with supplied information. - * - * @param teLspKey TE LSP key - * @param srcNode source TE node key - * @param dstNode destination TE node key - * @param srcTp source TE termination point key - * @param dstTp destination TE termination point key - * @param teTunnelKey TE tunnel key - * @param tunnelType TE tunnel type - * @param operStatus operational status - * @param lspProtectionRole protection type - * @param originType origin type - * @param lspRecordRoutes route of the LSP - */ - protected DefaultTeLsp(TeLspKey teLspKey, TeNodeKey srcNode, TeNodeKey dstNode, - TtpKey srcTp, TtpKey dstTp, TeTunnelKey teTunnelKey, - TeTunnel.Type tunnelType, TeTunnel.State operStatus, - LspProtectionRole lspProtectionRole, - OriginType originType, - List lspRecordRoutes) { - this.srcNode = srcNode; - this.dstNode = dstNode; - this.srcTp = srcTp; - this.dstTp = dstTp; - this.teTunnelKey = teTunnelKey; - this.tunnelType = tunnelType; - this.operStatus = operStatus; - this.lspProtectionRole = lspProtectionRole; - this.originType = originType; - this.lspRecordRoutes = Lists.newArrayList(lspRecordRoutes); - this.teLspKey = teLspKey; - } - - @Override - public TeLspKey teLspKey() { - return teLspKey; - } - - @Override - public TeNodeKey srcNode() { - return srcNode; - } - - @Override - public TeNodeKey dstNode() { - return dstNode; - } - - @Override - public TtpKey srcTp() { - return srcTp; - } - - @Override - public TtpKey dstTp() { - return dstTp; - } - - @Override - public TeTunnelKey teTunnelKey() { - return teTunnelKey; - } - - @Override - public TeTunnel.Type tunnelType() { - return tunnelType; - } - - @Override - public TeTunnel.State operStatus() { - return operStatus; - } - - @Override - public LspProtectionRole lspProtectionRole() { - return lspProtectionRole; - } - - @Override - public OriginType originType() { - return originType; - } - - @Override - public List lspRecordRoutes() { - return ImmutableList.copyOf(lspRecordRoutes); - } - - - /** - * Creates a new default TE LSP builder. - * - * @return default builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder for default TE LSP objects. - */ - public static class Builder { - - private TeLspKey teLspKey = null; - private TeNodeKey srcNode = null; - private TeNodeKey dstNode = null; - private TtpKey srcTp = null; - private TtpKey dstTp = null; - private TeTunnelKey teTunnelKey = null; - private TeTunnel.Type tunnelType = null; - private TeTunnel.State operStatus = null; - private LspProtectionRole lspProtectionRole = null; - private OriginType originType = null; - private List lspRecordRoutes = Lists.newArrayList(); - - /** - * Builds a default TE LSP object from the accumulated parameters. - * - * @return default TE LSP object - */ - public DefaultTeLsp build() { - return new DefaultTeLsp(teLspKey, srcNode, dstNode, srcTp, dstTp, - teTunnelKey, tunnelType, operStatus, - lspProtectionRole, originType, - lspRecordRoutes); - } - - /** - * Sets TE LSP key to be used by this builder. - * - * @param teLspKey TE LSP key - * @return self - */ - public Builder teLspKey(TeLspKey teLspKey) { - this.teLspKey = teLspKey; - return this; - } - - /** - * Sets source node key to be used by this builder. - * - * @param srcNode source node key - * @return self - */ - public Builder srcNode(TeNodeKey srcNode) { - this.srcNode = srcNode; - return this; - } - - /** - * Sets destination node key to be used by this builder. - * - * @param dstNode destination node key - * @return self - */ - public Builder dstNode(TeNodeKey dstNode) { - this.dstNode = dstNode; - return this; - } - - /** - * Sets source termination point key to be used by this builder. - * - * @param srcTp source termination point key - * @return self - */ - public Builder srcTp(TtpKey srcTp) { - this.srcTp = srcTp; - return this; - } - - /** - * Sets destination termination point key to be used by this builder. - * - * @param dstTp destination termination point key - * @return self - */ - public Builder dstTp(TtpKey dstTp) { - this.dstTp = dstTp; - return this; - } - - /** - * Sets TE tunnel key to be used by this builder. - * - * @param teTunnelKey TE tunnel key - * @return self - */ - public Builder teTunnelKey(TeTunnelKey teTunnelKey) { - this.teTunnelKey = teTunnelKey; - return this; - } - - /** - * Sets TE tunnel type to be used by this builder. - * - * @param tunnelType TE tunnel type - * @return self - */ - public Builder tunnelType(TeTunnel.Type tunnelType) { - this.tunnelType = tunnelType; - return this; - } - - /** - * Sets LSP operational status to be used by this builder. - * - * @param operStatus LSP operational status - * @return self - */ - public Builder operStatus(TeTunnel.State operStatus) { - this.operStatus = operStatus; - return this; - } - - /** - * Sets LSP protection role to be used by this builder. - * - * @param lspProtectionRole LSP protection role - * @return self - */ - public Builder lspProtectionRole(LspProtectionRole lspProtectionRole) { - this.lspProtectionRole = lspProtectionRole; - return this; - } - - /** - * Sets LSP origin type to be used by this builder. - * - * @param originType LSP origin type - * @return self - */ - public Builder originType(OriginType originType) { - this.originType = originType; - return this; - } - - /** - * Sets LSP record routes to be used by this builder. - * - * @param lspRecordRoutes LSP record routes - * @return self - */ - public Builder lspRecordRoutes(List lspRecordRoutes) { - if (lspRecordRoutes != null) { - this.lspRecordRoutes = lspRecordRoutes; - } - return this; - } - } -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLsp.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLsp.java deleted file mode 100644 index e44c7d1d86..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLsp.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.lsp; - -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; -import org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject; - -import java.util.List; - -/** - * Representation of a TE LSP. - */ -public interface TeLsp { - - /** - * Protection roles of TE LSP. - */ - enum LspProtectionRole { - /** - * Designates a working LSP. - */ - WORKING, - /** - * Designates a protection LSP. - */ - PROTECTION - } - - /** - * Origin type of LSP relative to the location of the local switch in the - * path. - */ - enum OriginType { - INGRESS, - EGRESS, - TRANSIT - } - - /** - * Returns key of this TE LSP. - * - * @return key of this TE LSP - */ - TeLspKey teLspKey(); - - /** - * Returns source TE node of this tunnel. - * - * @return source TE node key - */ - TeNodeKey srcNode(); - - /** - * Returns source TE termination point of this tunnel. - * - * @return source TE termination point key - */ - TtpKey srcTp(); - - /** - * Returns destination TE node of this tunnel. - * - * @return destination TE node key - */ - TeNodeKey dstNode(); - - /** - * Returns destination TE termination point of this tunnel. - * - * @return destination TE termination point key - */ - TtpKey dstTp(); - - /** - * Returns the TE tunnel used in the SESSION that remains constant over - * the life of the tunnel. - * - * @return TE tunnel key - */ - TeTunnelKey teTunnelKey(); - - /** - * Returns corresponding tunnel type. - * - * @return TE tunnel type - */ - TeTunnel.Type tunnelType(); - - /** - * Returns operational status of the LSP. - * - * @return operational status - */ - TeTunnel.State operStatus(); - - /** - * Returns protection role of the LSP. - * - * @return protection role - */ - LspProtectionRole lspProtectionRole(); - - /** - * Return origin type of the LSP. - * - * @return origin type - */ - OriginType originType(); - - /** - * Returns route of this LSP. - * - * @return list of TeRouteSubobject - */ - List lspRecordRoutes(); - - //TODO add more attributes here. -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLspKey.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLspKey.java deleted file mode 100644 index 829233b430..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/TeLspKey.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.lsp; - -import com.google.common.base.Objects; -import org.onosproject.tetopology.management.api.TeTopologyKey; - -/** - * Representation of a TE LSP key, which identifies a TE Label-switched path - * globally. - */ -public class TeLspKey extends TeTopologyKey { - - private final long teLspId; - - /** - * Creates an instance of TeLspKey with supplied information. - * - * @param providerId provider identifier - * @param clientId client identifier - * @param topologyId topology identifier - * @param teLspId TE LSP identifier - */ - public TeLspKey(long providerId, long clientId, - long topologyId, long teLspId) { - super(providerId, clientId, topologyId); - this.teLspId = teLspId; - } - - /** - * Creates an instance of TeLspKey with specified TeTopologyKey and - * supplied TE LSP identifier. - * - * @param key the key of TE Topology to which this LSP belongs - * @param teLspId TE LSP identifier - */ - public TeLspKey(TeTopologyKey key, long teLspId) { - super(key.providerId(), key.clientId(), key.topologyId()); - this.teLspId = teLspId; - } - - /** - * Returns the TE LSP identifier corresponding to this key. - * - * @return TE LSP identifier - */ - public long teLspId() { - return teLspId; - } - - /** - * Returns the key of the TE topology to which this LSP belongs. - * - * @return corresponding TE topology key - */ - public TeTopologyKey teTopologyKey() { - return new TeTopologyKey(providerId(), clientId(), topologyId()); - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), teLspId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TeLspKey) { - if (!super.equals(object)) { - return false; - } - TeLspKey that = (TeLspKey) object; - return Objects.equal(this.teLspId, that.teLspId); - } - return false; - } - - @Override - public String toString() { - return toStringHelper() - .add("topologyId", topologyId()) - .add("teLspId", teLspId) - .toString(); - } -} - diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/package-info.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/package-info.java deleted file mode 100644 index e3388cb536..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/lsp/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * IETF TE Tunnel LSP management API. - */ -package org.onosproject.tetunnel.api.lsp; \ No newline at end of file diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/package-info.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/package-info.java deleted file mode 100644 index 4bd2d1c426..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * IETF TE Tunnel attributes management service API. - */ -package org.onosproject.tetunnel.api; \ No newline at end of file diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnel.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnel.java deleted file mode 100644 index 4f7740e593..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnel.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetunnel.api.tunnel.path.TePath; - -import java.util.List; - -/** - * Default TE tunnel implementation. - */ -public class DefaultTeTunnel implements TeTunnel { - - private final TeTunnelKey teTunnelKey; - private final String name; - private final Type type; - private final LspProtectionType lspProtectionType; - private final State adminState; - private final TeNodeKey srcNode; - private final TeNodeKey dstNode; - private final TtpKey srcTp; - private final TtpKey dstTp; - private final List primaryPaths; - - private List segmentTunnels = null; - private TeTunnelKey e2eTunnel = null; - - /** - * Creates a TE tunnel with supplied information. - * - * @param teTunnelKey TE tunnel key - * @param name TE tunnel name - * @param type TE tunnel type - * @param lspProtectionType LSP protection type of the TE tunnel - * @param adminState TE tunnel administrative state - * @param srcNode source TE node - * @param dstNode destination TE node - * @param srcTp source termination point - * @param dstTp destination termination point - * @param primaryPaths primary paths - */ - protected DefaultTeTunnel(TeTunnelKey teTunnelKey, String name, Type type, - LspProtectionType lspProtectionType, - State adminState, TeNodeKey srcNode, - TeNodeKey dstNode, TtpKey srcTp, TtpKey dstTp, - List primaryPaths) { - this.teTunnelKey = teTunnelKey; - this.name = name; - this.type = type; - this.lspProtectionType = lspProtectionType; - this.adminState = adminState; - this.srcNode = srcNode; - this.dstNode = dstNode; - this.srcTp = srcTp; - this.dstTp = dstTp; - this.primaryPaths = Lists.newArrayList(primaryPaths); - } - - @Override - public TeTunnelKey teTunnelKey() { - return teTunnelKey; - } - - @Override - public String name() { - return name; - } - - @Override - public Type type() { - return type; - } - - @Override - public LspProtectionType lspProtectionType() { - return lspProtectionType; - } - - @Override - public State adminStatus() { - return adminState; - } - - @Override - public TeNodeKey srcNode() { - return srcNode; - } - - @Override - public TeNodeKey dstNode() { - return dstNode; - } - - @Override - public List primaryPaths() { - return ImmutableList.copyOf(primaryPaths); - } - - @Override - public List segmentTunnels() { - return ImmutableList.copyOf(segmentTunnels); - } - - @Override - public void segmentTunnels(List segmentTunnels) { - this.segmentTunnels = Lists.newArrayList(segmentTunnels); - } - - @Override - public TeTunnelKey e2eTunnelKey() { - return e2eTunnel; - } - - @Override - public void e2eTunnelKey(TeTunnelKey e2eTunnelKey) { - this.e2eTunnel = e2eTunnelKey; - } - - @Override - public TtpKey srcTp() { - return srcTp; - } - - @Override - public TtpKey dstTp() { - return dstTp; - } - - - /** - * Creates a new default TE tunnel builder. - * - * @return default builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder for default TE tunnel objects. - */ - public static class Builder { - - private TeTunnelKey teTunnelKey = null; - private String name = ""; - private Type type = null; - private LspProtectionType lspProtectionType = null; - private State adminState = State.UP; - private TeNodeKey srcNode = null; - private TeNodeKey dstNode = null; - private TtpKey srcTp = null; - private TtpKey dstTp = null; - private List primaryPaths = Lists.newArrayList(); - - /** - * Builds a default TE tunnel object from the accumulated parameters. - * - * @return default TE tunnel object - */ - public DefaultTeTunnel build() { - return new DefaultTeTunnel(teTunnelKey, name, type, - lspProtectionType, - adminState, srcNode, dstNode, - srcTp, dstTp, primaryPaths); - } - - /** - * Sets TE tunnel key to be used by this builder. - * - * @param teTunnelKey TE tunnel key - * @return self - */ - public Builder teTunnelKey(TeTunnelKey teTunnelKey) { - this.teTunnelKey = teTunnelKey; - return this; - } - - /** - * Sets TE tunnel name to be used by this builder. - * - * @param name TE tunnel name - * @return self - */ - public Builder name(String name) { - this.name = name; - return this; - } - - /** - * Sets TE tunnel type to be used by this builder. - * - * @param type TE tunnel type - * @return self - */ - public Builder type(Type type) { - this.type = type; - return this; - } - - /** - * Sets tunnel LSP protection type to be used by this builder. - * - * @param lspProtectionType protection type - * @return self - */ - public Builder lspProtectionType(LspProtectionType lspProtectionType) { - this.lspProtectionType = lspProtectionType; - return this; - } - - /** - * Sets administrative state to be used by this builder. - * - * @param adminState administrative state - * @return self - */ - public Builder adminState(State adminState) { - this.adminState = adminState; - return this; - } - - /** - * Sets source node key to be used by this builder. - * - * @param srcNode source node key - * @return self - */ - public Builder srcNode(TeNodeKey srcNode) { - this.srcNode = srcNode; - return this; - } - - /** - * Sets destination node key to be used by this builder. - * - * @param dstNode destination node key - * @return self - */ - public Builder dstNode(TeNodeKey dstNode) { - this.dstNode = dstNode; - return this; - } - - /** - * Sets source termination point key to be used by this builder. - * - * @param srcTp source termination point key - * @return self - */ - public Builder srcTp(TtpKey srcTp) { - this.srcTp = srcTp; - return this; - } - - /** - * Sets destination point key to be used by this builder. - * - * @param dstTp destination point key - * @return self - */ - public Builder dstTp(TtpKey dstTp) { - this.dstTp = dstTp; - return this; - } - - /** - * Sets primary paths to be used by this builder. - * - * @param primaryPaths list of TePath - * @return self - */ - public Builder primaryPaths(List primaryPaths) { - if (primaryPaths != null) { - this.primaryPaths = primaryPaths; - } - return this; - } - } -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnel.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnel.java deleted file mode 100644 index 8be5d4d213..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnel.java +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel; - -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetunnel.api.tunnel.path.TePath; - -import java.util.List; - -/** - * Representation of a TE tunnel attributes. - */ -public interface TeTunnel { - - /** - * TE tunnel types. - */ - enum Type { - /** - * Designates TE point-to-point tunnel. - */ - P2P, - /** - * Designates TE point-to-multipoint tunnel. - */ - P2MP, - /** - * Designates RSVP-TE path signaling tunnel. - */ - PATH_SIGNALING_RSVPTE, - /** - * Designates Segment-routing path signaling tunnel. - */ - PATH_SIGNALING_SR - } - - /** - * LSP protection types. - */ - enum LspProtectionType { - /** - * Designates LSP protection "Unprotected". - */ - LSP_PROT_UNPROTECTED, - /** - * Designates LSP protection "Rerouting without Extra-Traffic". - */ - LSP_PROT_REROUTE, - /** - * Designates LSP protection "(Full) Rerouting". - */ - LSP_PROT_REROUTE_EXTRA, - /** - * Designates LSP protection "1+1 Unidirectional Protection". - */ - LSP_PROT_UNIDIR_1_TO_1, - /** - * Designates LSP protection "1+1 Bidirectional Protection". - */ - LSP_PROT_BIDIR_1_TO_1, - /** - * Designates LSP protection "1:N Protection with Extra-Traffic". - */ - LSP_PROT_1_FOR_N - } - - /** - * TE Tunnel state. - */ - enum State { - /** - * Designates the tunnel is down (non-operational). - */ - DOWN, - /** - * Designates the tunnel is up. - */ - UP - } - - /** - * Returns the TE tunnel key. - * - * @return TE tunnel key - */ - TeTunnelKey teTunnelKey(); - - /** - * Returns the name of the TE tunnel. - * - * @return name of the TE tunnel - */ - String name(); - - /** - * Returns the type of the TE tunnel. - * - * @return type of the TE tunnel - */ - Type type(); - - /** - * Returns the key of source TE node of this TE tunnel. - * - * @return key of the source TE node - */ - TeNodeKey srcNode(); - - /** - * Returns key of the source TE termination point of this tunnel. - * - * @return key of the source TE termination point - */ - TtpKey srcTp(); - - /** - * Returns key of the destination TE node of this TE tunnel. - * - * @return key of the destination TE node - */ - TeNodeKey dstNode(); - - /** - * Returns key of the destination TE termination point of this TE tunnel. - * - * @return key of the destination TE termination point - */ - TtpKey dstTp(); - - /** - * Returns the TE LSP protection type of the TE tunnel. - * - * @return TE LSP protection type of the TE tunnel - */ - LspProtectionType lspProtectionType(); - - /** - * Returns the TE tunnel administrative state. - * - * @return TE tunnel administrative state - */ - State adminStatus(); - - /** - * Returns primary paths of this TE tunnel. - * - * @return a list of TE paths - */ - List primaryPaths(); - - /** - * Returns segment tunnels of this (E2E cross-domain) tunnel. - * - * @return a list of keys of the segment tunnels - */ - List segmentTunnels(); - - /** - * Sets segment tunnels of this (E2E cross-domain) tunnel. - * - * @param segmentTunnels a list of keys of segment tunnels - */ - void segmentTunnels(List segmentTunnels); - - /** - * Returns key of the E2E tunnel of this (segment) tunnel. - * - * @return key of the corresponding E2E TE tunnel - */ - TeTunnelKey e2eTunnelKey(); - - /** - * Sets the E2E tunnel of this (segment) tunnel. - * - * @param e2eTunnelKey key of the corresponding E2E tunnel - */ - void e2eTunnelKey(TeTunnelKey e2eTunnelKey); - - //TODO: add more required TE attributes -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelEndpoint.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelEndpoint.java deleted file mode 100644 index c8aed14330..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelEndpoint.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel; - -import org.onosproject.incubator.net.tunnel.TunnelEndPoint; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import java.util.Objects; -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * TE tunnel endpoint implementation. - */ -public class TeTunnelEndpoint implements TunnelEndPoint { - - private final TeNodeKey teNodeKey; - private final TtpKey ttpKey; - - /** - * Creates a TE tunnel end point instance with supplied information. - * - * @param teNodeKey key of the TE node of this end point - * @param ttpKey key of the TE termination point of this end point - */ - public TeTunnelEndpoint(TeNodeKey teNodeKey, TtpKey ttpKey) { - this.teNodeKey = teNodeKey; - this.ttpKey = ttpKey; - } - - /** - * Returns key of the TE node of this end point. - * - * @return key of corresponding TE node - */ - public TeNodeKey teNodeKey() { - return teNodeKey; - } - - /** - * Returns key of the TE termination point of this end point. - * - * @return key of corresponding TE termination point - */ - public TtpKey ttpKey() { - return ttpKey; - } - - @Override - public int hashCode() { - return Objects.hash(teNodeKey, ttpKey); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TeTunnelEndpoint) { - final TeTunnelEndpoint other = (TeTunnelEndpoint) obj; - return Objects.equals(this.teNodeKey, other.teNodeKey) && - Objects.equals(this.ttpKey, other.ttpKey); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("teNodeKey", teNodeKey) - .add("ttpKey", ttpKey) - .toString(); - } -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelKey.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelKey.java deleted file mode 100644 index 45cdb0b7a5..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/TeTunnelKey.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel; - -import com.google.common.base.Objects; -import org.onosproject.tetopology.management.api.TeTopologyKey; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Representation of a TE tunnel key, which identifies a TE tunnel globally. - */ -public class TeTunnelKey extends TeTopologyKey { - - private final long teTunnelId; - - /** - * Creates an instance of TE tunnel key with supplied information. - * - * @param providerId provider identifier - * @param clientId client identifier - * @param topologyId topology identifier - * @param teTunnelId TE tunnel identifier - */ - public TeTunnelKey(long providerId, long clientId, - long topologyId, long teTunnelId) { - super(providerId, clientId, topologyId); - this.teTunnelId = teTunnelId; - } - - /** - * Creates an instance of TE tunnel key with specified TeTopologyKey and - * supplied TE tunnel identifier. - * - * @param key the key of TE topology to which this tunnel belongs - * @param tunnelId TE tunnel identifier - */ - public TeTunnelKey(TeTopologyKey key, long tunnelId) { - super(key.providerId(), key.clientId(), key.topologyId()); - this.teTunnelId = tunnelId; - } - - /** - * Returns the TE tunnel identifier. - * - * @return TE tunnel identifier - */ - public long teTunnelId() { - return teTunnelId; - } - - /** - * Returns key of the TE topology to which this tunnel belongs. - * - * @return corresponding TE topology key - */ - public TeTopologyKey teTopologyKey() { - return new TeTopologyKey(providerId(), clientId(), topologyId()); - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), teTunnelId); - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof TeTunnelKey) { - if (!super.equals(object)) { - return false; - } - TeTunnelKey that = (TeTunnelKey) object; - return Objects.equal(this.teTunnelId, that.teTunnelId); - } - return false; - } - - @Override - public String toString() { - return toStringHelper() - .add("topologyId", topologyId()) - .add("teTunnelId", teTunnelId) - .toString(); - } -} - diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/package-info.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/package-info.java deleted file mode 100644 index 606dc7be0d..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * IETF TE Tunnel attributes management API. - */ -package org.onosproject.tetunnel.api.tunnel; \ No newline at end of file diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePath.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePath.java deleted file mode 100644 index 289cf617ee..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePath.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel.path; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.onosproject.tetunnel.api.lsp.TeLspKey; - -import java.util.List; - -/** - * Default implementation of TE path. - */ -public class DefaultTePath implements TePath { - - private final Type type; - private final List lsps; - private final List explicitRoute; - private final List secondaryPaths; - - /** - * Creates a default implementation of TE path with supplied information. - * - * @param type type of TE Path - * @param lsps LSPs of the TE Path - * @param explicitRoute explicit route of the (Explicit) TE path - * @param secondaryPaths secondary paths of the TE path - */ - public DefaultTePath(Type type, List lsps, - List explicitRoute, - List secondaryPaths) { - this.type = type; - if (lsps == null) { - this.lsps = Lists.newArrayList(); - } else { - this.lsps = Lists.newArrayList(lsps); - } - if (explicitRoute == null) { - this.explicitRoute = Lists.newArrayList(); - } else { - this.explicitRoute = Lists.newArrayList(explicitRoute); - } - if (secondaryPaths == null) { - this.secondaryPaths = Lists.newArrayList(); - } else { - this.secondaryPaths = Lists.newArrayList(secondaryPaths); - } - } - - @Override - public Type type() { - return type; - } - - @Override - public List lsps() { - return ImmutableList.copyOf(lsps); - } - - @Override - public List explicitRoute() { - return ImmutableList.copyOf(explicitRoute); - } - - @Override - public List secondaryPaths() { - return ImmutableList.copyOf(secondaryPaths); - } -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathSelection.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathSelection.java deleted file mode 100644 index 8b9c2c6618..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathSelection.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel.path; - -import org.onosproject.tetopology.management.api.TeTopologyKey; - -/** - * Default implementation of TE path selection. - */ -public class DefaultTePathSelection implements TePathSelection { - - private final TeTopologyKey teTopologyKey; - private final long costLimit; - private final short hopLimit; - - /** - * Creates a default implementation of TE path selection with supplied - * information. - * - * @param teTopologyKey key of corresponding TE topology - * @param costLimit cost limit of the TE path - * @param hopLimit hot limit of the TE path - */ - public DefaultTePathSelection(TeTopologyKey teTopologyKey, - long costLimit, short hopLimit) { - this.teTopologyKey = teTopologyKey; - this.costLimit = costLimit; - this.hopLimit = hopLimit; - } - - @Override - public TeTopologyKey teTopologyKey() { - return teTopologyKey; - } - - @Override - public long costLimit() { - return costLimit; - } - - @Override - public short hopLimit() { - return hopLimit; - } -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTeRouteUnnumberedLink.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTeRouteUnnumberedLink.java deleted file mode 100644 index c8ed39e972..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTeRouteUnnumberedLink.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel.path; - -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; - -/** - * Default implementation of a TE unnumbered link route object. - */ -public class DefaultTeRouteUnnumberedLink implements TeRouteUnnumberedLink { - - private final TeNodeKey node; - private final TtpKey ttp; - - /** - * Creates a default implementation of a TE unnumbered link route object. - * - * @param node key of TE node of the route subobject - * @param ttp key of TE termination point of the route subobject - */ - public DefaultTeRouteUnnumberedLink(TeNodeKey node, TtpKey ttp) { - this.node = node; - this.ttp = ttp; - } - - @Override - public Type type() { - return Type.UNNUMBERED_LINK; - } - - @Override - public TeNodeKey node() { - return node; - } - - @Override - public TtpKey ttp() { - return ttp; - } -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePath.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePath.java deleted file mode 100644 index 7c5e6b8883..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePath.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel.path; - -import org.onosproject.tetunnel.api.lsp.TeLspKey; - -import java.util.List; - -/** - * Representation of a TE tunnel path. - */ -public interface TePath { - - /** - * Types of TE path. - */ - enum Type { - /** - * Designates a dynamically computed path. - */ - DYNAMIC, - /** - * Designates a path with explicit route. - */ - EXPLICIT - } - - /** - * Returns type of this TE path. - * - * @return type of this TE path - */ - Type type(); - - /** - * Returns keys of TE LSPs of this TE path. - * - * @return list of keys of TE LSPs - */ - List lsps(); - - /** - * Returns specified route of ths (Explicit) TE path. - * - * @return list of TE route subobjects. - */ - List explicitRoute(); - - /** - * Returns secondary TE paths of this TE path. - * - * @return list of secondary TE paths. - */ - List secondaryPaths(); - - //TODO add more attributes here. -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePathSelection.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePathSelection.java deleted file mode 100644 index 9c5edcff2c..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TePathSelection.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel.path; - -import org.onosproject.tetopology.management.api.TeTopologyKey; - -/** - * Representation of a TE tunnel path selection attributes. - */ -public interface TePathSelection { - - /** - * Returns key of corresponding TE topology of the TE path. - * - * @return key of corresponding TE topology - */ - TeTopologyKey teTopologyKey(); - - /** - * Returns cost limit of the TE path. - * - * @return cost limit - */ - long costLimit(); - - /** - * Returns hop limit of the TE path. - * - * @return hop limit - */ - short hopLimit(); - - //TODO add more attributes here. -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteSubobject.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteSubobject.java deleted file mode 100644 index 3facc21b68..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteSubobject.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel.path; - -/** - * Representation of a TE LSP route element. - */ -public interface TeRouteSubobject { - - /** - * Types of TE route subobject. - */ - enum Type { - /** - * Designates Unnumbered link route sub-object. - */ - UNNUMBERED_LINK, - /** - * Designates a label route sub-object. - */ - LABEL, - /** - * Designates an IPv4 address route sub-object. - */ - IPV4_ADDRESS, - /** - * Designates an IPv6 address route sub-object. - */ - IPV6_ADDRESS - } - - /** - * Return type of the route subobject. - * - * @return type of route subobject - */ - Type type(); -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteUnnumberedLink.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteUnnumberedLink.java deleted file mode 100644 index 0a4862d674..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/TeRouteUnnumberedLink.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel.path; - -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; - -/** - * Representation of a UnnumberedLink as a TE LSP route element. - */ -public interface TeRouteUnnumberedLink extends TeRouteSubobject { - - /** - * Returns node of this route subobject. - * - * @return TE node key - */ - TeNodeKey node(); - - /** - * Returns termination point of this route subobject. - * - * @return TE termination point key - */ - TtpKey ttp(); -} diff --git a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/package-info.java b/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/package-info.java deleted file mode 100644 index 1d1b3f5497..0000000000 --- a/apps/tetunnel/api/src/main/java/org/onosproject/tetunnel/api/tunnel/path/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * IETF TE Tunnel paths management API. - */ -package org.onosproject.tetunnel.api.tunnel.path; \ No newline at end of file diff --git a/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnelTest.java b/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnelTest.java deleted file mode 100644 index 8fa25d02d1..0000000000 --- a/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/DefaultTeTunnelTest.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel; - -import com.google.common.collect.Lists; -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetunnel.api.lsp.TeLspKey; -import org.onosproject.tetunnel.api.tunnel.path.DefaultTePath; -import org.onosproject.tetunnel.api.tunnel.path.TePath; - -import java.util.List; - -/** - * Unit tests for default TE tunnel implementation. - */ -public class DefaultTeTunnelTest { - - /** - * Tests constructor of TeTunnelKey. - */ - @Test - public void testConstructorOfTeTunnelKey() { - final int providerId = 1; - final int clientId = 2; - final int topologyId = 3; - final int teTunnelId = 4; - - TeTunnelKey key = new TeTunnelKey(providerId, clientId, topologyId, - teTunnelId); - - Assert.assertEquals(key.teTunnelId(), teTunnelId); - Assert.assertEquals(key.teTopologyKey(), - new TeTopologyKey(providerId, clientId, - topologyId)); - Assert.assertTrue(key.equals( - new TeTunnelKey(providerId, clientId, topologyId, - teTunnelId))); - } - - /** - * Tests constructor of TeLspKey. - */ - @Test - public void testConstructorOfTeLspKey() { - final int providerId = 1; - final int clientId = 2; - final int topologyId = 3; - final int teLspId = 4; - - TeLspKey key = new TeLspKey(providerId, clientId, topologyId, - teLspId); - - Assert.assertEquals(key.teLspId(), teLspId); - Assert.assertEquals(key.teTopologyKey(), - new TeTopologyKey(providerId, clientId, - topologyId)); - Assert.assertTrue(key.equals( - new TeLspKey(providerId, clientId, topologyId, - teLspId))); - } - - /** - * Tests builder of the DefaultTeTunnel. - */ - @Test - public void testDefaultTeTunnelBuilder() { - final int providerId = 1; - final int clientId = 2; - final int topologyId = 3; - final int srcNodeId = 4; - final int srcTtpId = 5; - final int dstNodeId = 6; - final int dstTtpId = 7; - final int teTunnelId = 8; - final String teTunnelName = "Test TE tunnel"; - final List paths = Lists.newArrayList( - new DefaultTePath(TePath.Type.DYNAMIC, null, null, null)); - final int segTunnelId1 = 1001; - final int segTunnelId2 = 1002; - final int segTunnelId3 = 1003; - - TeTunnel teTunnel = DefaultTeTunnel.builder() - .teTunnelKey( - new TeTunnelKey(providerId, clientId, topologyId, - teTunnelId)) - .srcNode(new TeNodeKey(providerId, clientId, topologyId, - srcNodeId)) - .srcTp(new TtpKey(providerId, clientId, topologyId, srcNodeId, - srcTtpId)) - .dstNode(new TeNodeKey(providerId, clientId, topologyId, - dstNodeId)) - .dstTp(new TtpKey(providerId, clientId, topologyId, dstNodeId, - dstTtpId)) - .name(teTunnelName) - .adminState(TeTunnel.State.UP) - .lspProtectionType(TeTunnel.LspProtectionType.LSP_PROT_REROUTE) - .type(TeTunnel.Type.P2P) - .primaryPaths(paths) - .build(); - - Assert.assertEquals(teTunnel.teTunnelKey().teTopologyKey(), - new TeTopologyKey(providerId, clientId, - topologyId)); - Assert.assertEquals(teTunnel.teTunnelKey().teTunnelId(), teTunnelId); - Assert.assertEquals(teTunnel.srcNode(), - new TeNodeKey(providerId, clientId, topologyId, - srcNodeId)); - Assert.assertEquals(teTunnel.dstNode(), - new TeNodeKey(providerId, clientId, topologyId, - dstNodeId)); - Assert.assertEquals(teTunnel.srcTp(), - new TtpKey(providerId, clientId, topologyId, - srcNodeId, srcTtpId)); - Assert.assertEquals(teTunnel.dstTp(), - new TtpKey(providerId, clientId, topologyId, - dstNodeId, dstTtpId)); - Assert.assertEquals(teTunnel.name(), teTunnelName); - Assert.assertEquals(teTunnel.adminStatus(), TeTunnel.State.UP); - Assert.assertEquals(teTunnel.lspProtectionType(), - TeTunnel.LspProtectionType.LSP_PROT_REROUTE); - Assert.assertEquals(teTunnel.type(), TeTunnel.Type.P2P); - Assert.assertEquals(teTunnel.primaryPaths().get(0).type(), - TePath.Type.DYNAMIC); - Assert.assertEquals(teTunnel.primaryPaths(), paths); - - TeTunnelKey segTunnel1 = new TeTunnelKey(providerId, clientId, - topologyId, segTunnelId1); - TeTunnelKey segTunnel2 = new TeTunnelKey(providerId, clientId, - topologyId, segTunnelId2); - TeTunnelKey segTunnel3 = new TeTunnelKey(providerId, clientId, - topologyId, segTunnelId3); - List segTunnels = Lists.newArrayList(segTunnel1, - segTunnel2, - segTunnel3); - teTunnel.segmentTunnels(segTunnels); - Assert.assertEquals(teTunnel.segmentTunnels(), segTunnels); - } -} diff --git a/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathTest.java b/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathTest.java deleted file mode 100644 index daafa00ab3..0000000000 --- a/apps/tetunnel/api/src/test/java/org/onosproject/tetunnel/api/tunnel/path/DefaultTePathTest.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.api.tunnel.path; - -import com.google.common.collect.Lists; -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.node.TeNodeKey; -import org.onosproject.tetopology.management.api.node.TtpKey; -import org.onosproject.tetunnel.api.lsp.TeLspKey; - -import java.util.List; - -/** - * Unit tests for default TE path implementation. - */ -public class DefaultTePathTest { - - /** - * Tests constructor of DefaultTePathSelection. - */ - @Test - public void testConstructorOfDefaultTePathSelection() { - final int providerId = 1; - final int clientId = 2; - final int topologyId = 3; - final long costLimit = 4; - final short hopLimit = 5; - - TePathSelection tePathSelection = new DefaultTePathSelection( - new TeTopologyKey(providerId, clientId, topologyId), - costLimit, hopLimit); - Assert.assertEquals(tePathSelection.teTopologyKey(), - new TeTopologyKey(providerId, clientId, topologyId)); - Assert.assertEquals(tePathSelection.costLimit(), costLimit); - Assert.assertEquals(tePathSelection.hopLimit(), hopLimit); - } - - /** - * Tests constructor of DefaultTeRouteUnnumberedLink. - */ - @Test - public void testConstructorOfDefaultTeRouteUnnumberedLink() { - final int providerId = 1; - final int clientId = 2; - final int topologyId = 3; - final int teNodeId = 4; - final int teTtpId = 5; - - TeRouteUnnumberedLink teRouteUnnumberedLink = - new DefaultTeRouteUnnumberedLink( - new TeNodeKey(providerId, clientId, - topologyId, teNodeId), - new TtpKey(providerId, clientId, - topologyId, teNodeId, teTtpId)); - - Assert.assertEquals(teRouteUnnumberedLink.type(), - TeRouteSubobject.Type.UNNUMBERED_LINK); - Assert.assertEquals(teRouteUnnumberedLink.node(), - new TeNodeKey(providerId, clientId, - topologyId, teNodeId)); - Assert.assertEquals(teRouteUnnumberedLink.ttp(), - new TtpKey(providerId, clientId, - topologyId, teNodeId, teTtpId)); - } - - /** - * Tests constructor of DefaultTePath. - */ - @Test - public void testConstructorOfDefaultTePath() { - final int providerId = 1; - final int clientId = 2; - final int topologyId = 3; - final int teNodeId = 4; - final int teTtpId = 5; - final int teLspId = 6; - - List lspKeys = Lists.newArrayList( - new TeLspKey(providerId, clientId, topologyId, teLspId)); - - TeRouteUnnumberedLink teRouteUnnumberedLink = - new DefaultTeRouteUnnumberedLink( - new TeNodeKey(providerId, clientId, - topologyId, teNodeId), - new TtpKey(providerId, clientId, - topologyId, teNodeId, teTtpId)); - List explicitRoute = Lists.newArrayList( - teRouteUnnumberedLink); - - List secondaryPaths = Lists.newArrayList( - new DefaultTePath(TePath.Type.DYNAMIC, null, null, null) - ); - - TePath tePath = new DefaultTePath(TePath.Type.EXPLICIT, lspKeys, - explicitRoute, secondaryPaths); - - Assert.assertEquals(tePath.type(), TePath.Type.EXPLICIT); - Assert.assertEquals(tePath.explicitRoute(), explicitRoute); - Assert.assertEquals(tePath.lsps(), lspKeys); - Assert.assertEquals(tePath.secondaryPaths(), secondaryPaths); - } -} diff --git a/apps/tetunnel/app/BUILD b/apps/tetunnel/app/BUILD deleted file mode 100644 index d5a367e98f..0000000000 --- a/apps/tetunnel/app/BUILD +++ /dev/null @@ -1,16 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + KRYO + [ - "//apps/tetopology/api:onos-apps-tetopology-api", - "//apps/tetunnel/api:onos-apps-tetunnel-api", - "//apps/tunnel/api:onos-apps-tunnel-api", - "//core/store/serializers:onos-core-serializers", -] - -TEST_DEPS = TEST_ADAPTERS + [ - "//utils/osgi:onlab-osgi-tests", - "//apps/tunnel/api:onos-apps-tunnel-api-tests", -] - -osgi_jar_with_tests( - test_deps = TEST_DEPS, - deps = COMPILE_DEPS, -) diff --git a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/DistributedTeTunnelStore.java b/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/DistributedTeTunnelStore.java deleted file mode 100644 index e9da5e44bd..0000000000 --- a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/DistributedTeTunnelStore.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.impl; - -import com.google.common.collect.ImmutableList; -import org.onlab.util.KryoNamespace; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.LogicalClockService; -import org.onosproject.store.service.StorageService; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetunnel.api.TeTunnelStore; -import org.onosproject.tetunnel.api.lsp.TeLsp; -import org.onosproject.tetunnel.api.lsp.TeLspKey; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Collection; -import java.util.stream.Collectors; - -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Manages the TE tunnel attributes using an eventually consistent map. - */ -@Component(immediate = true, service = TeTunnelStore.class) -public class DistributedTeTunnelStore implements TeTunnelStore { - - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected LogicalClockService clockService; - - private EventuallyConsistentMap teTunnels; - private EventuallyConsistentMap tunnelIds; - private EventuallyConsistentMap lsps; - - @Activate - public void activate() { - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API) - .nextId(KryoNamespaces.BEGIN_USER_CUSTOM_ID) - .register(TeTunnel.class); - - teTunnels = storageService.eventuallyConsistentMapBuilder() - .withName("TeTunnelStore") - .withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - tunnelIds = storageService.eventuallyConsistentMapBuilder() - .withName("TeTunnelIdStore") - .withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - lsps = storageService.eventuallyConsistentMapBuilder() - .withName("TeLspStore") - .withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - log.info("Started"); - } - - @Deactivate - public void deactivate() { - teTunnels.destroy(); - tunnelIds.destroy(); - lsps.destroy(); - - log.info("Stopped"); - } - - @Override - public boolean addTeTunnel(TeTunnel teTunnel) { - if (teTunnel == null) { - log.warn("teTunnel is null"); - return false; - } - if (teTunnels.containsKey(teTunnel.teTunnelKey())) { - log.warn("teTunnel already exist"); - return false; - } - teTunnels.put(teTunnel.teTunnelKey(), teTunnel); - return true; - } - - @Override - public void setTunnelId(TeTunnelKey teTunnelKey, TunnelId tunnelId) { - tunnelIds.put(teTunnelKey, tunnelId); - } - - @Override - public TunnelId getTunnelId(TeTunnelKey teTunnelKey) { - return tunnelIds.get(teTunnelKey); - } - - @Override - public void updateTeTunnel(TeTunnel teTunnel) { - if (teTunnel == null) { - log.warn("TeTunnel is null"); - return; - } - teTunnels.put(teTunnel.teTunnelKey(), teTunnel); - } - - @Override - public void removeTeTunnel(TeTunnelKey teTunnelKey) { - teTunnels.remove(teTunnelKey); - tunnelIds.remove(teTunnelKey); - } - - @Override - public TeTunnel getTeTunnel(TeTunnelKey teTunnelKey) { - return teTunnels.get(teTunnelKey); - } - - @Override - public TeTunnel getTeTunnel(TunnelId tunnelId) { - if (tunnelIds.containsValue(tunnelId)) { - for (TeTunnel teTunnel : teTunnels.values()) { - if (tunnelIds.get(teTunnel.teTunnelKey()).equals(tunnelId)) { - return teTunnel; - } - } - } - return null; - } - - @Override - public Collection getTeTunnels() { - return ImmutableList.copyOf(teTunnels.values()); - } - - @Override - public Collection getTeTunnels(TeTunnel.Type type) { - return ImmutableList.copyOf(teTunnels.values() - .stream() - .filter(teTunnel -> teTunnel.type().equals(type)) - .collect(Collectors.toList())); - } - - @Override - public Collection getTeTunnels(TeTopologyKey teTopologyKey) { - return ImmutableList.copyOf(teTunnels.values() - .stream() - .filter(teTunnel -> teTunnel.teTunnelKey() - .teTopologyKey() - .equals(teTopologyKey)) - .collect(Collectors.toList())); - } - - @Override - public boolean addTeLsp(TeLsp lsp) { - if (lsp == null) { - log.warn("TeLsp is null"); - return false; - } - if (lsps.containsKey(lsp.teLspKey())) { - log.error("TeLsp exist {}", lsp.teLspKey()); - return false; - } - lsps.put(lsp.teLspKey(), lsp); - return true; - } - - @Override - public void updateTeLsp(TeLsp lsp) { - if (lsp == null) { - log.warn("TeLsp is null"); - return; - } - lsps.put(lsp.teLspKey(), lsp); - } - - @Override - public void removeTeLsp(TeLspKey key) { - lsps.remove(key); - } - - @Override - public TeLsp getTeLsp(TeLspKey key) { - return lsps.get(key); - } - - @Override - public Collection getTeLsps() { - return ImmutableList.copyOf(lsps.values()); - } -} diff --git a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/TeTunnelManager.java b/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/TeTunnelManager.java deleted file mode 100644 index cd99d0ce3e..0000000000 --- a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/TeTunnelManager.java +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.tetunnel.impl; - -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.core.GroupId; -import org.onosproject.incubator.net.tunnel.DefaultTunnel; -import org.onosproject.incubator.net.tunnel.Tunnel; -import org.onosproject.incubator.net.tunnel.TunnelAdminService; -import org.onosproject.incubator.net.tunnel.TunnelId; -import org.onosproject.incubator.net.tunnel.TunnelName; -import org.onosproject.incubator.net.tunnel.TunnelService; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DeviceId; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.tetopology.management.api.TeTopology; -import org.onosproject.tetopology.management.api.TeTopologyKey; -import org.onosproject.tetopology.management.api.TeTopologyService; -import org.onosproject.tetunnel.api.TeTunnelAdminService; -import org.onosproject.tetunnel.api.TeTunnelProviderService; -import org.onosproject.tetunnel.api.TeTunnelService; -import org.onosproject.tetunnel.api.TeTunnelStore; -import org.onosproject.tetunnel.api.lsp.TeLsp; -import org.onosproject.tetunnel.api.lsp.TeLspKey; -import org.onosproject.tetunnel.api.tunnel.TeTunnel; -import org.onosproject.tetunnel.api.tunnel.TeTunnelEndpoint; -import org.onosproject.tetunnel.api.tunnel.TeTunnelKey; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Collection; -import java.util.List; - -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Implementation of TE tunnel attributes management service. - */ -@Component(immediate = true, service = { TeTunnelService.class, TeTunnelAdminService.class, - TeTunnelProviderService.class }) -public class TeTunnelManager implements TeTunnelService, TeTunnelAdminService, - TeTunnelProviderService { - - private static final String TE_TUNNEL_APP = "onos-app-tetunnel"; - - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TeTunnelStore store; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TunnelService tunnelService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TunnelAdminService tunnelAdminService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TeTopologyService teTopologyService; - - private ApplicationId appId; - - @Activate - public void activate() { - appId = coreService.registerApplication(TE_TUNNEL_APP); - - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); - } - - @Override - public TunnelId createTeTunnel(TeTunnel teTunnel) { - if (!store.addTeTunnel(teTunnel)) { - log.error("can not add teTunnel: {}", teTunnel); - return null; - } - - TunnelId tunnelId = TunnelId.valueOf(teTunnel.teTunnelKey().toString()); - Tunnel tunnel = new DefaultTunnel(ProviderId.NONE, - new TeTunnelEndpoint(teTunnel.srcNode(), - teTunnel.srcTp()), - new TeTunnelEndpoint(teTunnel.dstNode(), - teTunnel.dstTp()), - Tunnel.Type.MPLS, new GroupId(0), - tunnelId, - TunnelName.tunnelName(teTunnel.name()), - null, - DefaultAnnotations.builder().build()); - store.setTunnelId(teTunnel.teTunnelKey(), tunnelId); - TeTopology srcTopology = teTopologyService.teTopology( - teTopologyService.teNode(teTunnel.srcNode()) - .underlayTeTopologyId()); - if (srcTopology == null) { - srcTopology = teTopologyService.teTopology(teTunnel.srcNode() - .teTopologyKey()); - } - DeviceId domainId = srcTopology.ownerId(); - TunnelId id = tunnelService.setupTunnel(appId, domainId, tunnel, null); - if (id == null) { - log.error("can not create tunnel for te {}", - teTunnel.teTunnelKey()); - store.removeTeTunnel(teTunnel.teTunnelKey()); - return null; - } - if (!id.equals(tunnelId)) { - //this should not happen - log.error("tunnelId changed, oldId:{}, newId:{}", tunnelId, id); - store.setTunnelId(teTunnel.teTunnelKey(), id); - } - return id; - } - - @Override - public void setTunnelId(TeTunnelKey teTunnelKey, TunnelId tunnelId) { - store.setTunnelId(teTunnelKey, tunnelId); - } - - @Override - public void updateTeTunnel(TeTunnel teTunnel) { - //TODO: updateTeTunnel - } - - @Override - public void updateTunnelState(TeTunnelKey key, Tunnel.State state) { - tunnelAdminService.updateTunnelState( - tunnelService.queryTunnel(getTunnelId(key)), state); - } - - @Override - public TeLspKey teLspAdded(TeLsp lsp) { - if (store.addTeLsp(lsp)) { - return lsp.teLspKey(); - } - - return null; - } - - @Override - public void teLspRemoved(TeLsp lsp) { - store.removeTeLsp(lsp.teLspKey()); - } - - @Override - public void updateTeLsp(TeLsp lsp) { - store.updateTeLsp(lsp); - } - - @Override - public void removeTeTunnel(TeTunnelKey teTunnelKey) { - tunnelAdminService.updateTunnelState( - tunnelService.queryTunnel(getTunnelId(teTunnelKey)), - Tunnel.State.REMOVING); - List segmentTunnels = - getTeTunnel(teTunnelKey).segmentTunnels(); - if (segmentTunnels == null || segmentTunnels.isEmpty()) { - // this is a single domain tunnel, removes it right away - tunnelAdminService.removeTunnel(getTunnelId(teTunnelKey)); - } - } - - @Override - public void setSegmentTunnel(TeTunnelKey e2eTunnelKey, - List segmentTunnels) { - TeTunnel e2eTunnel = store.getTeTunnel(e2eTunnelKey); - if (e2eTunnel == null) { - log.error("unknown e2eTunnelKey: {}", e2eTunnelKey); - return; - } - e2eTunnel.segmentTunnels(segmentTunnels); - - for (TeTunnelKey key : segmentTunnels) { - TeTunnel segmentTunnel = store.getTeTunnel(key); - if (segmentTunnel == null) { - log.warn("unknown segmentTunnel: {}", key); - continue; - } - segmentTunnel.e2eTunnelKey(e2eTunnelKey); - } - } - - @Override - public TeTunnel getTeTunnel(TeTunnelKey key) { - return store.getTeTunnel(key); - } - - @Override - public TeTunnel getTeTunnel(TunnelId id) { - return store.getTeTunnel(id); - } - - @Override - public TunnelId getTunnelId(TeTunnelKey key) { - return store.getTunnelId(key); - } - - @Override - public Collection getTeTunnels() { - return store.getTeTunnels(); - } - - @Override - public Collection getTeTunnels(TeTunnel.Type type) { - return store.getTeTunnels(type); - } - - @Override - public Collection getTeTunnels(TeTopologyKey key) { - return store.getTeTunnels(key); - } - - @Override - public TeLsp getTeLsp(TeLspKey key) { - return store.getTeLsp(key); - } - - @Override - public Collection getTeLsps() { - return store.getTeLsps(); - } - - @Override - public TunnelId teTunnelAdded(TeTunnel teTunnel) { - //TODO teTunnelAdded - return null; - } - - @Override - public void teTunnelRemoved(TeTunnel teTunnel) { - TeTunnelKey e2eTunnelKey = teTunnel.e2eTunnelKey(); - store.removeTeTunnel(teTunnel.teTunnelKey()); - - // it's a segment tunnel - if (e2eTunnelKey != null) { - boolean finished = true; - for (TeTunnelKey key : getTeTunnel(e2eTunnelKey).segmentTunnels()) { - if (getTeTunnel(key) != null) { - // FIXME need a better way to determine whether a segment tunnel is removed. - finished = false; - } - } - if (finished) { - // all segment tunnels are removed - tunnelAdminService.removeTunnel(getTunnelId(e2eTunnelKey)); - store.removeTeTunnel(e2eTunnelKey); - } - } - } -} diff --git a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/package-info.java b/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/package-info.java deleted file mode 100644 index f07ffe90dd..0000000000 --- a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * IETF TE Tunnel attributes management implementation. - */ -package org.onosproject.tetunnel.impl; \ No newline at end of file diff --git a/apps/vtn/BUILD b/apps/vtn/BUILD deleted file mode 100644 index 8331afdefb..0000000000 --- a/apps/vtn/BUILD +++ /dev/null @@ -1,14 +0,0 @@ -BUNDLES = [ - "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc", - "//apps/vtn/sfcmgr:onos-apps-vtn-sfcmgr", - "//apps/vtn/vtnmgr:onos-apps-vtn-vtnmgr", - "//apps/vtn/vtnweb:onos-apps-vtn-vtnweb", -] - -onos_app( - category = "Integration", - description = "ONOS framework applications", - included_bundles = BUNDLES, - title = "OPNFV", - url = "http://onosproject.org", -) diff --git a/apps/vtn/sfcmgr/BUILD b/apps/vtn/sfcmgr/BUILD deleted file mode 100644 index e45ac6eeb6..0000000000 --- a/apps/vtn/sfcmgr/BUILD +++ /dev/null @@ -1,9 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + KRYO + [ - "//core/store/serializers:onos-core-serializers", - "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc", -] - -osgi_jar_with_tests( - test_deps = TEST_ADAPTERS, - deps = COMPILE_DEPS, -) diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/SfcFlowRuleInstallerService.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/SfcFlowRuleInstallerService.java deleted file mode 100644 index fa17aad3c0..0000000000 --- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/SfcFlowRuleInstallerService.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.installer; - -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.NshServicePathId; -import org.onosproject.vtnrsc.FiveTuple; -import org.onosproject.vtnrsc.PortChain; - -/** - * Abstraction of an entity which installs flow classification rules in ovs. - */ -public interface SfcFlowRuleInstallerService { - - /** - * Install flow classifier. - * - * @param portChain port-chain - * @param nshSpiId service path index identifier - * @return connectPoint the network identifier - */ - ConnectPoint installFlowClassifier(PortChain portChain, NshServicePathId nshSpiId); - - /** - * Uninstall flow classifier. - * - * @param portChain port-chain - * @param nshSpiId service path index identifier - * @return connectPoint the network identifier - */ - ConnectPoint unInstallFlowClassifier(PortChain portChain, NshServicePathId nshSpiId); - - /** - * Install load balanced flow rules. - * - * @param portChain port-chain - * @param fiveTuple five tuple packet information - * @param nshSpiId service path index identifier - * @return connectPoint the network identifier - */ - ConnectPoint installLoadBalancedFlowRules(PortChain portChain, FiveTuple fiveTuple, - NshServicePathId nshSpiId); - - /** - * Uninstall load balanced flow rules. - * - * @param portChain port-chain - * @param fiveTuple five tuple packet information - * @param nshSpiId service path index identifier - * @return connectPoint the network identifier - */ - ConnectPoint unInstallLoadBalancedFlowRules(PortChain portChain, FiveTuple fiveTuple, - NshServicePathId nshSpiId); - - /** - * Uninstall load balanced classifier rules. - * - * @param portChain port-chain - * @param fiveTuple five tuple packet information - * @param nshSpiId service path index identifier - * @return connectPoint the network identifier - */ - ConnectPoint unInstallLoadBalancedClassifierRules(PortChain portChain, FiveTuple fiveTuple, - NshServicePathId nshSpiId); -} diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImpl.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImpl.java deleted file mode 100644 index 3c76e89f4f..0000000000 --- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImpl.java +++ /dev/null @@ -1,908 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.installer.impl; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.net.flow.criteria.ExtensionSelectorType.ExtensionSelectorTypes.NICIRA_MATCH_ENCAP_ETH_TYPE; -import static org.onosproject.net.flow.criteria.ExtensionSelectorType.ExtensionSelectorTypes.NICIRA_MATCH_NSH_SI; -import static org.onosproject.net.flow.criteria.ExtensionSelectorType.ExtensionSelectorTypes.NICIRA_MATCH_NSH_SPI; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_ENCAP_ETH_DST; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_ENCAP_ETH_SRC; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_NSH_MDTYPE; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_NSH_NP; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_POP_NSH; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_PUSH_NSH; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_RESUBMIT_TABLE; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_CH1; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_CH2; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_CH3; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_CH4; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_SI; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_NSH_SPI; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_TUN_GPE_NP; -import static org.slf4j.LoggerFactory.getLogger; - -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; -import java.util.Set; - -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.Ethernet; -import org.onlab.packet.IPv4; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onlab.packet.TpPort; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.NshContextHeader; -import org.onosproject.net.NshServiceIndex; -import org.onosproject.net.NshServicePathId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.behaviour.BridgeConfig; -import org.onosproject.net.behaviour.ExtensionSelectorResolver; -import org.onosproject.net.behaviour.ExtensionTreatmentResolver; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.driver.DriverService; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.criteria.Criteria; -import org.onosproject.net.flow.criteria.ExtensionSelector; -import org.onosproject.net.flow.instructions.ExtensionTreatment; -import org.onosproject.net.flow.instructions.ExtensionTreatmentType; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.ForwardingObjective.Flag; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.net.host.HostService; -import org.onosproject.sfc.installer.SfcFlowRuleInstallerService; -import org.onosproject.vtnrsc.FiveTuple; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.onosproject.vtnrsc.service.VtnRscService; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.slf4j.Logger; - -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; - -/** - * Provides flow classifier installer implementation. - */ -public class SfcFlowRuleInstallerImpl implements SfcFlowRuleInstallerService { - private final Logger log = getLogger(getClass()); - - protected VirtualPortService virtualPortService; - protected VtnRscService vtnRscService; - protected PortPairService portPairService; - protected PortPairGroupService portPairGroupService; - protected FlowClassifierService flowClassifierService; - protected DriverService driverService; - protected DeviceService deviceService; - protected HostService hostService; - protected TenantNetworkService tenantNetworkService; - protected FlowObjectiveService flowObjectiveService; - protected ApplicationId appId; - - private static final String PORT_CHAIN_NOT_NULL = "Port-Chain cannot be null"; - private static final int FLOW_CLASSIFIER_PRIORITY = 0xC738; - private static final int DEFAULT_FORWARDER_PRIORITY = 0xD6D8; - private static final int ENCAP_OUTPUT_PRIORITY = 0x64; - private static final int TUNNEL_SEND_PRIORITY = 0xC8; - private static final String SWITCH_CHANNEL_ID = "channelId"; - private static final int ENCAP_OUTPUT_TABLE = 4; - private static final int TUNNEL_SEND_TABLE = 7; - private static final short ENCAP_ETH_TYPE = (short) 0x894f; - private static final String DEFAULT_IP = "0.0.0.0"; - private static final String VXLANPORT_HEAD = "vxlan-0.0.0.0"; - - /* Port chain params */ - private short nshSi; - List classifierList; - List forwarderList; - - /** - * Default constructor. - */ - public SfcFlowRuleInstallerImpl() { - } - - /** - * Explicit constructor. - * - * @param appId application id. - */ - public SfcFlowRuleInstallerImpl(ApplicationId appId) { - this.appId = checkNotNull(appId, "ApplicationId can not be null"); - ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class); - this.driverService = serviceDirectory.get(DriverService.class); - this.deviceService = serviceDirectory.get(DeviceService.class); - this.hostService = serviceDirectory.get(HostService.class); - this.virtualPortService = serviceDirectory.get(VirtualPortService.class); - this.vtnRscService = serviceDirectory.get(VtnRscService.class); - this.portPairService = serviceDirectory.get(PortPairService.class); - this.portPairGroupService = serviceDirectory.get(PortPairGroupService.class); - this.flowClassifierService = serviceDirectory.get(FlowClassifierService.class); - this.tenantNetworkService = serviceDirectory.get(TenantNetworkService.class); - nshSi = 0xff; - } - - @Override - public ConnectPoint installFlowClassifier(PortChain portChain, NshServicePathId nshSpiId) { - checkNotNull(portChain, PORT_CHAIN_NOT_NULL); - // Get the portPairGroup - List llPortPairGroupIdList = portChain.portPairGroups(); - ListIterator portPairGroupIdListIterator = llPortPairGroupIdList.listIterator(); - PortPairGroupId portPairGroupId = portPairGroupIdListIterator.next(); - PortPairGroup portPairGroup = portPairGroupService.getPortPairGroup(portPairGroupId); - List llPortPairIdList = portPairGroup.portPairs(); - - // Get port pair - ListIterator portPairListIterator = llPortPairIdList.listIterator(); - PortPairId portPairId = portPairListIterator.next(); - PortPair portPair = portPairService.getPortPair(portPairId); - - return installSfcClassifierRules(portChain, portPair, nshSpiId, null, Objective.Operation.ADD); - } - - @Override - public ConnectPoint unInstallFlowClassifier(PortChain portChain, NshServicePathId nshSpiId) { - checkNotNull(portChain, PORT_CHAIN_NOT_NULL); - // Get the portPairGroup - List llPortPairGroupIdList = portChain.portPairGroups(); - ListIterator portPairGroupIdListIterator = llPortPairGroupIdList.listIterator(); - PortPairGroupId portPairGroupId = portPairGroupIdListIterator.next(); - PortPairGroup portPairGroup = portPairGroupService.getPortPairGroup(portPairGroupId); - List llPortPairIdList = portPairGroup.portPairs(); - - // Get port pair - ListIterator portPairListIterator = llPortPairIdList.listIterator(); - PortPairId portPairId = portPairListIterator.next(); - PortPair portPair = portPairService.getPortPair(portPairId); - - return installSfcClassifierRules(portChain, portPair, nshSpiId, null, Objective.Operation.REMOVE); - } - - @Override - public ConnectPoint installLoadBalancedFlowRules(PortChain portChain, FiveTuple fiveTuple, - NshServicePathId nshSpiId) { - checkNotNull(portChain, PORT_CHAIN_NOT_NULL); - - return installSfcFlowRules(portChain, fiveTuple, nshSpiId, Objective.Operation.ADD); - } - - @Override - public ConnectPoint unInstallLoadBalancedFlowRules(PortChain portChain, FiveTuple fiveTuple, - NshServicePathId nshSpiId) { - checkNotNull(portChain, PORT_CHAIN_NOT_NULL); - return installSfcFlowRules(portChain, fiveTuple, nshSpiId, Objective.Operation.REMOVE); - } - - @Override - public ConnectPoint unInstallLoadBalancedClassifierRules(PortChain portChain, FiveTuple fiveTuple, - NshServicePathId nshSpiId) { - checkNotNull(portChain, PORT_CHAIN_NOT_NULL); - - List portPairs = portChain.getLoadBalancePath(fiveTuple); - // Get the first port pair - ListIterator portPairListIterator = portPairs.listIterator(); - PortPairId portPairId = portPairListIterator.next(); - PortPair portPair = portPairService.getPortPair(portPairId); - - return installSfcClassifierRules(portChain, portPair, nshSpiId, fiveTuple, Objective.Operation.REMOVE); - } - - public ConnectPoint installSfcFlowRules(PortChain portChain, FiveTuple fiveTuple, NshServicePathId nshSpiId, - Objective.Operation type) { - checkNotNull(portChain, PORT_CHAIN_NOT_NULL); - - classifierList = Lists.newArrayList(); - forwarderList = Lists.newArrayList(); - - // Get the load balanced path - List portPairs = portChain.getLoadBalancePath(fiveTuple); - - // Get the first port pair - ListIterator portPairListIterator = portPairs.listIterator(); - PortPairId portPairId = portPairListIterator.next(); - PortPair currentPortPair = portPairService.getPortPair(portPairId); - - ConnectPoint connectPoint = installSfcClassifierRules(portChain, currentPortPair, nshSpiId, fiveTuple, type); - - log.info("Installing encap and output for first port pair"); - - installSfcEncapOutputRule(currentPortPair, nshSpiId, type); - - PortPair nextPortPair; - while (portPairListIterator.hasNext()) { - portPairId = portPairListIterator.next(); - nextPortPair = portPairService.getPortPair(portPairId); - installSfcForwardRule(currentPortPair, nextPortPair, nshSpiId, type); - installSfcEncapOutputRule(nextPortPair, nshSpiId, type); - currentPortPair = nextPortPair; - } - installSfcEndRule(currentPortPair, nshSpiId, type); - - if (type.equals(Objective.Operation.ADD)) { - portChain.addSfcClassifiers(portChain.getLoadBalanceId(fiveTuple), classifierList); - portChain.addSfcForwarders(portChain.getLoadBalanceId(fiveTuple), forwarderList); - } else { - portChain.removeSfcClassifiers(portChain.getLoadBalanceId(fiveTuple), classifierList); - portChain.removeSfcForwarders(portChain.getLoadBalanceId(fiveTuple), forwarderList); - } - return connectPoint; - } - - public void installSfcTunnelReceiveRule(DeviceId deviceId, NshServicePathId nshSpiId, Objective.Operation type) { - - DriverHandler handler = driverService.createHandler(deviceId); - ExtensionSelectorResolver selectorResolver = handler.behaviour(ExtensionSelectorResolver.class); - ExtensionSelector nshSpiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type()); - ExtensionSelector nshSiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type()); - - try { - nshSpiSelector.setPropertyValue("nshSpi", nshSpiId); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Spi Id for end rule {}", e.getMessage()); - } - try { - nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi)); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Si Id for end rule {}", e.getMessage()); - } - - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.extension(nshSpiSelector, deviceId); - selector.extension(nshSiSelector, deviceId); - - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.transition(ENCAP_OUTPUT_TABLE); - - sendSfcRule(selector, treatment, deviceId, type, DEFAULT_FORWARDER_PRIORITY); - } - - public void installSfcTunnelSendRule(DeviceId deviceId, NshServicePathId nshSpiId, Objective.Operation type) { - - // Prepare selector with nsp, nsi and inport from egress of port pair - DriverHandler handler = driverService.createHandler(deviceId); - ExtensionSelectorResolver selectorResolver = handler.behaviour(ExtensionSelectorResolver.class); - ExtensionSelector nshSpiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type()); - ExtensionSelector nshSiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type()); - ExtensionSelector encapEthTypeSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_ENCAP_ETH_TYPE - .type()); - try { - nshSpiSelector.setPropertyValue("nshSpi", nshSpiId); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Spi Id for end rule {}", e.getMessage()); - } - try { - nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi)); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Si Id for end rule {}", e.getMessage()); - } - try { - encapEthTypeSelector.setPropertyValue("encapEthType", ENCAP_ETH_TYPE); - } catch (Exception e) { - log.error("Failed to set extension selector to match encapEthType {}", deviceId); - } - - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.extension(nshSpiSelector, deviceId); - selector.extension(nshSiSelector, deviceId); - - ExtensionTreatmentResolver treatmentResolver = handler.behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment tunGpeNpTreatment = treatmentResolver.getExtensionInstruction(NICIRA_TUN_GPE_NP.type()); - try { - tunGpeNpTreatment.setPropertyValue("tunGpeNp", ((byte) 4)); - } catch (Exception e) { - log.error("Failed to get extension instruction to set tunGpeNp {}", deviceId); - } - - ExtensionTreatment moveC1ToC1 = treatmentResolver - .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes - .NICIRA_MOV_NSH_C1_TO_C1.type()); - - ExtensionTreatment moveC2ToC2 = treatmentResolver - .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes - .NICIRA_MOV_NSH_C2_TO_C2.type()); - - ExtensionTreatment moveC3ToC3 = treatmentResolver - .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes - .NICIRA_MOV_NSH_C3_TO_C3.type()); - - ExtensionTreatment moveC4ToC4 = treatmentResolver - .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes - .NICIRA_MOV_NSH_C4_TO_C4.type()); - - ExtensionTreatment moveTunIpv4DstToTunIpv4Dst = treatmentResolver - .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes - .NICIRA_MOV_TUN_IPV4_DST_TO_TUN_IPV4_DST.type()); - - ExtensionTreatment moveTunIdToTunId = treatmentResolver - .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes - .NICIRA_MOV_TUN_ID_TO_TUN_ID.type()); - - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.extension(tunGpeNpTreatment, deviceId); - treatment.extension(moveC1ToC1, deviceId); - treatment.extension(moveC2ToC2, deviceId); - treatment.extension(moveC3ToC3, deviceId); - treatment.extension(moveC4ToC4, deviceId); - treatment.extension(moveTunIpv4DstToTunIpv4Dst, deviceId); - treatment.extension(moveTunIdToTunId, deviceId); - - Iterable devices = deviceService.getAvailableDevices(); - DeviceId localControllerId = getControllerId(deviceService.getDevice(deviceId), devices); - DriverHandler controllerHandler = driverService.createHandler(localControllerId); - - BridgeConfig bridgeConfig = controllerHandler.behaviour(BridgeConfig.class); - Set ports = bridgeConfig.getPortNumbers(); - String tunnelName = "vxlan-" + DEFAULT_IP; - ports.stream() - .filter(p -> p.name().equalsIgnoreCase(tunnelName)) - .forEach(p -> { - treatment.setOutput(p); - sendSfcRule(selector, treatment, deviceId, type, TUNNEL_SEND_PRIORITY); - }); - } - - public void installSfcEndRule(PortPair portPair, NshServicePathId nshSpiId, Objective.Operation type) { - DeviceId deviceId = vtnRscService.getSfToSffMaping(VirtualPortId.portId(portPair.egress())); - MacAddress srcMacAddress = virtualPortService.getPort(VirtualPortId.portId(portPair.egress())).macAddress(); - Host host = hostService.getHost(HostId.hostId(srcMacAddress)); - PortNumber port = host.location().port(); - - // Prepare selector with nsp, nsi and inport from egress of port pair - DriverHandler handler = driverService.createHandler(deviceId); - ExtensionSelectorResolver selectorResolver = handler.behaviour(ExtensionSelectorResolver.class); - ExtensionSelector nshSpiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type()); - ExtensionSelector nshSiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type()); - ExtensionSelector encapEthTypeSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_ENCAP_ETH_TYPE - .type()); - try { - nshSpiSelector.setPropertyValue("nshSpi", nshSpiId); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Spi Id for end rule {}", e.getMessage()); - } - // Decrement the SI - nshSi = (short) (nshSi - 1); - try { - nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi)); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Si Id for end rule {}", e.getMessage()); - } - try { - encapEthTypeSelector.setPropertyValue("encapEthType", ENCAP_ETH_TYPE); - } catch (Exception e) { - log.error("Failed to set extension selector to match encapEthType {}", deviceId); - } - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.extension(encapEthTypeSelector, deviceId); - selector.extension(nshSpiSelector, deviceId); - selector.extension(nshSiSelector, deviceId); - selector.matchInPort(port); - - // Set treatment to pop nsh header, set tunnel id and resubmit to table - // 0. - ExtensionTreatmentResolver treatmentResolver = handler.behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment popNshTreatment = treatmentResolver.getExtensionInstruction(NICIRA_POP_NSH.type()); - - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.extension(popNshTreatment, deviceId); - - VirtualPort virtualPort = virtualPortService.getPort(VirtualPortId.portId(portPair.ingress())); - SegmentationId segmentationId = tenantNetworkService.getNetwork(virtualPort.networkId()).segmentationId(); - treatment.add(Instructions.modTunnelId(Long.parseLong(segmentationId.toString()))); - - ExtensionTreatment resubmitTableTreatment = treatmentResolver.getExtensionInstruction(NICIRA_RESUBMIT_TABLE - .type()); - - PortNumber vxlanPortNumber = getVxlanPortNumber(deviceId); - - try { - resubmitTableTreatment.setPropertyValue("inPort", vxlanPortNumber); - } catch (Exception e) { - log.error("Failed to set extension treatment for resubmit table in port {}", deviceId); - } - try { - resubmitTableTreatment.setPropertyValue("table", ((short) 0)); - } catch (Exception e) { - log.error("Failed to set extension treatment for resubmit table {}", deviceId); - } - treatment.extension(resubmitTableTreatment, deviceId); - - sendSfcRule(selector, treatment, deviceId, type, DEFAULT_FORWARDER_PRIORITY); - } - - public void installSfcForwardRule(PortPair portPair, PortPair nextPortPair, NshServicePathId nshSpiId, - Objective.Operation type) { - DeviceId deviceId = vtnRscService.getSfToSffMaping(VirtualPortId.portId(portPair.egress())); - MacAddress srcMacAddress = virtualPortService.getPort(VirtualPortId.portId(portPair.egress())).macAddress(); - Host host = hostService.getHost(HostId.hostId(srcMacAddress)); - PortNumber port = host.location().port(); - - DriverHandler handler = driverService.createHandler(deviceId); - ExtensionSelectorResolver resolver = handler.behaviour(ExtensionSelectorResolver.class); - - // Prepare selector with nsp, nsi and inport from egress of port pair - ExtensionSelector nshSpiSelector = resolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type()); - ExtensionSelector nshSiSelector = resolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type()); - try { - nshSpiSelector.setPropertyValue("nshSpi", nshSpiId); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Spi Id for forward rule {}", e.getMessage()); - } - // Decrement the SI - nshSi = (short) (nshSi - 1); - try { - nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi)); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Si Id for forward rule {}", e.getMessage()); - } - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.extension(nshSpiSelector, deviceId); - selector.extension(nshSiSelector, deviceId); - selector.matchInPort(port); - - DeviceId nextDeviceId = vtnRscService.getSfToSffMaping(VirtualPortId.portId(nextPortPair.ingress())); - if (deviceId.equals(nextDeviceId)) { - - // Treatment with transition - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.transition(ENCAP_OUTPUT_TABLE); - - sendSfcRule(selector, treatment, deviceId, type, DEFAULT_FORWARDER_PRIORITY); - } else { - // Treatment with with transition to send on tunnel - ExtensionTreatmentResolver treatmentResolver = handler.behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment moveC2ToTunId = treatmentResolver - .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes - .NICIRA_MOV_NSH_C2_TO_TUN_ID.type()); - - Device remoteDevice = deviceService.getDevice(nextDeviceId); - String url = remoteDevice.annotations().value(SWITCH_CHANNEL_ID); - String remoteControllerIp = url.substring(0, url.lastIndexOf(":")); - if (remoteControllerIp == null) { - log.error("Can't find remote controller of device: {}", nextDeviceId.toString()); - return; - } - - ExtensionTreatment tunnelDsttreatment = treatmentResolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST - .type()); - try { - tunnelDsttreatment.setPropertyValue("tunnelDst", Ip4Address.valueOf(remoteControllerIp)); - } catch (Exception e) { - log.error("Failed to get extension instruction to set tunnel dst {}", deviceId); - } - - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.extension(moveC2ToTunId, deviceId); - treatment.extension(tunnelDsttreatment, deviceId); - treatment.transition(TUNNEL_SEND_TABLE); - - sendSfcRule(selector, treatment, deviceId, type, DEFAULT_FORWARDER_PRIORITY); - - installSfcTunnelSendRule(deviceId, nshSpiId, type); - installSfcTunnelReceiveRule(nextDeviceId, nshSpiId, type); - } - } - - public void installSfcEncapOutputRule(PortPair portPair, NshServicePathId nshSpiId, Objective.Operation type) { - - DeviceId deviceId = vtnRscService.getSfToSffMaping(VirtualPortId.portId(portPair.ingress())); - MacAddress srcMacAddress = virtualPortService.getPort(VirtualPortId.portId(portPair.ingress())).macAddress(); - Host host = hostService.getHost(HostId.hostId(srcMacAddress)); - PortNumber port = host.location().port(); - - DriverHandler handler = driverService.createHandler(deviceId); - ExtensionSelectorResolver resolver = handler.behaviour(ExtensionSelectorResolver.class); - - // Prepare selector with nsp, nsi and encap eth type - ExtensionSelector nshSpiSelector = resolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type()); - ExtensionSelector nshSiSelector = resolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type()); - ExtensionSelector nshEncapEthTypeSelector = resolver.getExtensionSelector(NICIRA_MATCH_ENCAP_ETH_TYPE.type()); - - try { - nshSpiSelector.setPropertyValue("nshSpi", nshSpiId); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Spi Id for encap rule {}", e.getMessage()); - } - try { - nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi)); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Si Id for encap rule {}", e.getMessage()); - } - try { - nshEncapEthTypeSelector.setPropertyValue("encapEthType", ENCAP_ETH_TYPE); - } catch (Exception e) { - log.error("Failed to set extension selector to match Nsh Si Id {}", deviceId); - } - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - selector.extension(nshSpiSelector, deviceId); - selector.extension(nshSiSelector, deviceId); - - ExtensionTreatmentResolver treatmentResolver = handler.behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment encapEthSrcTreatment = treatmentResolver - .getExtensionInstruction(NICIRA_ENCAP_ETH_SRC.type()); - ExtensionTreatment encapEthDstTreatment = treatmentResolver - .getExtensionInstruction(NICIRA_ENCAP_ETH_DST.type()); - - try { - encapEthDstTreatment.setPropertyValue("encapEthDst", srcMacAddress); - } catch (Exception e) { - log.error("Failed to set extension treatment to set encap eth dst {}", deviceId); - } - // TODO: move from packet source mac address - try { - encapEthSrcTreatment.setPropertyValue("encapEthSrc", srcMacAddress); - } catch (Exception e) { - log.error("Failed to set extension treatment to set encap eth src {}", deviceId); - } - - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.extension(encapEthSrcTreatment, deviceId); - treatment.extension(encapEthDstTreatment, deviceId); - treatment.setOutput(port); - - sendSfcRule(selector, treatment, deviceId, type, ENCAP_OUTPUT_PRIORITY); - forwarderList.add(deviceId); - } - - public ConnectPoint installSfcClassifierRules(PortChain portChain, PortPair portPair, NshServicePathId nshSpiId, - FiveTuple fiveTuple, Objective.Operation type) { - - DeviceId deviceIdfromPortPair = vtnRscService.getSfToSffMaping(VirtualPortId.portId(portPair.ingress())); - MacAddress srcMacAddress = virtualPortService.getPort(VirtualPortId.portId(portPair.ingress())).macAddress(); - VirtualPort virtualPort = virtualPortService.getPort(VirtualPortId.portId(portPair.ingress())); - Host host = hostService.getHost(HostId.hostId(srcMacAddress)); - PortNumber port = host.location().port(); - - DeviceId deviceId = deviceIdfromPortPair; - - // get flow classifiers - List llFlowClassifierList = portChain.flowClassifiers(); - ListIterator flowClassifierListIterator = llFlowClassifierList.listIterator(); - - while (flowClassifierListIterator.hasNext()) { - FlowClassifierId flowclassifierId = flowClassifierListIterator.next(); - FlowClassifier flowClassifier = flowClassifierService.getFlowClassifier(flowclassifierId); - - if ((flowClassifier.srcPort() != null) && (!flowClassifier.srcPort().portId().isEmpty())) { - deviceId = vtnRscService.getSfToSffMaping(flowClassifier.srcPort()); - } - - // Build Traffic selector. - TrafficSelector.Builder selector = packClassifierSelector(flowClassifier, fiveTuple); - - if (fiveTuple == null) { - // Send the packet to controller - log.info("Downloading rule to send packet to controller"); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.setOutput(PortNumber.CONTROLLER); - sendSfcRule(selector, treatment, deviceId, type, FLOW_CLASSIFIER_PRIORITY); - continue; - } - - if (deviceId != null && !deviceId.equals(deviceIdfromPortPair)) { - // First SF is in another device. Set tunnel ipv4 destination to - // treatment - Device remoteDevice = deviceService.getDevice(deviceIdfromPortPair); - String url = remoteDevice.annotations().value(SWITCH_CHANNEL_ID); - String remoteControllerIp = url.substring(0, url.lastIndexOf(":")); - if (remoteControllerIp == null) { - log.error("Can't find remote controller of device: {}", deviceIdfromPortPair.toString()); - return null; - } - - DriverHandler handler = driverService.createHandler(deviceId); - ExtensionTreatmentResolver resolver = handler.behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment tunnelDsttreatment = resolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type()); - try { - tunnelDsttreatment.setPropertyValue("tunnelDst", Ip4Address.valueOf(remoteControllerIp)); - } catch (Exception e) { - log.error("Failed to get extension instruction to set tunnel dst {}", deviceId); - } - - TrafficTreatment.Builder treatment = packClassifierTreatment(deviceId, virtualPort, port, - nshSpiId, flowClassifier); - treatment.extension(tunnelDsttreatment, deviceId); - treatment.transition(TUNNEL_SEND_TABLE); - sendSfcRule(selector, treatment, deviceId, type, flowClassifier.priority()); - - selector.matchInPort(PortNumber.CONTROLLER); - sendSfcRule(selector, treatment, deviceId, type, flowClassifier.priority()); - classifierList.add(deviceId); - - installSfcTunnelSendRule(deviceId, nshSpiId, type); - installSfcTunnelReceiveRule(deviceIdfromPortPair, nshSpiId, type); - - } else { - // classifier and port pair are in the same OVS. So directly - // send packet to first port pair - TrafficTreatment.Builder treatment = packClassifierTreatment(deviceIdfromPortPair, virtualPort, port, - nshSpiId, flowClassifier); - treatment.transition(ENCAP_OUTPUT_TABLE); - sendSfcRule(selector, treatment, deviceIdfromPortPair, type, flowClassifier.priority()); - - selector.matchInPort(PortNumber.CONTROLLER); - sendSfcRule(selector, treatment, deviceId, type, flowClassifier.priority()); - classifierList.add(deviceIdfromPortPair); - } - } - - return host.location(); - } - - /** - * Pack Traffic selector. - * - * @param flowClassifier flow-classifier - * @param fiveTuple five tuple info for the packet - * @return traffic selector - */ - public TrafficSelector.Builder packClassifierSelector(FlowClassifier flowClassifier, FiveTuple fiveTuple) { - - TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); - - if ((flowClassifier.srcIpPrefix() != null) && (flowClassifier.srcIpPrefix().prefixLength() != 0)) { - selector.matchIPSrc(flowClassifier.srcIpPrefix()); - } else if (fiveTuple != null && fiveTuple.ipSrc() != null) { - selector.matchIPSrc(IpPrefix.valueOf(fiveTuple.ipSrc(), 24)); - } - - if ((flowClassifier.dstIpPrefix() != null) && (flowClassifier.dstIpPrefix().prefixLength() != 0)) { - selector.matchIPDst(flowClassifier.dstIpPrefix()); - } else if (fiveTuple != null && fiveTuple.ipDst() != null) { - selector.matchIPDst(IpPrefix.valueOf(fiveTuple.ipDst(), 24)); - } - - if ((flowClassifier.protocol() != null) && (!flowClassifier.protocol().isEmpty())) { - if ("TCP".equalsIgnoreCase(flowClassifier.protocol())) { - selector.add(Criteria.matchIPProtocol(IPv4.PROTOCOL_TCP)); - } else if ("UDP".equalsIgnoreCase(flowClassifier.protocol())) { - selector.add(Criteria.matchIPProtocol(IPv4.PROTOCOL_UDP)); - } else if ("ICMP".equalsIgnoreCase(flowClassifier.protocol())) { - selector.add(Criteria.matchIPProtocol(IPv4.PROTOCOL_ICMP)); - } - } else if (fiveTuple != null && fiveTuple.protocol() != 0) { - selector.add(Criteria.matchIPProtocol(fiveTuple.protocol())); - } - - if (((flowClassifier.etherType() != null) && (!flowClassifier.etherType().isEmpty())) - && ("IPv4".equals(flowClassifier.etherType()) || "IPv6".equals(flowClassifier.etherType()))) { - if ("IPv4".equals(flowClassifier.etherType())) { - selector.matchEthType(Ethernet.TYPE_IPV4); - } else { - selector.matchEthType(Ethernet.TYPE_IPV6); - } - } - - if ((flowClassifier.srcPort() != null) && (!flowClassifier.srcPort().portId().isEmpty())) { - VirtualPortId vPortId = VirtualPortId.portId(flowClassifier.srcPort().portId()); - MacAddress macAddress = virtualPortService.getPort(vPortId).macAddress(); - Host host = hostService.getHost(HostId.hostId(macAddress)); - selector.matchInPort(host.location().port()); - } - - // Take the port information from five tuple only when the protocol is - // TCP. - if (fiveTuple != null && fiveTuple.protocol() == IPv4.PROTOCOL_TCP) { - selector.matchTcpSrc(TpPort.tpPort((int) fiveTuple.portSrc().toLong())); - selector.matchTcpDst(TpPort.tpPort((int) fiveTuple.portDst().toLong())); - } else { - // For udp packets take the port information from flow classifier - List srcPortRange = new LinkedList<>(); - List dstPortRange = new LinkedList<>(); - if ((flowClassifier.minSrcPortRange() != 0) && flowClassifier.maxSrcPortRange() != 0 - && flowClassifier.minDstPortRange() != 0 && flowClassifier.maxDstPortRange() != 0) { - - for (int port = flowClassifier.minSrcPortRange(); port <= flowClassifier.maxSrcPortRange(); port++) { - srcPortRange.add(TpPort.tpPort(port)); - } - for (int port = flowClassifier.minDstPortRange(); port <= flowClassifier.maxDstPortRange(); port++) { - dstPortRange.add(TpPort.tpPort(port)); - } - } - - for (TpPort inPort : srcPortRange) { - selector.matchUdpSrc(inPort); - } - for (TpPort outPort : dstPortRange) { - selector.matchUdpDst(outPort); - } - } - return selector; - } - - /** - * Pack traffic treatment. - * - * @param deviceId device id - * @param virtualPort virtual port - * @param port port number - * @param nshSpi nsh spi - * @param flowClassifier flow-classifier - * @return traffic treatment - */ - public TrafficTreatment.Builder packClassifierTreatment(DeviceId deviceId, VirtualPort virtualPort, - PortNumber port, NshServicePathId nshSpi, FlowClassifier flowClassifier) { - - TrafficTreatment.Builder treatmentBuilder = DefaultTrafficTreatment.builder(); - - // set tunnel id - SegmentationId segmentationId = tenantNetworkService.getNetwork(virtualPort.networkId()).segmentationId(); - treatmentBuilder.add(Instructions.modTunnelId(Long.parseLong(segmentationId.toString()))); - - // Set all NSH header fields - DriverHandler handler = driverService.createHandler(deviceId); - ExtensionTreatmentResolver resolver = handler.behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment nspIdTreatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_SPI.type()); - ExtensionTreatment nsiIdTreatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_SI.type()); - ExtensionTreatment pushNshTreatment = resolver.getExtensionInstruction(NICIRA_PUSH_NSH.type()); - - ExtensionTreatment nshCh1Treatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_CH1.type()); - ExtensionTreatment nshCh2Treatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_CH2.type()); - ExtensionTreatment nshCh3Treatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_CH3.type()); - ExtensionTreatment nshCh4Treatment = resolver.getExtensionInstruction(NICIRA_SET_NSH_CH4.type()); - ExtensionTreatment nshMdTypeTreatment = resolver.getExtensionInstruction(NICIRA_NSH_MDTYPE.type()); - ExtensionTreatment nshNpTreatment = resolver.getExtensionInstruction(NICIRA_NSH_NP.type()); - - try { - nshMdTypeTreatment.setPropertyValue("nshMdType", ((byte) 1)); - } catch (Exception e) { - log.error("Failed to get extension instruction to set nshMdType {}", deviceId); - } - try { - nshNpTreatment.setPropertyValue("nshNp", ((byte) 3)); - } catch (Exception e) { - log.error("Failed to get extension instruction to set nshNp {}", deviceId); - } - try { - nspIdTreatment.setPropertyValue("nshSpi", nshSpi); - } catch (Exception e) { - log.error("Failed to get extension instruction to set Nsh Spi Id {}", deviceId); - } - try { - nsiIdTreatment.setPropertyValue("nshSi", NshServiceIndex.of(nshSi)); - } catch (Exception e) { - log.error("Failed to get extension instruction to set Nsh Si Id {}", deviceId); - } - try { - nshCh1Treatment.setPropertyValue("nshCh", NshContextHeader.of(1)); - } catch (Exception e) { - log.error("Failed to get extension instruction to set NshCh1 {}", deviceId); - } - try { - nshCh2Treatment.setPropertyValue("nshCh", NshContextHeader.of(Integer.parseInt(segmentationId.toString()))); - } catch (Exception e) { - log.error("Failed to get extension instruction to set NshCh2 {}", deviceId); - } - try { - nshCh3Treatment.setPropertyValue("nshCh", NshContextHeader.of(3)); - } catch (Exception e) { - log.error("Failed to get extension instruction to set NshCh3 {}", deviceId); - } - try { - nshCh4Treatment.setPropertyValue("nshCh", NshContextHeader.of(4)); - } catch (Exception e) { - log.error("Failed to get extension instruction to set NshCh4 {}", deviceId); - } - treatmentBuilder.extension(pushNshTreatment, deviceId); - treatmentBuilder.extension(nshMdTypeTreatment, deviceId); - treatmentBuilder.extension(nshNpTreatment, deviceId); - treatmentBuilder.extension(nspIdTreatment, deviceId); - treatmentBuilder.extension(nsiIdTreatment, deviceId); - treatmentBuilder.extension(nshCh1Treatment, deviceId); - treatmentBuilder.extension(nshCh2Treatment, deviceId); - treatmentBuilder.extension(nshCh3Treatment, deviceId); - treatmentBuilder.extension(nshCh4Treatment, deviceId); - - return treatmentBuilder; - } - - /** - * Get the ControllerId from the device . - * - * @param device Device - * @param devices Devices - * @return Controller Id - */ - public DeviceId getControllerId(Device device, Iterable devices) { - for (Device d : devices) { - if (d.type() == Device.Type.CONTROLLER && d.id().toString() - .contains(getControllerIpOfSwitch(device))) { - return d.id(); - } - } - log.info("Can not find controller for device : {}", device.id()); - return null; - } - - /** - * Get the ControllerIp from the device . - * - * @param device Device - * @return Controller Ip - */ - public String getControllerIpOfSwitch(Device device) { - String url = device.annotations().value(SWITCH_CHANNEL_ID); - return url.substring(0, url.lastIndexOf(":")); - } - - /** - * Send service-function-forwarder to OVS. - * - * @param selector traffic selector - * @param treatment traffic treatment - * @param deviceId device id - * @param type operation type - * @param priority priority of classifier - */ - public void sendSfcRule(TrafficSelector.Builder selector, TrafficTreatment.Builder treatment, DeviceId deviceId, - Objective.Operation type, int priority) { - - log.info("Sending sfc flow rule. Selector {}, Treatment {}", selector.toString(), - treatment.toString()); - ForwardingObjective.Builder objective = DefaultForwardingObjective.builder().withTreatment(treatment.build()) - .withSelector(selector.build()).fromApp(appId).makePermanent().withFlag(Flag.VERSATILE) - .withPriority(priority); - - if (type.equals(Objective.Operation.ADD)) { - log.debug("flowClassifierRules-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("flowClassifierRules-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - private PortNumber getVxlanPortNumber(DeviceId deviceId) { - Iterable ports = deviceService.getPorts(deviceId); - Port vxlanPort = Sets.newHashSet(ports).stream() - .filter(p -> !p.number().equals(PortNumber.LOCAL)) - .filter(p -> p.annotations().value(AnnotationKeys.PORT_NAME) - .startsWith(VXLANPORT_HEAD)) - .findFirst().get(); - return vxlanPort.number(); - } -} diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/package-info.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/package-info.java deleted file mode 100644 index dd047f46a3..0000000000 --- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of Service for installing flow classifier rules in OVS. - */ -package org.onosproject.sfc.installer.impl; diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/package-info.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/package-info.java deleted file mode 100644 index 989a6763be..0000000000 --- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/installer/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for installing flow classifier rules in OVS. - */ -package org.onosproject.sfc.installer; diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/SfcService.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/SfcService.java deleted file mode 100644 index 231438afbe..0000000000 --- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/SfcService.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.manager; - -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.PortChain; - -/** - * SFC application that applies flows to the device. - */ -public interface SfcService { - - /** - * When port-pair is created, check whether Forwarding Rule needs to be - * updated in OVS. - * - * @param portPair port-pair - */ - void onPortPairCreated(PortPair portPair); - - /** - * When port-pair is deleted, check whether Forwarding Rule needs to be - * updated in OVS. - * - * @param portPair port-pair - */ - void onPortPairDeleted(PortPair portPair); - - /** - * When port-pair-group is created, check whether Forwarding Rule needs to - * be updated in OVS. - * - * @param portPairGroup port-pair-group - */ - void onPortPairGroupCreated(PortPairGroup portPairGroup); - - /** - * When port-pair-group is deleted, check whether Forwarding Rule needs to - * be updated in OVS. - * - * @param portPairGroup port-pair-group - */ - void onPortPairGroupDeleted(PortPairGroup portPairGroup); - - /** - * When flow-classifier is created, check whether Forwarding Rule needs to - * be updated in OVS. - * - * @param flowClassifier flow-classifier - */ - void onFlowClassifierCreated(FlowClassifier flowClassifier); - - /** - * When flow-classifier is deleted, check whether Forwarding Rule needs to - * be updated in OVS. - * - * @param flowClassifier flow-classifier - */ - void onFlowClassifierDeleted(FlowClassifier flowClassifier); - - /** - * When port-chain is created, check whether Forwarding Rule needs to be - * updated in OVS. - * - * @param portChain port-chain - */ - void onPortChainCreated(PortChain portChain); - - /** - * When port-chain is deleted, check whether Forwarding Rule needs to be - * updated in OVS. - * - * @param portChain port-chain - */ - void onPortChainDeleted(PortChain portChain); -} diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/SfcManager.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/SfcManager.java deleted file mode 100644 index d4035024a2..0000000000 --- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/SfcManager.java +++ /dev/null @@ -1,675 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.manager.impl; - -import com.google.common.collect.Lists; -import org.onlab.packet.Ethernet; -import org.onlab.packet.IPv4; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.TCP; -import org.onlab.packet.UDP; -import org.onlab.util.ItemNotFoundException; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.core.IdGenerator; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.NshServicePathId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.packet.DefaultOutboundPacket; -import org.onosproject.net.packet.OutboundPacket; -import org.onosproject.net.packet.PacketContext; -import org.onosproject.net.packet.PacketProcessor; -import org.onosproject.net.packet.PacketService; -import org.onosproject.sfc.installer.impl.SfcFlowRuleInstallerImpl; -import org.onosproject.sfc.manager.SfcService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.DistributedSet; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.DefaultFiveTuple; -import org.onosproject.vtnrsc.FiveTuple; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.LoadBalanceId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.event.VtnRscEvent; -import org.onosproject.vtnrsc.event.VtnRscListener; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.onosproject.vtnrsc.service.VtnRscService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import java.util.Set; -import java.util.UUID; - -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of SFC Service. - */ -@Component(immediate = true, service = SfcService.class) -public class SfcManager implements SfcService { - - private final Logger log = getLogger(getClass()); - - private String nshSpiIdTopic = "nsh-spi-id"; - private static final String APP_ID = "org.onosproject.app.vtn"; - private static final int SFC_PRIORITY = 1000; - private static final int MAX_NSH_SPI_ID = 0x7FFFF; - private static final int MAX_LOAD_BALANCE_ID = 0x20; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VtnRscService vtnRscService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PacketService packetService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PortChainService portChainService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PortPairGroupService portPairGroupService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected FlowClassifierService flowClassifierService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VirtualPortService virtualPortService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - protected SfcPacketProcessor processor = new SfcPacketProcessor(); - - protected ApplicationId appId; - protected IdGenerator nshSpiIdGenerator; - protected EventuallyConsistentMap nshSpiPortChainMap; - protected EventuallyConsistentMap> portChainFiveTupleMap; - protected DistributedSet nshSpiIdFreeList; - - private final VtnRscListener vtnRscListener = new InnerVtnRscListener(); - - @Activate - public void activate() { - appId = coreService.registerApplication(APP_ID); - nshSpiIdGenerator = coreService.getIdGenerator(nshSpiIdTopic); - - vtnRscService.addListener(vtnRscListener); - - KryoNamespace.Builder serializer = KryoNamespace - .newBuilder() - .register(PortChainId.class, UUID.class, FiveTuple.class, IpAddress.class, PortNumber.class, - DefaultFiveTuple.class, IpAddress.Version.class, TenantId.class); - - nshSpiPortChainMap = storageService.eventuallyConsistentMapBuilder() - .withName("nshSpiPortChainMap").withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()).build(); - - portChainFiveTupleMap = storageService.>eventuallyConsistentMapBuilder() - .withName("portChainFiveTupleMap").withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()).build(); - - nshSpiIdFreeList = storageService.setBuilder() - .withName("nshSpiIdDeletedList") - .withSerializer(Serializer.using(KryoNamespaces.API)) - .build() - .asDistributedSet(); - - packetService.addProcessor(processor, PacketProcessor.director(SFC_PRIORITY)); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - vtnRscService.removeListener(vtnRscListener); - packetService.removeProcessor(processor); - log.info("Stopped"); - } - - /* - * Handle events. - */ - private class InnerVtnRscListener implements VtnRscListener { - @Override - public void event(VtnRscEvent event) { - - if (VtnRscEvent.Type.PORT_PAIR_PUT == event.type()) { - PortPair portPair = event.subject().portPair(); - onPortPairCreated(portPair); - } else if (VtnRscEvent.Type.PORT_PAIR_DELETE == event.type()) { - PortPair portPair = event.subject().portPair(); - onPortPairDeleted(portPair); - } else if (VtnRscEvent.Type.PORT_PAIR_UPDATE == event.type()) { - PortPair portPair = event.subject().portPair(); - onPortPairDeleted(portPair); - onPortPairCreated(portPair); - } else if (VtnRscEvent.Type.PORT_PAIR_GROUP_PUT == event.type()) { - PortPairGroup portPairGroup = event.subject().portPairGroup(); - onPortPairGroupCreated(portPairGroup); - } else if (VtnRscEvent.Type.PORT_PAIR_GROUP_DELETE == event.type()) { - PortPairGroup portPairGroup = event.subject().portPairGroup(); - onPortPairGroupDeleted(portPairGroup); - } else if (VtnRscEvent.Type.PORT_PAIR_GROUP_UPDATE == event.type()) { - PortPairGroup portPairGroup = event.subject().portPairGroup(); - onPortPairGroupDeleted(portPairGroup); - onPortPairGroupCreated(portPairGroup); - } else if (VtnRscEvent.Type.FLOW_CLASSIFIER_PUT == event.type()) { - FlowClassifier flowClassifier = event.subject().flowClassifier(); - onFlowClassifierCreated(flowClassifier); - } else if (VtnRscEvent.Type.FLOW_CLASSIFIER_DELETE == event.type()) { - FlowClassifier flowClassifier = event.subject().flowClassifier(); - onFlowClassifierDeleted(flowClassifier); - } else if (VtnRscEvent.Type.FLOW_CLASSIFIER_UPDATE == event.type()) { - FlowClassifier flowClassifier = event.subject().flowClassifier(); - onFlowClassifierDeleted(flowClassifier); - onFlowClassifierCreated(flowClassifier); - } else if (VtnRscEvent.Type.PORT_CHAIN_PUT == event.type()) { - PortChain portChain = event.subject().portChain(); - if (portChain.oldPortChain() != null) { - onPortChainDeleted(portChain.oldPortChain()); - } - onPortChainCreated(portChain); - } else if (VtnRscEvent.Type.PORT_CHAIN_DELETE == event.type()) { - PortChain portChain = event.subject().portChain(); - onPortChainDeleted(portChain); - portChainFiveTupleMap.remove(portChain.portChainId()); - } else if (VtnRscEvent.Type.PORT_CHAIN_UPDATE == event.type()) { - PortChain portChain = event.subject().portChain(); - onPortChainDeleted(portChain); - onPortChainCreated(portChain); - } - } - } - - @Override - public void onPortPairCreated(PortPair portPair) { - log.debug("onPortPairCreated"); - // Do nothing - } - - @Override - public void onPortPairDeleted(PortPair portPair) { - log.debug("onPortPairDeleted"); - // Do nothing - } - - @Override - public void onPortPairGroupCreated(PortPairGroup portPairGroup) { - log.debug("onPortPairGroupCreated"); - // Do nothing - } - - @Override - public void onPortPairGroupDeleted(PortPairGroup portPairGroup) { - log.debug("onPortPairGroupDeleted"); - // Do nothing - } - - @Override - public void onFlowClassifierCreated(FlowClassifier flowClassifier) { - log.debug("onFlowClassifierCreated"); - // Do nothing - } - - @Override - public void onFlowClassifierDeleted(FlowClassifier flowClassifier) { - log.debug("onFlowClassifierDeleted"); - // Do nothing - } - - @Override - public void onPortChainCreated(PortChain portChain) { - NshServicePathId nshSpi; - log.info("On port chain created"); - - int spi = getNextNshSpi(); - if (spi > MAX_NSH_SPI_ID) { - log.error("Reached max limit of service path index." + "Failed to install SFC for port chain {}", - portChain.portChainId().toString()); - return; - } - nshSpi = NshServicePathId.of(spi); - nshSpiPortChainMap.put(portChain.portChainId(), new Integer(spi)); - if (!portChainFiveTupleMap.containsKey(portChain.portChainId())) { - portChainFiveTupleMap.put(portChain.portChainId(), Lists.newArrayList()); - } - // Install classifier rule to send the packet to controller - SfcFlowRuleInstallerImpl flowRuleInstaller = new SfcFlowRuleInstallerImpl(appId); - flowRuleInstaller.installFlowClassifier(portChain, nshSpi); - - // Install rules for already identified five tuples. - List list = portChainFiveTupleMap.get(portChain.portChainId()); - for (FiveTuple fiveTuple : list) { - LoadBalanceId id = loadBalanceSfc(portChain.portChainId(), fiveTuple); - // Get nsh service path index - nshSpi = NshServicePathId.of(getNshServicePathId(id, spi)); - // download the required flow rules for classifier and - // forwarding - flowRuleInstaller.installLoadBalancedFlowRules(portChain, fiveTuple, nshSpi); - } - } - - @Override - public void onPortChainDeleted(PortChain portChain) { - log.info("onPortChainDeleted"); - if (!nshSpiPortChainMap.containsKey(portChain.portChainId())) { - throw new ItemNotFoundException("Unable to find NSH SPI"); - } - - int nshSpiId = nshSpiPortChainMap.get(portChain.portChainId()); - // Uninstall classifier rules - SfcFlowRuleInstallerImpl flowRuleInstaller = new SfcFlowRuleInstallerImpl(appId); - flowRuleInstaller.unInstallFlowClassifier(portChain, NshServicePathId.of(nshSpiId)); - // remove from nshSpiPortChainMap and add to nshSpiIdFreeList - nshSpiPortChainMap.remove(portChain.portChainId()); - nshSpiIdFreeList.add(nshSpiId); - - // Uninstall load balanced classifier and forwarding rules. - NshServicePathId nshSpi; - LoadBalanceId id; - List processedIdList = Lists.newArrayList(); - Set fiveTupleSet = portChain.getLoadBalanceIdMapKeys(); - for (FiveTuple fiveTuple : fiveTupleSet) { - id = portChain.getLoadBalanceId(fiveTuple); - nshSpi = NshServicePathId.of(getNshServicePathId(id, nshSpiId)); - if (processedIdList.contains(id)) { - // Multiple five tuple can have single path. In this case only - // the classifier rule need to delete - flowRuleInstaller.unInstallLoadBalancedClassifierRules(portChain, fiveTuple, nshSpi); - continue; - } else { - processedIdList.add(id); - } - flowRuleInstaller.unInstallLoadBalancedFlowRules(portChain, fiveTuple, nshSpi); - } - - // Reset load for all the port pairs - List ppgIdlist = portChain.portPairGroups(); - ListIterator ppgIdListIterator = ppgIdlist.listIterator(); - while (ppgIdListIterator.hasNext()) { - PortPairGroupId portPairGroupId = ppgIdListIterator.next(); - PortPairGroup ppg = portPairGroupService.getPortPairGroup(portPairGroupId); - ppg.resetLoad(); - } - } - - /** - * Get next nsh service path identifier. - * - * @return value of service path identifier - */ - int getNextNshSpi() { - // If there is any free id use it. Otherwise generate new id. - if (nshSpiIdFreeList.isEmpty()) { - return (int) nshSpiIdGenerator.getNewId(); - } - Iterator it = nshSpiIdFreeList.iterator(); - Integer value = it.next(); - nshSpiIdFreeList.remove(value); - return value; - } - - private class SfcPacketProcessor implements PacketProcessor { - - /** - * Check for given ip match with the fixed ips for the virtual port. - * - * @param vPortId virtual port id - * @param ip ip address to match - * @return true if the ip match with the fixed ips in virtual port false otherwise - */ - private boolean checkIpInVirtualPort(VirtualPortId vPortId, IpAddress ip) { - boolean found = false; - Set ips = virtualPortService.getPort(vPortId).fixedIps(); - for (FixedIp fixedIp : ips) { - if (fixedIp.ip().equals(ip)) { - found = true; - break; - } - } - return found; - } - - /** - * Find the port chain for the received packet. - * - * @param fiveTuple five tuple info from the packet - * @return portChainId id of port chain, null if portChain is not found - */ - private PortChainId findPortChainFromFiveTuple(FiveTuple fiveTuple) { - - PortChainId portChainId = null; - - Iterable portChains = portChainService.getPortChains(); - if (portChains == null) { - log.error("Could not retrieve port chain list"); - return null; - } - - // Identify the port chain to which the packet belongs - for (final PortChain portChain : portChains) { - - if (!portChain.tenantId().equals(fiveTuple.tenantId())) { - continue; - } - - Iterable flowClassifiers = portChain.flowClassifiers(); - - // One port chain can have multiple flow classifiers. - for (final FlowClassifierId flowClassifierId : flowClassifiers) { - - FlowClassifier flowClassifier = flowClassifierService.getFlowClassifier(flowClassifierId); - boolean match = false; - // Check whether protocol is set in flow classifier - if (flowClassifier.protocol() != null) { - if (("TCP".equalsIgnoreCase(flowClassifier.protocol()) - && fiveTuple.protocol() == IPv4.PROTOCOL_TCP) - || ("UDP".equalsIgnoreCase(flowClassifier.protocol()) - && fiveTuple.protocol() == IPv4.PROTOCOL_UDP) - || ("ICMP".equalsIgnoreCase(flowClassifier.protocol()) - && fiveTuple.protocol() == IPv4.PROTOCOL_ICMP)) { - match = true; - } else { - continue; - } - } - - // Check whether source ip prefix is set in flow classifier - if (flowClassifier.srcIpPrefix() != null) { - if (flowClassifier.srcIpPrefix().contains(fiveTuple.ipSrc())) { - match = true; - } else { - continue; - } - } - - // Check whether destination ip prefix is set in flow classifier - if (flowClassifier.dstIpPrefix() != null) { - if (flowClassifier.dstIpPrefix().contains(fiveTuple.ipDst())) { - match = true; - } else { - continue; - } - } - - // Check whether source port is set in flow classifier - if (fiveTuple.portSrc().toLong() >= flowClassifier.minSrcPortRange() && - fiveTuple.portSrc().toLong() <= flowClassifier.maxSrcPortRange()) { - match = true; - } else { - continue; - } - - // Check whether destination port is set in flow classifier - if (fiveTuple.portDst().toLong() >= flowClassifier.minSrcPortRange() && - fiveTuple.portDst().toLong() <= flowClassifier.maxSrcPortRange()) { - match = true; - } else { - continue; - } - - // Check whether neutron source port is set in flow classifier - if ((flowClassifier.srcPort() != null) && (!flowClassifier.srcPort().portId().isEmpty())) { - match = checkIpInVirtualPort(VirtualPortId.portId(flowClassifier.srcPort().portId()), - fiveTuple.ipSrc()); - if (!match) { - continue; - } - } - - // Check whether destination neutron destination port is set in flow classifier - if ((flowClassifier.dstPort() != null) && (!flowClassifier.dstPort().portId().isEmpty())) { - match = checkIpInVirtualPort(VirtualPortId.portId(flowClassifier.dstPort().portId()), - fiveTuple.ipDst()); - if (!match) { - continue; - } - } - - if (match) { - portChainId = portChain.portChainId(); - break; - } - } - } - return portChainId; - } - - /** - * Get the tenant id for the given mac address. - * - * @param mac mac address - * @return tenantId tenant id for the given mac address - */ - private TenantId getTenantId(MacAddress mac) { - Collection virtualPorts = virtualPortService.getPorts(); - for (VirtualPort virtualPort : virtualPorts) { - if (virtualPort.macAddress().equals(mac)) { - return virtualPort.tenantId(); - } - } - return null; - } - - @Override - public void process(PacketContext context) { - Ethernet packet = context.inPacket().parsed(); - if (packet == null || portChainService.getPortChainCount() == 0) { - return; - } - // get the five tuple parameters for the packet - short ethType = packet.getEtherType(); - IpAddress ipSrc = null; - IpAddress ipDst = null; - int portSrc = 0; - int portDst = 0; - byte protocol = 0; - MacAddress macSrc = packet.getSourceMAC(); - MacAddress macDst = packet.getDestinationMAC(); - TenantId tenantId = getTenantId(macSrc); - - if (ethType == Ethernet.TYPE_IPV4) { - IPv4 ipv4Packet = (IPv4) packet.getPayload(); - ipSrc = IpAddress.valueOf(ipv4Packet.getSourceAddress()); - ipDst = IpAddress.valueOf(ipv4Packet.getDestinationAddress()); - protocol = ipv4Packet.getProtocol(); - if (protocol == IPv4.PROTOCOL_TCP) { - TCP tcpPacket = (TCP) ipv4Packet.getPayload(); - portSrc = tcpPacket.getSourcePort(); - portDst = tcpPacket.getDestinationPort(); - } else if (protocol == IPv4.PROTOCOL_UDP) { - UDP udpPacket = (UDP) ipv4Packet.getPayload(); - portSrc = udpPacket.getSourcePort(); - portDst = udpPacket.getDestinationPort(); - } else if (protocol == IPv4.PROTOCOL_ICMP) { - // do nothing - } else { - // No need to process other packets received by controller. - return; - } - } else { - return; - } - - FiveTuple fiveTuple = DefaultFiveTuple.builder() - .setIpSrc(ipSrc) - .setIpDst(ipDst) - .setPortSrc(PortNumber.portNumber(portSrc)) - .setPortDst(PortNumber.portNumber(portDst)) - .setProtocol(protocol) - .setTenantId(tenantId) - .setMacSrc(macSrc) - .setMacDst(macDst) - .build(); - - PortChainId portChainId = findPortChainFromFiveTuple(fiveTuple); - - if (portChainId == null) { - return; - } - - // Once the 5 tuple and port chain are identified, give this input for load balancing - addToPortChainIdFiveTupleMap(portChainId, fiveTuple); - LoadBalanceId id = loadBalanceSfc(portChainId, fiveTuple); - // Get nsh service path index - NshServicePathId nshSpi; - PortChain portChain = portChainService.getPortChain(portChainId); - if (nshSpiPortChainMap.containsKey(portChain.portChainId())) { - int nshSpiId = nshSpiPortChainMap.get(portChain.portChainId()); - nshSpi = NshServicePathId.of(getNshServicePathId(id, nshSpiId)); - } else { - int nshSpiId = getNextNshSpi(); - if (nshSpiId > MAX_NSH_SPI_ID) { - log.error("Reached max limit of service path index." - + "Failed to install SFC for port chain {}", portChain.portChainId()); - return; - } - nshSpi = NshServicePathId.of(getNshServicePathId(id, nshSpiId)); - nshSpiPortChainMap.put(portChain.portChainId(), new Integer(nshSpiId)); - } - // download the required flow rules for classifier and forwarding - // install in OVS. - SfcFlowRuleInstallerImpl flowRuleInstaller = new SfcFlowRuleInstallerImpl(appId); - flowRuleInstaller.installLoadBalancedFlowRules(portChain, fiveTuple, nshSpi); - sendPacket(context); - } - - /** - * Send packet back to classifier. - * - * @param context packet context - */ - private void sendPacket(PacketContext context) { - - ConnectPoint sourcePoint = context.inPacket().receivedFrom(); - - TrafficTreatment treatment = DefaultTrafficTreatment.builder().setOutput(PortNumber.TABLE).build(); - OutboundPacket packet = new DefaultOutboundPacket(sourcePoint.deviceId(), treatment, context.inPacket() - .unparsed()); - packetService.emit(packet); - log.trace("Sending packet: {}", packet); - } - } - - /** - * Encapsulate 5 bit load balance id to nsh spi. - * - * @param id load balance identifier - * @param nshSpiId nsh service path index - * @return updated service path index - */ - protected int getNshServicePathId(LoadBalanceId id, int nshSpiId) { - int nshSpiNew = nshSpiId << 5; - nshSpiNew = nshSpiNew | id.loadBalanceId(); - return nshSpiNew; - } - - private void addToPortChainIdFiveTupleMap(PortChainId portChainId, FiveTuple fiveTuple) { - List list = portChainFiveTupleMap.get(portChainId); - list.add(fiveTuple); - portChainFiveTupleMap.put(portChainId, list); - } - - /** - * Find the load balanced path set it to port chain for the given five - * tuple. - * - * @param portChainId port chain id - * @param fiveTuple five tuple info - * @return load balance id - */ - private LoadBalanceId loadBalanceSfc(PortChainId portChainId, FiveTuple fiveTuple) { - - // Get the port chain - PortChain portChain = portChainService.getPortChain(portChainId); - List loadBalancePath = Lists.newArrayList(); - LoadBalanceId id; - int paths = portChain.getLoadBalancePathSize(); - if (paths >= MAX_LOAD_BALANCE_ID) { - log.info("Max limit reached for load balance paths. " - + "Reusing the created path for port chain {} with five tuple {}", portChainId, fiveTuple); - id = LoadBalanceId.of((byte) ((paths + 1) % MAX_LOAD_BALANCE_ID)); - portChain.addLoadBalancePath(fiveTuple, id, portChain.getLoadBalancePath(id)); - } - - // Get the list of port pair groups from port chain - Iterable portPairGroups = portChain.portPairGroups(); - for (final PortPairGroupId portPairGroupId : portPairGroups) { - PortPairGroup portPairGroup = portPairGroupService.getPortPairGroup(portPairGroupId); - - // Get the list of port pair ids from port pair group. - Iterable portPairs = portPairGroup.portPairs(); - int minLoad = 0xFFF; - PortPairId minLoadPortPairId = null; - for (final PortPairId portPairId : portPairs) { - int load = portPairGroup.getLoad(portPairId); - if (load == 0) { - minLoadPortPairId = portPairId; - break; - } else { - // Check the port pair which has min load. - if (load < minLoad) { - minLoad = load; - minLoadPortPairId = portPairId; - } - } - } - if (minLoadPortPairId != null) { - loadBalancePath.add(minLoadPortPairId); - portPairGroup.addLoad(minLoadPortPairId); - } - } - - // Check if the path already exists, if not create a new id - id = portChain.matchPath(loadBalancePath); - if (id == null) { - id = LoadBalanceId.of((byte) (paths + 1)); - } - - portChain.addLoadBalancePath(fiveTuple, id, loadBalancePath); - return id; - } - -} diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/package-info.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/package-info.java deleted file mode 100644 index 99a01b08be..0000000000 --- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * SFC Service manager for interacting with SFC. - */ -package org.onosproject.sfc.manager.impl; diff --git a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/package-info.java b/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/package-info.java deleted file mode 100644 index 47d993a499..0000000000 --- a/apps/vtn/sfcmgr/src/main/java/org/onosproject/sfc/manager/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with SFC. - */ -package org.onosproject.sfc.manager; diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImplTest.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImplTest.java deleted file mode 100644 index a984e5f703..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/installer/impl/SfcFlowRuleInstallerImplTest.java +++ /dev/null @@ -1,417 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.installer.impl; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; -import static org.onosproject.net.Device.Type.SWITCH; -import static org.onosproject.net.Port.Type.COPPER; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.junit.Test; -import org.onlab.packet.ChassisId; -import org.onlab.packet.IPv4; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.DefaultApplicationId; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.net.Annotations; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.DefaultDevice; -import org.onosproject.net.DefaultPort; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.HostLocation; -import org.onosproject.net.NshServicePathId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.device.DeviceServiceAdapter; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.driver.DriverService; -import org.onosproject.net.flow.criteria.Criterion; -import org.onosproject.net.flow.criteria.PortCriterion; -import org.onosproject.net.flow.instructions.Instruction; -import org.onosproject.net.flow.instructions.Instructions.OutputInstruction; -import org.onosproject.net.flowobjective.FlowObjectiveServiceAdapter; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.host.HostService; -import org.onosproject.net.host.HostServiceAdapter; -import org.onosproject.net.provider.ProviderId; -import org.onosproject.sfc.util.FlowClassifierAdapter; -import org.onosproject.sfc.util.MockDriverHandler; -import org.onosproject.sfc.util.PortPairAdapter; -import org.onosproject.sfc.util.PortPairGroupAdapter; -import org.onosproject.sfc.util.TenantNetworkAdapter; -import org.onosproject.sfc.util.VirtualPortAdapter; -import org.onosproject.sfc.util.VtnRscAdapter; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultFiveTuple; -import org.onosproject.vtnrsc.DefaultFlowClassifier; -import org.onosproject.vtnrsc.DefaultPortChain; -import org.onosproject.vtnrsc.DefaultPortPair; -import org.onosproject.vtnrsc.DefaultPortPairGroup; -import org.onosproject.vtnrsc.DefaultTenantNetwork; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FiveTuple; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.LoadBalanceId; -import org.onosproject.vtnrsc.PhysicalNetwork; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.onosproject.vtnrsc.service.VtnRscService; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -public class SfcFlowRuleInstallerImplTest { - - FlowObjectiveService flowObjectiveService = new FlowObjectiveServiceAdapter(); - DeviceService deviceService = new DeviceServiceAdapter(createPortList()); - - HostService hostService = new HostServiceAdapter(); - VirtualPortService virtualPortService = new VirtualPortAdapter(); - VtnRscService vtnRscService = new VtnRscAdapter(); - PortPairService portPairService = new PortPairAdapter(); - PortPairGroupService portPairGroupService = new PortPairGroupAdapter(); - FlowClassifierService flowClassifierService = new FlowClassifierAdapter(); - TenantNetworkService tenantNetworkService = new TenantNetworkAdapter(); - - final DriverService driverService = createMock(DriverService.class); - - private final String networkIdStr = "123"; - - final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortChain"; - final String description = "PortChain"; - final List portPairGroups = new LinkedList(); - final List flowClassifiers = new LinkedList(); - PortPairGroupId portPairGroupId1 = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - PortPairGroupId portPairGroupId2 = PortPairGroupId.of("73343531-fc23-aeb6-f44b-56dc5e2fb3af"); - - PortPairId portPairId1 = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - PortPairId portPairId2 = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - - FlowClassifierId flowClassifierId1 = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - FlowClassifierId flowClassifierId2 = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af"); - - final String ppName = "PortPair"; - final String ppDescription = "PortPair"; - final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - - final String ppgName = "PortPairGroup"; - final String ppgDescription = "PortPairGroup"; - final List portPairList = new LinkedList(); - - VirtualPortId id1 = VirtualPortId.portId(ingress); - VirtualPortId id2 = VirtualPortId.portId("3414"); - - DeviceId deviceId = DeviceId.deviceId("of:000000000000001"); - - final DriverHandler driverHandler = new MockDriverHandler(); - - private List createPortList() { - List portList = Lists.newArrayList(); - long sp1 = 1_000_000; - ProviderId pid = new ProviderId("of", "foo"); - ChassisId cid = new ChassisId(); - Device device = new DefaultDevice(pid, deviceId, SWITCH, "whitebox", "1.1.x", "3.9.1", "43311-12345", cid); - Annotations annotations = DefaultAnnotations - .builder() - .set(AnnotationKeys.PORT_NAME, "vxlan-0.0.0.0").build(); - Port p1 = new DefaultPort(device, PortNumber.ANY, true, COPPER, sp1, annotations); - portList.add(p1); - return portList; - } - - private PortPair createPortPair(PortPairId ppId) { - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - PortPair portPair = portPairBuilder.setId(ppId).setName(ppName).setTenantId(tenantId) - .setDescription(ppDescription).setIngress(ingress).setEgress(egress).build(); - return portPair; - } - - private PortPairGroup createPortPairGroup(PortPairGroupId ppgId) { - - portPairList.clear(); - // Create same two port-pair-group objects. - portPairList.add(portPairId1); - portPairList.add(portPairId2); - - DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - PortPairGroup portPairGroup = portPairGroupBuilder.setId(ppgId).setTenantId(tenantId) - .setName(ppgName).setDescription(ppgDescription).setPortPairs(portPairList).build(); - - return portPairGroup; - - } - - private PortChain createPortChain() { - - portPairGroups.clear(); - flowClassifiers.clear(); - // create list of Port Pair Groups. - - portPairGroups.add(portPairGroupId1); - portPairGroups.add(portPairGroupId2); - // create list of Flow classifiers. - flowClassifiers.add(flowClassifierId1); - flowClassifiers.add(flowClassifierId2); - - DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder(); - final PortChain portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers) - .build(); - - return portChain; - } - - private FlowClassifier createFlowClassifier(FlowClassifierId id) { - final String name = "FlowClassifier1"; - final String description = "FlowClassifier1"; - final String ethType = "IPv4"; - final String protocol = "tcp"; - final int minSrcPortRange = 5; - final int maxSrcPortRange = 10; - final int minDstPortRange = 5; - final int maxDstPortRange = 10; - final TenantId tenantId = TenantId.tenantId("1"); - final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0"); - final VirtualPortId virtualSrcPort = id1; - final VirtualPortId virtualDstPort = id2; - - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - final FlowClassifier flowClassifier = flowClassifierBuilder.setFlowClassifierId(id) - .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType) - .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - return flowClassifier; - } - - private VirtualPort createVirtualPort(VirtualPortId id) { - Set fixedIps; - Map propertyMap; - Set allowedAddressPairs; - Set securityGroups = Sets.newHashSet(); - - String macAddressStr = "fa:12:3e:56:ee:a2"; - String ipAddress = "10.1.1.1"; - String subnet = "1212"; - String hostIdStr = "fa:e2:3e:56:ee:a2"; - String deviceOwner = "james"; - propertyMap = Maps.newHashMap(); - propertyMap.putIfAbsent("deviceOwner", deviceOwner); - - TenantNetworkId networkId = TenantNetworkId.networkId(networkIdStr); - MacAddress macAddress = MacAddress.valueOf(macAddressStr); - BindingHostId bindingHostId = BindingHostId.bindingHostId(hostIdStr); - FixedIp fixedIp = FixedIp.fixedIp(SubnetId.subnetId(subnet), - IpAddress.valueOf(ipAddress)); - fixedIps = Sets.newHashSet(); - fixedIps.add(fixedIp); - - allowedAddressPairs = Sets.newHashSet(); - AllowedAddressPair allowedAddressPair = AllowedAddressPair - .allowedAddressPair(IpAddress.valueOf(ipAddress), - MacAddress.valueOf(macAddressStr)); - allowedAddressPairs.add(allowedAddressPair); - - VirtualPort d1 = new DefaultVirtualPort(id, networkId, true, - propertyMap, - VirtualPort.State.ACTIVE, - macAddress, tenantId, deviceId, - fixedIps, bindingHostId, - allowedAddressPairs, - securityGroups); - return d1; - } - - @Test - public void testInstallFlowClassifier() { - - ApplicationId appId = new DefaultApplicationId(1, "test"); - SfcFlowRuleInstallerImpl flowClassifierInstaller = new SfcFlowRuleInstallerImpl(); - flowClassifierInstaller.virtualPortService = virtualPortService; - flowClassifierInstaller.vtnRscService = vtnRscService; - flowClassifierInstaller.portPairService = portPairService; - flowClassifierInstaller.portPairGroupService = portPairGroupService; - flowClassifierInstaller.flowClassifierService = flowClassifierService; - flowClassifierInstaller.driverService = driverService; - flowClassifierInstaller.deviceService = deviceService; - flowClassifierInstaller.hostService = hostService; - flowClassifierInstaller.flowObjectiveService = flowObjectiveService; - flowClassifierInstaller.appId = appId; - - final PortChain portChain = createPortChain(); - NshServicePathId nshSpiId = NshServicePathId.of(10); - - portPairGroupService.createPortPairGroup(createPortPairGroup(portPairGroupId1)); - portPairGroupService.createPortPairGroup(createPortPairGroup(portPairGroupId2)); - portPairService.createPortPair(createPortPair(portPairId1)); - portPairService.createPortPair(createPortPair(portPairId2)); - FlowClassifier fc1 = createFlowClassifier(flowClassifierId1); - FlowClassifier fc2 = createFlowClassifier(flowClassifierId2); - flowClassifierService.createFlowClassifier(fc1); - flowClassifierService.createFlowClassifier(fc2); - - List virtualPortList = Lists.newArrayList(); - virtualPortList.add(createVirtualPort(VirtualPortId.portId(ingress))); - virtualPortService.createPorts(virtualPortList); - - expect(driverService.createHandler(deviceId)).andReturn(driverHandler).anyTimes(); - replay(driverService); - - ConnectPoint connectPoint = flowClassifierInstaller.installFlowClassifier(portChain, nshSpiId); - - assertThat(connectPoint, is(HostLocation.NONE)); - } - - @Test - public void testInstallLoadBalancedFlowRules() { - ApplicationId appId = new DefaultApplicationId(1, "test"); - SfcFlowRuleInstallerImpl flowRuleInstaller = new SfcFlowRuleInstallerImpl(); - flowRuleInstaller.virtualPortService = virtualPortService; - flowRuleInstaller.vtnRscService = vtnRscService; - flowRuleInstaller.portPairService = portPairService; - flowRuleInstaller.portPairGroupService = portPairGroupService; - flowRuleInstaller.flowClassifierService = flowClassifierService; - flowRuleInstaller.driverService = driverService; - flowRuleInstaller.deviceService = deviceService; - flowRuleInstaller.hostService = hostService; - flowRuleInstaller.flowObjectiveService = flowObjectiveService; - flowRuleInstaller.tenantNetworkService = tenantNetworkService; - flowRuleInstaller.appId = appId; - - final PortChain portChain = createPortChain(); - - final String ppName1 = "PortPair1"; - final String ppDescription1 = "PortPair1"; - final String ingress1 = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress1 = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - PortPair portPair1 = portPairBuilder.setId(portPairId1).setName(ppName1).setTenantId(tenantId) - .setDescription(ppDescription1).setIngress(ingress1).setEgress(egress1).build(); - - final String ppName2 = "PortPair2"; - final String ppDescription2 = "PortPair2"; - final String ingress2 = "d5555555-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress2 = "a6666666-4a56-2a6e-cd3a-9dee4e2ec345"; - PortPair portPair2 = portPairBuilder.setId(portPairId2).setName(ppName2).setTenantId(tenantId) - .setDescription(ppDescription2).setIngress(ingress2).setEgress(egress2).build(); - - portPairService.createPortPair(portPair1); - portPairService.createPortPair(portPair2); - - FlowClassifier fc1 = createFlowClassifier(flowClassifierId1); - FlowClassifier fc2 = createFlowClassifier(flowClassifierId2); - flowClassifierService.createFlowClassifier(fc1); - flowClassifierService.createFlowClassifier(fc2); - - NshServicePathId nshSpiId = NshServicePathId.of(10); - FiveTuple fiveTuple = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("3.3.3.3")) - .setIpDst(IpAddress.valueOf("4.4.4.4")) - .setPortSrc(PortNumber.portNumber(1500)) - .setPortDst(PortNumber.portNumber(2000)) - .setProtocol(IPv4.PROTOCOL_UDP) - .setTenantId(TenantId.tenantId("bbb")) - .build(); - LoadBalanceId id = LoadBalanceId.of((byte) 1); - - List path = Lists.newArrayList(); - path.add(portPairId1); - path.add(portPairId2); - - List virtualPortList = Lists.newArrayList(); - virtualPortList.add(createVirtualPort(VirtualPortId.portId(ingress1))); - virtualPortList.add(createVirtualPort(VirtualPortId.portId(egress1))); - virtualPortList.add(createVirtualPort(VirtualPortId.portId(ingress2))); - virtualPortList.add(createVirtualPort(VirtualPortId.portId(egress2))); - virtualPortService.createPorts(virtualPortList); - - portChain.addLoadBalancePath(fiveTuple, id, path); - - String physicalNetworkStr = "1234"; - String segmentationIdStr = "1"; - SegmentationId segmentationID = SegmentationId - .segmentationId(segmentationIdStr); - TenantNetworkId networkid1 = TenantNetworkId.networkId(networkIdStr); - PhysicalNetwork physicalNetwork = PhysicalNetwork - .physicalNetwork(physicalNetworkStr); - TenantNetwork p1 = new DefaultTenantNetwork(networkid1, name, false, - TenantNetwork.State.ACTIVE, - false, tenantId, false, - TenantNetwork.Type.LOCAL, - physicalNetwork, - segmentationID); - tenantNetworkService.createNetworks(Collections.singletonList(p1)); - - expect(driverService.createHandler(deviceId)).andReturn(driverHandler).anyTimes(); - replay(driverService); - - flowRuleInstaller.installLoadBalancedFlowRules(portChain, fiveTuple, nshSpiId); - - ForwardingObjective forObj = ((FlowObjectiveServiceAdapter) flowObjectiveService).forwardingObjective(); - - // Check for Selector - assertThat(forObj.selector().getCriterion(Criterion.Type.IN_PORT), instanceOf(PortCriterion.class)); - - // Check for treatment - List instructions = forObj.treatment().allInstructions(); - for (Instruction instruction : instructions) { - if (instruction.type() == Instruction.Type.OUTPUT) { - assertThat(((OutputInstruction) instruction).port(), is(PortNumber.P0)); - } - } - } -} diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/manager/impl/SfcManagerTest.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/manager/impl/SfcManagerTest.java deleted file mode 100644 index 8deb164f9d..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/manager/impl/SfcManagerTest.java +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.manager.impl; - -import org.junit.Test; - -import java.util.List; -import java.util.LinkedList; - -import org.onlab.packet.IpPrefix; -import org.onosproject.sfc.manager.SfcService; -import org.onosproject.vtnrsc.DefaultPortChain; -import org.onosproject.vtnrsc.DefaultPortPair; -import org.onosproject.vtnrsc.DefaultPortPairGroup; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.DefaultFlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.FlowClassifier; - -/** - * Unit tests for SfcManager class. - */ -public class SfcManagerTest { - /** - * Checks the operation of onPortPairCreated() method. - */ - @Test - public void testOnPortPairCreated() { - final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPair"; - final String description = "PortPair"; - final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - PortPair portPair = null; - SfcService sfcService = new SfcManager(); - - // create port pair - portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name).setDescription(description) - .setIngress(ingress).setEgress(egress).build(); - sfcService.onPortPairCreated(portPair); - } - - /** - * Checks the operation of onPortPairDeleted() method. - */ - @Test - public void testOnPortPairDeleted() { - final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPair"; - final String description = "PortPair"; - final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - PortPair portPair = null; - SfcService sfcService = new SfcManager(); - - // create port pair - portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name).setDescription(description) - .setIngress(ingress).setEgress(egress).build(); - sfcService.onPortPairDeleted(portPair); - } - - /** - * Checks the operation of onPortPairGroupCreated() method. - */ - @Test - public void testOnPortPairGroupCreated() { - final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPairGroup"; - final String description = "PortPairGroup"; - final List portPairIdList = new LinkedList(); - DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - PortPairGroup portPairGroup = null; - SfcService sfcService = new SfcManager(); - - // create port-pair-id list - PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairIdList.add(portPairId); - portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairIdList.add(portPairId); - - // create port pair - portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairs(portPairIdList).build(); - sfcService.onPortPairGroupCreated(portPairGroup); - } - - /** - * Checks the operation of onPortPairGroupDeleted() method. - */ - @Test - public void testOnPortPairGroupDeleted() { - final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPairGroup"; - final String description = "PortPairGroup"; - final List portPairIdList = new LinkedList(); - DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - PortPairGroup portPairGroup = null; - SfcService sfcService = new SfcManager(); - - // create port-pair-id list - PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairIdList.add(portPairId); - portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairIdList.add(portPairId); - - // create port pair - portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairs(portPairIdList).build(); - sfcService.onPortPairGroupDeleted(portPairGroup); - } - - /** - * Checks the operation of onFlowClassifierCreated() method. - */ - @Test - public void testOnFlowClassifierCreated() { - final String name = "FlowClassifier"; - final String description = "FlowClassifier"; - final String ethType = "IPv4"; - final String protocol = "udp"; - final int minSrcPortRange = 1024; - final int maxSrcPortRange = 5000; - final int minDstPortRange = 1024; - final int maxDstPortRange = 5000; - final FlowClassifierId flowClassifierId = FlowClassifierId.of("71111111-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("8"); - final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix = IpPrefix.valueOf("100.100.100.100/0"); - final VirtualPortId virtualSrcPort = VirtualPortId.portId("100"); - final VirtualPortId virtualDstPort = VirtualPortId.portId("200"); - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - FlowClassifier flowClassifier = null; - SfcService sfcService = new SfcManager(); - - // create flow classifier - flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId).setTenantId(tenantId) - .setName(name).setDescription(description).setEtherType(ethType).setProtocol(protocol) - .setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - sfcService.onFlowClassifierCreated(flowClassifier); - } - - /** - * Checks the operation of onFlowClassifierDeleted() method. - */ - @Test - public void testOnFlowClassifierDeleted() { - final String name = "FlowClassifier"; - final String description = "FlowClassifier"; - final String ethType = "IPv4"; - final String protocol = "udp"; - final int minSrcPortRange = 1024; - final int maxSrcPortRange = 5000; - final int minDstPortRange = 1024; - final int maxDstPortRange = 5000; - final FlowClassifierId flowClassifierId = FlowClassifierId.of("71111111-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("8"); - final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix = IpPrefix.valueOf("100.100.100.100/0"); - final VirtualPortId virtualSrcPort = VirtualPortId.portId("100"); - final VirtualPortId virtualDstPort = VirtualPortId.portId("200"); - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - FlowClassifier flowClassifier = null; - SfcService sfcService = new SfcManager(); - - // create flow classifier - flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId).setTenantId(tenantId) - .setName(name).setDescription(description).setEtherType(ethType).setProtocol(protocol) - .setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - sfcService.onFlowClassifierDeleted(flowClassifier); - } - - /** - * Checks the operation of onPortChainCreated() method. - */ - @Test - public void testOnPortChainCreated() { - final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortChain"; - final String description = "PortChain"; - final List portPairGroupList = new LinkedList(); - final List flowClassifierList = new LinkedList(); - DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder(); - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - PortChain portChain = null; - SfcService sfcService = new SfcManager(); - - // create list of Port Pair Groups. - PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroupList.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroupList.add(portPairGroupId); - - // create list of Flow classifiers. - FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifierList.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifierList.add(flowClassifierId); - - // create port chain - portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name).setDescription(description) - .setPortPairGroups(portPairGroupList).setFlowClassifiers(flowClassifierList).build(); - //sfcService.onPortChainCreated(portChain); - } - - /** - * Checks the operation of onPortChainDeleted() method. - */ - @Test - public void testOnPortChainDeleted() { - final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortChain"; - final String description = "PortChain"; - final List portPairGroupList = new LinkedList(); - final List flowClassifierList = new LinkedList(); - DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder(); - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - PortChain portChain = null; - SfcService sfcService = new SfcManager(); - - // create list of Port Pair Groups. - PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroupList.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroupList.add(portPairGroupId); - - // create list of Flow classifiers. - FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifierList.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifierList.add(flowClassifierId); - - // create port chain - portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name).setDescription(description) - .setPortPairGroups(portPairGroupList).setFlowClassifiers(flowClassifierList).build(); - //sfcService.onPortChainDeleted(portChain); - } -} diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierAdapter.java deleted file mode 100644 index fbd1527a30..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierAdapter.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ConcurrentHashMap; - -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierListener; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; - -import com.google.common.collect.ImmutableList; - -/** - * Provides implementation of the Flow Classifier Service. - */ -public class FlowClassifierAdapter implements FlowClassifierService { - - private final ConcurrentMap flowClassifierStore = new ConcurrentHashMap<>(); - - @Override - public boolean exists(FlowClassifierId id) { - return flowClassifierStore.containsKey(id); - } - - @Override - public int getFlowClassifierCount() { - return flowClassifierStore.size(); - } - - @Override - public Iterable getFlowClassifiers() { - return ImmutableList.copyOf(flowClassifierStore.values()); - } - - @Override - public FlowClassifier getFlowClassifier(FlowClassifierId id) { - return flowClassifierStore.get(id); - } - - @Override - public boolean createFlowClassifier(FlowClassifier flowClassifier) { - FlowClassifierId id = flowClassifier.flowClassifierId(); - - flowClassifierStore.put(id, flowClassifier); - if (!flowClassifierStore.containsKey(id)) { - return false; - } - return true; - } - - @Override - public boolean updateFlowClassifier(FlowClassifier flowClassifier) { - - if (!flowClassifierStore.containsKey(flowClassifier.flowClassifierId())) { - return false; - } - - flowClassifierStore.put(flowClassifier.flowClassifierId(), flowClassifier); - - if (!flowClassifier.equals(flowClassifierStore.get(flowClassifier.flowClassifierId()))) { - return false; - } - return true; - } - - @Override - public boolean removeFlowClassifier(FlowClassifierId id) { - return true; - } - - @Override - public void addListener(FlowClassifierListener listener) { - } - - @Override - public void removeListener(FlowClassifierListener listener) { - } -} diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockDriverHandler.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockDriverHandler.java deleted file mode 100644 index c9f1754b97..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockDriverHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.sfc.util; - -import org.onosproject.net.behaviour.ExtensionSelectorResolver; -import org.onosproject.net.behaviour.ExtensionTreatmentResolver; -import org.onosproject.net.driver.Behaviour; -import org.onosproject.net.driver.Driver; -import org.onosproject.net.driver.DriverData; -import org.onosproject.net.driver.DriverHandler; - -public class MockDriverHandler implements DriverHandler { - - @Override - public Driver driver() { - return null; - } - - @Override - public DriverData data() { - return null; - } - - @Override - public T behaviour(Class behaviourClass) { - if (behaviourClass == ExtensionSelectorResolver.class) { - return (T) new MockExtensionSelectorResolver(); - } else if (behaviourClass == ExtensionTreatmentResolver.class) { - return (T) new MockExtensionTreatmentResolver(); - } - return null; - } - - @Override - public T get(Class serviceClass) { - return null; - } -} \ No newline at end of file diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelector.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelector.java deleted file mode 100644 index 914484f3f7..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelector.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import java.util.List; - -import org.onosproject.net.flow.criteria.ExtensionSelector; -import org.onosproject.net.flow.criteria.ExtensionSelectorType; -import org.onosproject.net.flow.instructions.ExtensionPropertyException; - -public class MockExtensionSelector implements ExtensionSelector { - - private ExtensionSelectorType type; - - public MockExtensionSelector(ExtensionSelectorType type) { - this.type = type; - } - - @Override - public void setPropertyValue(String key, T value) throws ExtensionPropertyException { - } - - @Override - public T getPropertyValue(String key) throws ExtensionPropertyException { - return null; - } - - @Override - public List getProperties() { - return null; - } - - @Override - public byte[] serialize() { - return null; - } - - @Override - public void deserialize(byte[] data) { - } - - @Override - public ExtensionSelectorType type() { - return type; - } -} \ No newline at end of file diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelectorResolver.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelectorResolver.java deleted file mode 100644 index 17ac6aa51a..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelectorResolver.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import org.onosproject.net.behaviour.ExtensionSelectorResolver; -import org.onosproject.net.driver.DriverData; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.flow.criteria.ExtensionSelector; -import org.onosproject.net.flow.criteria.ExtensionSelectorType; - -public class MockExtensionSelectorResolver implements ExtensionSelectorResolver { - - @Override - public DriverHandler handler() { - return null; - } - - @Override - public void setHandler(DriverHandler handler) { - } - - @Override - public DriverData data() { - return null; - } - - @Override - public void setData(DriverData data) { - } - - @Override - public ExtensionSelector getExtensionSelector(ExtensionSelectorType type) { - return new MockExtensionSelector(type); - } -} \ No newline at end of file diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatment.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatment.java deleted file mode 100644 index 8491616a1b..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatment.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import java.util.List; - -import org.onosproject.net.flow.instructions.ExtensionPropertyException; -import org.onosproject.net.flow.instructions.ExtensionTreatment; -import org.onosproject.net.flow.instructions.ExtensionTreatmentType; - -public class MockExtensionTreatment implements ExtensionTreatment { - - private ExtensionTreatmentType type; - - public MockExtensionTreatment(ExtensionTreatmentType type) { - this.type = type; - } - - @Override - public void setPropertyValue(String key, T value) throws ExtensionPropertyException { - } - - @Override - public T getPropertyValue(String key) throws ExtensionPropertyException { - return null; - } - - @Override - public List getProperties() { - return null; - } - - @Override - public byte[] serialize() { - return null; - } - - @Override - public void deserialize(byte[] data) { - } - - @Override - public ExtensionTreatmentType type() { - return type; - } - -} \ No newline at end of file diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatmentResolver.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatmentResolver.java deleted file mode 100644 index c2ec6741f7..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatmentResolver.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import org.onosproject.net.behaviour.ExtensionTreatmentResolver; -import org.onosproject.net.driver.DriverData; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.flow.instructions.ExtensionTreatment; -import org.onosproject.net.flow.instructions.ExtensionTreatmentType; - -public class MockExtensionTreatmentResolver implements ExtensionTreatmentResolver { - - @Override - public DriverHandler handler() { - return null; - } - - @Override - public void setHandler(DriverHandler handler) { - } - - @Override - public DriverData data() { - return null; - } - - @Override - public void setData(DriverData data) { - } - - @Override - public ExtensionTreatment getExtensionInstruction(ExtensionTreatmentType type) { - return new MockExtensionTreatment(type); - } - -} \ No newline at end of file diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainAdapter.java deleted file mode 100644 index ff6920ded2..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainAdapter.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ConcurrentHashMap; -import java.util.Collections; - -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.onosproject.vtnrsc.portchain.PortChainEvent; -import org.onosproject.vtnrsc.portchain.PortChainListener; -import org.onosproject.event.AbstractListenerManager; - -/** - * Provides implementation of the portChainService. - */ -public class PortChainAdapter - extends AbstractListenerManager - implements PortChainService { - - private ConcurrentMap portChainStore = new ConcurrentHashMap<>(); - - @Override - public boolean exists(PortChainId portChainId) { - return portChainStore.containsKey(portChainId); - } - - @Override - public int getPortChainCount() { - return portChainStore.size(); - } - - @Override - public Iterable getPortChains() { - return Collections.unmodifiableCollection(portChainStore.values()); - } - - @Override - public PortChain getPortChain(PortChainId portChainId) { - return portChainStore.get(portChainId); - } - - @Override - public boolean createPortChain(PortChain portChain) { - portChainStore.put(portChain.portChainId(), portChain); - if (!portChainStore.containsKey(portChain.portChainId())) { - return false; - } - return true; - } - - @Override - public boolean updatePortChain(PortChain portChain) { - if (!portChainStore.containsKey(portChain.portChainId())) { - return false; - } - - portChainStore.put(portChain.portChainId(), portChain); - - if (!portChain.equals(portChainStore.get(portChain.portChainId()))) { - return false; - } - return true; - } - - @Override - public boolean removePortChain(PortChainId portChainId) { - return true; - } -} diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairAdapter.java deleted file mode 100644 index 20e13215c1..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairAdapter.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ConcurrentHashMap; -import java.util.Collections; - -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.portpair.PortPairListener; -import org.onosproject.vtnrsc.portpair.PortPairService; - -/** - * Provides implementation of the portPairService. - */ -public class PortPairAdapter implements PortPairService { - - private ConcurrentMap portPairStore = new ConcurrentHashMap<>(); - - @Override - public boolean exists(PortPairId portPairId) { - return portPairStore.containsKey(portPairId); - } - - @Override - public int getPortPairCount() { - return portPairStore.size(); - } - - @Override - public Iterable getPortPairs() { - return Collections.unmodifiableCollection(portPairStore.values()); - } - - @Override - public PortPair getPortPair(PortPairId portPairId) { - return portPairStore.get(portPairId); - } - - @Override - public boolean createPortPair(PortPair portPair) { - portPairStore.put(portPair.portPairId(), portPair); - if (!portPairStore.containsKey(portPair.portPairId())) { - return false; - } - return true; - } - - @Override - public boolean updatePortPair(PortPair portPair) { - if (!portPairStore.containsKey(portPair.portPairId())) { - return false; - } - - portPairStore.put(portPair.portPairId(), portPair); - - if (!portPair.equals(portPairStore.get(portPair.portPairId()))) { - return false; - } - return true; - } - - @Override - public boolean removePortPair(PortPairId portPairId) { - return true; - } - - @Override - public void addListener(PortPairListener listener) { - } - - @Override - public void removeListener(PortPairListener listener) { - } -} diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupAdapter.java deleted file mode 100644 index 5326899660..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupAdapter.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ConcurrentHashMap; -import java.util.Collections; - -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupListener; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; - -/** - * Provides implementation of the portPairGroupService. - */ -public class PortPairGroupAdapter implements PortPairGroupService { - - private ConcurrentMap portPairGroupStore = new ConcurrentHashMap<>(); - - @Override - public boolean exists(PortPairGroupId portPairGroupId) { - return portPairGroupStore.containsKey(portPairGroupId); - } - - @Override - public int getPortPairGroupCount() { - return portPairGroupStore.size(); - } - - @Override - public Iterable getPortPairGroups() { - return Collections.unmodifiableCollection(portPairGroupStore.values()); - } - - @Override - public PortPairGroup getPortPairGroup(PortPairGroupId portPairGroupId) { - return portPairGroupStore.get(portPairGroupId); - } - - @Override - public boolean createPortPairGroup(PortPairGroup portPairGroup) { - portPairGroupStore.put(portPairGroup.portPairGroupId(), portPairGroup); - if (!portPairGroupStore.containsKey(portPairGroup.portPairGroupId())) { - return false; - } - return true; - } - - @Override - public boolean updatePortPairGroup(PortPairGroup portPairGroup) { - if (!portPairGroupStore.containsKey(portPairGroup.portPairGroupId())) { - return false; - } - - portPairGroupStore.put(portPairGroup.portPairGroupId(), portPairGroup); - - if (!portPairGroup.equals(portPairGroupStore.get(portPairGroup.portPairGroupId()))) { - return false; - } - return true; - } - - @Override - public boolean removePortPairGroup(PortPairGroupId portPairGroupId) { - return true; - } - - @Override - public void addListener(PortPairGroupListener listener) { - } - - @Override - public void removeListener(PortPairGroupListener listener) { - } -} diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/TenantNetworkAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/TenantNetworkAdapter.java deleted file mode 100644 index 142e4bbe90..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/TenantNetworkAdapter.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; - -import com.google.common.collect.ImmutableList; - -/** - * Provides implementation of the VtnRsc service. - */ -public class TenantNetworkAdapter implements TenantNetworkService { - - private final ConcurrentMap tenantNetworkStore = new ConcurrentHashMap<>(); - - @Override - public boolean exists(TenantNetworkId networkId) { - return tenantNetworkStore.containsKey(networkId); - } - - @Override - public int getNetworkCount() { - return tenantNetworkStore.size(); - } - - @Override - public Iterable getNetworks() { - return ImmutableList.copyOf(tenantNetworkStore.values()); - } - - @Override - public TenantNetwork getNetwork(TenantNetworkId networkId) { - return tenantNetworkStore.get(networkId); - } - - @Override - public boolean createNetworks(Iterable networks) { - for (TenantNetwork network : networks) { - tenantNetworkStore.put(network.id(), network); - if (!tenantNetworkStore.containsKey(network.id())) { - return false; - } - } - return true; - } - - @Override - public boolean updateNetworks(Iterable networks) { - return false; - } - - @Override - public boolean removeNetworks(Iterable networksIds) { - return false; - } - -} diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortAdapter.java deleted file mode 100644 index ba4fc0e2f2..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortAdapter.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import java.util.Collection; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.virtualport.VirtualPortListener; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; - -/** - * Provides implementation of the VirtualPort APIs. - */ -public class VirtualPortAdapter implements VirtualPortService { - - protected ConcurrentMap vPortStore = new ConcurrentHashMap<>(); - - @Override - public boolean exists(VirtualPortId vPortId) { - return vPortStore.containsKey(vPortId); - } - - @Override - public VirtualPort getPort(VirtualPortId vPortId) { - return vPortStore.get(vPortId); - } - - @Override - public VirtualPort getPort(FixedIp fixedIP) { - return null; - } - - @Override - public VirtualPort getPort(MacAddress mac) { - return null; - } - - @Override - public Collection getPorts() { - return null; - } - - @Override - public Collection getPorts(TenantNetworkId networkId) { - return null; - } - - @Override - public Collection getPorts(TenantId tenantId) { - return null; - } - - @Override - public Collection getPorts(DeviceId deviceId) { - return null; - } - - @Override - public VirtualPort getPort(TenantNetworkId networkId, IpAddress ipAddress) { - return null; - } - - @Override - public boolean createPorts(Iterable vPorts) { - for (VirtualPort vPort : vPorts) { - vPortStore.put(vPort.portId(), vPort); - if (!vPortStore.containsKey(vPort.portId())) { - return false; - } - } - return true; - } - - @Override - public boolean updatePorts(Iterable vPorts) { - return true; - } - - @Override - public boolean removePorts(Iterable vPortIds) { - return true; - } - - @Override - public void addListener(VirtualPortListener listener) { - } - - @Override - public void removeListener(VirtualPortListener listener) { - } -} diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscAdapter.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscAdapter.java deleted file mode 100644 index 62a4cee954..0000000000 --- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscAdapter.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfc.util; - -import java.util.Iterator; - -import org.onlab.packet.MacAddress; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantRouter; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.event.VtnRscListener; -import org.onosproject.vtnrsc.service.VtnRscService; - -/** - * Provides implementation of the VtnRsc service. - */ -public class VtnRscAdapter implements VtnRscService { - @Override - public void addListener(VtnRscListener listener) { - } - - @Override - public void removeListener(VtnRscListener listener) { - } - - @Override - public SegmentationId getL3vni(TenantId tenantId) { - return null; - } - - @Override - public Iterator getClassifierOfTenant(TenantId tenantId) { - return null; - } - - @Override - public Iterator getSffOfTenant(TenantId tenantId) { - return null; - } - - @Override - public MacAddress getGatewayMac(HostId hostId) { - return null; - } - - @Override - public boolean isServiceFunction(VirtualPortId portId) { - return false; - } - - @Override - public DeviceId getSfToSffMaping(VirtualPortId portId) { - return DeviceId.deviceId("of:000000000000001"); - } - - @Override - public void addDeviceIdOfOvsMap(VirtualPortId virtualPortId, - TenantId tenantId, DeviceId deviceId) { - } - - @Override - public void removeDeviceIdOfOvsMap(Host host, TenantId tenantId, - DeviceId deviceId) { - } - - @Override - public SegmentationId getL3vni(TenantRouter tenantRouter) { - return null; - } -} diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLink.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLink.java deleted file mode 100644 index 6f31752b04..0000000000 --- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLink.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfcweb; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.onosproject.ui.topo.BiLink; -import org.onosproject.ui.topo.LinkHighlight; -import org.onosproject.ui.topo.LinkHighlight.Flavor; - -/** - * Bi-directional link capable of different highlights. - */ -public class SfcLink extends BiLink { - - private boolean primary = false; - private boolean secondary = false; - - public SfcLink(LinkKey key, Link link) { - super(key, link); - } - - @Override - public LinkHighlight highlight(Enum anEnum) { - Flavor flavor = primary ? Flavor.PRIMARY_HIGHLIGHT : - (secondary ? Flavor.SECONDARY_HIGHLIGHT : Flavor.NO_HIGHLIGHT); - return new LinkHighlight(this.linkId(), Flavor.PRIMARY_HIGHLIGHT); - } -} diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLinkMap.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLinkMap.java deleted file mode 100644 index d75514e3dd..0000000000 --- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcLinkMap.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfcweb; - -import org.onosproject.net.Link; -import org.onosproject.net.LinkKey; -import org.onosproject.ui.topo.BiLinkMap; - -/** - * Sfc concrete link map. - */ -public class SfcLinkMap extends BiLinkMap { - @Override - protected SfcLink create(LinkKey linkKey, Link link) { - return new SfcLink(linkKey, link); - } -} diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovComponent.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovComponent.java deleted file mode 100644 index ddd6fa26b5..0000000000 --- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovComponent.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfcweb; - -import com.google.common.collect.ImmutableList; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.onosproject.ui.UiExtension; -import org.onosproject.ui.UiExtensionService; -import org.onosproject.ui.UiMessageHandlerFactory; -import org.onosproject.ui.UiTopoOverlayFactory; -import org.onosproject.ui.UiView; -import org.onosproject.ui.UiViewHidden; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; - -/** - * Skeletal ONOS UI Topology-Overlay application component. - */ -@Component(immediate = true) -public class SfcwebUiTopovComponent { - - private static final ClassLoader CL = SfcwebUiTopovComponent.class.getClassLoader(); - private static final String VIEW_ID = "sfcwebTopov"; - - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected UiExtensionService uiExtensionService; - - // List of application views - private final List uiViews = ImmutableList.of( - new UiViewHidden(VIEW_ID) - ); - - // Factory for UI message handlers - private final UiMessageHandlerFactory messageHandlerFactory = - () -> ImmutableList.of( - new SfcwebUiTopovMessageHandler() - ); - - // Factory for UI topology overlays - private final UiTopoOverlayFactory topoOverlayFactory = - () -> ImmutableList.of( - new SfcwebUiTopovOverlay() - ); - - // Application UI extension - protected UiExtension extension = - new UiExtension.Builder(CL, uiViews) - .resourcePath(VIEW_ID) - .messageHandlerFactory(messageHandlerFactory) - .topoOverlayFactory(topoOverlayFactory) - .build(); - - @Activate - protected void activate() { - uiExtensionService.register(extension); - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - uiExtensionService.unregister(extension); - log.info("Stopped"); - } - -} diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovMessageHandler.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovMessageHandler.java deleted file mode 100644 index 3fa9ec01b4..0000000000 --- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovMessageHandler.java +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfcweb; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Element; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.Link; -import org.onosproject.net.host.HostService; -import org.onosproject.net.link.LinkService; -import org.onosproject.ui.RequestHandler; -import org.onosproject.ui.UiConnection; -import org.onosproject.ui.UiMessageHandler; -import org.onosproject.ui.topo.DeviceHighlight; -import org.onosproject.ui.topo.Highlights; -import org.onosproject.ui.topo.HostHighlight; -import org.onosproject.ui.topo.NodeBadge; -import org.onosproject.ui.topo.TopoJson; -import org.onosproject.vtnrsc.FiveTuple; -import org.onosproject.vtnrsc.LoadBalanceId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.onosproject.vtnrsc.service.VtnRscService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collection; -import java.util.List; -import java.util.ListIterator; -import java.util.Set; -import java.util.TimerTask; - -import static org.onosproject.net.DefaultEdgeLink.createEdgeLink; - -/** - * SFC web gui topology-overlay message handler. - */ -public class SfcwebUiTopovMessageHandler extends UiMessageHandler { - - private static final String SAMPLE_TOPOV_DISPLAY_START = "sfcwebTopovDisplayStart"; - private static final String SAMPLE_TOPOV_DISPLAY_SFC = "showSfcInfo"; - private static final String SAMPLE_TOPOV_DISPLAY_STOP = "sfcTopovClear"; - private static final String CONFIG_SFP_MSG = "configSfpMessage"; - private static final String SAMPLE_TOPOV_SHOW_SFC_PATH = "showSfcPath"; - private static final String ID = "id"; - private static final String MODE = "mode"; - private static final String CLASSIFIER = "CLS"; - private static final String FORWARDER = "SFF"; - - private static final Link[] EMPTY_LINK_SET = new Link[0]; - - private enum Mode { - IDLE, MOUSE, LINK - } - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private HostService hostService; - private LinkService linkService; - private TimerTask demoTask = null; - private Mode currentMode = Mode.IDLE; - private Element elementOfNote; - private Link[] linkSet = EMPTY_LINK_SET; - - protected PortPairService portPairService; - protected VtnRscService vtnRscService; - protected VirtualPortService virtualPortService; - protected PortChainService portChainService; - protected PortPairGroupService portPairGroupService; - - @Override - public void init(UiConnection connection, ServiceDirectory directory) { - super.init(connection, directory); - hostService = directory.get(HostService.class); - linkService = directory.get(LinkService.class); - portChainService = directory.get(PortChainService.class); - portPairService = directory.get(PortPairService.class); - portPairGroupService = directory.get(PortPairGroupService.class); - } - - @Override - protected Collection createRequestHandlers() { - return ImmutableSet.of( - new DisplayStartHandler(), - new DisplayStopHandler(), - new ConfigSfpMsg() - ); - } - - /** - * Handler classes. - */ - private final class DisplayStartHandler extends RequestHandler { - public DisplayStartHandler() { - super(SAMPLE_TOPOV_DISPLAY_START); - } - - @Override - public void process(ObjectNode payload) { - String mode = string(payload, MODE); - PortChainService pcs = get(PortChainService.class); - Iterable portChains = pcs.getPortChains(); - ObjectNode result = objectNode(); - - ArrayNode arrayNode = arrayNode(); - - for (final PortChain portChain : portChains) { - arrayNode.add(portChain.portChainId().value().toString()); - } - result.putArray("a").addAll(arrayNode); - - sendMessage(SAMPLE_TOPOV_DISPLAY_SFC, result); - } - } - - private final class DisplayStopHandler extends RequestHandler { - public DisplayStopHandler() { - super(SAMPLE_TOPOV_DISPLAY_STOP); - } - - @Override - public void process(ObjectNode payload) { - log.debug("Stop Display"); - clearState(); - clearForMode(); - cancelTask(); - } - } - - private final class ConfigSfpMsg extends RequestHandler { - public ConfigSfpMsg() { - super(CONFIG_SFP_MSG); - } - - @Override - public void process(ObjectNode payload) { - String id = string(payload, ID); - ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - vtnRscService = serviceDirectory.get(VtnRscService.class); - virtualPortService = serviceDirectory.get(VirtualPortService.class); - - List sfcPathList = Lists.newArrayList(); - - Highlights highlights = new Highlights(); - SfcLinkMap linkMap = new SfcLinkMap(); - - PortChainId portChainId = PortChainId.of(id); - boolean portChainIdExist = portChainService.exists(portChainId); - if (!portChainIdExist) { - log.info("portchain id doesn't exist"); - return; - } - - PortChain portChain = portChainService.getPortChain(portChainId); - - Set fiveTupleSet = portChain.getLoadBalanceIdMapKeys(); - for (FiveTuple fiveTuple : fiveTupleSet) { - List path = portChain.getLoadBalancePath(fiveTuple); - LoadBalanceId lbId = portChain.getLoadBalanceId(fiveTuple); - ListIterator pathIterator = path.listIterator(); - - // Add source - Host srcHost = hostService.getHost(HostId.hostId(fiveTuple.macSrc())); - - HostHighlight hSrc = new HostHighlight(srcHost.id().toString()); - hSrc.setBadge(NodeBadge.text("SRC")); - String sfcPath = "SRC -> "; - highlights.add(hSrc); - - DeviceId previousDeviceId = null; - while (pathIterator.hasNext()) { - - PortPairId portPairId = pathIterator.next(); - PortPair portPair = portPairService.getPortPair(portPairId); - DeviceId deviceId = vtnRscService.getSfToSffMaping(VirtualPortId.portId(portPair.egress())); - VirtualPort vPort = virtualPortService.getPort(VirtualPortId.portId(portPair.egress())); - MacAddress dstMacAddress = vPort.macAddress(); - Host host = hostService.getHost(HostId.hostId(dstMacAddress)); - - addEdgeLinks(linkMap, host); - log.info("before check"); - if (previousDeviceId != null) { - log.info("pdid not null"); - if (!deviceId.equals(previousDeviceId)) { - // Highlight the link between devices. - - Link link = getLinkBetweenDevices(deviceId, previousDeviceId); - if (link != null) { - linkMap.add(link); - } - } - } - - DeviceHighlight dh = new DeviceHighlight(deviceId.toString()); - if (portChain.getSfcClassifiers(lbId).contains(deviceId)) { - dh.setBadge(NodeBadge.text(CLASSIFIER)); - } else { - dh.setBadge(NodeBadge.text(FORWARDER)); - } - - highlights.add(dh); - - HostHighlight hhDst = new HostHighlight(host.id().toString()); - hhDst.setBadge(NodeBadge.text(portPair.name())); - sfcPath = sfcPath + portPair.name() + "(" + vPort.fixedIps().iterator().next().ip() + ") -> "; - - if (!portPair.ingress().equals(portPair.egress())) { - MacAddress srcMacAddress = virtualPortService.getPort(VirtualPortId - .portId(portPair.ingress())) - .macAddress(); - Host hostSrc = hostService.getHost(HostId.hostId(srcMacAddress)); - HostHighlight hhSrc = new HostHighlight(hostSrc.id().toString()); - hhSrc.setBadge(NodeBadge.text(portPair.name())); - highlights.add(hhSrc); - } - highlights.add(hhDst); - previousDeviceId = deviceId; - } - - // Add destination - Host dstHost = hostService.getHost(HostId.hostId(fiveTuple.macDst())); - - HostHighlight hDst = new HostHighlight(dstHost.id().toString()); - hDst.setBadge(NodeBadge.text("DST")); - sfcPath = sfcPath + "DST"; - highlights.add(hDst); - sfcPathList.add(sfcPath); - } - - for (SfcLink sfcLink : linkMap.biLinks()) { - highlights.add(sfcLink.highlight(null)); - } - sendHighlights(highlights); - - ObjectNode result = objectNode(); - ArrayNode arrayNode = arrayNode(); - for (String path : sfcPathList) { - arrayNode.add(path); - } - result.putArray("sfcPathList").addAll(arrayNode); - - sendMessage(SAMPLE_TOPOV_SHOW_SFC_PATH, result); - } - } - - private Link getLinkBetweenDevices(DeviceId deviceId, DeviceId previousDeviceId) { - Set deviceLinks = linkService.getDeviceEgressLinks(deviceId); - Set previousDeviceLinks = linkService.getDeviceIngressLinks(previousDeviceId); - for (Link link : deviceLinks) { - previousDeviceLinks.contains(link); - return link; - } - return null; - } - - private void addEdgeLinks(SfcLinkMap linkMap, Host host1) { - linkMap.add(createEdgeLink(host1, true)); - linkMap.add(createEdgeLink(host1, false)); - } - - private synchronized void cancelTask() { - if (demoTask != null) { - demoTask.cancel(); - demoTask = null; - } - } - - private void clearState() { - currentMode = Mode.IDLE; - elementOfNote = null; - linkSet = EMPTY_LINK_SET; - } - - private void clearForMode() { - sendHighlights(new Highlights()); - } - - private void sendHighlights(Highlights highlights) { - sendMessage(TopoJson.highlightsMessage(highlights)); - } - -} diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovOverlay.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovOverlay.java deleted file mode 100644 index 392d4238d3..0000000000 --- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/SfcwebUiTopovOverlay.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.sfcweb; - -import org.onlab.packet.MacAddress; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.host.HostService; -import org.onosproject.ui.UiTopoOverlay; -import org.onosproject.ui.topo.PropertyPanel; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; - -/** - * Our sfcweb topology overlay. - */ -public class SfcwebUiTopovOverlay extends UiTopoOverlay { - - // NOTE: this must match the ID defined in sfcwebTopov.js - private static final String OVERLAY_ID = "SFC-Service-overlay"; - private static final String MY_DEVICE_TITLE = "SFF specific device details"; - private static final String MY_HOST_TITLE = "SF specific host details"; - - public SfcwebUiTopovOverlay() { - super(OVERLAY_ID); - } - - @Override - public void modifyDeviceDetails(PropertyPanel pp, DeviceId deviceId) { - pp.title(MY_DEVICE_TITLE); - pp.removeAllProps(); - pp.addProp("SFF Device Id", deviceId.toString()); - } - - @Override - public void modifyHostDetails(PropertyPanel pp, HostId hostId) { - pp.title(MY_HOST_TITLE); - pp.removeAllProps(); - PortPairService portPairService = AbstractShellCommand.get(PortPairService.class); - VirtualPortService virtualPortService = AbstractShellCommand.get(VirtualPortService.class); - HostService hostService = AbstractShellCommand.get(HostService.class); - Iterable portPairs = portPairService.getPortPairs(); - for (PortPair portPair : portPairs) { - VirtualPort vPort = virtualPortService.getPort(VirtualPortId.portId(portPair.ingress())); - MacAddress dstMacAddress = vPort.macAddress(); - Host host = hostService.getHost(HostId.hostId(dstMacAddress)); - if (hostId.toString().equals(host.id().toString())) { - pp.addProp("SF Name", portPair.name()); - pp.addProp("SF Ip", vPort.fixedIps().iterator().next().ip()); - } - } - pp.addProp("SF host Address", hostId.toString()); - } - -} diff --git a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/package-info.java b/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/package-info.java deleted file mode 100644 index 3d0d1b10be..0000000000 --- a/apps/vtn/sfcweb/src/main/java/org/onosproject/sfcweb/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * SFC service topology view overlay. - */ -package org.onosproject.sfcweb; diff --git a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.css b/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.css deleted file mode 100644 index 8729afee65..0000000000 --- a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.css +++ /dev/null @@ -1 +0,0 @@ -/* css for sfcweb app topology overlay */ diff --git a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.html b/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.html deleted file mode 100644 index 4a420ea9aa..0000000000 --- a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopov.html +++ /dev/null @@ -1,4 +0,0 @@ - -

-

This is a hidden view .. just a placeholder to house the javascript

-
diff --git a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovDemo.js b/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovDemo.js deleted file mode 100644 index ce55be0d70..0000000000 --- a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovDemo.js +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - sfc web gui overlay implementation. - */ - -(function () { - 'use strict'; - - // injected refs - var $log, fs, flash, wss, tds, ds, handlerMap = {}; - - // constants - var displayStart = 'sfcwebTopovDisplayStart', - showSfcInf = 'showSfcInfo', - clearMessage = 'sfcTopovClear', - configSfpMessage = 'configSfpMessage', - sfcPath = 'showSfcPath' ; - - // internal state - var currentMode = null; - var sfpInfo; - - // === Main API functions - - function start() { - handlerMap[showSfcInf] = showSfcInformation; - handlerMap[sfcPath] = showSfcPath; - wss.bindHandlers(handlerMap); - wss.sendEvent(displayStart); - } - - function dOkSfp() { - var tdString; - var i = 0; - - sfpInfo.a.forEach( function () { - var sfpId = d3.select("#sfp-value-id-"+i).property("checked"); - if (sfpId) - { - tdString = sfpInfo.a[i]; - } - i++; - } ); - - if (!tdString) { - $log.debug("No SFP ID is selected."); - } - - wss.sendEvent(configSfpMessage, { - id: tdString - }); - - flash.flash('SFP ID query:'); - } - - function dClose() { - $log.debug('Dialog Close button clicked (or Esc pressed)'); - } - - function createUserTextSfp(data) { - console.log(data); - - var content = ds.createDiv(); - var form = content.append('form'); - var p = form.append('p'); - var i = 0; - - p.append('span').text('SFP IDs'); - p.append('br'); - sfpInfo = data; - data.a.forEach( function () { - - p.append('input').attr({ - id: 'sfp-value-id-'+i, - type: 'radio', - name: 'sfp-id-name', - value: data.a[i] - }); - - p.append('span').text(data.a[i]); - p.append('br'); - i++; - } ); - - return content; - } - - function showSfcInformation(data) { - tds.openDialog() - .setTitle('List of active service functions') - .addContent(createUserTextSfp(data)) - .addOk(dOkSfp, 'Select SFP ID') - .addCancel(dClose, 'Close') - .bindKeys(); - - } - - function createSfcPathText(data) { - - var content = ds.createDiv(); - var form = content.append('form'); - var p = form.append('p'); - var i = 0; - - p.append('span').text('SFC Path'); - p.append('br'); - data.sfcPathList.forEach( function (val, idx) { - p.append('span').text(val); - p.append('br') - } ); - - return content; - } - - function showSfcPath(data) { - tds.openDialog() - .setTitle('Service function path') - .addContent(createSfcPathText(data)) - .addCancel(dClose, 'Close') - .bindKeys(); - } - - function clear() { - wss.sendEvent(clearMessage); - flash.flash('Cleared SFC overlay'); - } - - // === --------------------------- - // === Module Factory Definition - angular.module('ovSfcwebTopov', []) - .factory('SfcwebTopovDemoService', - ['$log', 'FnService', 'FlashService', 'WebSocketService', 'TopoDialogService', 'DialogService', - function (_$log_, _fs_, _flash_, _wss_, _tds_, _ds_) { - $log = _$log_; - fs = _fs_; - flash = _flash_; - wss = _wss_; - tds = _tds_; - ds = _ds_; - return { - start: start, - showSfcInformation: showSfcInformation, - showSfcPath : showSfcPath, - clear: clear - }; - }]); - -}()); diff --git a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovOverlay.js b/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovOverlay.js deleted file mode 100644 index 5f5c118521..0000000000 --- a/apps/vtn/sfcweb/src/main/resources/app/view/sfcwebTopov/sfcwebTopovOverlay.js +++ /dev/null @@ -1,71 +0,0 @@ -// sfcweb topology overlay - client side -// -// This is the glue that binds our business logic (in sfcwebTopovDemo.js) -// to the overlay framework. - -(function () { - 'use strict'; - - // injected refs - var $log, tov, pps; - var longPrefix = 'M15.9,19.1h-8v-13h8V19.1z M90.5,6.1H75.6v13h14.9V6.1' + - 'z M71.9,6.1H56.9v13h14.9V6.1z M53.2,6.1H38.3v13h14.9V6.1z M34.5,' + - '6.1H19.6v13h14.9V6.1z M102.2,6.1h-8v13h8V6.1z' ; - - // our overlay definition - var overlay = { - // NOTE: this must match the ID defined in SfcWebUiTopovOverlay - overlayId: 'SFC-Service-overlay', - glyphId: '*star4', - tooltip: 'SFC web service Topo Overlay', - - // These glyphs get installed using the overlayId as a prefix. - // e.g. 'star4' is installed as 'meowster-overlay-star4' - // They can be referenced (from this overlay) as '*star4' - // That is, the '*' prefix stands in for 'meowster-overlay-' - glyphs: { - star4: { - vb: '0 0 8 8', - d: 'M1,4l2,-1l1,-2l1,2l2,1l-2,1l-1,2l-1,-2z' - } - }, - activate: function () { - $log.debug("SFC service topology overlay ACTIVATED"); - }, - deactivate: function () { - pps.clear(); - $log.debug("SFC service topology overlay DEACTIVATED"); - }, - - // Key bindings for traffic overlay buttons - // NOTE: fully qual. button ID is derived from overlay-id and key-name - // FIXME: find better keys for shortest paths & disjoint paths modes - keyBindings: { - 4: { - cb: function () { - pps.start(); - }, - tt: 'Query SFP active list information', - gid: 'summary' - }, - - _keyOrder: [ - '4' - ] - } - - }; - - // invoke code to register with the overlay service - angular.module('ovSfcwebTopov') - .run(['$log', 'TopoOverlayService', 'SfcwebTopovDemoService', - - function (_$log_, _tov_, _pps_) { - $log = _$log_; - tov = _tov_; - pps = _pps_; - tov.register(overlay); - $log.debug('ovSfcwebTopov run'); - }]); - -}()); diff --git a/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/css.html b/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/css.html deleted file mode 100644 index 4e201d70a1..0000000000 --- a/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/css.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/js.html b/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/js.html deleted file mode 100644 index 4a6ab75818..0000000000 --- a/apps/vtn/sfcweb/src/main/resources/sfcwebTopov/js.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/apps/vtn/vtnmgr/BUILD b/apps/vtn/vtnmgr/BUILD deleted file mode 100644 index d399cdcc1b..0000000000 --- a/apps/vtn/vtnmgr/BUILD +++ /dev/null @@ -1,11 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + CLI + [ - "//core/store/serializers:onos-core-serializers", - "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc", -] - -osgi_jar_with_tests( - karaf_command_packages = ["org.onosproject.vtn.cli"], - resources = glob(["src/main/resources/**"]), - resources_root = "src/main/resources", - deps = COMPILE_DEPS, -) diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/VtnCommand.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/VtnCommand.java deleted file mode 100644 index 1fed65f0c6..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/VtnCommand.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.cli; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtn.manager.impl.VtnManager; - -/** - * Supports for updating the external gateway virtualPort. - */ -@Service -@Command(scope = "onos", name = "externalportname-set", - description = "Supports for setting the external port name.") -public class VtnCommand extends AbstractShellCommand { - - @Option(name = "-n", aliases = "--name", description = "external port name.", required = true, - multiValued = false) - String exPortName = ""; - - @Override - protected void doExecute() { - VtnManager.setExPortName(exPortName); - } -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/package-info.java deleted file mode 100644 index 64ac33d46e..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/cli/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VTN application that applies configuration and flows to the device. - */ -package org.onosproject.vtn.cli; diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/VtnService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/VtnService.java deleted file mode 100644 index caec3fa203..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/VtnService.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.manager; - -import org.onosproject.net.Device; -import org.onosproject.net.Host; -import org.onosproject.vtnrsc.event.VtnRscEventFeedback; - -/** - * VTN application that applies configuration and flows to the device. - */ -public interface VtnService { - - /** - * Creates a vxlan tunnel and creates the ovs when a ovs controller node is - * detected. - * - * @param device controller-type device - */ - void onControllerDetected(Device device); - - /** - * Drops a vxlan tunnel and drops the ovs when a ovs controller node is - * vanished. - * - * @param device controller-type device - */ - void onControllerVanished(Device device); - - /** - * Applies default forwarding flows when a ovs is detected. - * - * @param device switch-type device - */ - void onOvsDetected(Device device); - - /** - * Remove default forwarding flows when a ovs is vanished. - * - * @param device switch-type device - */ - void onOvsVanished(Device device); - - /** - * Applies multicast flows and tunnel flows when a VM is detected. - * - * @param host a VM - */ - void onHostDetected(Host host); - - /** - * Remove multicast flows and tunnel flows when a VM is vanished. - * - * @param host a VM - */ - void onHostVanished(Host host); - - /** - * Applies east west flows when neutron created router interface. - * - * @param l3Feedback VtnrscEventFeedback - */ - void onRouterInterfaceDetected(VtnRscEventFeedback l3Feedback); - - /** - * Remove east west flows when neutron removed router interface. - * - * @param l3Feedback VtnrscEventFeedback - */ - void onRouterInterfaceVanished(VtnRscEventFeedback l3Feedback); - - /** - * Applies north south flows when neutron bind floating ip. - * - * @param l3Feedback VtnrscEventFeedback - */ - void onFloatingIpDetected(VtnRscEventFeedback l3Feedback); - - /** - * Applies north south flows when neutron unbind floating ip. - * - * @param l3Feedback VtnrscEventFeedback - */ - void onFloatingIpVanished(VtnRscEventFeedback l3Feedback); - -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/VtnManager.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/VtnManager.java deleted file mode 100644 index 427aba8a9e..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/VtnManager.java +++ /dev/null @@ -1,1657 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.manager.impl; - -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import org.onlab.packet.ARP; -import org.onlab.packet.Ethernet; -import org.onlab.packet.IPv4; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.mastership.MastershipService; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.behaviour.BridgeConfig; -import org.onosproject.net.behaviour.BridgeDescription; -import org.onosproject.net.behaviour.ExtensionTreatmentResolver; -import org.onosproject.net.config.NetworkConfigService; -import org.onosproject.net.config.basics.BasicDeviceConfig; -import org.onosproject.net.config.basics.BasicHostConfig; -import org.onosproject.net.device.DeviceEvent; -import org.onosproject.net.device.DeviceListener; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.driver.DriverService; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.FlowEntry; -import org.onosproject.net.flow.FlowRuleService; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.TrafficTreatment.Builder; -import org.onosproject.net.flow.criteria.Criterion; -import org.onosproject.net.flow.instructions.ExtensionTreatment; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.net.group.DefaultGroupBucket; -import org.onosproject.net.group.DefaultGroupDescription; -import org.onosproject.net.group.DefaultGroupKey; -import org.onosproject.net.group.GroupBucket; -import org.onosproject.net.group.GroupBuckets; -import org.onosproject.net.group.GroupDescription; -import org.onosproject.net.group.GroupKey; -import org.onosproject.net.group.GroupService; -import org.onosproject.net.host.HostEvent; -import org.onosproject.net.host.HostListener; -import org.onosproject.net.host.HostService; -import org.onosproject.net.packet.DefaultOutboundPacket; -import org.onosproject.net.packet.InboundPacket; -import org.onosproject.net.packet.OutboundPacket; -import org.onosproject.net.packet.PacketContext; -import org.onosproject.net.packet.PacketProcessor; -import org.onosproject.net.packet.PacketService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.ConsistentMap; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.LogicalClockService; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.Versioned; -import org.onosproject.vtn.manager.VtnService; -import org.onosproject.vtn.table.ArpService; -import org.onosproject.vtn.table.ClassifierService; -import org.onosproject.vtn.table.DnatService; -import org.onosproject.vtn.table.L2ForwardService; -import org.onosproject.vtn.table.L3ForwardService; -import org.onosproject.vtn.table.SnatService; -import org.onosproject.vtn.table.impl.ArpServiceImpl; -import org.onosproject.vtn.table.impl.ClassifierServiceImpl; -import org.onosproject.vtn.table.impl.DnatServiceImpl; -import org.onosproject.vtn.table.impl.L2ForwardServiceImpl; -import org.onosproject.vtn.table.impl.L3ForwardServiceImpl; -import org.onosproject.vtn.table.impl.SnatServiceImpl; -import org.onosproject.vtn.util.DataPathIdGenerator; -import org.onosproject.vtn.util.IpUtil; -import org.onosproject.vtn.util.VtnConfig; -import org.onosproject.vtn.util.VtnData; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultFloatingIp; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.RouterInterface; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.TenantRouter; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.event.VtnRscEvent; -import org.onosproject.vtnrsc.event.VtnRscEventFeedback; -import org.onosproject.vtnrsc.event.VtnRscListener; -import org.onosproject.vtnrsc.floatingip.FloatingIpService; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService; -import org.onosproject.vtnrsc.service.VtnRscService; -import org.onosproject.vtnrsc.subnet.SubnetService; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; - -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of VTNService. - */ -@Component(immediate = true, service = VtnService.class) -public class VtnManager implements VtnService { - private final Logger log = getLogger(getClass()); - private static final String APP_ID = "org.onosproject.app.vtn"; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected NetworkConfigService configService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DeviceService deviceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected HostService hostService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TenantNetworkService tenantNetworkService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VirtualPortService virtualPortService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DriverService driverService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected LogicalClockService clockService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected MastershipService mastershipService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected GroupService groupService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected SubnetService subnetService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VtnRscService vtnRscService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected FloatingIpService floatingIpService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected RouterInterfaceService routerInterfaceService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected FlowRuleService flowRuleService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected NetworkConfigService networkConfigService; - - private ApplicationId appId; - private ClassifierService classifierService; - private L2ForwardService l2ForwardService; - private ArpService arpService; - private L3ForwardService l3ForwardService; - private SnatService snatService; - private DnatService dnatService; - - private final HostListener hostListener = new InnerHostListener(); - private final DeviceListener deviceListener = new InnerDeviceListener(); - private final VtnRscListener l3EventListener = new VtnL3EventListener(); - - private static final String EX_PORT_KEY = "exPortKey"; - private static final String IFACEID = "ifaceid"; - private static final String CONTROLLER_IP_KEY = "ipaddress"; - public static final String DRIVER_NAME = "onosfw"; - private static final String VIRTUALPORT = "vtn-virtual-port"; - private static final String SWITCHES_OF_CONTROLLER = "switchesOfController"; - private static final String SWITCH_OF_LOCAL_HOST_PORTS = "switchOfLocalHostPorts"; - private static final String ROUTERINF_FLAG_OF_TENANTROUTER = "routerInfFlagOfTenantRouter"; - private static final String HOSTS_OF_SUBNET = "hostsOfSubnet"; - private static final String EX_PORT_OF_DEVICE = "exPortOfDevice"; - private static final String EX_PORT_MAP = "exPortMap"; - private static final String DEFAULT_IP = "0.0.0.0"; - private static final String FLOATINGSTORE = "vtn-floatingIp"; - private static final String USERDATA_IP = "169.254.169.254"; - private static final int SUBNET_NUM = 2; - private static final int SNAT_TABLE = 40; - private static final int SNAT_DEFAULT_RULE_PRIORITY = 0; - private static final byte[] ZERO_MAC_ADDRESS = MacAddress.ZERO.toBytes(); - - private EventuallyConsistentMap vPortStore; - private EventuallyConsistentMap switchesOfController; - private EventuallyConsistentMap switchOfLocalHostPorts; - private EventuallyConsistentMap> hostsOfSubnet; - private EventuallyConsistentMap routerInfFlagOfTenantRouter; - private EventuallyConsistentMap exPortOfDevice; - private EventuallyConsistentMap floatingIpStore; - private static ConsistentMap exPortMap; - - private VtnL3PacketProcessor l3PacketProcessor = new VtnL3PacketProcessor(); - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PacketService packetService; - - @Activate - public void activate() { - appId = coreService.registerApplication(APP_ID); - classifierService = new ClassifierServiceImpl(appId); - l2ForwardService = new L2ForwardServiceImpl(appId); - arpService = new ArpServiceImpl(appId); - l3ForwardService = new L3ForwardServiceImpl(appId); - snatService = new SnatServiceImpl(appId); - dnatService = new DnatServiceImpl(appId); - - deviceService.addListener(deviceListener); - hostService.addListener(hostListener); - vtnRscService.addListener(l3EventListener); - - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API) - .register(NetworkOfLocalHostPorts.class) - .register(TenantNetworkId.class) - .register(Host.class) - .register(TenantNetwork.class) - .register(TenantNetworkId.class) - .register(TenantId.class) - .register(SubnetId.class) - .register(VirtualPortId.class) - .register(VirtualPort.State.class) - .register(AllowedAddressPair.class) - .register(FixedIp.class) - .register(FloatingIp.class) - .register(FloatingIpId.class) - .register(FloatingIp.Status.class) - .register(UUID.class) - .register(DefaultFloatingIp.class) - .register(BindingHostId.class) - .register(SecurityGroup.class) - .register(IpAddress.class) - .register(DefaultVirtualPort.class) - .register(RouterId.class) - .register(TenantRouter.class); - floatingIpStore = storageService - .eventuallyConsistentMapBuilder() - .withName(FLOATINGSTORE).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - vPortStore = storageService - .eventuallyConsistentMapBuilder() - .withName(VIRTUALPORT).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - switchesOfController = storageService - .eventuallyConsistentMapBuilder() - .withName(SWITCHES_OF_CONTROLLER).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - switchOfLocalHostPorts = storageService - .eventuallyConsistentMapBuilder() - .withName(SWITCH_OF_LOCAL_HOST_PORTS).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - hostsOfSubnet = storageService - .>eventuallyConsistentMapBuilder() - .withName(HOSTS_OF_SUBNET).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - routerInfFlagOfTenantRouter = storageService - .eventuallyConsistentMapBuilder() - .withName(ROUTERINF_FLAG_OF_TENANTROUTER).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - exPortOfDevice = storageService - .eventuallyConsistentMapBuilder() - .withName(EX_PORT_OF_DEVICE).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - exPortMap = storageService - .consistentMapBuilder() - .withName(EX_PORT_MAP) - .withApplicationId(appId) - .withPurgeOnUninstall() - .withSerializer(Serializer.using(Arrays.asList(KryoNamespaces.API))) - .build(); - - packetService.addProcessor(l3PacketProcessor, PacketProcessor.director(0)); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - deviceService.removeListener(deviceListener); - hostService.removeListener(hostListener); - vtnRscService.removeListener(l3EventListener); - log.info("Stopped"); - } - - @Override - public void onControllerDetected(Device controllerDevice) { - if (controllerDevice == null) { - log.error("The controller device is null"); - return; - } - String localIpAddress = controllerDevice.annotations() - .value(CONTROLLER_IP_KEY); - IpAddress localIp = IpAddress.valueOf(localIpAddress); - DeviceId controllerDeviceId = controllerDevice.id(); - DriverHandler handler = driverService.createHandler(controllerDeviceId); - if (mastershipService.isLocalMaster(controllerDeviceId)) { - // Get DataPathIdGenerator - String ipaddress = controllerDevice.annotations().value("ipaddress"); - DataPathIdGenerator dpidGenerator = DataPathIdGenerator.builder() - .addIpAddress(ipaddress).build(); - DeviceId deviceId = dpidGenerator.getDeviceId(); - String dpid = dpidGenerator.getDpId(); - // Inject pipeline driver name - BasicDeviceConfig config = configService.addConfig(deviceId, - BasicDeviceConfig.class); - config.driver(DRIVER_NAME); - configService.applyConfig(deviceId, BasicDeviceConfig.class, config.node()); - // Add Bridge - Versioned exPortVersioned = exPortMap.get(EX_PORT_KEY); - if (exPortVersioned != null) { - VtnConfig.applyBridgeConfig(handler, dpid, exPortVersioned.value()); - log.info("A new ovs is created in node {}", localIp.toString()); - } - switchesOfController.put(localIp, true); - } - // Create tunnel in br-int on all controllers - programTunnelConfig(controllerDeviceId, localIp, handler); - } - - @Override - public void onControllerVanished(Device controllerDevice) { - if (controllerDevice == null) { - log.error("The device is null"); - return; - } - String dstIp = controllerDevice.annotations().value(CONTROLLER_IP_KEY); - IpAddress dstIpAddress = IpAddress.valueOf(dstIp); - DeviceId controllerDeviceId = controllerDevice.id(); - if (mastershipService.isLocalMaster(controllerDeviceId)) { - switchesOfController.remove(dstIpAddress); - } - } - - @Override - public void onOvsDetected(Device device) { - if (device == null) { - log.error("The device is null"); - return; - } - if (!mastershipService.isLocalMaster(device.id())) { - return; - } - // Create tunnel out flow rules - applyTunnelOut(device, Objective.Operation.ADD); - // apply L3 arp flows - Iterable interfaces = routerInterfaceService - .getRouterInterfaces(); - interfaces.forEach(routerInf -> { - VirtualPort gwPort = virtualPortService.getPort(routerInf.portId()); - if (gwPort == null) { - gwPort = VtnData.getPort(vPortStore, routerInf.portId()); - } - applyL3ArpFlows(device.id(), gwPort, Objective.Operation.ADD); - }); - } - - @Override - public void onOvsVanished(Device device) { - if (device == null) { - log.error("The device is null"); - return; - } - if (!mastershipService.isLocalMaster(device.id())) { - return; - } - // Remove Tunnel out flow rules - applyTunnelOut(device, Objective.Operation.REMOVE); - // apply L3 arp flows - Iterable interfaces = routerInterfaceService - .getRouterInterfaces(); - interfaces.forEach(routerInf -> { - VirtualPort gwPort = virtualPortService.getPort(routerInf.portId()); - if (gwPort == null) { - gwPort = VtnData.getPort(vPortStore, routerInf.portId()); - } - applyL3ArpFlows(device.id(), gwPort, Objective.Operation.REMOVE); - }); - } - - @Override - public void onHostDetected(Host host) { - DeviceId deviceId = host.location().deviceId(); - if (!mastershipService.isLocalMaster(deviceId)) { - return; - } - String ifaceId = host.annotations().value(IFACEID); - if (ifaceId == null) { - log.error("The ifaceId of Host is null"); - return; - } - programSffAndClassifierHost(host, Objective.Operation.ADD); - // apply L2 openflow rules - applyHostMonitoredL2Rules(host, Objective.Operation.ADD); - // apply L3 openflow rules - applyHostMonitoredL3Rules(host, Objective.Operation.ADD); - } - - @Override - public void onHostVanished(Host host) { - DeviceId deviceId = host.location().deviceId(); - if (!mastershipService.isLocalMaster(deviceId)) { - return; - } - String ifaceId = host.annotations().value(IFACEID); - if (ifaceId == null) { - log.error("The ifaceId of Host is null"); - return; - } - programSffAndClassifierHost(host, Objective.Operation.REMOVE); - // apply L2 openflow rules - applyHostMonitoredL2Rules(host, Objective.Operation.REMOVE); - // apply L3 openflow rules - applyHostMonitoredL3Rules(host, Objective.Operation.REMOVE); - VirtualPortId virtualPortId = VirtualPortId.portId(ifaceId); - vPortStore.remove(virtualPortId); - } - - private void programTunnelConfig(DeviceId localDeviceId, IpAddress localIp, - DriverHandler localHandler) { - if (mastershipService.isLocalMaster(localDeviceId)) { - VtnConfig.applyTunnelConfig(localHandler, localIp); - log.info("Add tunnel on {}", localIp); - } - } - - private void applyTunnelOut(Device device, Objective.Operation type) { - String controllerIp = VtnData.getControllerIpOfSwitch(device); - if (controllerIp == null) { - log.error("Can't find controller of device: {}", - device.id().toString()); - return; - } - IpAddress ipAddress = IpAddress.valueOf(controllerIp); - if (!switchesOfController.containsKey(ipAddress)) { - log.error("Can't find controller of device: {}", - device.id().toString()); - return; - } - if (type == Objective.Operation.ADD) { - // Save external port - Port export = getExPort(device.id()); - if (export != null) { - classifierService.programExportPortArpClassifierRules(export, - device.id(), - type); - exPortOfDevice.put(device.id(), export); - } - switchOfLocalHostPorts.put(device.id(), new NetworkOfLocalHostPorts()); - } else if (type == Objective.Operation.REMOVE) { - exPortOfDevice.remove(device.id()); - switchOfLocalHostPorts.remove(device.id()); - } - Iterable devices = deviceService.getAvailableDevices(); - DeviceId localControllerId = VtnData.getControllerId(device, devices); - DriverHandler handler = driverService.createHandler(localControllerId); - Set ports = VtnConfig.getPortNumbers(handler); - Iterable allHosts = hostService.getHosts(); - String tunnelName = "vxlan-" + DEFAULT_IP; - if (allHosts != null) { - Sets.newHashSet(allHosts).forEach(host -> { - MacAddress hostMac = host.mac(); - String ifaceId = host.annotations().value(IFACEID); - if (ifaceId == null) { - log.error("The ifaceId of Host is null"); - return; - } - VirtualPortId virtualPortId = VirtualPortId.portId(ifaceId); - VirtualPort virtualPort = virtualPortService - .getPort(virtualPortId); - TenantNetwork network = tenantNetworkService - .getNetwork(virtualPort.networkId()); - SegmentationId segmentationId = network.segmentationId(); - DeviceId remoteDeviceId = host.location().deviceId(); - Device remoteDevice = deviceService.getDevice(remoteDeviceId); - String remoteControllerIp = VtnData - .getControllerIpOfSwitch(remoteDevice); - if (remoteControllerIp == null) { - log.error("Can't find remote controller of device: {}", - remoteDeviceId.toString()); - return; - } - IpAddress remoteIpAddress = IpAddress - .valueOf(remoteControllerIp); - ports.stream() - .filter(p -> p.name().equalsIgnoreCase(tunnelName)) - .forEach(p -> { - l2ForwardService - .programTunnelOut(device.id(), segmentationId, p, - hostMac, type, remoteIpAddress); - }); - }); - } - } - - private void programSffAndClassifierHost(Host host, Objective.Operation type) { - DeviceId deviceId = host.location().deviceId(); - String ifaceId = host.annotations().value(IFACEID); - VirtualPortId virtualPortId = VirtualPortId.portId(ifaceId); - VirtualPort virtualPort = virtualPortService.getPort(virtualPortId); - if (virtualPort == null) { - virtualPort = VtnData.getPort(vPortStore, virtualPortId); - } - TenantId tenantId = virtualPort.tenantId(); - if (Objective.Operation.ADD == type) { - vtnRscService.addDeviceIdOfOvsMap(virtualPortId, tenantId, deviceId); - } else if (Objective.Operation.REMOVE == type) { - vtnRscService.removeDeviceIdOfOvsMap(host, tenantId, deviceId); - } - } - - private void applyHostMonitoredL2Rules(Host host, Objective.Operation type) { - DeviceId deviceId = host.location().deviceId(); - if (!mastershipService.isLocalMaster(deviceId)) { - return; - } - String ifaceId = host.annotations().value(IFACEID); - if (ifaceId == null) { - log.error("The ifaceId of Host is null"); - return; - } - VirtualPortId virtualPortId = VirtualPortId.portId(ifaceId); - VirtualPort virtualPort = virtualPortService.getPort(virtualPortId); - if (virtualPort == null) { - virtualPort = VtnData.getPort(vPortStore, virtualPortId); - } - Iterator fixip = virtualPort.fixedIps().iterator(); - SubnetId subnetId = null; - if (fixip.hasNext()) { - subnetId = fixip.next().subnetId(); - } - if (subnetId != null) { - Map hosts = new ConcurrentHashMap(); - if (hostsOfSubnet.get(subnetId) != null) { - hosts = hostsOfSubnet.get(subnetId); - } - if (type == Objective.Operation.ADD) { - hosts.put(host.id(), host); - hostsOfSubnet.put(subnetId, hosts); - } else if (type == Objective.Operation.REMOVE) { - hosts.remove(host.id()); - if (hosts.size() != 0) { - hostsOfSubnet.put(subnetId, hosts); - } else { - hostsOfSubnet.remove(subnetId); - } - } - } - - Iterable devices = deviceService.getAvailableDevices(); - PortNumber inPort = host.location().port(); - MacAddress mac = host.mac(); - Device device = deviceService.getDevice(deviceId); - String controllerIp = VtnData.getControllerIpOfSwitch(device); - IpAddress ipAddress = IpAddress.valueOf(controllerIp); - TenantNetwork network = tenantNetworkService.getNetwork(virtualPort.networkId()); - if (network == null) { - log.error("Can't find network of the host"); - return; - } - SegmentationId segmentationId = network.segmentationId(); - // Get all the tunnel PortNumber in the current node - Iterable ports = deviceService.getPorts(deviceId); - Collection localTunnelPorts = VtnData.getLocalTunnelPorts(ports); - // Get all the local vm's PortNumber in the current node - Map> localHostPorts = switchOfLocalHostPorts - .get(deviceId).getNetworkOfLocalHostPorts(); - Set networkOflocalHostPorts = localHostPorts.get(network.id()); - for (PortNumber p : localTunnelPorts) { - programGroupTable(deviceId, appId, p, devices, type); - } - Subnet subnet = subnetService.getSubnet(subnetId); - String deviceOwner = virtualPort.deviceOwner(); - if (deviceOwner != null) { - if ("network:dhcp".equalsIgnoreCase(deviceOwner)) { - Sets.newHashSet(devices).stream() - .filter(d -> d.type() == Device.Type.SWITCH) - .forEach(d -> { - if (subnet != null) { - IpAddress dstIp = IpAddress - .valueOf(USERDATA_IP); - classifierService - .programUserdataClassifierRules(d.id(), - subnet.cidr(), - dstIp, - mac, - segmentationId, - type); - } - }); - } - } - if (type == Objective.Operation.ADD) { - vPortStore.put(virtualPortId, virtualPort); - if (networkOflocalHostPorts == null) { - networkOflocalHostPorts = new HashSet(); - localHostPorts.putIfAbsent(network.id(), networkOflocalHostPorts); - } - networkOflocalHostPorts.add(inPort); - l2ForwardService.programLocalBcastRules(deviceId, segmentationId, - inPort, networkOflocalHostPorts, - localTunnelPorts, - type); - classifierService.programTunnelIn(deviceId, segmentationId, - localTunnelPorts, - type); - } else if (type == Objective.Operation.REMOVE) { - if (networkOflocalHostPorts != null) { - l2ForwardService.programLocalBcastRules(deviceId, segmentationId, - inPort, networkOflocalHostPorts, - localTunnelPorts, - type); - networkOflocalHostPorts.remove(inPort); - if (networkOflocalHostPorts.isEmpty()) { - classifierService.programTunnelIn(deviceId, segmentationId, - localTunnelPorts, - type); - switchOfLocalHostPorts.get(deviceId).getNetworkOfLocalHostPorts() - .remove(virtualPort.networkId()); - } - } - } - - l2ForwardService.programLocalOut(deviceId, segmentationId, inPort, mac, - type); - - l2ForwardService.programTunnelBcastRules(deviceId, segmentationId, - networkOflocalHostPorts, - localTunnelPorts, - type); - - programTunnelOuts(devices, ipAddress, segmentationId, mac, - type); - - classifierService.programLocalIn(deviceId, segmentationId, inPort, mac, - appId, type); - } - - private void programTunnelOuts(Iterable devices, - IpAddress ipAddress, - SegmentationId segmentationId, - MacAddress dstMac, - Objective.Operation type) { - String tunnelName = "vxlan-" + DEFAULT_IP; - Sets.newHashSet(devices).stream() - .filter(d -> d.type() == Device.Type.CONTROLLER) - .filter(d -> !("ovsdb:" + ipAddress).equals(d.id().toString())) - .forEach(d -> { - DriverHandler handler = driverService.createHandler(d.id()); - BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); - Collection bridgeDescriptions = bridgeConfig.getBridges(); - for (BridgeDescription sw : bridgeDescriptions) { - if (sw.name().equals(VtnConfig.DEFAULT_BRIDGE_NAME) && - sw.deviceId().isPresent()) { - List ports = deviceService.getPorts(sw.deviceId().get()); - ports.stream().filter(p -> p.annotations().value(AnnotationKeys.PORT_NAME) - .equalsIgnoreCase(tunnelName)) - .forEach(p -> l2ForwardService.programTunnelOut( - sw.deviceId().get(), segmentationId, p.number(), - dstMac, type, ipAddress)); - break; - } - } - }); - } - - private class InnerDeviceListener implements DeviceListener { - - @Override - public void event(DeviceEvent event) { - Device device = event.subject(); - if (Device.Type.CONTROLLER == device.type()) { - if (DeviceEvent.Type.DEVICE_ADDED == event.type()) { - onControllerDetected(device); - } - if (DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED == event.type()) { - if (deviceService.isAvailable(device.id())) { - onControllerDetected(device); - } else { - onControllerVanished(device); - } - } - } else if (Device.Type.SWITCH == device.type()) { - if (DeviceEvent.Type.DEVICE_ADDED == event.type()) { - onOvsDetected(device); - } - if (DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED == event.type()) { - if (deviceService.isAvailable(device.id())) { - onOvsDetected(device); - } else { - onOvsVanished(device); - } - } - } else { - log.info("Do nothing for this device type"); - } - } - } - - private class InnerHostListener implements HostListener { - - @Override - public void event(HostEvent event) { - Host host = event.subject(); - if (HostEvent.Type.HOST_ADDED == event.type()) { - onHostDetected(host); - } else if (HostEvent.Type.HOST_REMOVED == event.type()) { - onHostVanished(host); - } else if (HostEvent.Type.HOST_UPDATED == event.type()) { - onHostVanished(host); - onHostDetected(host); - } - } - - } - - // Local Host Ports of Network. - private class NetworkOfLocalHostPorts { - private final Map> networkOfLocalHostPorts = - new HashMap>(); - - public Map> getNetworkOfLocalHostPorts() { - return networkOfLocalHostPorts; - } - } - - private void programGroupTable(DeviceId deviceId, ApplicationId appid, - PortNumber portNumber, Iterable devices, Objective.Operation type) { - if (type.equals(Objective.Operation.REMOVE)) { - return; - } - - List buckets = Lists.newArrayList(); - Sets.newHashSet(devices) - .stream() - .filter(d -> d.type() == Device.Type.CONTROLLER) - .filter(d -> !deviceId.equals(d.id())) - .forEach(d -> { - String ipAddress = d.annotations() - .value(CONTROLLER_IP_KEY); - Ip4Address dst = Ip4Address.valueOf(ipAddress); - Builder builder = DefaultTrafficTreatment.builder(); - - DriverHandler handler = driverService.createHandler(deviceId); - ExtensionTreatmentResolver resolver = handler.behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment treatment = resolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type()); - try { - treatment.setPropertyValue("tunnelDst", dst); - } catch (Exception e) { - log.error("Failed to get extension instruction to set tunnel dst {}", deviceId); - } - - builder.extension(treatment, deviceId); - builder.setOutput(portNumber); - GroupBucket bucket = DefaultGroupBucket - .createAllGroupBucket(builder.build()); - buckets.add(bucket); - }); - final GroupKey key = new DefaultGroupKey(APP_ID.getBytes()); - GroupDescription groupDescription = new DefaultGroupDescription(deviceId, - GroupDescription.Type.ALL, - new GroupBuckets(buckets), - key, - L2ForwardServiceImpl.GROUP_ID, - appid); - groupService.addGroup(groupDescription); - } - - private class VtnL3EventListener implements VtnRscListener { - @Override - public void event(VtnRscEvent event) { - VtnRscEventFeedback l3Feedback = event.subject(); - if (VtnRscEvent.Type.ROUTER_INTERFACE_PUT == event.type()) { - onRouterInterfaceDetected(l3Feedback); - } else if (VtnRscEvent.Type.ROUTER_INTERFACE_DELETE == event.type()) { - onRouterInterfaceVanished(l3Feedback); - } else if (VtnRscEvent.Type.FLOATINGIP_BIND == event.type()) { - onFloatingIpDetected(l3Feedback); - } else if (VtnRscEvent.Type.FLOATINGIP_UNBIND == event.type()) { - onFloatingIpVanished(l3Feedback); - } else if (VtnRscEvent.Type.VIRTUAL_PORT_PUT == event.type()) { - onVirtualPortCreated(l3Feedback); - } else if (VtnRscEvent.Type.VIRTUAL_PORT_DELETE == event.type()) { - onVirtualPortDeleted(l3Feedback); - } - } - - } - - @Override - public void onRouterInterfaceDetected(VtnRscEventFeedback l3Feedback) { - Objective.Operation operation = Objective.Operation.ADD; - RouterInterface routerInf = l3Feedback.routerInterface(); - VirtualPort gwPort = virtualPortService.getPort(routerInf.portId()); - vPortStore.put(gwPort.portId(), gwPort); - Iterable interfaces = routerInterfaceService - .getRouterInterfaces(); - Set interfacesSet = Sets.newHashSet(interfaces).stream() - .filter(r -> r.tenantId().equals(routerInf.tenantId())) - .filter(r -> r.routerId().equals(routerInf.routerId())) - .collect(Collectors.toSet()); - TenantRouter tenantRouter = TenantRouter - .tenantRouter(routerInf.tenantId(), routerInf.routerId()); - if (routerInfFlagOfTenantRouter.get(tenantRouter) != null) { - programRouterInterface(routerInf, operation); - } else { - if (interfacesSet.size() >= SUBNET_NUM) { - programInterfacesSet(interfacesSet, operation); - } - } - // apply L3 arp flows - applyL3ArpFlows(null, gwPort, operation); - } - - @Override - public void onRouterInterfaceVanished(VtnRscEventFeedback l3Feedback) { - Objective.Operation operation = Objective.Operation.REMOVE; - RouterInterface routerInf = l3Feedback.routerInterface(); - Iterable interfaces = routerInterfaceService - .getRouterInterfaces(); - Set interfacesSet = Sets.newHashSet(interfaces) - .stream().filter(r -> r.tenantId().equals(routerInf.tenantId())) - .collect(Collectors.toSet()); - TenantRouter tenantRouter = TenantRouter - .tenantRouter(routerInf.tenantId(), routerInf.routerId()); - if (routerInfFlagOfTenantRouter.get(tenantRouter) != null) { - programRouterInterface(routerInf, operation); - if (interfacesSet.size() == 1) { - routerInfFlagOfTenantRouter.remove(tenantRouter); - interfacesSet.forEach(r -> { - programRouterInterface(r, operation); - }); - } - } - VirtualPort gwPort = virtualPortService.getPort(routerInf.portId()); - if (gwPort == null) { - gwPort = VtnData.getPort(vPortStore, routerInf.portId()); - } - vPortStore.remove(gwPort.portId()); - // apply L3 arp flows - applyL3ArpFlows(null, gwPort, operation); - } - - @Override - public void onFloatingIpDetected(VtnRscEventFeedback l3Feedback) { - floatingIpStore.put(l3Feedback.floatingIp().floatingIp(), - l3Feedback.floatingIp()); - programFloatingIpEvent(l3Feedback, VtnRscEvent.Type.FLOATINGIP_BIND); - } - - @Override - public void onFloatingIpVanished(VtnRscEventFeedback l3Feedback) { - floatingIpStore.remove(l3Feedback.floatingIp().floatingIp()); - programFloatingIpEvent(l3Feedback, VtnRscEvent.Type.FLOATINGIP_UNBIND); - } - - public void onVirtualPortCreated(VtnRscEventFeedback l3Feedback) { - VirtualPort vPort = l3Feedback.virtualPort(); - BasicHostConfig basicHostConfig = networkConfigService.addConfig(HostId.hostId(vPort.macAddress()), - BasicHostConfig.class); - Set ips = new HashSet<>(); - for (FixedIp fixedIp : vPort.fixedIps()) { - ips.add(fixedIp.ip()); - } - basicHostConfig.setIps(ips).apply(); - } - - public void onVirtualPortDeleted(VtnRscEventFeedback l3Feedback) { - VirtualPort vPort = l3Feedback.virtualPort(); - HostId hostId = HostId.hostId(vPort.macAddress()); - BasicHostConfig basicHostConfig = networkConfigService.addConfig(hostId, - BasicHostConfig.class); - Set oldIps = hostService.getHost(hostId).ipAddresses(); - // Copy to a new set as oldIps is unmodifiable set. - Set newIps = new HashSet<>(); - newIps.addAll(oldIps); - for (FixedIp fixedIp : vPort.fixedIps()) { - newIps.remove(fixedIp.ip()); - } - basicHostConfig.setIps(newIps).apply(); - } - - private void programInterfacesSet(Set interfacesSet, - Objective.Operation operation) { - int subnetVmNum = 0; - for (RouterInterface r : interfacesSet) { - // Get all the host of the subnet - Map hosts = hostsOfSubnet.get(r.subnetId()); - if (hosts != null && hosts.size() > 0) { - subnetVmNum++; - if (subnetVmNum >= SUBNET_NUM) { - TenantRouter tenantRouter = TenantRouter - .tenantRouter(r.tenantId(), r.routerId()); - routerInfFlagOfTenantRouter.put(tenantRouter, true); - interfacesSet.forEach(f -> { - programRouterInterface(f, operation); - }); - break; - } - } - } - } - - private void programRouterInterface(RouterInterface routerInf, - Objective.Operation operation) { - TenantRouter tenantRouter = TenantRouter - .tenantRouter(routerInf.tenantId(), routerInf.routerId()); - SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter); - // Get all the host of the subnet - Map hosts = hostsOfSubnet.get(routerInf.subnetId()); - hosts.values().forEach(h -> { - applyEastWestL3Flows(h, l3vni, operation); - }); - } - - private void applyL3ArpFlows(DeviceId deviceId, VirtualPort gwPort, - Objective.Operation operation) { - IpAddress ip = null; - Iterator gwIps = gwPort.fixedIps().iterator(); - if (gwIps.hasNext()) { - ip = gwIps.next().ip(); - } - IpAddress gwIp = ip; - MacAddress gwMac = gwPort.macAddress(); - TenantNetwork network = tenantNetworkService - .getNetwork(gwPort.networkId()); - if (deviceId != null) { - // Arp rules - DriverHandler handler = driverService.createHandler(deviceId); - arpService.programArpRules(handler, deviceId, gwIp, - network.segmentationId(), gwMac, - operation); - } else { - Iterable devices = deviceService.getAvailableDevices(); - Sets.newHashSet(devices).stream() - .filter(d -> Device.Type.SWITCH == d.type()).forEach(d -> { - // Arp rules - DriverHandler handler = driverService.createHandler(d.id()); - arpService.programArpRules(handler, d.id(), gwIp, - network.segmentationId(), gwMac, - operation); - }); - } - } - - private void applyEastWestL3Flows(Host h, SegmentationId l3vni, - Objective.Operation operation) { - if (!mastershipService.isLocalMaster(h.location().deviceId())) { - log.debug("not master device:{}", h.location().deviceId()); - return; - } - String ifaceId = h.annotations().value(IFACEID); - VirtualPort hPort = virtualPortService - .getPort(VirtualPortId.portId(ifaceId)); - if (hPort == null) { - hPort = VtnData.getPort(vPortStore, VirtualPortId.portId(ifaceId)); - } - IpAddress srcIp = null; - IpAddress srcGwIp = null; - MacAddress srcVmGwMac = null; - SubnetId srcSubnetId = null; - Iterator srcIps = hPort.fixedIps().iterator(); - if (srcIps.hasNext()) { - FixedIp fixedIp = srcIps.next(); - srcIp = fixedIp.ip(); - srcSubnetId = fixedIp.subnetId(); - srcGwIp = subnetService.getSubnet(srcSubnetId).gatewayIp(); - FixedIp fixedGwIp = FixedIp.fixedIp(srcSubnetId, srcGwIp); - VirtualPort gwPort = virtualPortService.getPort(fixedGwIp); - if (gwPort == null) { - gwPort = VtnData.getPort(vPortStore, fixedGwIp); - } - srcVmGwMac = gwPort.macAddress(); - } - TenantNetwork network = tenantNetworkService - .getNetwork(hPort.networkId()); - IpAddress dstVmIP = srcIp; - MacAddress dstVmGwMac = srcVmGwMac; - TenantId tenantId = hPort.tenantId(); - // Classifier rules - if (operation == Objective.Operation.ADD) { - sendEastWestL3Flows(h, srcVmGwMac, l3vni, srcGwIp, network, - dstVmIP, dstVmGwMac, operation); - } else if (operation == Objective.Operation.REMOVE) { - FloatingIp floatingIp = null; - Iterable floatingIps = floatingIpService.getFloatingIps(); - Set floatingIpSet = Sets.newHashSet(floatingIps).stream() - .filter(f -> f.tenantId().equals(tenantId)) - .collect(Collectors.toSet()); - for (FloatingIp f : floatingIpSet) { - IpAddress fixedIp = f.fixedIp(); - if (fixedIp != null && fixedIp.equals(srcIp)) { - floatingIp = f; - break; - } - } - if (floatingIp == null) { - sendEastWestL3Flows(h, srcVmGwMac, l3vni, srcGwIp, network, - dstVmIP, dstVmGwMac, operation); - } - } - } - - private void sendEastWestL3Flows(Host h, MacAddress srcVmGwMac, - SegmentationId l3vni, IpAddress srcGwIp, - TenantNetwork network, IpAddress dstVmIP, - MacAddress dstVmGwMac, - Objective.Operation operation) { - classifierService - .programL3InPortClassifierRules(h.location().deviceId(), - h.location().port(), h.mac(), - srcVmGwMac, l3vni, operation); - classifierService - .programArpClassifierRules(h.location().deviceId(), - h.location().port(), srcGwIp, - network.segmentationId(), operation); - Iterable devices = deviceService.getAvailableDevices(); - Sets.newHashSet(devices).stream() - .filter(d -> Device.Type.SWITCH == d.type()).forEach(d -> { - // L3FWD rules - l3ForwardService.programRouteRules(d.id(), l3vni, dstVmIP, - network.segmentationId(), - dstVmGwMac, h.mac(), - operation); - }); - } - - private void programFloatingIpEvent(VtnRscEventFeedback l3Feedback, - VtnRscEvent.Type type) { - FloatingIp floaingIp = l3Feedback.floatingIp(); - if (floaingIp != null) { - VirtualPortId vmPortId = floaingIp.portId(); - VirtualPort vmPort = virtualPortService.getPort(vmPortId); - VirtualPort fipPort = virtualPortService - .getPort(floaingIp.networkId(), floaingIp.floatingIp()); - if (vmPort == null) { - vmPort = VtnData.getPort(vPortStore, vmPortId); - } - if (fipPort == null) { - fipPort = VtnData.getPort(vPortStore, floaingIp.networkId(), - floaingIp.floatingIp()); - } - Set hostSet = hostService.getHostsByMac(vmPort.macAddress()); - Host host = null; - for (Host h : hostSet) { - String ifaceid = h.annotations().value(IFACEID); - if (ifaceid != null && ifaceid.equals(vmPortId.portId())) { - host = h; - break; - } - } - if (host != null && fipPort != null) { - DeviceId deviceId = host.location().deviceId(); - Port exPort = exPortOfDevice.get(deviceId); - TenantRouter tenantRouter = TenantRouter - .tenantRouter(floaingIp.tenantId(), floaingIp.routerId()); - SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter); - // Floating ip BIND - if (type == VtnRscEvent.Type.FLOATINGIP_BIND) { - vPortStore.put(fipPort.portId(), fipPort); - applyNorthSouthL3Flows(deviceId, false, tenantRouter, host, - vmPort, fipPort, floaingIp, l3vni, - exPort, Objective.Operation.ADD); - } else if (type == VtnRscEvent.Type.FLOATINGIP_UNBIND) { - // Floating ip UNBIND - applyNorthSouthL3Flows(deviceId, false, tenantRouter, host, - vmPort, fipPort, floaingIp, l3vni, - exPort, - Objective.Operation.REMOVE); - vPortStore.remove(fipPort.portId()); - } - } - } - } - - private void sendNorthSouthL3Flows(DeviceId deviceId, FloatingIp floatingIp, - IpAddress dstVmGwIp, - MacAddress dstVmGwMac, - SegmentationId l3vni, - TenantNetwork vmNetwork, - VirtualPort vmPort, Host host, - Objective.Operation operation) { - l3ForwardService - .programRouteRules(deviceId, l3vni, floatingIp.fixedIp(), - vmNetwork.segmentationId(), dstVmGwMac, - vmPort.macAddress(), operation); - classifierService.programL3InPortClassifierRules(deviceId, - host.location().port(), - host.mac(), dstVmGwMac, - l3vni, operation); - classifierService.programArpClassifierRules(deviceId, host.location() - .port(), dstVmGwIp, vmNetwork.segmentationId(), operation); - } - - private void applyNorthSouthL3Flows(DeviceId deviceId, boolean hostFlag, - TenantRouter tenantRouter, Host host, - VirtualPort vmPort, VirtualPort fipPort, - FloatingIp floatingIp, - SegmentationId l3vni, Port exPort, - Objective.Operation operation) { - if (!mastershipService.isLocalMaster(deviceId)) { - log.debug("not master device:{}", deviceId); - return; - } - List gwIpMac = getGwIpAndMac(vmPort); - IpAddress dstVmGwIp = (IpAddress) gwIpMac.get(0); - MacAddress dstVmGwMac = (MacAddress) gwIpMac.get(1); - TenantNetwork vmNetwork = tenantNetworkService - .getNetwork(vmPort.networkId()); - TenantNetwork fipNetwork = tenantNetworkService - .getNetwork(fipPort.networkId()); - // L3 downlink traffic flow - MacAddress exPortMac = MacAddress.valueOf(exPort.annotations() - .value(AnnotationKeys.PORT_MAC)); - classifierService.programL3ExPortClassifierRules(deviceId, exPort.number(), - floatingIp.floatingIp(), operation); - dnatService.programRules(deviceId, floatingIp.floatingIp(), - exPortMac, floatingIp.fixedIp(), - l3vni, operation); - - Subnet subnet = getSubnetOfFloatingIP(floatingIp); - IpPrefix ipPrefix = subnet.cidr(); - snatService.programSnatSameSegmentUploadControllerRules(deviceId, l3vni, - floatingIp.fixedIp(), - floatingIp.floatingIp(), - ipPrefix, - operation); - // L3 uplink traffic flow - if (operation == Objective.Operation.ADD) { - sendNorthSouthL3Flows(deviceId, floatingIp, dstVmGwIp, dstVmGwMac, - l3vni, vmNetwork, vmPort, host, operation); - l2ForwardService - .programExternalOut(deviceId, fipNetwork.segmentationId(), - exPort.number(), exPortMac, operation); - } else if (operation == Objective.Operation.REMOVE) { - if (hostFlag || (routerInfFlagOfTenantRouter.get(tenantRouter) == null)) { - sendNorthSouthL3Flows(deviceId, floatingIp, dstVmGwIp, dstVmGwMac, - l3vni, vmNetwork, vmPort, host, operation); - } - Iterable floatingIps = floatingIpService.getFloatingIps(); - boolean exPortFlag = true; - if (floatingIps != null) { - Set floatingIpSet = Sets.newHashSet(floatingIps); - for (FloatingIp fip : floatingIpSet) { - if (fip.fixedIp() != null) { - exPortFlag = false; - break; - } - } - } - if (exPortFlag) { - l2ForwardService.programExternalOut(deviceId, - fipNetwork.segmentationId(), - exPort.number(), exPortMac, - operation); - } - removeRulesInSnat(deviceId, floatingIp.fixedIp()); - } - } - - private Port getExPort(DeviceId deviceId) { - List ports = deviceService.getPorts(deviceId); - Port exPort = null; - for (Port port : ports) { - String portName = port.annotations().value(AnnotationKeys.PORT_NAME); - Versioned exPortVersioned = exPortMap.get(EX_PORT_KEY); - if (portName != null && exPortVersioned != null && portName. - equals(exPortVersioned.value())) { - exPort = port; - break; - } - } - return exPort; - } - - private List getGwIpAndMac(VirtualPort port) { - List list = new ArrayList(); - MacAddress gwMac = null; - SubnetId subnetId = null; - IpAddress gwIp = null; - Iterator fixips = port.fixedIps().iterator(); - if (fixips.hasNext()) { - FixedIp fixip = fixips.next(); - subnetId = fixip.subnetId(); - gwIp = subnetService.getSubnet(subnetId).gatewayIp(); - FixedIp fixedGwIp = FixedIp.fixedIp(fixip.subnetId(), gwIp); - VirtualPort gwPort = virtualPortService.getPort(fixedGwIp); - if (gwPort == null) { - gwPort = VtnData.getPort(vPortStore, fixedGwIp); - } - gwMac = gwPort.macAddress(); - } - list.add(gwIp); - list.add(gwMac); - return list; - } - - private void applyHostMonitoredL3Rules(Host host, - Objective.Operation operation) { - String ifaceId = host.annotations().value(IFACEID); - DeviceId deviceId = host.location().deviceId(); - VirtualPortId portId = VirtualPortId.portId(ifaceId); - VirtualPort port = virtualPortService.getPort(portId); - if (port == null) { - port = VtnData.getPort(vPortStore, portId); - } - TenantId tenantId = port.tenantId(); - Port exPort = exPortOfDevice.get(deviceId); - Iterator fixips = port.fixedIps().iterator(); - SubnetId sid = null; - IpAddress hostIp = null; - if (fixips.hasNext()) { - FixedIp fixip = fixips.next(); - sid = fixip.subnetId(); - hostIp = fixip.ip(); - } - final SubnetId subnetId = sid; - // L3 internal network access to each other - Iterable interfaces = routerInterfaceService - .getRouterInterfaces(); - Set hostInterfaces = Sets.newHashSet(interfaces) - .stream().filter(r -> r.tenantId().equals(tenantId)) - .filter(r -> r.subnetId().equals(subnetId)) - .collect(Collectors.toSet()); - hostInterfaces.forEach(routerInf -> { - Set interfacesSet = Sets.newHashSet(interfaces) - .stream().filter(r -> r.tenantId().equals(tenantId)) - .filter(r -> r.routerId().equals(routerInf.routerId())) - .collect(Collectors.toSet()); - long count = interfacesSet.stream() - .filter(r -> !r.subnetId().equals(subnetId)).count(); - if (count > 0) { - TenantRouter tenantRouter = TenantRouter - .tenantRouter(routerInf.tenantId(), routerInf.routerId()); - SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter); - if (operation == Objective.Operation.ADD) { - if (routerInfFlagOfTenantRouter.get(tenantRouter) != null) { - applyEastWestL3Flows(host, l3vni, operation); - } else { - if (interfacesSet.size() > 1) { - programInterfacesSet(interfacesSet, operation); - } - } - } else if (operation == Objective.Operation.REMOVE) { - if (routerInfFlagOfTenantRouter.get(tenantRouter) != null) { - applyEastWestL3Flows(host, l3vni, operation); - } - } - } - }); - // L3 external and internal network access to each other - FloatingIp floatingIp = null; - Iterable floatingIps = floatingIpService.getFloatingIps(); - Set floatingIpSet = Sets.newHashSet(floatingIps).stream() - .filter(f -> f.tenantId().equals(tenantId)) - .collect(Collectors.toSet()); - for (FloatingIp f : floatingIpSet) { - IpAddress fixedIp = f.fixedIp(); - if (fixedIp != null && fixedIp.equals(hostIp)) { - floatingIp = f; - break; - } - } - if (floatingIp != null) { - TenantRouter tenantRouter = TenantRouter - .tenantRouter(floatingIp.tenantId(), floatingIp.routerId()); - SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter); - VirtualPort fipPort = virtualPortService - .getPort(floatingIp.networkId(), floatingIp.floatingIp()); - if (fipPort == null) { - fipPort = VtnData.getPort(vPortStore, floatingIp.networkId(), - floatingIp.floatingIp()); - } - applyNorthSouthL3Flows(deviceId, true, tenantRouter, host, port, - fipPort, floatingIp, l3vni, exPort, - operation); - } - } - - public static void setExPortName(String name) { - exPortMap.put(EX_PORT_KEY, name); - } - - /** - * Packet processor responsible for forwarding packets along their paths. - */ - private class VtnL3PacketProcessor implements PacketProcessor { - - @Override - public void process(PacketContext context) { - InboundPacket pkt = context.inPacket(); - ConnectPoint connectPoint = pkt.receivedFrom(); - DeviceId deviceId = connectPoint.deviceId(); - Ethernet ethPkt = pkt.parsed(); - if (ethPkt == null) { - return; - } - if (ethPkt.getEtherType() == Ethernet.TYPE_ARP) { - ARP arpPacket = (ARP) ethPkt.getPayload(); - if ((arpPacket.getOpCode() == ARP.OP_REQUEST)) { - arprequestProcess(arpPacket, deviceId); - } else if (arpPacket.getOpCode() == ARP.OP_REPLY) { - arpresponceProcess(arpPacket, deviceId); - } - } else if (ethPkt.getEtherType() == Ethernet.TYPE_IPV4) { - if (ethPkt.getDestinationMAC().isMulticast()) { - return; - } - IPv4 ip = (IPv4) ethPkt.getPayload(); - upStreamPacketProcessor(ip, deviceId); - - } else { - return; - } - } - - private void arprequestProcess(ARP arpPacket, DeviceId deviceId) { - MacAddress dstMac = MacAddress - .valueOf(arpPacket.getSenderHardwareAddress()); - IpAddress srcIp = IpAddress.valueOf(IPv4 - .toIPv4Address(arpPacket.getTargetProtocolAddress())); - IpAddress dstIp = IpAddress.valueOf(IPv4 - .toIPv4Address(arpPacket.getSenderProtocolAddress())); - FloatingIp floatingIp = floatingIpStore.get(srcIp); - if (floatingIp == null) { - return; - } - DeviceId deviceIdOfFloatingIp = getDeviceIdOfFloatingIP(floatingIp); - if (!deviceId.equals(deviceIdOfFloatingIp)) { - return; - } - Port exPort = exPortOfDevice.get(deviceId); - MacAddress srcMac = MacAddress.valueOf(exPort.annotations() - .value(AnnotationKeys.PORT_MAC)); - if (!downloadSnatRules(deviceId, srcMac, srcIp, dstMac, dstIp, - floatingIp)) { - return; - } - Ethernet ethernet = buildArpResponse(dstIp, dstMac, srcIp, srcMac); - if (ethernet != null) { - sendPacketOut(deviceId, exPort.number(), ethernet); - } - } - - private void arpresponceProcess(ARP arpPacket, DeviceId deviceId) { - MacAddress srcMac = MacAddress - .valueOf(arpPacket.getTargetHardwareAddress()); - MacAddress dstMac = MacAddress - .valueOf(arpPacket.getSenderHardwareAddress()); - IpAddress srcIp = IpAddress.valueOf(IPv4 - .toIPv4Address(arpPacket.getTargetProtocolAddress())); - IpAddress dstIp = IpAddress.valueOf(IPv4 - .toIPv4Address(arpPacket.getSenderProtocolAddress())); - FloatingIp floatingIp = floatingIpStore.get(srcIp); - if (floatingIp == null) { - return; - } - DeviceId deviceIdOfFloatingIp = getDeviceIdOfFloatingIP(floatingIp); - if (!deviceId.equals(deviceIdOfFloatingIp)) { - return; - } - if (!downloadSnatRules(deviceId, srcMac, srcIp, dstMac, dstIp, - floatingIp)) { - return; - } - } - - private void upStreamPacketProcessor(IPv4 ipPacket, DeviceId deviceId) { - IpAddress srcIp = IpAddress.valueOf(ipPacket.getSourceAddress()); - IpAddress dstIp = IpAddress.valueOf(ipPacket.getDestinationAddress()); - FloatingIp floatingIp = null; - Collection floatingIps = floatingIpService - .getFloatingIps(); - Set floatingIpSet = Sets.newHashSet(floatingIps) - .stream().collect(Collectors.toSet()); - for (FloatingIp f : floatingIpSet) { - IpAddress fixIp = f.fixedIp(); - if (fixIp != null && fixIp.equals(srcIp)) { - floatingIp = f; - break; - } - } - if (floatingIp == null) { - return; - } - Subnet subnet = getSubnetOfFloatingIP(floatingIp); - IpAddress gwIp = subnet.gatewayIp(); - Port exportPort = exPortOfDevice.get(deviceId); - MacAddress exPortMac = MacAddress.valueOf(exportPort.annotations() - .value(AnnotationKeys.PORT_MAC)); - IpPrefix ipPrefix = subnet.cidr(); - if (ipPrefix == null) { - return; - } - int mask = ipPrefix.prefixLength(); - if (mask <= 0) { - return; - } - Ethernet ethernet = null; - // if the same ip segment - if (IpUtil.checkSameSegment(floatingIp.floatingIp(), dstIp, mask)) { - ethernet = buildArpRequest(dstIp, floatingIp.floatingIp(), - exPortMac); - } else { - ethernet = buildArpRequest(gwIp, floatingIp.floatingIp(), - exPortMac); - } - if (ethernet != null) { - sendPacketOut(deviceId, exportPort.number(), ethernet); - } - } - } - - private Ethernet buildArpRequest(IpAddress targetIp, IpAddress sourceIp, - MacAddress sourceMac) { - ARP arp = new ARP(); - arp.setHardwareType(ARP.HW_TYPE_ETHERNET) - .setHardwareAddressLength((byte) Ethernet.DATALAYER_ADDRESS_LENGTH) - .setProtocolType(ARP.PROTO_TYPE_IP) - .setProtocolAddressLength((byte) Ip4Address.BYTE_LENGTH) - .setOpCode(ARP.OP_REQUEST); - - arp.setSenderHardwareAddress(sourceMac.toBytes()) - .setSenderProtocolAddress(sourceIp.getIp4Address().toInt()) - .setTargetHardwareAddress(ZERO_MAC_ADDRESS) - .setTargetProtocolAddress(targetIp.getIp4Address().toInt()); - - Ethernet ethernet = new Ethernet(); - ethernet.setEtherType(Ethernet.TYPE_ARP) - .setDestinationMACAddress(MacAddress.BROADCAST) - .setSourceMACAddress(sourceMac) - .setPayload(arp); - - ethernet.setPad(true); - return ethernet; - } - - private Ethernet buildArpResponse(IpAddress targetIp, MacAddress targetMac, - IpAddress sourceIp, MacAddress sourceMac) { - ARP arp = new ARP(); - arp.setHardwareType(ARP.HW_TYPE_ETHERNET) - .setHardwareAddressLength((byte) Ethernet.DATALAYER_ADDRESS_LENGTH) - .setProtocolType(ARP.PROTO_TYPE_IP) - .setProtocolAddressLength((byte) Ip4Address.BYTE_LENGTH) - .setOpCode(ARP.OP_REPLY); - - arp.setSenderHardwareAddress(sourceMac.toBytes()) - .setSenderProtocolAddress(sourceIp.getIp4Address().toInt()) - .setTargetHardwareAddress(targetMac.toBytes()) - .setTargetProtocolAddress(targetIp.getIp4Address().toInt()); - - Ethernet ethernet = new Ethernet(); - ethernet.setEtherType(Ethernet.TYPE_ARP) - .setDestinationMACAddress(targetMac) - .setSourceMACAddress(sourceMac) - .setPayload(arp); - - ethernet.setPad(true); - - return ethernet; - } - - private void sendPacketOut(DeviceId deviceId, PortNumber portNumber, - Ethernet payload) { - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .setOutput(portNumber).build(); - OutboundPacket packet = new DefaultOutboundPacket(deviceId, treatment, - ByteBuffer - .wrap(payload - .serialize())); - packetService.emit(packet); - } - - private Subnet getSubnetOfFloatingIP(FloatingIp floatingIp) { - DeviceId exVmPortId = DeviceId - .deviceId(floatingIp.id().floatingIpId().toString()); - Collection exVmPortList = virtualPortService - .getPorts(exVmPortId); - VirtualPort exVmPort = null; - if (exVmPortList != null) { - exVmPort = exVmPortList.iterator().next(); - } - if (exVmPort == null) { - log.debug("exVM Port is null {}.", floatingIp); - return null; - } - Set fixedIps = exVmPort.fixedIps(); - SubnetId subnetId = null; - for (FixedIp f : fixedIps) { - IpAddress fp = f.ip(); - if (fp.equals(floatingIp.floatingIp())) { - subnetId = f.subnetId(); - break; - } - } - if (subnetId == null) { - log.debug("subnetId is null {}.", floatingIp); - return null; - } - Subnet subnet = subnetService.getSubnet(subnetId); - return subnet; - } - - private DeviceId getDeviceIdOfFloatingIP(FloatingIp floatingIp) { - VirtualPortId vmPortId = floatingIp.portId(); - VirtualPort vmPort = virtualPortService.getPort(vmPortId); - if (vmPort == null) { - vmPort = VtnData.getPort(vPortStore, vmPortId); - } - Set hostSet = hostService.getHostsByMac(vmPort.macAddress()); - Host host = null; - for (Host h : hostSet) { - String ifaceid = h.annotations().value(IFACEID); - if (ifaceid != null && ifaceid.equals(vmPortId.portId())) { - host = h; - break; - } - } - if (host == null) { - log.debug("Host is null {}.", floatingIp); - return null; - } else { - return host.location().deviceId(); - } - } - - private boolean downloadSnatRules(DeviceId deviceId, MacAddress srcMac, - IpAddress srcIp, MacAddress dstMac, - IpAddress dstIp, FloatingIp floatingIp) { - TenantNetwork exNetwork = tenantNetworkService - .getNetwork(floatingIp.networkId()); - IpAddress fixedIp = floatingIp.fixedIp(); - VirtualPortId vmPortId = floatingIp.portId(); - VirtualPort vmPort = virtualPortService.getPort(vmPortId); - if (vmPort == null) { - vmPort = VtnData.getPort(vPortStore, vmPortId); - } - Subnet subnet = getSubnetOfFloatingIP(floatingIp); - IpPrefix ipPrefix = subnet.cidr(); - IpAddress gwIp = subnet.gatewayIp(); - if (ipPrefix == null) { - return false; - } - int mask = ipPrefix.prefixLength(); - if (mask <= 0) { - return false; - } - TenantRouter tenantRouter = TenantRouter - .tenantRouter(floatingIp.tenantId(), floatingIp.routerId()); - SegmentationId l3vni = vtnRscService.getL3vni(tenantRouter); - // if the same ip segment - if (IpUtil.checkSameSegment(srcIp, dstIp, mask)) { - snatService.programSnatSameSegmentRules(deviceId, l3vni, fixedIp, - dstIp, dstMac, srcMac, - srcIp, - exNetwork.segmentationId(), - Objective.Operation.ADD); - if (dstIp.equals(gwIp)) { - snatService - .programSnatDiffSegmentRules(deviceId, l3vni, fixedIp, - dstMac, srcMac, srcIp, - exNetwork.segmentationId(), - Objective.Operation.ADD); - } - } - return true; - } - - private void removeRulesInSnat(DeviceId deviceId, IpAddress fixedIp) { - for (FlowEntry f : flowRuleService.getFlowEntries(deviceId)) { - if (f.tableId() == SNAT_TABLE - && f.priority() > SNAT_DEFAULT_RULE_PRIORITY) { - String srcIp = f.selector() - .getCriterion(Criterion.Type.IPV4_SRC).toString(); - int priority = f.priority(); - if (srcIp != null && srcIp.contains(fixedIp.toString())) { - log.info("Match snat rules bob"); - TrafficSelector selector = f.selector(); - TrafficTreatment treatment = f.treatment(); - snatService.removeSnatRules(deviceId, selector, treatment, - priority, - Objective.Operation.REMOVE); - - } - } - } - } -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/package-info.java deleted file mode 100644 index 0c10369399..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VTN application that applies configuration and flows to the device. - */ -package org.onosproject.vtn.manager.impl; diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/package-info.java deleted file mode 100644 index 4da1e7aa9a..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/manager/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VTN application that applies configuration and flows to the device. - */ -package org.onosproject.vtn.manager; diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ArpService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ArpService.java deleted file mode 100644 index 8dad2bf2fb..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ArpService.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; - -import org.onosproject.net.DeviceId; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.vtnrsc.SegmentationId; - - -/** - * ArpService interface providing the rules in ARP table which is Table(10). - */ -public interface ArpService { - - /** - * Assemble the arp rules. - * Match: arp type, vnid and destination ip. - * Action: set arp_operation, move arp_eth_src to arp_eth_dst, set arp_eth_src, - * move arp_ip_src to arp_ip_dst, set arp_ip_src, set output port. - * - * @param hander DriverHandler - * @param deviceId Device Id - * @param dstIP destination ip - * @param matchVni the vni of the source network (l2vni) - * @param dstMac destination mac - * @param type the operation type of the flow rules - */ - void programArpRules(DriverHandler hander, DeviceId deviceId, IpAddress dstIP, - SegmentationId matchVni, MacAddress dstMac, - Objective.Operation type); -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ClassifierService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ClassifierService.java deleted file mode 100644 index fb08e2a54b..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ClassifierService.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.net.flowobjective.Objective.Operation; -import org.onosproject.vtnrsc.SegmentationId; - -/** - * Applies classifier flows to the device. Classifier table is Table(0). - */ -public interface ClassifierService { - - /** - * The port rule that message from host matches Table(0) Match: host mac and - * ingress port Action: set vnid and go to L2Forward Table(50). - * - * @param deviceId Device Id - * @param segmentationId the vnid of the host belong to - * @param inPort the ingress port of the host - * @param srcMac the mac of the host - * @param appId the application ID of the vtn - * @param type the operation of the flow - */ - void programLocalIn(DeviceId deviceId, SegmentationId segmentationId, - PortNumber inPort, MacAddress srcMac, - ApplicationId appId, Objective.Operation type); - - /** - * The port rule that message from tunnel Table(0) Match: tunnel port and - * vnid Action: go to L2Forward Table(50). - * - * @param deviceId Device Id - * @param segmentationId the vnid of the host belong to - * @param localTunnelPorts the tunnel pors of the device - * @param type the operation of the flow - */ - void programTunnelIn(DeviceId deviceId, SegmentationId segmentationId, - Iterable localTunnelPorts, - Objective.Operation type); - - /** - * Assemble the L3 Classifier table rules which are sended from external port. - * Match: ipv4 type, ingress port and destination ip. - * Action: go to DNAT Table(20). - * - * @param deviceId Device Id - * @param inPort external port - * @param dstIp floating ip - * @param type the operation type of the flow rules - */ - void programL3ExPortClassifierRules(DeviceId deviceId, PortNumber inPort, - IpAddress dstIp, - Objective.Operation type); - - /** - * Assemble the L3 Classifier table rules which are sended from internal port. - * Match: ingress port, source mac and destination mac. - * Action: set vnid and go to L3Forward Table(30). - * - * @param deviceId Device Id - * @param inPort the ingress port of the host - * @param srcMac source mac - * @param dstMac destination vm gateway mac - * @param actionVni the vni of L3 network - * @param type the operation type of the flow rules - */ - void programL3InPortClassifierRules(DeviceId deviceId, - PortNumber inPort, MacAddress srcMac, - MacAddress dstMac, - SegmentationId actionVni, - Objective.Operation type); - - /** - * Assemble the Arp Classifier table rules. - * Match: arp type and destination ip. - * Action: set vnid and go to ARP Table(10). - * - * @param deviceId Device Id - * @param dstIp source gateway ip - * @param actionVni the vni of the source network (l2vni) - * @param type the operation type of the flow rules - */ - void programArpClassifierRules(DeviceId deviceId, IpAddress dstIp, - SegmentationId actionVni, - Objective.Operation type); - - /** - * Assemble the Arp Classifier table rules. - * Match: arp type and destination ip. - * Action: set vnid and go to ARP Table(10). - * - * @param deviceId Device Id - * @param inPort the ingress port of the host - * @param dstIp source gateway ip - * @param actionVni the vni of the source network (l2vni) - * @param type the operation type of the flow rules - */ - void programArpClassifierRules(DeviceId deviceId, PortNumber inPort, - IpAddress dstIp, SegmentationId actionVni, - Objective.Operation type); - - /** - * Assemble the Userdata Classifier table rules. - * Match: subnet ip prefix and destination ip. - * Action: add flow rule to specific ip for userdata. - * - * @param deviceId Device Id - * @param ipPrefix source ip prefix - * @param dstIp userdata ip - * @param dstmac dst mac - * @param actionVni the vni of the source network (l2vni) - * @param type the operation type of the flow rules - */ - void programUserdataClassifierRules(DeviceId deviceId, IpPrefix ipPrefix, - IpAddress dstIp, MacAddress dstmac, - SegmentationId actionVni, - Objective.Operation type); - - /** - * Assemble the export port Arp Classifier table rules. - * Match: export port. - * Action: upload packet to controller. - * - * @param exportPort export port of ovs - * @param deviceId Device Id - * @param type the operation type of the flow rules - */ - void programExportPortArpClassifierRules(Port exportPort, DeviceId deviceId, - Operation type); -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/DnatService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/DnatService.java deleted file mode 100644 index 1634027d0b..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/DnatService.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.vtnrsc.SegmentationId; - -/** - * DnatService interface provides the rules in DNAT table which is Table(20) for ovs pipeline. - * DNAT means Destination Network Address Translation, it is acronym for network terminology. - * Handle the downward flows. - */ -public interface DnatService { - - /** - * Assemble the DNAT table rules. - * Match: ipv4 type and destination ip. - * Action: set eth_src, set ip_dst, set vnid and goto L3Forward Table(30). - * - * @param deviceId Device Id - * @param dstIp floating ip - * @param ethSrc floating ip gateway mac - * @param ipDst destination vm ip - * @param actionVni the vni of L3 network - * @param type the operation type of the flow rules - */ - void programRules(DeviceId deviceId, IpAddress dstIp, - MacAddress ethSrc, IpAddress ipDst, - SegmentationId actionVni, Objective.Operation type); -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L2ForwardService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L2ForwardService.java deleted file mode 100644 index 68af8bbbe3..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L2ForwardService.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.vtnrsc.SegmentationId; - -/** - * Applies L2 flows to the device. L2Forward table is Table(50). - */ -public interface L2ForwardService { - - /** - * The local broadcast rule that message matches Table(50). - * Match: broadcast mac and vnid. - * Action: set output port. - * - * @param deviceId Device Id - * @param segmentationId the vnid of the host belong to - * @param inPort the ingress port of the host - * @param localVmPorts the local ports of the network which connect host - * @param localTunnelPorts the tunnel pors of the device - * @param type the operation of the flow - */ - void programLocalBcastRules(DeviceId deviceId, - SegmentationId segmentationId, - PortNumber inPort, - Iterable localVmPorts, - Iterable localTunnelPorts, - Objective.Operation type); - - /** - * The tunnel broadcast rule that message matches Table(50). - * Match: broadcast mac and vnid. - * Action: output port. - * - * @param deviceId Device Id - * @param segmentationId the vnid of the host belong to - * @param localVmPorts the local ports of the network which connect host - * @param localTunnelPorts the tunnel pors of the device - * @param type the operation of the flow - */ - void programTunnelBcastRules(DeviceId deviceId, - SegmentationId segmentationId, - Iterable localVmPorts, - Iterable localTunnelPorts, - Objective.Operation type); - - /** - * The local out rule that message matches Table(50). - * Match: local host mac and vnid. - * Action: output local host port. - * - * @param deviceId Device Id - * @param segmentationId the vnid of the host belong to - * @param outPort the ingress port of the host - * @param sourceMac the mac of the host - * @param type the operation of the flow - */ - void programLocalOut(DeviceId deviceId, SegmentationId segmentationId, - PortNumber outPort, MacAddress sourceMac, - Objective.Operation type); - - /** - * The external out rule that message matches Table(50). - * Match: external port mac and vnid. - * Action: output external port. - * - * @param deviceId Device Id - * @param segmentationId the vnid of the host belong to - * @param outPort the ingress port of the external port - * @param sourceMac the mac of the external port - * @param type the operation of the flow - */ - void programExternalOut(DeviceId deviceId, SegmentationId segmentationId, - PortNumber outPort, MacAddress sourceMac, - Objective.Operation type); - - /** - * The tunnel out rule that message matches Table(50). - * Match: host mac and vnid. - * Action: output tunnel port. - * - * @param deviceId Device Id - * @param segmentationId the vnid of the host belong to - * @param tunnelOutPort the port of the tunnel - * @param dstMac the mac of the host - * @param type the operation of the flow - * @param ipAddress the ipAddress of the node - */ - void programTunnelOut(DeviceId deviceId, SegmentationId segmentationId, - PortNumber tunnelOutPort, MacAddress dstMac, - Objective.Operation type, IpAddress ipAddress); - -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L3ForwardService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L3ForwardService.java deleted file mode 100644 index 47677e644b..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L3ForwardService.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.vtnrsc.SegmentationId; - -/** - * L3ForwardService interface provide the rules in L3Forward table which is Table(30). - */ -public interface L3ForwardService { - - /** - * Assemble the L3Forward table rules. - * Match: ipv4 type, vnid and destination ip. - * Action: set eth_src, set eth_dst, set vnid and goto L2Forward Table(50). - * - * @param deviceId Device Id - * @param l3Vni the vni of L3 network - * @param dstVmIP destination vm ip - * @param dstVni the vni of the destination network (l2vni) - * @param dstVmGwMac destination VM gateway mac - * @param dstVmMac destination VM mac - * @param type the operation type of the flow rules - */ - void programRouteRules(DeviceId deviceId, SegmentationId l3Vni, - IpAddress dstVmIP, SegmentationId dstVni, - MacAddress dstVmGwMac, MacAddress dstVmMac, - Objective.Operation type); - -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/SnatService.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/SnatService.java deleted file mode 100644 index 30db4ec1c6..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/SnatService.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.vtnrsc.SegmentationId; - -/** - * SnatService interface provides the rules in SNAT table which is Table(40) for ovs pipeline. - * SNAT means Source Network Address Translation, it is acronym for network terminology. - * Handle the upward flows. - */ -public interface SnatService { - - /** - * Assemble the SNAT table rules. - * Match: ipv4 type, vnid, destination ip and source ip. - * Action: set eth_src, set eth_dst, set ip_src, set vnid and goto L2Forward Table(50). - * - * @param deviceId Device Id - * @param matchVni the vni of L3 network - * @param srcIP source ip - * @param dstIP destination ip - * @param ethDst external gateway mac - * @param ethSrc external port mac - * @param ipSrc floating ip - * @param actionVni external network VNI - * @param type the operation type of the flow rules - */ - void programSnatSameSegmentRules(DeviceId deviceId, SegmentationId matchVni, - IpAddress srcIP, IpAddress dstIP, MacAddress ethDst, - MacAddress ethSrc, IpAddress ipSrc, - SegmentationId actionVni, Objective.Operation type); - /** - * Assemble the SNAT table rules. - * Match: ipv4 type, vnid and source ip. - * Action: set eth_src, set eth_dst, set ip_src, set vnid and goto L2Forward Table(50). - * - * @param deviceId Device Id - * @param matchVni the vni of L3 network - * @param srcIP source ip - * @param ethDst external gateway mac - * @param ethSrc external port mac - * @param ipSrc floating ip - * @param actionVni external network VNI - * @param type the operation type of the flow rules - */ - void programSnatDiffSegmentRules(DeviceId deviceId, SegmentationId matchVni, - IpAddress srcIP, MacAddress ethDst, - MacAddress ethSrc, IpAddress ipSrc, - SegmentationId actionVni, Objective.Operation type); - - /** - * Assemble the SNAT table rules. - * Match: ipv4 type, vnid, destination ip and source ip. - * Action: upload to controller. - * - * @param deviceId Device Id - * @param matchVni the vni of L3 network - * @param srcIP source ip - * @param dstIP destination ip - * @param prefix prefix - * @param type the operation type of the flow rules - */ - void programSnatSameSegmentUploadControllerRules(DeviceId deviceId, - SegmentationId matchVni, - IpAddress srcIP, - IpAddress dstIP, - IpPrefix prefix, - Objective.Operation type); - - /** - * Remove the SNAT table rules. - * - * @param deviceId Device Id - * @param selector selector of rules - * @param treatment treatment of rules - * @param priority priority of rules - * @param type the operation type of the flow rules - */ - void removeSnatRules(DeviceId deviceId, TrafficSelector selector, - TrafficTreatment treatment, int priority, - Objective.Operation type); -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ArpServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ArpServiceImpl.java deleted file mode 100644 index f8c99bed92..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ArpServiceImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table.impl; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.EthType.EtherType; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.behaviour.ExtensionTreatmentResolver; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.instructions.ExtensionTreatment; -import org.onosproject.net.flow.instructions.ExtensionTreatmentType; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.ForwardingObjective.Flag; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.net.flowobjective.Objective.Operation; -import org.onosproject.vtn.table.ArpService; -import org.onosproject.vtnrsc.SegmentationId; -import org.slf4j.Logger; - -/** - * ArpTable class providing the rules in ARP table. - */ -public class ArpServiceImpl implements ArpService { - private final Logger log = getLogger(getClass()); - - private static final int ARP_PRIORITY = 0xffff; - private static final short ARP_RESPONSE = 0x2; - private static final EtherType ARP_TYPE = EtherType.ARP; - - private final FlowObjectiveService flowObjectiveService; - private final ApplicationId appId; - - /** - * Construct a ArpServiceImpl object. - * - * @param appId the application id of vtn - */ - public ArpServiceImpl(ApplicationId appId) { - this.appId = checkNotNull(appId, "ApplicationId can not be null"); - ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class); - } - - @Override - public void programArpRules(DriverHandler hander, DeviceId deviceId, - IpAddress dstIP, SegmentationId srcVni, - MacAddress dstMac, Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(ARP_TYPE.ethType().toShort()) - .matchArpTpa(Ip4Address.valueOf(dstIP.toString())) - .matchTunnelId(Long.parseLong(srcVni.segmentationId())).build(); - - ExtensionTreatmentResolver resolver = hander - .behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment ethSrcToDst = resolver - .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes - .NICIRA_MOV_ETH_SRC_TO_DST.type()); - ExtensionTreatment arpShaToTha = resolver - .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes - .NICIRA_MOV_ARP_SHA_TO_THA.type()); - ExtensionTreatment arpSpaToTpa = resolver - .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes - .NICIRA_MOV_ARP_SPA_TO_TPA.type()); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .extension(ethSrcToDst, deviceId) - .setEthSrc(dstMac).setArpOp(ARP_RESPONSE) - .extension(arpShaToTha, deviceId) - .extension(arpSpaToTpa, deviceId) - .setArpSha(dstMac).setArpSpa(dstIP) - .setOutput(PortNumber.IN_PORT).build(); - - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(ARP_PRIORITY); - - if (type.equals(Objective.Operation.ADD)) { - log.debug("PrivateArpRules-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("PrivateArpRules-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ClassifierServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ClassifierServiceImpl.java deleted file mode 100644 index 9df4663eae..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ClassifierServiceImpl.java +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table.impl; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.EthType.EtherType; -import org.onlab.packet.Ethernet; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.criteria.Criteria; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.ForwardingObjective.Flag; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.net.flowobjective.Objective.Operation; -import org.onosproject.vtn.table.ClassifierService; -import org.onosproject.vtnrsc.SegmentationId; -import org.slf4j.Logger; - -import com.google.common.collect.Sets; - -/** - * Provides implementation of ClassifierService. - */ -public class ClassifierServiceImpl implements ClassifierService { - private final Logger log = getLogger(getClass()); - - private static final EtherType ETH_TYPE = EtherType.ARP; - private static final int ARP_CLASSIFIER_PRIORITY = 60000; - private static final int L3_CLASSIFIER_PRIORITY = 0xffff; - private static final int L2_CLASSIFIER_PRIORITY = 50000; - private static final int USERDATA_CLASSIFIER_PRIORITY = 65535; - private final FlowObjectiveService flowObjectiveService; - private final ApplicationId appId; - - /** - * Constructor. - * - * @param appId the application id of vtn - */ - public ClassifierServiceImpl(ApplicationId appId) { - this.appId = checkNotNull(appId, "ApplicationId can not be null"); - ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class); - } - - @Override - public void programLocalIn(DeviceId deviceId, - SegmentationId segmentationId, PortNumber inPort, - MacAddress srcMac, ApplicationId appid, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(inPort).matchEthSrc(srcMac).build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.add(Instructions - .modTunnelId(Long.parseLong(segmentationId.toString()))); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).makePermanent() - .withFlag(Flag.SPECIFIC).withPriority(L2_CLASSIFIER_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - log.debug("programLocalIn-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("programLocalIn-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - @Override - public void programTunnelIn(DeviceId deviceId, - SegmentationId segmentationId, - Iterable localTunnelPorts, - Objective.Operation type) { - if (localTunnelPorts == null) { - log.info("No tunnel port in device"); - return; - } - Sets.newHashSet(localTunnelPorts).forEach(tp -> { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(tp).add(Criteria.matchTunnelId(Long - .parseLong(segmentationId.toString()))) - .build(); - - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).makePermanent().withFlag(Flag.SPECIFIC) - .withPriority(L2_CLASSIFIER_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - log.debug("programTunnelIn-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("programTunnelIn-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - }); - } - - @Override - public void programL3ExPortClassifierRules(DeviceId deviceId, PortNumber inPort, - IpAddress dstIp, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(Ethernet.TYPE_IPV4).matchInPort(inPort) - .matchIPDst(IpPrefix.valueOf(dstIp, 32)).build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(L3_CLASSIFIER_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - log.debug("L3ExToInClassifierRules-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("L3ExToInClassifierRules-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - @Override - public void programL3InPortClassifierRules(DeviceId deviceId, PortNumber inPort, - MacAddress srcMac, MacAddress dstMac, - SegmentationId actionVni, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(inPort).matchEthSrc(srcMac).matchEthDst(dstMac) - .build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .setTunnelId(Long.parseLong(actionVni.segmentationId())).build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(L3_CLASSIFIER_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - log.debug("L3InternalClassifierRules-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("L3InternalClassifierRules-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - @Override - public void programArpClassifierRules(DeviceId deviceId, IpAddress dstIp, - SegmentationId actionVni, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(ETH_TYPE.ethType().toShort()) - .matchArpTpa(Ip4Address.valueOf(dstIp.toString())) - .build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .setTunnelId(Long.parseLong(actionVni.segmentationId())) - .build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(ARP_CLASSIFIER_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - log.debug("ArpClassifierRules-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("ArpClassifierRules-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - @Override - public void programArpClassifierRules(DeviceId deviceId, PortNumber inPort, - IpAddress dstIp, - SegmentationId actionVni, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(inPort).matchEthType(ETH_TYPE.ethType().toShort()) - .matchArpTpa(Ip4Address.valueOf(dstIp.toString())).build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .setTunnelId(Long.parseLong(actionVni.segmentationId())) - .build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(ARP_CLASSIFIER_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - log.debug("ArpClassifierRules-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("ArpClassifierRules-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - @Override - public void programUserdataClassifierRules(DeviceId deviceId, - IpPrefix ipPrefix, - IpAddress dstIp, - MacAddress dstmac, - SegmentationId actionVni, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(Ethernet.TYPE_IPV4).matchIPSrc(ipPrefix) - .matchIPDst(IpPrefix.valueOf(dstIp, 32)).build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .setTunnelId(Long.parseLong(actionVni.segmentationId())) - .setEthDst(dstmac).build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(USERDATA_CLASSIFIER_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - log.debug("UserdataClassifierRules-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("UserdataClassifierRules-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - @Override - public void programExportPortArpClassifierRules(Port exportPort, - DeviceId deviceId, - Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(EtherType.ARP.ethType().toShort()) - .matchInPort(exportPort.number()).build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.add(Instructions.createOutput(PortNumber.CONTROLLER)); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(L3_CLASSIFIER_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowObjectiveService.forward(deviceId, objective.add()); - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - } -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/DnatServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/DnatServiceImpl.java deleted file mode 100644 index 7753486cb6..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/DnatServiceImpl.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table.impl; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.Ethernet; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.ForwardingObjective.Flag; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.vtn.table.DnatService; -import org.onosproject.vtnrsc.SegmentationId; -import org.slf4j.Logger; - -/** - * Provides implementation of DnatService. - */ -public class DnatServiceImpl implements DnatService { - private final Logger log = getLogger(getClass()); - - private static final int DNAT_PRIORITY = 0xffff; - private static final int PREFIX_LENGTH = 32; - - private final FlowObjectiveService flowObjectiveService; - private final ApplicationId appId; - - /** - * Construct a DnatServiceImpl object. - * - * @param appId the application id of vtn - */ - public DnatServiceImpl(ApplicationId appId) { - this.appId = checkNotNull(appId, "ApplicationId can not be null"); - ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class); - } - - @Override - public void programRules(DeviceId deviceId, IpAddress dstIp, - MacAddress ethSrc, IpAddress ipDst, - SegmentationId actionVni, Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(Ethernet.TYPE_IPV4) - .matchIPDst(IpPrefix.valueOf(dstIp, PREFIX_LENGTH)).build(); - - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.setEthSrc(ethSrc).setIpDst(ipDst) - .setTunnelId(Long.parseLong(actionVni.segmentationId())); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(DNAT_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - log.debug("RouteRules-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("RouteRules-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L2ForwardServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L2ForwardServiceImpl.java deleted file mode 100644 index 41089e0deb..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L2ForwardServiceImpl.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table.impl; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST; -import static org.slf4j.LoggerFactory.getLogger; - -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.GroupId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.behaviour.ExtensionTreatmentResolver; -import org.onosproject.net.driver.DriverHandler; -import org.onosproject.net.driver.DriverService; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.TrafficTreatment.Builder; -import org.onosproject.net.flow.criteria.Criteria; -import org.onosproject.net.flow.instructions.ExtensionTreatment; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.ForwardingObjective.Flag; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.vtn.table.L2ForwardService; -import org.onosproject.vtnrsc.SegmentationId; -import org.slf4j.Logger; - -import com.google.common.collect.Sets; - -/** - * Provides implementation of L2ForwardService. - */ -public final class L2ForwardServiceImpl implements L2ForwardService { - private final Logger log = getLogger(getClass()); - - private static final int MAC_PRIORITY = 0xffff; - public static final Integer GROUP_ID = 1; - private final FlowObjectiveService flowObjectiveService; - private final ApplicationId appId; - private final DriverService driverService; - /** - * Constructor. - * - * @param appId the application id of vtn - */ - public L2ForwardServiceImpl(ApplicationId appId) { - this.appId = checkNotNull(appId, "ApplicationId can not be null"); - ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class); - this.driverService = serviceDirectory.get(DriverService.class); - } - - @Override - public void programLocalBcastRules(DeviceId deviceId, - SegmentationId segmentationId, - PortNumber inPort, - Iterable localVmPorts, - Iterable localTunnelPorts, - Objective.Operation type) { - if (localVmPorts == null || localTunnelPorts == null) { - log.info("No other host port and tunnel in the device"); - return; - } - Sets.newHashSet(localVmPorts).forEach(lp -> { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(lp).matchEthDst(MacAddress.BROADCAST) - .add(Criteria.matchTunnelId(Long - .parseLong(segmentationId.toString()))) - .build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment - .builder(); - boolean flag = false; - for (PortNumber outPort : localVmPorts) { - flag = true; - if (outPort != lp) { - treatment.setOutput(outPort); - } - } - if (type == Objective.Operation.REMOVE && inPort.equals(lp)) { - flag = false; - } - treatment.group(new GroupId(GROUP_ID)); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).makePermanent() - .withFlag(Flag.SPECIFIC).withPriority(MAC_PRIORITY); - if (flag) { - flowObjectiveService.forward(deviceId, objective.add()); - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - }); - } - - @Override - public void programTunnelBcastRules(DeviceId deviceId, - SegmentationId segmentationId, - Iterable localVmPorts, - Iterable localTunnelPorts, - Objective.Operation type) { - if (localVmPorts == null || localTunnelPorts == null) { - log.info("No other host port or tunnel ports in the device"); - return; - } - Sets.newHashSet(localTunnelPorts).forEach(tp -> { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchInPort(tp) - .add(Criteria.matchTunnelId(Long - .parseLong(segmentationId.toString()))) - .matchEthDst(MacAddress.BROADCAST).build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment - .builder(); - - for (PortNumber outPort : localVmPorts) { - treatment.setOutput(outPort); - } - - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).makePermanent() - .withFlag(Flag.SPECIFIC).withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - if (Sets.newHashSet(localVmPorts).isEmpty()) { - flowObjectiveService.forward(deviceId, objective.remove()); - } else { - flowObjectiveService.forward(deviceId, objective.add()); - } - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - }); - } - - @Override - public void programLocalOut(DeviceId deviceId, - SegmentationId segmentationId, - PortNumber outPort, MacAddress sourceMac, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchTunnelId(Long.parseLong(segmentationId.toString())) - .matchEthDst(sourceMac).build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .setOutput(outPort).build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowObjectiveService.forward(deviceId, objective.add()); - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - - } - - @Override - public void programExternalOut(DeviceId deviceId, - SegmentationId segmentationId, - PortNumber outPort, MacAddress sourceMac, - Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchTunnelId(Long.parseLong(segmentationId.toString())) - .matchEthSrc(sourceMac).build(); - TrafficTreatment treatment = DefaultTrafficTreatment.builder() - .setOutput(outPort).build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowObjectiveService.forward(deviceId, objective.add()); - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - - } - - @Override - public void programTunnelOut(DeviceId deviceId, - SegmentationId segmentationId, - PortNumber tunnelOutPort, MacAddress dstMac, - Objective.Operation type, IpAddress ipAddress) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthDst(dstMac).add(Criteria.matchTunnelId(Long - .parseLong(segmentationId.toString()))) - .build(); - - DriverHandler handler = driverService.createHandler(deviceId); - ExtensionTreatmentResolver resolver = handler.behaviour(ExtensionTreatmentResolver.class); - ExtensionTreatment treatment = resolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type()); - try { - treatment.setPropertyValue("tunnelDst", Ip4Address.valueOf(ipAddress.toString())); - } catch (Exception e) { - log.error("Failed to get extension instruction to set tunnel dst {}", deviceId); - } - - Builder builder = DefaultTrafficTreatment.builder(); - builder.extension(treatment, deviceId) - .setOutput(tunnelOutPort).build(); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(builder.build()).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(MAC_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowObjectiveService.forward(deviceId, objective.add()); - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - - } -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L3ForwardServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L3ForwardServiceImpl.java deleted file mode 100644 index 0841d36854..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L3ForwardServiceImpl.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table.impl; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.Ethernet; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.ForwardingObjective.Flag; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.net.flowobjective.Objective.Operation; -import org.onosproject.vtn.table.L3ForwardService; -import org.onosproject.vtnrsc.SegmentationId; -import org.slf4j.Logger; - -/** - * Provides implementation of L3ForwardService. - */ -public class L3ForwardServiceImpl implements L3ForwardService { - private final Logger log = getLogger(getClass()); - - private static final int L3FWD_PRIORITY = 0xffff; - private static final short IP_TYPE = Ethernet.TYPE_IPV4; - private static final int PREFIX_LENGTH = 32; - - private final FlowObjectiveService flowObjectiveService; - private final ApplicationId appId; - - /** - * Construct a L3ForwardServiceImpl object. - * - * @param appId the application id of vtn - */ - public L3ForwardServiceImpl(ApplicationId appId) { - this.appId = checkNotNull(appId, "ApplicationId can not be null"); - ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class); - } - - @Override - public void programRouteRules(DeviceId deviceId, SegmentationId l3Vni, - IpAddress dstVmIP, SegmentationId dstVni, - MacAddress dstVmGwMac, MacAddress dstVmMac, - Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(IP_TYPE) - .matchTunnelId(Long.parseLong(l3Vni.segmentationId())) - .matchIPDst(IpPrefix.valueOf(dstVmIP, PREFIX_LENGTH)).build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.setEthSrc(dstVmGwMac) - .setEthDst(dstVmMac) - .add(Instructions.modTunnelId(Long.parseLong(dstVni - .segmentationId()))); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(L3FWD_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - log.debug("RouteRules-->ADD"); - flowObjectiveService.forward(deviceId, objective.add()); - } else { - log.debug("RouteRules-->REMOVE"); - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/SnatServiceImpl.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/SnatServiceImpl.java deleted file mode 100644 index 8b44938942..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/SnatServiceImpl.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.table.impl; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onlab.osgi.DefaultServiceDirectory; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.packet.Ethernet; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; -import org.onlab.packet.MacAddress; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.DefaultTrafficSelector; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficSelector; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.flow.instructions.Instructions; -import org.onosproject.net.flowobjective.DefaultForwardingObjective; -import org.onosproject.net.flowobjective.FlowObjectiveService; -import org.onosproject.net.flowobjective.ForwardingObjective; -import org.onosproject.net.flowobjective.ForwardingObjective.Flag; -import org.onosproject.net.flowobjective.Objective; -import org.onosproject.net.flowobjective.Objective.Operation; -import org.onosproject.vtn.table.SnatService; -import org.onosproject.vtnrsc.SegmentationId; - -/** - * Provides implementation of SnatService. - */ -public class SnatServiceImpl implements SnatService { - - private static final int SNAT_SAME_SEG_PRIORITY = 0xffff; - private static final int SNAT_SAME_SEG_CON_PRIORITY = 0xfff0; - private static final int SNAT_DIFF_SEG_PRIORITY = 0xffe0; - private static final int PREFIC_LENGTH = 32; - - private final FlowObjectiveService flowObjectiveService; - private final ApplicationId appId; - - /** - * Construct a SnatServiceImpl object. - * - * @param appId the application id of vtn - */ - public SnatServiceImpl(ApplicationId appId) { - this.appId = checkNotNull(appId, "ApplicationId can not be null"); - ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); - this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class); - } - - @Override - public void programSnatSameSegmentRules(DeviceId deviceId, SegmentationId matchVni, - IpAddress srcIP, IpAddress dstIP, MacAddress ethDst, - MacAddress ethSrc, IpAddress ipSrc, - SegmentationId actionVni, Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(Ethernet.TYPE_IPV4) - .matchTunnelId(Long.parseLong(matchVni.segmentationId())) - .matchIPSrc(IpPrefix.valueOf(srcIP, PREFIC_LENGTH)) - .matchIPDst(IpPrefix.valueOf(dstIP, PREFIC_LENGTH)).build(); - - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.setEthDst(ethDst).setEthSrc(ethSrc).setIpSrc(ipSrc) - .setTunnelId(Long.parseLong(actionVni.segmentationId())); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(SNAT_SAME_SEG_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowObjectiveService.forward(deviceId, objective.add()); - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - @Override - public void programSnatDiffSegmentRules(DeviceId deviceId, SegmentationId matchVni, - IpAddress srcIP, MacAddress ethDst, - MacAddress ethSrc, IpAddress ipSrc, - SegmentationId actionVni, Objective.Operation type) { - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(Ethernet.TYPE_IPV4) - .matchTunnelId(Long.parseLong(matchVni.segmentationId())) - .matchIPSrc(IpPrefix.valueOf(srcIP, PREFIC_LENGTH)).build(); - - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.setEthDst(ethDst).setEthSrc(ethSrc).setIpSrc(ipSrc) - .setTunnelId(Long.parseLong(actionVni.segmentationId())); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(SNAT_DIFF_SEG_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowObjectiveService.forward(deviceId, objective.add()); - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - @Override - public void programSnatSameSegmentUploadControllerRules(DeviceId deviceId, - SegmentationId matchVni, - IpAddress srcIP, - IpAddress dstIP, - IpPrefix prefix, - Operation type) { - - TrafficSelector selector = DefaultTrafficSelector.builder() - .matchEthType(Ethernet.TYPE_IPV4) - .matchTunnelId(Long.parseLong(matchVni.segmentationId())) - .matchIPSrc(IpPrefix.valueOf(srcIP, PREFIC_LENGTH)) - .matchIPDst(IpPrefix.valueOf(dstIP, prefix.prefixLength())) - .build(); - TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); - treatment.add(Instructions.createOutput(PortNumber.CONTROLLER)); - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment.build()) - .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC) - .withPriority(SNAT_SAME_SEG_CON_PRIORITY); - if (type.equals(Objective.Operation.ADD)) { - flowObjectiveService.forward(deviceId, objective.add()); - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - } - - @Override - public void removeSnatRules(DeviceId deviceId, TrafficSelector selector, - TrafficTreatment treatment, int priority, - Objective.Operation type) { - ForwardingObjective.Builder objective = DefaultForwardingObjective - .builder().withTreatment(treatment).withSelector(selector) - .fromApp(appId).withFlag(Flag.SPECIFIC).withPriority(priority); - if (type.equals(Objective.Operation.ADD)) { - flowObjectiveService.forward(deviceId, objective.add()); - } else { - flowObjectiveService.forward(deviceId, objective.remove()); - } - } -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/package-info.java deleted file mode 100644 index eb81a894ab..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VTN application that applies configuration and flows to the device. - */ -package org.onosproject.vtn.table.impl; diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/package-info.java deleted file mode 100644 index a4bda370f8..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VTN application that applies configuration and flows to the device. - */ -package org.onosproject.vtn.table; diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/DataPathIdGenerator.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/DataPathIdGenerator.java deleted file mode 100644 index f164ea0063..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/DataPathIdGenerator.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.util; - -import static org.onlab.util.Tools.toHex; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Calendar; - -import org.onosproject.core.IdGenerator; -import org.onosproject.net.DeviceId; - -public final class DataPathIdGenerator implements IdGenerator { - private static final String SCHEME = "of"; - private String ipAddress; - private String timeStamp; - - private DataPathIdGenerator(Builder builder) { - this.ipAddress = builder.ipAddress; - Calendar cal = Calendar.getInstance(); - this.timeStamp = String.valueOf(cal.get(Calendar.SECOND)) - + String.valueOf(cal.get(Calendar.MILLISECOND)); - } - - @Override - public long getNewId() { - String dpid = ipAddress.replace(".", "") + timeStamp; - return Long.parseLong(dpid); - } - - public String getDpId() { - return toHex(getNewId()); - } - - public DeviceId getDeviceId() { - try { - URI uri = new URI(SCHEME, toHex(getNewId()), null); - return DeviceId.deviceId(uri); - } catch (URISyntaxException e) { - return null; - } - } - - /** - * Returns a new builder. - * - * @return new builder - */ - public static Builder builder() { - return new Builder(); - } - - public static final class Builder { - private String ipAddress; - - public Builder addIpAddress(String ipAddress) { - this.ipAddress = ipAddress; - return this; - } - - public DataPathIdGenerator build() { - return new DataPathIdGenerator(this); - } - } -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/IpUtil.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/IpUtil.java deleted file mode 100644 index afc8ab3e23..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/IpUtil.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.util; - -import org.onlab.packet.IpAddress; - -/** - * IpUtil utility class. - */ -public final class IpUtil { - - private IpUtil() { - } - - /** - * check source Ip and destination Ip in same Subnet. - * - * @param srcIp source Ip - * @param dstIp destination - * @param mask netmask length - * @return boolean - */ - public static boolean checkSameSegment(IpAddress srcIp, IpAddress dstIp, - int mask) { - String[] ips = srcIp.toString().split("\\."); - int ipAddr = (Integer.parseInt(ips[0]) << 24) - | (Integer.parseInt(ips[1]) << 16) - | (Integer.parseInt(ips[2]) << 8) - | Integer.parseInt(ips[3]); - int netmask = 0xFFFFFFFF << (32 - mask); - String[] cidrIps = dstIp.toString().split("\\."); - int cidrIpAddr = (Integer.parseInt(cidrIps[0]) << 24) - | (Integer.parseInt(cidrIps[1]) << 16) - | (Integer.parseInt(cidrIps[2]) << 8) - | Integer.parseInt(cidrIps[3]); - - return (ipAddr & netmask) == (cidrIpAddr & netmask); - } -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnConfig.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnConfig.java deleted file mode 100644 index 859818d683..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnConfig.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.util; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import org.onlab.packet.IpAddress; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.PortNumber; -import org.onosproject.net.behaviour.BridgeConfig; -import org.onosproject.net.behaviour.BridgeDescription; -import org.onosproject.net.behaviour.BridgeName; -import org.onosproject.net.behaviour.DefaultBridgeDescription; -import org.onosproject.net.behaviour.DefaultTunnelDescription; -import org.onosproject.net.behaviour.InterfaceConfig; -import org.onosproject.net.behaviour.TunnelDescription; -import org.onosproject.net.behaviour.TunnelEndPoints; -import org.onosproject.net.behaviour.TunnelKeys; -import org.onosproject.net.driver.DriverHandler; - -/** - * Applies configuration to the device. - */ -public final class VtnConfig { - - public static final String DEFAULT_BRIDGE_NAME = "br-int"; - private static final String DEFAULT_TUNNEL = "vxlan-0.0.0.0"; - private static final Map DEFAULT_TUNNEL_OPTIONS = new HashMap() { - { - put("key", "flow"); - put("remote_ip", "flow"); - put("dst_port", "4790"); - put("in_nsi", "flow"); - put("in_nsp", "flow"); - put("out_nsi", "flow"); - put("out_nsp", "flow"); - put("in_nshc1", "flow"); - put("out_nshc1", "flow"); - put("in_nshc2", "flow"); - put("out_nshc2", "flow"); - put("in_nshc3", "flow"); - put("out_nshc3", "flow"); - put("in_nshc4", "flow"); - put("out_nshc4", "flow"); - put("exts", "gpe"); - } - }; - /** - * Constructs a vtn config object. Utility classes should not have a - * public or default constructor, otherwise IDE will compile unsuccessfully. This - * class should not be instantiated. - */ - private VtnConfig() { - } - - /** - * Creates or update bridge in the controller device. - * - * @param handler DriverHandler - * @param dpid datapath id - * @param exPortName external port name - */ - public static void applyBridgeConfig(DriverHandler handler, String dpid, String exPortName) { - BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); - BridgeDescription bridgeDesc = DefaultBridgeDescription.builder() - .name(DEFAULT_BRIDGE_NAME) - .failMode(BridgeDescription.FailMode.SECURE) - .datapathId(dpid) - .disableInBand() - .enableLocalController() - .build(); - - bridgeConfig.addBridge(bridgeDesc); - bridgeConfig.addPort(BridgeName.bridgeName(DEFAULT_BRIDGE_NAME), exPortName); - } - - /** - * Creates or update tunnel in the controller device. - * - * @param handler DriverHandler - * @param srcIp the ipAddress of the local controller device - */ - public static void applyTunnelConfig(DriverHandler handler, IpAddress srcIp) { - DefaultAnnotations.Builder optionBuilder = DefaultAnnotations.builder(); - for (String key : DEFAULT_TUNNEL_OPTIONS.keySet()) { - optionBuilder.set(key, DEFAULT_TUNNEL_OPTIONS.get(key)); - } - - InterfaceConfig interfaceConfig = handler.behaviour(InterfaceConfig.class); - TunnelDescription tunnel = DefaultTunnelDescription.builder() - .deviceId(DEFAULT_BRIDGE_NAME) - .ifaceName(DEFAULT_TUNNEL) - .type(TunnelDescription.Type.VXLAN) - .local(TunnelEndPoints.ipTunnelEndpoint(srcIp)) - .remote(TunnelEndPoints.flowTunnelEndpoint()) - .key(TunnelKeys.flowTunnelKey()) - .otherConfigs(optionBuilder.build()) - .build(); - interfaceConfig.addTunnelMode(DEFAULT_TUNNEL, tunnel); - } - - /** - * Creates or update tunnel in the controller device. - * - * @param handler DriverHandler - */ - public static void removeTunnelConfig(DriverHandler handler) { - InterfaceConfig interfaceConfig = handler.behaviour(InterfaceConfig.class); - interfaceConfig.removeTunnelMode(DEFAULT_TUNNEL); - } - - /** - * Gets ports in the controller device. - * - * @param handler DriverHandler - * @return set of port numbers - */ - public static Set getPortNumbers(DriverHandler handler) { - BridgeConfig bridgeConfig = handler.behaviour(BridgeConfig.class); - return bridgeConfig.getPortNumbers(); - } - -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnData.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnData.java deleted file mode 100644 index f401bde0aa..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/VtnData.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtn.util; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import org.onlab.packet.IpAddress; -import org.onosproject.net.AnnotationKeys; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Port; -import org.onosproject.net.PortNumber; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.collect.Sets; - -/** - * VtnData utility class. - */ -public final class VtnData { - - private static final Logger log = LoggerFactory.getLogger(VtnData.class); - private static final String SWITCH_CHANNEL_ID = "channelId"; - private static final String PORT_HEAD = "vxlan"; - - /** - * Constructs a VtnData object. Utility classes should not have a public or - * default constructor, otherwise IDE will compile unsuccessfully. This - * class should not be instantiated. - */ - private VtnData() { - } - - /** - * Get the ControllerIp from the device . - * - * @param device Device - * @return Controller Ip - */ - public static String getControllerIpOfSwitch(Device device) { - String url = device.annotations().value(SWITCH_CHANNEL_ID); - return url.substring(0, url.lastIndexOf(":")); - } - - /** - * Get the ControllerId from the device . - * - * @param device Device - * @param devices Devices - * @return Controller Id - */ - public static DeviceId getControllerId(Device device, - Iterable devices) { - for (Device d : devices) { - if (d.type() == Device.Type.CONTROLLER && d.id().toString() - .contains(getControllerIpOfSwitch(device))) { - return d.id(); - } - } - log.info("Can not find controller for device : {}", device.id()); - return null; - } - - /** - * Get local tunnel ports. - * - * @param ports Iterable of Port - * @return Collection of PortNumber - */ - public static Collection getLocalTunnelPorts(Iterable ports) { - Collection localTunnelPorts = new ArrayList<>(); - Sets.newHashSet(ports).stream() - .filter(p -> !p.number().equals(PortNumber.LOCAL)) - .forEach(p -> { - if (p.annotations().value(AnnotationKeys.PORT_NAME) - .startsWith(PORT_HEAD)) { - localTunnelPorts.add(p.number()); - } - }); - return localTunnelPorts; - } - - /** - * Get VirtualPort. - * - * @param vPortStore EventuallyConsistentMap of VirtualPort - * @param vPortId VirtualPortId of the VirtualPort - * @return VirtualPort - */ - public static VirtualPort getPort(EventuallyConsistentMap vPortStore, - VirtualPortId vPortId) { - if (vPortStore != null) { - return vPortStore.get(vPortId); - } - return null; - } - - /** - * Get VirtualPort. - * - * @param vPortStore EventuallyConsistentMap of VirtualPort - * @param fixedIP FixedIp of the VirtualPort - * @return VirtualPort - */ - public static VirtualPort getPort(EventuallyConsistentMap vPortStore, - FixedIp fixedIP) { - if (vPortStore != null) { - List vPorts = new ArrayList<>(); - vPortStore.values().forEach(p -> { - Iterator fixedIps = p.fixedIps().iterator(); - while (fixedIps.hasNext()) { - if (fixedIps.next().equals(fixedIP)) { - vPorts.add(p); - break; - } - } - }); - if (vPorts.isEmpty()) { - return null; - } - return vPorts.get(0); - } - return null; - } - - /** - * Get VirtualPort. - * - * @param vPortStore EventuallyConsistentMap of VirtualPort - * @param networkId TenantNetworkId of the VirtualPort - * @param ip IpAddress of the VirtualPort - * @return VirtualPort - */ - public static VirtualPort getPort(EventuallyConsistentMap vPortStore, - TenantNetworkId networkId, IpAddress ip) { - if (vPortStore != null) { - List vPorts = new ArrayList<>(); - vPortStore.values().stream() - .filter(p -> p.networkId().equals(networkId)) - .forEach(p -> { - Iterator fixedIps = p.fixedIps().iterator(); - while (fixedIps.hasNext()) { - if (fixedIps.next().ip().equals(ip)) { - vPorts.add(p); - break; - } - } - }); - if (vPorts.isEmpty()) { - return null; - } - return vPorts.get(0); - } - return null; - } - -} diff --git a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/package-info.java b/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/package-info.java deleted file mode 100644 index 5b82f886f8..0000000000 --- a/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/util/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VTN application that applies configuration and flows to the device. - */ -package org.onosproject.vtn.util; diff --git a/apps/vtn/vtnrsc/BUILD b/apps/vtn/vtnrsc/BUILD deleted file mode 100644 index 167e717fc1..0000000000 --- a/apps/vtn/vtnrsc/BUILD +++ /dev/null @@ -1,21 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + KRYO + CLI + [ - "//core/store/serializers:onos-core-serializers", -] - -osgi_jar_with_tests( - exclude_tests = [ - "org/onosproject/vtnrsc/util/VtnEventuallyConsistentMapTest", - "org/onosproject/vtnrsc/util/VtnStorageServiceTest", - ], - karaf_command_packages = [ - "org.onosproject.vtnrsc.cli", - "org.onosproject.vtnrsc.cli.virtualport", - "org.onosproject.vtnrsc.cli.subnet", - "org.onosproject.vtnrsc.cli.routerinterface", - "org.onosproject.vtnrsc.cli.router", - "org.onosproject.vtnrsc.cli.network", - "org.onosproject.vtnrsc.cli.floatingip", - ], - test_deps = TEST_REST, - deps = COMPILE_DEPS, -) diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllocationPool.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllocationPool.java deleted file mode 100644 index 4701577919..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllocationPool.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.packet.IpAddress; - -/** - * The continuous IP address range between the start address and the end address for the allocation pools. - */ -public interface AllocationPool { - - /** - * The start address for the allocation pool. - * - * @return startIp - */ - IpAddress startIp(); - - /** - * The end address for the allocation pool. - * - * @return endIp - */ - IpAddress endIp(); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllowedAddressPair.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllowedAddressPair.java deleted file mode 100644 index 7ea093af5c..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/AllowedAddressPair.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; - -/** - * Immutable representation of a allowed address pair. - */ -public final class AllowedAddressPair { - private final IpAddress ip; - private final MacAddress mac; - // Public construction is prohibited - private AllowedAddressPair(IpAddress ip, MacAddress mac) { - checkNotNull(ip, "IpAddress cannot be null"); - checkNotNull(mac, "MacAddress cannot be null"); - this.ip = ip; - this.mac = mac; - } - /** - * Returns the AllowedAddressPair ip address. - * - * @return ip address - */ - public IpAddress ip() { - return ip; - } - - /** - * Returns the AllowedAddressPair MAC address. - * - * @return MAC address - */ - public MacAddress mac() { - return mac; - } - - - /** - * Creates a allowedAddressPair using the supplied ipAddress & - * macAddress. - * - * @param ip IP address - * @param mac MAC address - * @return AllowedAddressPair - */ - public static AllowedAddressPair allowedAddressPair(IpAddress ip, - MacAddress mac) { - return new AllowedAddressPair(ip, mac); - } - - @Override - public int hashCode() { - return Objects.hash(ip, mac); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof AllowedAddressPair) { - final AllowedAddressPair that = (AllowedAddressPair) obj; - return Objects.equals(this.ip, that.ip) - && Objects.equals(this.mac, that.mac); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("ip", ip).add("mac", mac).toString(); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/BindingHostId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/BindingHostId.java deleted file mode 100644 index 1e7e825764..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/BindingHostId.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import static com.google.common.base.Preconditions.checkNotNull; - -public final class BindingHostId extends Identifier { - // Public construction is prohibited - private BindingHostId(String bindingHostId) { - super(checkNotNull(bindingHostId, "BindingHosttId cannot be null")); - } - - /** - * Creates a BindingHostId identifier. - * - * @param bindingHostId the bindingHostId identifier - * @return the bindingHostId identifier - */ - public static BindingHostId bindingHostId(String bindingHostId) { - return new BindingHostId(bindingHostId); - } - - /** - * Returns the bindingHostId identifier. - * - * @return the bindingHostId identifier - */ - public String bindingHostId() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultAllocationPool.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultAllocationPool.java deleted file mode 100644 index aa9120aae3..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultAllocationPool.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; -import java.util.Objects; - -import org.onlab.packet.IpAddress; - -/** - * The continuous IP address range between the start address and the end address - * for the allocation pools. - */ -public final class DefaultAllocationPool implements AllocationPool { - - private final IpAddress startIp; - private final IpAddress endIp; - - /** - * Creates an AllocationPool by using the start IP address and the end IP - * address. - * - * @param startIp the start IP address of the allocation pool - * @param endIp the end IP address of the allocation pool - */ - public DefaultAllocationPool(IpAddress startIp, IpAddress endIp) { - checkNotNull(startIp, "StartIp cannot be null"); - checkNotNull(endIp, "EndIp cannot be null"); - this.startIp = startIp; - this.endIp = endIp; - } - - @Override - public IpAddress startIp() { - return startIp; - } - - @Override - public IpAddress endIp() { - return endIp; - } - - @Override - public int hashCode() { - return Objects.hash(startIp, endIp); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultAllocationPool) { - final DefaultAllocationPool other = (DefaultAllocationPool) obj; - return Objects.equals(this.startIp, other.startIp) - && Objects.equals(this.endIp, other.endIp); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("startIp", startIp).add("endIp", endIp) - .toString(); - } -} - diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFiveTuple.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFiveTuple.java deleted file mode 100644 index 3ba25bb109..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFiveTuple.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; - -import java.util.Objects; - -import org.onlab.packet.IPv4; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.net.PortNumber; - -/** - * Representation for five tuple information from packet. - */ -public final class DefaultFiveTuple implements FiveTuple { - - private final MacAddress macSrc; - private final MacAddress macDst; - private final IpAddress ipSrc; - private final IpAddress ipDst; - private final PortNumber portSrc; - private final PortNumber portDst; - private final byte protocol; - private final TenantId tenantId; - - /** - * Constructor for packet five tuple information. - * - * @param protocol protocol of the packet - * @param ipSrc source ip address of the packet - * @param ipDst destination ip address of the packet - * @param portSrc source port of the packet - * @param portDst destination port of the packet - */ - private DefaultFiveTuple(byte protocol, IpAddress ipSrc, IpAddress ipDst, PortNumber portSrc, PortNumber portDst, - TenantId tenantId, MacAddress macSrc, MacAddress macDst) { - - this.protocol = protocol; - this.ipSrc = ipSrc; - this.ipDst = ipDst; - this.portSrc = portSrc; - this.portDst = portDst; - this.tenantId = tenantId; - this.macSrc = macSrc; - this.macDst = macDst; - } - - @Override - public byte protocol() { - return protocol; - } - - @Override - public IpAddress ipSrc() { - return ipSrc; - } - - @Override - public IpAddress ipDst() { - return ipDst; - } - - @Override - public PortNumber portSrc() { - return portSrc; - } - - @Override - public PortNumber portDst() { - return portDst; - } - - @Override - public MacAddress macSrc() { - return macSrc; - } - - @Override - public MacAddress macDst() { - return macDst; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultFiveTuple) { - final DefaultFiveTuple other = (DefaultFiveTuple) obj; - return Objects.equals(this.protocol, other.protocol) && - Objects.equals(this.ipSrc, other.ipSrc) && - Objects.equals(this.ipDst, other.ipDst) && - Objects.equals(this.portSrc, other.portSrc) && - Objects.equals(this.portDst, other.portDst); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hash(this.protocol, this.ipSrc, this.ipDst, this.portSrc, this.portDst); - } - - @Override - public String toString() { - return toStringHelper(this) - .omitNullValues() - .add("protocol", protocol) - .add("ipSrc", ipSrc) - .add("ipDst", ipDst) - .add("portSrc", portSrc) - .add("portDst", portDst) - .toString(); - } - - /** - * To create an instance of the builder. - * - * @return instance of builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder class for Five tuple info. - */ - public static final class Builder implements FiveTuple.Builder { - - private IpAddress ipSrc; - private IpAddress ipDst; - private PortNumber portSrc; - private PortNumber portDst; - private byte protocol; - private TenantId tenantId; - private MacAddress macSrc; - private MacAddress macDst; - - @Override - public Builder setIpSrc(IpAddress ipSrc) { - this.ipSrc = ipSrc; - return this; - } - - @Override - public Builder setIpDst(IpAddress ipDst) { - this.ipDst = ipDst; - return this; - } - - @Override - public Builder setPortSrc(PortNumber portSrc) { - this.portSrc = portSrc; - return this; - } - - @Override - public Builder setPortDst(PortNumber portDst) { - this.portDst = portDst; - return this; - } - - @Override - public Builder setProtocol(byte protocol) { - this.protocol = protocol; - return this; - } - - @Override - public Builder setTenantId(TenantId tenantId) { - this.tenantId = tenantId; - return this; - } - - @Override - public Builder setMacSrc(MacAddress macSrc) { - this.macSrc = macSrc; - return this; - } - - @Override - public Builder setMacDst(MacAddress macDst) { - this.macDst = macDst; - return this; - } - - @Override - public FiveTuple build() { - checkArgument(protocol == IPv4.PROTOCOL_TCP || protocol == IPv4.PROTOCOL_UDP || - protocol == IPv4.PROTOCOL_ICMP, "Unsupported value for protocol while creating five tuple"); - - return new DefaultFiveTuple(protocol, ipSrc, ipDst, portSrc, portDst, tenantId, macSrc, macDst); - } - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFloatingIp.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFloatingIp.java deleted file mode 100644 index 34eb25f05a..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFloatingIp.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onlab.packet.IpAddress; - -/** - * Default implementation of FloatingIp interface. - */ -public final class DefaultFloatingIp implements FloatingIp { - - private final FloatingIpId id; - private final TenantId tenantId; - private final TenantNetworkId networkId; - private final VirtualPortId portId; - private final RouterId routerId; - private final IpAddress floatingIp; - private final IpAddress fixedIp; - private final Status status; - - /** - * - * Creates a floating Ip object. - * - * @param id floatingIp identifier - * @param tenantId tenant identifier - * @param networkId the identifier of network associated with the floating Ip - * @param portId port identifier - * @param routerId router identifier - * @param floatingIp floatingIp address - * @param fixedIp the fixed Ip associated with the floating Ip - * @param status the floating Ip status - */ - public DefaultFloatingIp(FloatingIpId id, TenantId tenantId, - TenantNetworkId networkId, VirtualPortId portId, - RouterId routerId, IpAddress floatingIp, - IpAddress fixedIp, Status status) { - this.id = checkNotNull(id, "id cannot be null"); - this.tenantId = checkNotNull(tenantId, "tenantId cannot be null"); - this.networkId = checkNotNull(networkId, "networkId cannot be null"); - this.portId = portId; - this.routerId = routerId; - this.floatingIp = checkNotNull(floatingIp, "floatingIp cannot be null"); - this.fixedIp = fixedIp; - this.status = checkNotNull(status, "status cannot be null"); - } - - @Override - public FloatingIpId id() { - return id; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public TenantNetworkId networkId() { - return networkId; - } - - @Override - public VirtualPortId portId() { - return portId; - } - - @Override - public RouterId routerId() { - return routerId; - } - - @Override - public IpAddress floatingIp() { - return floatingIp; - } - - @Override - public IpAddress fixedIp() { - return fixedIp; - } - - @Override - public Status status() { - return status; - } - - @Override - public int hashCode() { - return Objects.hash(id, tenantId, networkId, portId, routerId, - floatingIp, fixedIp, status); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultFloatingIp) { - final DefaultFloatingIp that = (DefaultFloatingIp) obj; - return Objects.equals(this.id, that.id) - && Objects.equals(this.tenantId, that.tenantId) - && Objects.equals(this.networkId, that.networkId) - && Objects.equals(this.portId, that.portId) - && Objects.equals(this.routerId, that.routerId) - && Objects.equals(this.floatingIp, that.floatingIp) - && Objects.equals(this.fixedIp, that.fixedIp) - && Objects.equals(this.status, that.status); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id).add("tenantId", tenantId) - .add("networkId", networkId).add("portId", portId) - .add("routerId", routerId).add("floatingIp", floatingIp) - .add("fixedIp", fixedIp).add("floatingIpStatus", status) - .toString(); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java deleted file mode 100644 index b944b4f61d..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFlowClassifier.java +++ /dev/null @@ -1,433 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onlab.packet.IpPrefix; - -import com.google.common.base.MoreObjects; - -/** - * Provides Default flow classifier. - */ -public final class DefaultFlowClassifier implements FlowClassifier { - - private final FlowClassifierId flowClassifierId; - private final TenantId tenantId; - private final String name; - private final String description; - private final String etherType; - private final String protocol; - private final int priority; - private final int minSrcPortRange; - private final int maxSrcPortRange; - private final int minDstPortRange; - private final int maxDstPortRange; - private final IpPrefix srcIpPrefix; - private final IpPrefix dstIpPrefix; - private final VirtualPortId srcPort; - private final VirtualPortId dstPort; - private static final int NULL_PORT = 0; - private static final String FLOW_CLASSIFIER_ID_NOT_NULL = "FlowClassifier id can not be null."; - private static final String TENANT_ID_NOT_NULL = "Tenant id can not be null."; - private static final String NAME_NOT_NULL = "Name can not be null."; - private static final String ETHER_TYPE_NOT_NULL = "Ether Type can not be null."; - private static final int DEFAULT_CLASSIFIER_PRIORITY = 0xCB20; - - /** - * Constructor to create default flow classifier. - * - * @param flowClassifierId flow classifier Id - * @param tenantId Tenant ID - * @param name flow classifier name - * @param description flow classifier description - * @param etherType etherType - * @param protocol IP protocol - * @param priority priority for classification - * @param minSrcPortRange Minimum Source port range - * @param maxSrcPortRange Maximum Source port range - * @param minDstPortRange Minimum destination port range - * @param maxDstPortRange Maximum destination port range - * @param srcIpPrefix Source IP prefix - * @param dstIpPrefix destination IP prefix - * @param srcPort Source VirtualPort - * @param dstPort destination VirtualPort - */ - private DefaultFlowClassifier(FlowClassifierId flowClassifierId, TenantId tenantId, String name, - String description, String etherType, String protocol, int priority, - int minSrcPortRange, int maxSrcPortRange, int minDstPortRange, int maxDstPortRange, - IpPrefix srcIpPrefix, IpPrefix dstIpPrefix, VirtualPortId srcPort, - VirtualPortId dstPort) { - this.flowClassifierId = flowClassifierId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.etherType = etherType; - this.protocol = protocol; - this.priority = priority; - this.minSrcPortRange = minSrcPortRange; - this.maxSrcPortRange = maxSrcPortRange; - this.minDstPortRange = minDstPortRange; - this.maxDstPortRange = maxDstPortRange; - this.srcIpPrefix = srcIpPrefix; - this.dstIpPrefix = dstIpPrefix; - this.srcPort = srcPort; - this.dstPort = dstPort; - } - - @Override - public FlowClassifierId flowClassifierId() { - return flowClassifierId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public String etherType() { - return etherType; - } - - @Override - public String protocol() { - return protocol; - } - - @Override - public int priority() { - return priority; - } - - @Override - public int minSrcPortRange() { - return minSrcPortRange; - } - - @Override - public int maxSrcPortRange() { - return maxSrcPortRange; - } - - @Override - public int minDstPortRange() { - return minDstPortRange; - } - - @Override - public int maxDstPortRange() { - return maxDstPortRange; - } - - @Override - public IpPrefix srcIpPrefix() { - return srcIpPrefix; - } - - @Override - public IpPrefix dstIpPrefix() { - return dstIpPrefix; - } - - @Override - public VirtualPortId srcPort() { - return srcPort; - } - - @Override - public VirtualPortId dstPort() { - return dstPort; - } - - /** - * Builder class for constructing Flow classifier. - */ - public static class Builder implements FlowClassifier.Builder { - - private FlowClassifierId flowClassifierId; - private TenantId tenantId; - private String name; - private String description; - private boolean isFlowClassifierDescriptionSet = false; - private String etherType; - private String protocol; - private boolean isProtocolSet = false; - private int priority; - private boolean isPrioritySet = false; - private int minSrcPortRange; - private boolean isMinSrcPortRangeSet = false; - private int maxSrcPortRange; - private boolean isMaxSrcPortRangeSet = false; - private int minDstPortRange; - private boolean isMinDstPortRangeSet = false; - private int maxDstPortRange; - private boolean isMaxDstPortRangeSet = false; - private IpPrefix srcIpPrefix; - private boolean isSrcIpPrefixSet = false; - private IpPrefix dstIpPrefix; - private boolean isDstIpPrefixSet = false; - private VirtualPortId srcPort; - private boolean isSrcPortSet = false; - private VirtualPortId dstPort; - private boolean isDstPortSet = false; - - @Override - public FlowClassifier build() { - - checkNotNull(flowClassifierId, FLOW_CLASSIFIER_ID_NOT_NULL); - checkNotNull(tenantId, TENANT_ID_NOT_NULL); - checkNotNull(name, NAME_NOT_NULL); - checkNotNull(etherType, ETHER_TYPE_NOT_NULL); - String description = null; - String protocol = null; - int priority = DEFAULT_CLASSIFIER_PRIORITY; - int minSrcPortRange = NULL_PORT; - int maxSrcPortRange = NULL_PORT; - int minDstPortRange = NULL_PORT; - int maxDstPortRange = NULL_PORT; - IpPrefix srcIpPrefix = null; - IpPrefix dstIpPrefix = null; - VirtualPortId srcPort = null; - VirtualPortId dstPort = null; - - if (isFlowClassifierDescriptionSet) { - description = this.description; - } - if (isProtocolSet) { - protocol = this.protocol; - } - if (isPrioritySet) { - priority = this.priority; - } - if (isMinSrcPortRangeSet) { - minSrcPortRange = this.minSrcPortRange; - } - if (isMaxSrcPortRangeSet) { - maxSrcPortRange = this.maxSrcPortRange; - } - if (isMinDstPortRangeSet) { - minDstPortRange = this.minDstPortRange; - } - if (isMaxDstPortRangeSet) { - maxDstPortRange = this.maxDstPortRange; - } - if (isSrcIpPrefixSet) { - srcIpPrefix = this.srcIpPrefix; - } - if (isDstIpPrefixSet) { - dstIpPrefix = this.dstIpPrefix; - } - if (isSrcPortSet) { - srcPort = this.srcPort; - } - if (isDstPortSet) { - dstPort = this.dstPort; - } - - return new DefaultFlowClassifier(flowClassifierId, tenantId, name, description, etherType, protocol, - priority, minSrcPortRange, maxSrcPortRange, minDstPortRange, - maxDstPortRange, srcIpPrefix, dstIpPrefix, srcPort, dstPort); - } - - @Override - public Builder setFlowClassifierId(FlowClassifierId flowClassifierId) { - this.flowClassifierId = flowClassifierId; - return this; - } - - @Override - public Builder setTenantId(TenantId tenantId) { - this.tenantId = tenantId; - return this; - } - - @Override - public Builder setName(String name) { - this.name = name; - return this; - } - - @Override - public Builder setDescription(String description) { - this.description = description; - this.isFlowClassifierDescriptionSet = true; - return this; - } - - @Override - public Builder setEtherType(String etherType) { - this.etherType = etherType; - return this; - } - - @Override - public Builder setProtocol(String protocol) { - this.protocol = protocol; - this.isProtocolSet = true; - return this; - } - - @Override - public Builder setPriority(int priority) { - this.priority = priority; - this.isPrioritySet = true; - return this; - } - - @Override - public Builder setMinSrcPortRange(int minSrcPortRange) { - this.minSrcPortRange = minSrcPortRange; - this.isMinSrcPortRangeSet = true; - return this; - } - - @Override - public Builder setMaxSrcPortRange(int maxSrcPortRange) { - this.maxSrcPortRange = maxSrcPortRange; - this.isMaxSrcPortRangeSet = true; - return this; - } - - @Override - public Builder setMinDstPortRange(int minDstPortRange) { - this.minDstPortRange = minDstPortRange; - this.isMinDstPortRangeSet = true; - return this; - } - - @Override - public Builder setMaxDstPortRange(int maxDstPortRange) { - this.maxDstPortRange = maxDstPortRange; - this.isMaxDstPortRangeSet = true; - return this; - } - - @Override - public Builder setSrcIpPrefix(IpPrefix srcIpPrefix) { - this.srcIpPrefix = srcIpPrefix; - this.isSrcIpPrefixSet = true; - return this; - } - - @Override - public Builder setDstIpPrefix(IpPrefix dstIpPrefix) { - this.dstIpPrefix = dstIpPrefix; - this.isDstIpPrefixSet = true; - return this; - } - - @Override - public Builder setSrcPort(VirtualPortId srcPort) { - this.srcPort = srcPort; - this.isSrcPortSet = true; - return this; - } - - @Override - public Builder setDstPort(VirtualPortId dstPort) { - this.dstPort = dstPort; - this.isDstPortSet = true; - return this; - } - } - - @Override - public int hashCode() { - return Objects.hash(flowClassifierId, tenantId, name, description, etherType, protocol, minSrcPortRange, - maxSrcPortRange, minDstPortRange, maxDstPortRange, srcIpPrefix, dstIpPrefix, srcPort, dstPort); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultFlowClassifier) { - DefaultFlowClassifier other = (DefaultFlowClassifier) obj; - return Objects.equals(this.flowClassifierId, other.flowClassifierId) - && Objects.equals(this.tenantId, other.tenantId) - && Objects.equals(this.name, other.name) - && Objects.equals(this.description, other.description) - && Objects.equals(this.etherType, other.etherType) - && Objects.equals(this.protocol, other.protocol) - && Objects.equals(this.priority, other.priority) - && Objects.equals(this.minSrcPortRange, other.minSrcPortRange) - && Objects.equals(this.maxSrcPortRange, other.maxSrcPortRange) - && Objects.equals(this.minDstPortRange, other.minDstPortRange) - && Objects.equals(this.maxDstPortRange, other.maxDstPortRange) - && Objects.equals(this.srcIpPrefix, other.srcIpPrefix) - && Objects.equals(this.dstIpPrefix, other.dstIpPrefix) - && Objects.equals(this.srcPort, other.srcPort) - && Objects.equals(this.dstPort, other.dstPort); - } - return false; - } - - @Override - public boolean exactMatch(FlowClassifier flowClassifier) { - return this.equals(flowClassifier) - && Objects.equals(this.flowClassifierId, flowClassifier.flowClassifierId()) - && Objects.equals(this.tenantId, flowClassifier.tenantId()) - && Objects.equals(this.name, flowClassifier.name()) - && Objects.equals(this.description, flowClassifier.description()) - && Objects.equals(this.etherType, flowClassifier.etherType()) - && Objects.equals(this.protocol, flowClassifier.protocol()) - && Objects.equals(this.priority, flowClassifier.priority()) - && Objects.equals(this.minSrcPortRange, flowClassifier.minSrcPortRange()) - && Objects.equals(this.maxSrcPortRange, flowClassifier.maxSrcPortRange()) - && Objects.equals(this.minDstPortRange, flowClassifier.minDstPortRange()) - && Objects.equals(this.maxDstPortRange, flowClassifier.maxDstPortRange()) - && Objects.equals(this.srcIpPrefix, flowClassifier.srcIpPrefix()) - && Objects.equals(this.dstIpPrefix, flowClassifier.dstIpPrefix()) - && Objects.equals(this.srcPort, flowClassifier.srcPort()) - && Objects.equals(this.dstPort, flowClassifier.dstPort()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("FlowClassifierId", flowClassifierId) - .add("TenantId", tenantId) - .add("Name", name) - .add("Description", description) - .add("String", etherType) - .add("Protocol", protocol) - .add("Priority", priority) - .add("MinSrcPortRange", minSrcPortRange) - .add("MaxSrcPortRange", maxSrcPortRange) - .add("MinDstPortRange", minDstPortRange) - .add("MaxDstPortRange", maxDstPortRange) - .add("SrcIpPrefix", srcIpPrefix) - .add("DstIpPrefix", dstIpPrefix) - .add("SrcPort", srcPort) - .add("DstPort", dstPort) - .toString(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultHostRoute.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultHostRoute.java deleted file mode 100644 index ca75035631..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultHostRoute.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; - -/** - * Host route dictionaries for the subnet. - */ -public final class DefaultHostRoute implements HostRoute { - - private final IpAddress nexthop; - private final IpPrefix destination; - - /** - * - * Creates a DefaultHostRoute by using the next hop and the destination. - * - * @param nexthop of the DefaultHostRoute - * @param destination of the DefaultHostRoute - */ - public DefaultHostRoute(IpAddress nexthop, IpPrefix destination) { - this.nexthop = nexthop; - this.destination = destination; - } - - @Override - public IpAddress nexthop() { - return nexthop; - } - - @Override - public IpPrefix destination() { - return destination; - } - - @Override - public String toString() { - return toStringHelper(this).add("nexthop", nexthop) - .add("destination", destination).toString(); - } - - @Override - public int hashCode() { - return Objects.hash(nexthop, destination); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultHostRoute) { - final DefaultHostRoute other = (DefaultHostRoute) obj; - return Objects.equals(this.nexthop, other.nexthop) - && Objects.equals(this.destination, other.destination); - } - return false; - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortChain.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortChain.java deleted file mode 100644 index dd67d84118..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortChain.java +++ /dev/null @@ -1,340 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import org.onosproject.net.DeviceId; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; - -/** - * Implementation of port chain. - */ -public final class DefaultPortChain implements PortChain { - - private final PortChainId portChainId; - private final TenantId tenantId; - private final String name; - private final String description; - private final List portPairGroupList; - private final List flowClassifierList; - private final PortChain oldPortChain; - - private final Map sfcLoadBalanceIdMap = new ConcurrentHashMap<>(); - private final Map> sfcLoadBalancePathMap = new ConcurrentHashMap<>(); - private final Map> sfcClassifiersMap = new ConcurrentHashMap<>(); - private final Map> sfcForwardersMap = new ConcurrentHashMap<>(); - - /** - * Default constructor to create port chain. - * - * @param portChainId port chain id - * @param tenantId tenant id - * @param name name of port chain - * @param description description of port chain - * @param portPairGroupList port pair group list - * @param flowClassifierList flow classifier list - */ - private DefaultPortChain(PortChainId portChainId, TenantId tenantId, - String name, String description, - List portPairGroupList, - List flowClassifierList, - PortChain portChain) { - - this.portChainId = portChainId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.portPairGroupList = portPairGroupList; - this.flowClassifierList = flowClassifierList; - this.oldPortChain = portChain; - } - - /** - * To create port chain for update with old port chain. - * - * @param newPortChain updated port chain - * @param oldPortChain old port chain - * @return port chain - */ - public static PortChain create(PortChain newPortChain, PortChain oldPortChain) { - return new DefaultPortChain(newPortChain.portChainId(), newPortChain.tenantId(), - newPortChain.name(), newPortChain.description(), - newPortChain.portPairGroups(), newPortChain.flowClassifiers(), oldPortChain); - } - - /** - * Match for two given paths. - * - * @param path1 path of sfc - * @param path2 path of sfc - * @return true if the given path are same false otherwise - */ - private boolean comparePath(List path1, List path2) { - Iterator it = path1.iterator(); - for (PortPairId portPairId: path2) { - if (!portPairId.equals(it.next())) { - return false; - } - } - return true; - } - - @Override - public PortChainId portChainId() { - return portChainId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public List portPairGroups() { - return ImmutableList.copyOf(portPairGroupList); - } - - @Override - public List flowClassifiers() { - return ImmutableList.copyOf(flowClassifierList); - } - - @Override - public PortChain oldPortChain() { - return oldPortChain; - } - - @Override - public void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id, - List path) { - this.sfcLoadBalanceIdMap.put(fiveTuple, id); - this.sfcLoadBalancePathMap.put(id, path); - } - - @Override - public void addSfcClassifiers(LoadBalanceId id, List classifierList) { - this.sfcClassifiersMap.put(id, classifierList); - } - - @Override - public void addSfcForwarders(LoadBalanceId id, List forwarderList) { - this.sfcForwardersMap.put(id, forwarderList); - } - - @Override - public void removeSfcClassifiers(LoadBalanceId id, List classifierList) { - List list = sfcClassifiersMap.get(id); - list.removeAll(classifierList); - this.sfcForwardersMap.put(id, list); - } - - @Override - public void removeSfcForwarders(LoadBalanceId id, List forwarderList) { - List list = sfcForwardersMap.get(id); - list.removeAll(forwarderList); - this.sfcForwardersMap.put(id, list); - } - - @Override - public List getSfcClassifiers(LoadBalanceId id) { - return ImmutableList.copyOf(this.sfcClassifiersMap.get(id)); - } - - @Override - public List getSfcForwarders(LoadBalanceId id) { - return ImmutableList.copyOf(this.sfcForwardersMap.get(id)); - } - - @Override - public LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple) { - return this.sfcLoadBalanceIdMap.get(fiveTuple); - } - - @Override - public Set getLoadBalanceIdMapKeys() { - return ImmutableSet.copyOf(sfcLoadBalanceIdMap.keySet()); - } - - @Override - public Set getLoadBalancePathMapKeys() { - return ImmutableSet.copyOf(sfcLoadBalancePathMap.keySet()); - } - - @Override - public List getLoadBalancePath(LoadBalanceId id) { - return ImmutableList.copyOf(this.sfcLoadBalancePathMap.get(id)); - } - - @Override - public List getLoadBalancePath(FiveTuple fiveTuple) { - return ImmutableList.copyOf(this.sfcLoadBalancePathMap.get(this.sfcLoadBalanceIdMap.get(fiveTuple))); - } - - @Override - public int getLoadBalancePathSize() { - if (sfcLoadBalanceIdMap.isEmpty()) { - return 0; - } - return sfcLoadBalanceIdMap.size(); - } - - @Override - public LoadBalanceId matchPath(List path) { - - LoadBalanceId id = null; - for (Map.Entry> entry : sfcLoadBalancePathMap.entrySet()) { - List tempPath = entry.getValue(); - if (comparePath(path, tempPath)) { - id = entry.getKey(); - break; - } - } - return id; - } - - @Override - public int hashCode() { - return Objects.hash(portChainId, tenantId, name, description, - portPairGroupList, flowClassifierList); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultPortChain) { - DefaultPortChain that = (DefaultPortChain) obj; - return Objects.equals(portChainId, that.portChainId) && - Objects.equals(tenantId, that.tenantId) && - Objects.equals(name, that.name) && - Objects.equals(description, that.description) && - Objects.equals(portPairGroupList, that.portPairGroupList) && - Objects.equals(flowClassifierList, that.flowClassifierList); - } - return false; - } - - @Override - public boolean exactMatch(PortChain portChain) { - return this.equals(portChain) && - Objects.equals(this.portChainId, portChain.portChainId()) && - Objects.equals(this.tenantId, portChain.tenantId()); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("id", portChainId.toString()) - .add("tenantId", tenantId.toString()) - .add("name", name) - .add("description", description) - .add("portPairGroupList", portPairGroupList) - .add("flowClassifier", flowClassifierList) - .toString(); - } - - /** - * To create an instance of the builder. - * - * @return instance of builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder class for Port chain. - */ - public static final class Builder implements PortChain.Builder { - - private PortChainId portChainId; - private TenantId tenantId; - private String name; - private String description; - private List portPairGroupList; - private List flowClassifierList; - private PortChain portChain; - - @Override - public Builder setId(PortChainId portChainId) { - this.portChainId = portChainId; - return this; - } - - @Override - public Builder setTenantId(TenantId tenantId) { - this.tenantId = tenantId; - return this; - } - - @Override - public Builder setName(String name) { - this.name = name; - return this; - } - - @Override - public Builder setDescription(String description) { - this.description = description; - return this; - } - - @Override - public Builder setPortPairGroups(List portPairGroups) { - this.portPairGroupList = portPairGroups; - return this; - } - - @Override - public Builder setFlowClassifiers(List flowClassifiers) { - this.flowClassifierList = flowClassifiers; - return this; - } - - @Override - public PortChain build() { - - checkNotNull(portChainId, "Port chain id cannot be null"); - checkNotNull(tenantId, "Tenant id cannot be null"); - checkNotNull(portPairGroupList, "Port pair groups cannot be null"); - - return new DefaultPortChain(portChainId, tenantId, name, description, - portPairGroupList, flowClassifierList, portChain); - } - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPair.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPair.java deleted file mode 100644 index 84dc531853..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPair.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * Implementation of port pair. - */ -public final class DefaultPortPair implements PortPair { - - private final PortPairId portPairId; - private final TenantId tenantId; - private final String name; - private final String description; - private final String ingress; - private final String egress; - - /** - * Default constructor to create Port Pair. - * - * @param portPairId port pair id - * @param tenantId tenant id - * @param name name of port pair - * @param description description of port pair - * @param ingress ingress port - * @param egress egress port - */ - private DefaultPortPair(PortPairId portPairId, TenantId tenantId, - String name, String description, - String ingress, String egress) { - - this.portPairId = portPairId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.ingress = ingress; - this.egress = egress; - } - - @Override - public PortPairId portPairId() { - return portPairId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public String ingress() { - return ingress; - } - - @Override - public String egress() { - return egress; - } - - @Override - public int hashCode() { - return Objects.hash(portPairId, tenantId, name, description, - ingress, egress); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultPortPair) { - DefaultPortPair that = (DefaultPortPair) obj; - return Objects.equals(portPairId, that.portPairId) && - Objects.equals(tenantId, that.tenantId) && - Objects.equals(name, that.name) && - Objects.equals(description, that.description) && - Objects.equals(ingress, that.ingress) && - Objects.equals(egress, that.egress); - } - return false; - } - - @Override - public boolean exactMatch(PortPair portPair) { - return this.equals(portPair) && - Objects.equals(this.portPairId, portPair.portPairId()) && - Objects.equals(this.tenantId, portPair.tenantId()); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("id", portPairId.toString()) - .add("tenantId", tenantId.tenantId()) - .add("name", name) - .add("description", description) - .add("ingress", ingress) - .add("egress", egress) - .toString(); - } - - /** - * To create an instance of the builder. - * - * @return instance of builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder class for Port pair. - */ - public static final class Builder implements PortPair.Builder { - - private PortPairId portPairId; - private TenantId tenantId; - private String name; - private String description; - private String ingress; - private String egress; - - @Override - public Builder setId(PortPairId portPairId) { - this.portPairId = portPairId; - return this; - } - - @Override - public Builder setTenantId(TenantId tenantId) { - this.tenantId = tenantId; - return this; - } - - @Override - public Builder setName(String name) { - this.name = name; - return this; - } - - @Override - public Builder setDescription(String description) { - this.description = description; - return this; - } - - @Override - public Builder setIngress(String ingress) { - this.ingress = ingress; - return this; - } - - @Override - public Builder setEgress(String egress) { - this.egress = egress; - return this; - } - - @Override - public PortPair build() { - - checkNotNull(portPairId, "Port pair id cannot be null"); - checkNotNull(tenantId, "Tenant id cannot be null"); - checkNotNull(ingress, "Ingress of a port pair cannot be null"); - checkNotNull(egress, "Egress of a port pair cannot be null"); - - return new DefaultPortPair(portPairId, tenantId, name, description, - ingress, egress); - } - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPairGroup.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPairGroup.java deleted file mode 100644 index a3a5780b89..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultPortPairGroup.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; - -/** - * Implementation of port pair group. - */ -public final class DefaultPortPairGroup implements PortPairGroup { - - private final PortPairGroupId portPairGroupId; - private final TenantId tenantId; - private final String name; - private final String description; - private final List portPairList; - private final Map portPairLoadMap; - - /** - * Default constructor to create Port Pair Group. - * - * @param portPairGroupId port pair group id - * @param tenantId tenant id - * @param name name of port pair group - * @param description description of port pair group - * @param portPairList list of port pairs - */ - private DefaultPortPairGroup(PortPairGroupId portPairGroupId, TenantId tenantId, - String name, String description, - List portPairList) { - - this.portPairGroupId = portPairGroupId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.portPairList = portPairList; - portPairLoadMap = new ConcurrentHashMap<>(); - for (PortPairId portPairId : portPairList) { - portPairLoadMap.put(portPairId, new Integer(0)); - } - } - - @Override - public PortPairGroupId portPairGroupId() { - return portPairGroupId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public List portPairs() { - return ImmutableList.copyOf(portPairList); - } - - @Override - public void addLoad(PortPairId portPairId) { - int load = portPairLoadMap.get(portPairId); - load = load + 1; - portPairLoadMap.put(portPairId, new Integer(load)); - } - - @Override - public void resetLoad() { - for (PortPairId portPairId : portPairList) { - portPairLoadMap.put(portPairId, new Integer(0)); - } - } - - @Override - public int getLoad(PortPairId portPairId) { - return portPairLoadMap.get(portPairId); - } - - @Override - public Map portPairLoadMap() { - return ImmutableMap.copyOf(portPairLoadMap); - } - - @Override - public int hashCode() { - return Objects.hash(portPairGroupId, tenantId, name, description, - portPairList); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultPortPairGroup) { - DefaultPortPairGroup that = (DefaultPortPairGroup) obj; - return Objects.equals(portPairGroupId, that.portPairGroupId) && - Objects.equals(tenantId, that.tenantId) && - Objects.equals(name, that.name) && - Objects.equals(description, that.description) && - Objects.equals(portPairList, that.portPairList); - } - return false; - } - - @Override - public boolean exactMatch(PortPairGroup portPairGroup) { - return this.equals(portPairGroup) && - Objects.equals(this.portPairGroupId, portPairGroup.portPairGroupId()) && - Objects.equals(this.tenantId, portPairGroup.tenantId()); - } - - @Override - public String toString() { - return toStringHelper(this) - .add("id", portPairGroupId.toString()) - .add("tenantId", tenantId.toString()) - .add("name", name) - .add("description", description) - .add("portPairGroupList", portPairList) - .toString(); - } - - /** - * To create an instance of the builder. - * - * @return instance of builder - */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder class for Port pair group. - */ - public static final class Builder implements PortPairGroup.Builder { - - private PortPairGroupId portPairGroupId; - private TenantId tenantId; - private String name; - private String description; - private List portPairList; - - @Override - public Builder setId(PortPairGroupId portPairGroupId) { - this.portPairGroupId = portPairGroupId; - return this; - } - - @Override - public Builder setTenantId(TenantId tenantId) { - this.tenantId = tenantId; - return this; - } - - @Override - public Builder setName(String name) { - this.name = name; - return this; - } - - @Override - public Builder setDescription(String description) { - this.description = description; - return this; - } - - @Override - public Builder setPortPairs(List portPairs) { - this.portPairList = portPairs; - return this; - } - - @Override - public PortPairGroup build() { - - checkNotNull(portPairGroupId, "Port pair group id cannot be null"); - checkNotNull(tenantId, "Tenant id cannot be null"); - checkNotNull(portPairList, "Port pairs cannot be null"); - - return new DefaultPortPairGroup(portPairGroupId, tenantId, name, description, - portPairList); - } - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultRouter.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultRouter.java deleted file mode 100644 index fc8bbe5ddb..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultRouter.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.List; -import java.util.Objects; - -/** - * Default implementation of router interface. - */ -public final class DefaultRouter implements Router { - private final RouterId id; - private final String name; - private final boolean adminStateUp; - private final Status status; - private final boolean distributed; - private final RouterGateway externalGatewayInfo; - private final VirtualPortId gatewayPortId; - private final TenantId tenantId; - private final List routes; - - /** - * Creates router object. - * - * @param id router identifier - * @param routerName the name of router - * @param adminStateUp the status of admin state - * @param status the status of router - * @param distributed the status of router distributed - * @param externalGatewayInfo the gateway info of router - * @param gatewayPortId the port identifier of router gateway - * @param tenantId the tenant identifier - * @param routes the routes configure - */ - public DefaultRouter(RouterId id, String routerName, boolean adminStateUp, - Status status, boolean distributed, - RouterGateway externalGatewayInfo, - VirtualPortId gatewayPortId, TenantId tenantId, - List routes) { - this.id = checkNotNull(id, "id cannot be null"); - this.name = routerName; - this.adminStateUp = adminStateUp; - this.status = checkNotNull(status, "status cannot be null"); - this.distributed = distributed; - this.externalGatewayInfo = externalGatewayInfo; - this.gatewayPortId = gatewayPortId; - this.tenantId = checkNotNull(tenantId, "tenantId cannot be null"); - this.routes = routes; - } - - @Override - public RouterId id() { - return id; - } - - @Override - public String name() { - return name; - } - - @Override - public boolean adminStateUp() { - return adminStateUp; - } - - @Override - public Status status() { - return status; - } - - @Override - public boolean distributed() { - return distributed; - } - - @Override - public RouterGateway externalGatewayInfo() { - return externalGatewayInfo; - } - - @Override - public VirtualPortId gatewayPortid() { - return gatewayPortId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public List routes() { - return routes; - } - - @Override - public int hashCode() { - return Objects.hash(id, name, adminStateUp, status, distributed, - externalGatewayInfo, gatewayPortId, routes); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultRouter) { - final DefaultRouter that = (DefaultRouter) obj; - return Objects.equals(this.id, that.id) - && Objects.equals(this.name, that.name) - && Objects.equals(this.adminStateUp, that.adminStateUp) - && Objects.equals(this.status, that.status) - && Objects.equals(this.distributed, that.distributed) - && Objects.equals(this.externalGatewayInfo, - that.externalGatewayInfo) - && Objects.equals(this.gatewayPortId, that.gatewayPortId) - && Objects.equals(this.routes, that.routes); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id).add("routerName", name) - .add("adminStateUp", adminStateUp).add("status", status) - .add("distributed", distributed) - .add("externalGatewayInfo", externalGatewayInfo) - .add("gatewayPortid", gatewayPortId).add("routes", routes).toString(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultSubnet.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultSubnet.java deleted file mode 100644 index dc0af7e10e..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultSubnet.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; -import java.util.Set; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpAddress.Version; -import org.onlab.packet.IpPrefix; - -/** - * Default implementation of Subnet interface . - */ -public final class DefaultSubnet implements Subnet { - private final SubnetId id; - private final String subnetName; - private final TenantNetworkId networkId; - private final TenantId tenantId; - private final Version ipVersion; - private final IpPrefix cidr; - private final IpAddress gatewayIp; - private final boolean dhcpEnabled; - private final boolean shared; - private final Mode ipV6AddressMode; - private final Mode ipV6RaMode; - private final Set hostRoutes; - private final Set allocationPools; - - /** - * Creates a subnet object. - * - * @param id subnet identifier - * @param subnetName the name of subnet - * @param networkId network identifier - * @param tenantId tenant identifier - * @param ipVersion Version of ipv4 or ipv6 - * @param cidr the cidr - * @param gatewayIp gateway ip - * @param dhcpEnabled dhcp enabled or not - * @param shared indicates whether this network is shared across all - * tenants, By default, only administrative user can change this - * value - * @param hostRoutes a collection of host routes - * @param ipV6AddressMode ipV6AddressMode - * @param ipV6RaMode ipV6RaMode - * @param allocationPoolsIt a collection of allocationPools - */ - public DefaultSubnet(SubnetId id, String subnetName, - TenantNetworkId networkId, TenantId tenantId, - Version ipVersion, IpPrefix cidr, IpAddress gatewayIp, - boolean dhcpEnabled, boolean shared, - Set hostRoutes, Mode ipV6AddressMode, - Mode ipV6RaMode, - Set allocationPoolsIt) { - this.id = id; - this.subnetName = subnetName; - this.networkId = networkId; - this.tenantId = tenantId; - this.ipVersion = ipVersion; - this.cidr = cidr; - this.gatewayIp = gatewayIp; - this.dhcpEnabled = dhcpEnabled; - this.shared = shared; - this.ipV6AddressMode = ipV6AddressMode; - this.ipV6RaMode = ipV6RaMode; - this.hostRoutes = hostRoutes; - this.allocationPools = allocationPoolsIt; - } - - @Override - public SubnetId id() { - return id; - } - - @Override - public String subnetName() { - return subnetName; - } - - @Override - public TenantNetworkId networkId() { - return networkId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public Version ipVersion() { - return ipVersion; - } - - @Override - public IpPrefix cidr() { - return cidr; - } - - @Override - public IpAddress gatewayIp() { - return gatewayIp; - } - - @Override - public boolean dhcpEnabled() { - return dhcpEnabled; - } - - @Override - public boolean shared() { - return shared; - } - - @Override - public Iterable hostRoutes() { - return hostRoutes; - } - - @Override - public Mode ipV6AddressMode() { - return ipV6AddressMode; - } - - @Override - public Mode ipV6RaMode() { - return ipV6RaMode; - } - - @Override - public Iterable allocationPools() { - return allocationPools; - } - - @Override - public int hashCode() { - return Objects.hash(id, subnetName, ipVersion, cidr, gatewayIp, - dhcpEnabled, shared, tenantId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultSubnet) { - final DefaultSubnet that = (DefaultSubnet) obj; - return Objects.equals(this.id, that.id) - && Objects.equals(this.subnetName, that.subnetName) - && Objects.equals(this.ipVersion, that.ipVersion) - && Objects.equals(this.cidr, that.cidr) - && Objects.equals(this.shared, that.shared) - && Objects.equals(this.gatewayIp, that.gatewayIp) - && Objects.equals(this.dhcpEnabled, that.dhcpEnabled); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id).add("subnetName", subnetName) - .add("ipVersion", ipVersion).add("cidr", cidr) - .add("shared", shared).add("gatewayIp", gatewayIp) - .add("dhcpEnabled", dhcpEnabled).toString(); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultTenantNetwork.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultTenantNetwork.java deleted file mode 100644 index 8271cd8dfd..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultTenantNetwork.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Objects; - -/** - * Default implementation of TenantNetwork interface. - */ -public final class DefaultTenantNetwork implements TenantNetwork { - private final TenantNetworkId id; - private final String name; - private final boolean adminStateUp; - private final State state; - private final boolean shared; - private final Type type; - private final TenantId tenantId; - private final boolean routerExternal; - private final PhysicalNetwork physicalNetwork; - private final SegmentationId segmentationId; - - /** - * Creates a neutronNetwork element attributed to the specified provider. - * - * @param id network identifier - * @param name the network name - * @param adminStateUp administrative state of the network - * @param state the network state - * @param shared indicates whether this network is shared across all - * tenants, By default, only administrative user can change this - * value - * @param tenantId tenant identifier - * @param routerExternal network routerExternal - * @param type the network type - * @param physicalNetwork physicalNetwork identifier - * @param segmentationId segmentation identifier - */ - public DefaultTenantNetwork(TenantNetworkId id, String name, - boolean adminStateUp, State state, - boolean shared, TenantId tenantId, - boolean routerExternal, Type type, - PhysicalNetwork physicalNetwork, - SegmentationId segmentationId) { - this.id = id; - this.name = name; - this.adminStateUp = adminStateUp; - this.state = state; - this.shared = shared; - this.type = type; - this.tenantId = tenantId; - this.routerExternal = routerExternal; - this.physicalNetwork = physicalNetwork; - this.segmentationId = segmentationId; - } - - @Override - public TenantNetworkId id() { - return id; - } - - @Override - public String name() { - return name; - } - - @Override - public boolean adminStateUp() { - return adminStateUp; - } - - @Override - public State state() { - return state; - } - - @Override - public boolean shared() { - return shared; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public boolean routerExternal() { - return routerExternal; - } - - @Override - public Type type() { - return type; - } - - @Override - public PhysicalNetwork physicalNetwork() { - return physicalNetwork; - } - - @Override - public SegmentationId segmentationId() { - return segmentationId; - } - - @Override - public int hashCode() { - return Objects.hash(id, name, adminStateUp, state, shared, tenantId, - routerExternal, type, physicalNetwork, - segmentationId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultTenantNetwork) { - final DefaultTenantNetwork that = (DefaultTenantNetwork) obj; - return Objects.equals(this.id, that.id) - && Objects.equals(this.name, that.name) - && Objects.equals(this.adminStateUp, that.adminStateUp) - && Objects.equals(this.state, that.state) - && Objects.equals(this.shared, that.shared) - && Objects.equals(this.tenantId, that.tenantId) - && Objects.equals(this.routerExternal, that.routerExternal) - && Objects.equals(this.type, that.type) - && Objects.equals(this.physicalNetwork, - that.physicalNetwork) - && Objects.equals(this.segmentationId, that.segmentationId); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id).add("name", name) - .add("adminStateUp", adminStateUp).add("state", state) - .add("shared", shared).add("tenantId", tenantId) - .add("routeExternal", routerExternal).add("type", type) - .add("physicalNetwork", physicalNetwork) - .add("segmentationId", segmentationId).toString(); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultVirtualPort.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultVirtualPort.java deleted file mode 100644 index a034f3d29a..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultVirtualPort.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Collection; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; - -/** - * Default implementation of VirtualPort interface . - */ -public final class DefaultVirtualPort implements VirtualPort { - private final VirtualPortId id; - private final TenantNetworkId networkId; - private final Boolean adminStateUp; - private final String name; - private final State state; - private final MacAddress macAddress; - private final TenantId tenantId; - private final String deviceOwner; - private final DeviceId deviceId; - private final Set fixedIps; - private final BindingHostId bindingHostId; - private final String bindingVnicType; - private final String bindingVifType; - private final String bindingVifDetails; - private final Set allowedAddressPairs; - private final Set securityGroups; - - /** - * Creates a VirtualPort object. - * - * @param id the virtual port identifier - * @param networkId the network identifier - * @param adminStateUp adminStateup true or false - * @param strMap the map of properties of virtual port - * @param state virtual port state - * @param macAddress the MAC address - * @param tenantId the tenant identifier - * @param deviceId the device identifier - * @param fixedIps set of fixed IP - * @param bindingHostId the binding host identifier - * @param allowedAddressPairs the collection of allowdeAddressPairs - * @param securityGroups the collection of securityGroups - */ - public DefaultVirtualPort(VirtualPortId id, - TenantNetworkId networkId, - Boolean adminStateUp, - Map strMap, - State state, - MacAddress macAddress, - TenantId tenantId, - DeviceId deviceId, - Set fixedIps, - BindingHostId bindingHostId, - Set allowedAddressPairs, - Set securityGroups) { - this.id = id; - this.networkId = networkId; - this.adminStateUp = adminStateUp; - this.name = strMap.get("name"); - this.state = state; - this.macAddress = macAddress; - this.tenantId = tenantId; - this.deviceOwner = strMap.get("deviceOwner"); - this.deviceId = deviceId; - this.fixedIps = fixedIps; - this.bindingHostId = bindingHostId; - this.bindingVnicType = strMap.get("bindingVnicType"); - this.bindingVifType = strMap.get("bindingVifType"); - this.bindingVifDetails = strMap.get("bindingVifDetails"); - this.allowedAddressPairs = allowedAddressPairs; - this.securityGroups = securityGroups; - } - - @Override - public VirtualPortId portId() { - return id; - } - - @Override - public TenantNetworkId networkId() { - return networkId; - } - - @Override - public String name() { - return name; - } - - @Override - public boolean adminStateUp() { - return adminStateUp; - } - - @Override - public State state() { - return state; - } - - @Override - public MacAddress macAddress() { - return macAddress; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public DeviceId deviceId() { - return deviceId; - } - - @Override - public String deviceOwner() { - return deviceOwner; - } - - @Override - public Collection allowedAddressPairs() { - return allowedAddressPairs; - } - - @Override - public Set fixedIps() { - return fixedIps; - } - - @Override - public BindingHostId bindingHostId() { - return bindingHostId; - } - - @Override - public String bindingVnicType() { - return bindingVifType; - } - - @Override - public String bindingVifType() { - return bindingVifType; - } - - @Override - public String bindingVifDetails() { - return bindingVifDetails; - } - - @Override - public Collection securityGroups() { - return securityGroups; - } - - @Override - public int hashCode() { - return Objects.hash(id, networkId, adminStateUp, name, state, - macAddress, tenantId, deviceId, deviceOwner, - allowedAddressPairs, fixedIps, bindingHostId, - bindingVnicType, bindingVifType, bindingVifDetails, - securityGroups); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultVirtualPort) { - final DefaultVirtualPort that = (DefaultVirtualPort) obj; - return Objects.equals(this.id, that.id) - && Objects.equals(this.networkId, that.networkId) - && Objects.equals(this.adminStateUp, that.adminStateUp) - && Objects.equals(this.state, that.state) - && Objects.equals(this.name, that.name) - && Objects.equals(this.tenantId, that.tenantId) - && Objects.equals(this.macAddress, that.macAddress) - && Objects.equals(this.deviceId, that.deviceId) - && Objects.equals(this.deviceOwner, that.deviceOwner) - && Objects.equals(this.allowedAddressPairs, - that.allowedAddressPairs) - && Objects.equals(this.fixedIps, that.fixedIps) - && Objects.equals(this.bindingHostId, that.bindingHostId) - && Objects.equals(this.bindingVifDetails, - that.bindingVifDetails) - && Objects.equals(this.bindingVifType, that.bindingVifType) - && Objects.equals(this.bindingVnicType, - that.bindingVnicType) - && Objects.equals(this.securityGroups, that.securityGroups); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("id", id).add("network_id", networkId) - .add("adminStateUp", adminStateUp).add("state", state) - .add("name", name).add("state", state) - .add("macAddress", macAddress).add("tenantId", tenantId) - .add("deviced", deviceId).add("deviceOwner", deviceOwner) - .add("allowedAddressPairs", allowedAddressPairs) - .add("fixedIp", fixedIps).add("bindingHostId", bindingHostId) - .add("bindingVnicType", bindingVnicType) - .add("bindingVifDetails", bindingVifDetails) - .add("bindingVifType", bindingVifType) - .add("securityGroups", securityGroups).toString(); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FiveTuple.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FiveTuple.java deleted file mode 100644 index 10d47fac40..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FiveTuple.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.net.PortNumber; - -/** - * Abstraction of an entity to provide five tuple information from packet. - * Five tuple means source ip address, destination ip address, source port number, - * destination port number and protocol of the packet. - */ -public interface FiveTuple { - - /** - * Returns the protocol value. - * - * @return protocol value IPv4.PROTOCOL_TCP(0x06), IPv4.PROTOCOL_UDP(0x11), IPv4.PROTOCOL_ICMP(0x01) - */ - byte protocol(); - - /** - * Returns source ip address. - * - * @return ipSrc - */ - IpAddress ipSrc(); - - /** - * Returns destination ip address. - * - * @return ipDst - */ - IpAddress ipDst(); - - /** - * Returns source port. - * - * @return portSrc - */ - PortNumber portSrc(); - - /** - * Returns destination port. - * - * @return portDst - */ - PortNumber portDst(); - - /** - * Returns source mac. - * - * @return srcMac - */ - MacAddress macSrc(); - - /** - * Returns destination mac. - * - * @return dstMac - */ - MacAddress macDst(); - - /** - * Returns the tenant id. - * - * @return tenantId - */ - TenantId tenantId(); - - /** - * Builder class for Five tuple info. - */ - interface Builder { - - /** - * Assign the source ip address to this object. - * - * @param ipSrc source ip address - * @return this the builder object - */ - Builder setIpSrc(IpAddress ipSrc); - - /** - * Assign the destination ip address to this object. - * - * @param ipDst destination ip address - * @return this the builder object - */ - Builder setIpDst(IpAddress ipDst); - - /** - * Assign the source port to this object. - * - * @param portSrc source port - * @return this the builder object - */ - Builder setPortSrc(PortNumber portSrc); - - /** - * Assign the destination port to this object. - * - * @param portDst destination port - * @return this the builder object - */ - Builder setPortDst(PortNumber portDst); - - /** - * Assign the source mac address to this object. - * - * @param macSrc source mac address - * @return this the builder object - */ - Builder setMacSrc(MacAddress macSrc); - - /** - * Assign the destination mac address to this object. - * - * @param macDst destination mac address - * @return this the builder object - */ - Builder setMacDst(MacAddress macDst); - - /** - * Assign the protocol to this object. - * - * @param protocol packet protocol - * @return this the builder object - */ - Builder setProtocol(byte protocol); - - /** - * Assign the tenant id to this object. - * - * @param tenantId tenant id - * @return this the builder object - */ - Builder setTenantId(TenantId tenantId); - - /** - * Builds a FiveTuple object. - * - * @return instance of FiveTuple - */ - FiveTuple build(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FixedIp.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FixedIp.java deleted file mode 100644 index 081e9eb18f..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FixedIp.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -import org.onlab.packet.IpAddress; - -/** - * Immutable representation of a IP address for the port, Include the IP address - * and subnet identity. - */ -public final class FixedIp { - private final SubnetId subnetId; - private final IpAddress ip; - // Public construction is prohibited - private FixedIp(SubnetId subnetId, IpAddress ip) { - checkNotNull(subnetId, "SubnetId cannot be null"); - checkNotNull(ip, "IpAddress cannot be null"); - this.subnetId = subnetId; - this.ip = ip; - } - - /** - * Returns the FixedIp subnet identifier. - * - * @return subnet identifier - */ - public SubnetId subnetId() { - return subnetId; - } - - /** - * Returns the FixedIp IP address. - * - * @return IP address - */ - public IpAddress ip() { - return ip; - } - - /** - * Creates a fixed ip using the supplied fixedIp. - * - * @param subnetId subnet identity - * @param ip IP address - * @return FixedIp - */ - public static FixedIp fixedIp(SubnetId subnetId, IpAddress ip) { - return new FixedIp(subnetId, ip); - } - - @Override - public int hashCode() { - return Objects.hash(subnetId, ip); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof FixedIp) { - final FixedIp that = (FixedIp) obj; - return Objects.equals(this.subnetId, that.subnetId) - && Objects.equals(this.ip, that.ip); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("subnetId", subnetId).add("ip", ip) - .toString(); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIp.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIp.java deleted file mode 100644 index dc38735eb7..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIp.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.packet.IpAddress; - -/** - * Representation of a floatingIp. - */ -public interface FloatingIp { - - /** - * Coarse classification of the type of the FloatingIp. - */ - public enum Status { - /** - * Signifies that a floating Ip is currently active. - */ - ACTIVE, - /** - * Signifies that a floating Ip is currently inactive. - */ - INACTIVE - } - - /** - * Returns the floatingIp identifier. - * - * @return identifier - */ - FloatingIpId id(); - - /** - * Returns the tenant identifier. - * - * @return the tenant identifier - */ - TenantId tenantId(); - - /** - * Returns the network identifier. - * - * @return the network identifier - */ - TenantNetworkId networkId(); - - /** - * Returns the port identifier. - * - * @return the port identifier - */ - VirtualPortId portId(); - - /** - * Returns the router identifier. - * - * @return the router identifier - */ - RouterId routerId(); - - /** - * Returns the floating ip address. - * - * @return floatingIp - */ - IpAddress floatingIp(); - - /** - * Returns the fixed ip address. - * - * @return fixedIp - */ - IpAddress fixedIp(); - - /** - * Returns the status of floating ip. - * - * @return floatingIpStatus - */ - Status status(); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIpId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIpId.java deleted file mode 100644 index 6258df9632..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FloatingIpId.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable representation of a floating IP identifier. - */ -public final class FloatingIpId extends Identifier { - // Public construction is prohibited - private FloatingIpId(UUID floatingIpId) { - super(checkNotNull(floatingIpId, "floatingIpId cannot be null")); - } - - /** - * Creates a floating IP identifier. - * - * @param floatingIpId the UUID id of floating IP identifier - * @return object of floating IP identifier - */ - public static FloatingIpId of(UUID floatingIpId) { - return new FloatingIpId(floatingIpId); - } - - /** - * Creates a floating IP identifier. - * - * @param floatingIpId the floating IP identifier in string - * @return object of floating IP identifier - */ - public static FloatingIpId of(String floatingIpId) { - return new FloatingIpId(UUID.fromString(floatingIpId)); - } - - /** - * Returns the floating IP identifier. - * - * @return the floating IP identifier - */ - public UUID floatingIpId() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifier.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifier.java deleted file mode 100644 index f7a9bcce13..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifier.java +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.packet.IpPrefix; - -/** - * Abstraction of an entity which provides flow classifier for service function chain. - * FlowClassifier classify the traffic based on the criteria defined in the request. - * The classification can be based on port range or source and destination IP address or - * other flow classifier elements. - */ -public interface FlowClassifier { - - /** - * Returns flow classifier ID. - * - * @return flow classifier id - */ - FlowClassifierId flowClassifierId(); - - /** - * Returns Tenant ID. - * - * @return tenant Id - */ - TenantId tenantId(); - - /** - * Returns flow classifier name. - * - * @return flow classifier name - */ - String name(); - - /** - * Returns flow classifier description. - * - * @return flow classifier description - */ - String description(); - - /** - * Returns EtherType. - * - * @return EtherType - */ - String etherType(); - - /** - * Returns IP Protocol. - * - * @return IP protocol - */ - String protocol(); - - /** - * Returns priority. - * - * @return priority - */ - int priority(); - - /** - * Returns minimum source port range. - * - * @return minimum source port range - */ - int minSrcPortRange(); - - /** - * Returns maximum source port range. - * - * @return maximum source port range - */ - int maxSrcPortRange(); - - /** - * Returns minimum destination port range. - * - * @return minimum destination port range - */ - int minDstPortRange(); - - /** - * Returns maximum destination port range. - * - * @return maximum destination port range. - */ - int maxDstPortRange(); - - /** - * Returns Source IP prefix. - * - * @return Source IP prefix - */ - IpPrefix srcIpPrefix(); - - /** - * Returns Destination IP prefix. - * - * @return Destination IP prefix - */ - IpPrefix dstIpPrefix(); - - /** - * Returns Source virtual port. - * - * @return Source virtual port - */ - VirtualPortId srcPort(); - - /** - * Returns Destination virtual port. - * - * @return Destination virtual port - */ - VirtualPortId dstPort(); - - /** - * Returns whether this Flow classifier is an exact match to the - * Flow classifier given in the argument. - * - * @param flowClassifier other flowClassifier to match against - * @return true if the flowClassifiers are an exact match, otherwise false - */ - boolean exactMatch(FlowClassifier flowClassifier); - - /** - * Builder for flow Classifier. - */ - interface Builder { - - /** - * Returns Flow Classifier. - * - * @return flow classifier. - */ - FlowClassifier build(); - - /** - * Sets Flow Classifier ID. - * - * @param flowClassifierId flow classifier id. - * @return Builder object by setting flow classifier Id. - */ - Builder setFlowClassifierId(FlowClassifierId flowClassifierId); - - /** - * Sets Tenant ID. - * - * @param tenantId tenant id. - * @return Builder object by setting Tenant ID. - */ - Builder setTenantId(TenantId tenantId); - - /** - * Sets Flow classifier name. - * - * @param name flow classifier name - * @return builder object by setting flow classifier name - */ - Builder setName(String name); - - /** - * Sets flow classifier description. - * - * @param description flow classifier description - * @return flow classifier description - */ - Builder setDescription(String description); - - /** - * Sets EtherType. - * - * @param etherType EtherType - * @return EtherType - */ - Builder setEtherType(String etherType); - - /** - * Sets IP protocol. - * - * @param protocol IP protocol - * @return builder object by setting IP protocol - */ - Builder setProtocol(String protocol); - - /** - * Sets priority. - * - * @param priority priority - * @return builder object by setting priority - */ - Builder setPriority(int priority); - - /** - * Set minimum source port range. - * - * @param minRange minimum source port range - * @return builder object by setting minimum source port range - */ - Builder setMinSrcPortRange(int minRange); - - /** - * Sets maximum source port range. - * - * @param maxRange maximum source port range - * @return builder object by setting maximum source port range - */ - Builder setMaxSrcPortRange(int maxRange); - - /** - * Sets minimum destination port range. - * - * @param minRange minimum destination port range - * @return builder object by setting minimum destination port range - */ - Builder setMinDstPortRange(int minRange); - - /** - * Sets maximum destination port range. - * - * @param maxRange maximum destination port range. - * @return builder object by setting maximum destination port range. - */ - Builder setMaxDstPortRange(int maxRange); - - /** - * Sets Source IP prefix. - * - * @param srcIpPrefix Source IP prefix - * @return builder object by setting Source IP prefix - */ - Builder setSrcIpPrefix(IpPrefix srcIpPrefix); - - /** - * Sets Destination IP prefix. - * - * @param dstIpPrefix Destination IP prefix - * @return builder object by setting Destination IP prefix - */ - Builder setDstIpPrefix(IpPrefix dstIpPrefix); - - /** - * Sets Source virtual port. - * - * @param srcPort Source virtual port - * @return builder object by setting Source virtual port - */ - Builder setSrcPort(VirtualPortId srcPort); - - /** - * Sets Destination virtual port. - * - * @param dstPort Destination virtual port - * @return builder object by setting Destination virtual port - */ - Builder setDstPort(VirtualPortId dstPort); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifierId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifierId.java deleted file mode 100644 index 2c74d9ef09..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/FlowClassifierId.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Flow classification identifier. - */ -public final class FlowClassifierId extends Identifier { - /** - * Constructor to create flow classifier id. - * - * @param flowClassifierId flow classifier id. - */ - private FlowClassifierId(final UUID flowClassifierId) { - super(checkNotNull(flowClassifierId, "Flow classifier id can not be null")); - } - - /** - * Returns new flow classifier id. - * - * @param flowClassifierId flow classifier id - * @return new flow classifier id - */ - public static FlowClassifierId of(final UUID flowClassifierId) { - return new FlowClassifierId(flowClassifierId); - } - - /** - * Returns new flow classifier id. - * - * @param flowClassifierId flow classifier id - * @return new flow classifier id - */ - public static FlowClassifierId of(final String flowClassifierId) { - return new FlowClassifierId(UUID.fromString(flowClassifierId)); - } - - /** - * Returns the value of flow classifier id. - * - * @return flow classifier id. - */ - public UUID value() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/HostRoute.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/HostRoute.java deleted file mode 100644 index 3f6824d920..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/HostRoute.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; - -/** - * Host route dictionaries for the subnet. - */ -public interface HostRoute { - - /** - * Returns the next hop address. - * - * @return next hop address - */ - IpAddress nexthop(); - - /** - * Returns the destination address. - * - * @return destination address - */ - IpPrefix destination(); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/LoadBalanceId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/LoadBalanceId.java deleted file mode 100644 index ffd3168824..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/LoadBalanceId.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import static com.google.common.base.Preconditions.checkArgument; - -/* - * Representation of 5 bit load balance identifier for a service function - */ -public final class LoadBalanceId extends Identifier { - - private static final byte MAX_ID = 0x1F; - - /** - * Default constructor. - * - * @param loadBalanceId service function chain path's load balance identifier - */ - private LoadBalanceId(byte loadBalanceId) { - super(loadBalanceId); - checkArgument(loadBalanceId <= MAX_ID, "Load balance id should not be more than 5 bit identifier"); - } - - /** - * Returns the SfcLoadBalanceId by setting its value. - * - * @param loadBalanceId service function chain path's load balance identifier - * @return LoadBalanceId - */ - public static LoadBalanceId of(byte loadBalanceId) { - return new LoadBalanceId(loadBalanceId); - } - - - /** - * Returns load balance identifier for a service function. - * - * @return loadBalanceId - */ - public byte loadBalanceId() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PhysicalNetwork.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PhysicalNetwork.java deleted file mode 100644 index d2d9a0c8a6..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PhysicalNetwork.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable representation of a physical network identity. - */ -public final class PhysicalNetwork { - - private final String physicalNetwork; - - // Public construction is prohibited - private PhysicalNetwork(String physicalNetwork) { - checkNotNull(physicalNetwork, "PhysicalNetwork cannot be null"); - this.physicalNetwork = physicalNetwork; - } - - /** - * Creates a PhysicalNetwork object. - * - * @param physicalNetwork physical network - * @return physical network - */ - public static PhysicalNetwork physicalNetwork(String physicalNetwork) { - return new PhysicalNetwork(physicalNetwork); - } - - /** - * Returns a physicalNetwork. - * - * @return physical network - */ - public String physicalNetwork() { - return physicalNetwork; - } - - @Override - public int hashCode() { - return physicalNetwork.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof PhysicalNetwork) { - final PhysicalNetwork that = (PhysicalNetwork) obj; - return this.getClass() == that.getClass() - && Objects.equals(this.physicalNetwork, - that.physicalNetwork); - } - return false; - } - - @Override - public String toString() { - return physicalNetwork; - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java deleted file mode 100644 index e276f4385c..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.List; -import java.util.Set; - -import org.onosproject.net.DeviceId; - -/** - * Abstraction of an entity providing Port Chain information. - * A Port Chain (Service Function Path) consists of - * a set of Neutron ports, to define the sequence of service functions - * a set of flow classifiers, to specify the classified traffic flows to enter the chain - */ -public interface PortChain { - - /** - * Returns the ID of this port chain. - * - * @return the port chain id - */ - PortChainId portChainId(); - - /** - * Returns the tenant id of this port chain. - * - * @return the tenant id - */ - TenantId tenantId(); - - /** - * Returns the name of this port chain. - * - * @return name of port chain - */ - String name(); - - /** - * Returns the description of this port chain. - * - * @return description of port chain - */ - String description(); - - /** - * Returns the list of port pair groups associated with - * this port chain. - * - * @return list of port pair groups - */ - List portPairGroups(); - - /** - * Returns the list of flow classifiers associated with - * this port chain. - * - * @return list of flow classifiers - */ - List flowClassifiers(); - - /** - * Returns the old port chain. - * - * @return old port chain - */ - PortChain oldPortChain(); - - /** - * Adds a new load balanced path. - * - * @param fiveTuple five tuple from the packet - * @param id load balance path identifier - * @param path load balanced path of list of port pairs - */ - void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id, - List path); - - /** - * Adds sfc classifiers to the given load balance id for a port chain. - * - * @param id load balance path identifier - * @param classifierList list of classifier devices - */ - void addSfcClassifiers(LoadBalanceId id, List classifierList); - - /** - * Adds sfc forwarders to the given load balance id for a port chain. - * - * @param id load balance path identifier - * @param forwarderList list of forwarder devices - */ - void addSfcForwarders(LoadBalanceId id, List forwarderList); - - /** - * Removes sfc classifiers to the given load balance id for a port chain. - * - * @param id load balance path identifier - * @param classifierList list of classifier devices - */ - void removeSfcClassifiers(LoadBalanceId id, List classifierList); - - /** - * Removes sfc forwarders to the given load balance id for a port chain. - * - * @param id load balance path identifier - * @param forwarderList list of forwarder devices - */ - void removeSfcForwarders(LoadBalanceId id, List forwarderList); - - /** - * Returns sfc classifiers to the given load balance id for a port chain. - * - * @param id load balance path identifier - * @return list of classifier devices - */ - List getSfcClassifiers(LoadBalanceId id); - - /** - * Returns sfc forwarders to the given load balance id for a port chain. - * - * @param id load balance path identifier - * @return list of forwarder devices - */ - List getSfcForwarders(LoadBalanceId id); - - /** - * Returns the load balance id from five tuple. - * - * @param fiveTuple five tuple from the packet - * @return load balance identifier for the given packet - */ - LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple); - - /** - * Returns the keys set from load balance id map. - * - * @return set of five tuple info - */ - Set getLoadBalanceIdMapKeys(); - - /** - * Returns the keys set from load balance path map. - * - * @return set of load balance id's - */ - Set getLoadBalancePathMapKeys(); - - /** - * Returns the load balanced path from load balance Id. - * - * @param id load balance id. - * @return path containing list of port pairs - */ - List getLoadBalancePath(LoadBalanceId id); - - /** - * Returns the load balanced path from five tuple. - * - * @param fiveTuple five tuple from the packet - * @return path containing list of port pairs - */ - List getLoadBalancePath(FiveTuple fiveTuple); - - /** - * Returns the no of load balance paths created. - * - * @return size of load balanced paths - */ - int getLoadBalancePathSize(); - - /** - * Match the given path with existing load balanced paths. - * - * @param path load balanced path - * @return load balance id if the path matches, null otherwise. - */ - LoadBalanceId matchPath(List path); - - /** - * Returns whether this port chain is an exact match to the port chain given - * in the argument. - *

- * Exact match means the port pair groups and flow classifiers match - * with the given port chain. It does not consider the port chain id, name - * and description. - *

- * - * @param portChain other port chain to match against - * @return true if the port chains are an exact match, otherwise false - */ - boolean exactMatch(PortChain portChain); - - /** - * A port chain builder.. - */ - interface Builder { - - /** - * Assigns the port chain id to this object. - * - * @param portChainId the port chain id - * @return this the builder object - */ - Builder setId(PortChainId portChainId); - - /** - * Assigns tenant id to this object. - * - * @param tenantId tenant id of the port chain - * @return this the builder object - */ - Builder setTenantId(TenantId tenantId); - - /** - * Assigns the name to this object. - * - * @param name name of the port chain - * @return this the builder object - */ - Builder setName(String name); - - /** - * Assigns the description to this object. - * - * @param description description of the port chain - * @return this the builder object - */ - Builder setDescription(String description); - - /** - * Assigns the port pair groups associated with the port chain - * to this object. - * - * @param portPairGroups list of port pair groups - * @return this the builder object - */ - Builder setPortPairGroups(List portPairGroups); - - /** - * Assigns the flow classifiers associated with the port chain - * to this object. - * - * @param flowClassifiers list of flow classifiers - * @return this the builder object - */ - Builder setFlowClassifiers(List flowClassifiers); - - /** - * Builds a port chain object. - * - * @return a port chain. - */ - PortChain build(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChainId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChainId.java deleted file mode 100644 index 34c2afa66c..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChainId.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Representation of a Port Chain ID. - */ -public final class PortChainId extends Identifier { - /** - * Private constructor for port chain id. - * - * @param id UUID id of port chain - */ - private PortChainId(UUID id) { - super(checkNotNull(id, "Port chain id can not be null")); - } - - /** - * Returns newly created port chain id object. - * - * @param id UUID of port chain - * @return object of port chain id - */ - public static PortChainId of(UUID id) { - return new PortChainId(id); - } - - /** - * Returns newly created port chain id object. - * - * @param id port chain id in string - * @return object of port chain id - */ - public static PortChainId of(String id) { - return new PortChainId(UUID.fromString(id)); - } - - /** - * Returns the value of port chain id. - * - * @return port chain id - */ - public UUID value() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPair.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPair.java deleted file mode 100644 index 520c213e2a..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPair.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - - -/** - * Abstraction of an entity providing Port Pair information. - * A port pair represents a service function instance. - */ -public interface PortPair { - - /** - * Returns the ID of this port Pair. - * - * @return the port pair id - */ - PortPairId portPairId(); - - /** - * Returns the tenant id of this port pair. - * - * @return an tenant id - */ - TenantId tenantId(); - - /** - * Returns the description of this port pair. - * - * @return description of port pair - */ - String name(); - - /** - * Returns the description of this port pair. - * - * @return description of port pair - */ - String description(); - - /** - * Returns the ingress port of this port pair. - * - * @return ingress of port pair - */ - String ingress(); - - /** - * Returns the egress port of this port pair. - * - * @return egress of port pair - */ - String egress(); - - /** - * Returns whether this port pair is an exact match to the port pair given - * in the argument. - *

- * Exact match means the Port port pairs match with the given port pair. - * It does not consider the port pair id, name and description. - *

- * @param portPair other port pair to match against - * @return true if the port pairs are an exact match, otherwise false - */ - boolean exactMatch(PortPair portPair); - - /** - * A port pair builder.. - */ - interface Builder { - - /** - * Assigns the port pair id to this object. - * - * @param portPairId the port pair id - * @return this the builder object - */ - Builder setId(PortPairId portPairId); - - /** - * Assigns tenant id to this object. - * - * @param tenantId tenant id of the port pair - * @return this the builder object - */ - Builder setTenantId(TenantId tenantId); - - /** - * Assigns the name to this object. - * - * @param name name of the port pair - * @return this the builder object - */ - Builder setName(String name); - - /** - * Assigns the description to this object. - * - * @param description description of the port pair - * @return this the builder object - */ - Builder setDescription(String description); - - /** - * Assigns the ingress port to this object. - * - * @param port ingress port of the port pair - * @return this the builder object - */ - Builder setIngress(String port); - - /** - * Assigns the egress port to this object. - * - * @param port egress port of the port pair - * @return this the builder object - */ - Builder setEgress(String port); - - /** - * Builds a port pair object. - * - * @return a port pair. - */ - PortPair build(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroup.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroup.java deleted file mode 100644 index 64fe723791..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroup.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.List; -import java.util.Map; - -/** - * Abstraction of an entity providing Port Pair Group information. - * A port pair group consists of one or more port pairs. - */ -public interface PortPairGroup { - - /** - * Returns the ID of this port pair group. - * - * @return the port pair group id - */ - PortPairGroupId portPairGroupId(); - - /** - * Returns the tenant id of this port pair group. - * - * @return the tenant id - */ - TenantId tenantId(); - - /** - * Returns the name of this port pair group. - * - * @return name of port pair group - */ - String name(); - - /** - * Returns the description of this port pair group. - * - * @return description of port pair group - */ - String description(); - - /** - * Returns the list of port pairs associated with this port pair group. - * - * @return list of port pairs - */ - List portPairs(); - - /** - * Adds the load on the given port pair id. - * - * @param portPairId port pair id. - */ - void addLoad(PortPairId portPairId); - - /** - * Reset the load for all the port pairs in the group. - */ - void resetLoad(); - - /** - * Get the load on the given port pair id. - * - * @param portPairId port pair id - * @return load on the given port pair id. - */ - int getLoad(PortPairId portPairId); - - /** - * Get the map of port pair id and its load. - * - * @return port pair and load map - */ - Map portPairLoadMap(); - - /** - * Returns whether this port pair group is an exact match to the - * port pair group given in the argument. - *

- * Exact match means the Port pairs match with the given port pair group. - * It does not consider the port pair group id, name and description. - *

- * @param portPairGroup other port pair group to match against - * @return true if the port pairs are an exact match, otherwise false - */ - boolean exactMatch(PortPairGroup portPairGroup); - - /** - * A port pair group builder.. - */ - interface Builder { - - /** - * Assigns the port pair group id to this object. - * - * @param portPairGroupId the port pair group id - * @return this the builder object - */ - Builder setId(PortPairGroupId portPairGroupId); - - /** - * Assigns tenant id to this object. - * - * @param tenantId tenant id of port pair group - * @return this the builder object - */ - Builder setTenantId(TenantId tenantId); - - /** - * Assigns the name to this object. - * - * @param name name of the port pair group - * @return this the builder object - */ - Builder setName(String name); - - /** - * Assigns the description to this object. - * - * @param description description of the port pair group - * @return this the builder object - */ - Builder setDescription(String description); - - /** - * Assigns the port pairs associated with the port pair group - * to this object. - * - * @param portPairs list of port pairs - * @return this the builder object - */ - Builder setPortPairs(List portPairs); - - /** - * Builds a port pair group object. - * - * @return a port pair group object. - */ - PortPairGroup build(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroupId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroupId.java deleted file mode 100644 index 0699c3455e..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairGroupId.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Representation of a Port Pair Group ID. - */ -public final class PortPairGroupId extends Identifier { - /** - * Private constructor for port pair group id. - * - * @param id UUID id of port pair group - */ - private PortPairGroupId(UUID id) { - super(checkNotNull(id, "Port pair group id can not be null")); - } - - /** - * Returns newly created port pair group id object. - * - * @param id port pair group id in UUID - * @return object of port pair group id - */ - public static PortPairGroupId of(UUID id) { - return new PortPairGroupId(id); - } - - /** - * Returns newly created port pair group id object. - * - * @param id port pair group id in string - * @return object of port pair group id - */ - public static PortPairGroupId of(String id) { - return new PortPairGroupId(UUID.fromString(id)); - } - - /** - * Returns the value of port pair group id. - * - * @return port pair group id - */ - public UUID value() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairId.java deleted file mode 100644 index 0b44761ecf..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortPairId.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Representation of a Port Pair ID. - */ -public final class PortPairId extends Identifier { - /** - * Private constructor for port pair id. - * - * @param id UUID id of port pair - */ - private PortPairId(UUID id) { - super(checkNotNull(id, "Port chain id can not be null")); - } - - /** - * Returns newly created port pair id object. - * - * @param id UUID of port pair id - * @return object of port pair id - */ - public static PortPairId of(UUID id) { - return new PortPairId(id); - } - - /** - * Returns newly created port pair id object. - * - * @param id port pair id in string - * @return object of port pair id - */ - public static PortPairId of(String id) { - return new PortPairId(UUID.fromString(id)); - } - - /** - * Returns the value of port pair id. - * - * @return port pair id - */ - public UUID value() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Router.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Router.java deleted file mode 100644 index d821bbe0d2..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Router.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.List; - -/** - * Representation of a Router. - */ -public interface Router { - - /** - * Coarse classification of the type of the Router. - */ - public enum Status { - /** - * Signifies that a router is currently active. - */ - ACTIVE, - /** - * Signifies that a router is currently inactive. - */ - INACTIVE - } - - /** - * Returns the router identifier. - * - * @return identifier - */ - RouterId id(); - - /** - * Returns the router Name. - * - * @return routerName - */ - String name(); - - /** - * Returns the router admin state. - * - * @return true or false - */ - boolean adminStateUp(); - - /** - * Returns the status of router. - * - * @return RouterStatus - */ - Status status(); - - /** - * Returns the distributed status of this router. - * If true, indicates a distributed router. - * - * @return true or false - */ - boolean distributed(); - - /** - * Returns the RouterGateway of router. - * - * @return routerGateway - */ - RouterGateway externalGatewayInfo(); - - /** - * Returns the gatewayPortid of router. - * - * @return virtualPortId - */ - VirtualPortId gatewayPortid(); - - /** - * Returns the owner(tenant) of this router. - * - * @return tenantId - */ - TenantId tenantId(); - - /** - * Returns the router list of router. - * - * @return routes - */ - List routes(); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterGateway.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterGateway.java deleted file mode 100644 index 6aef24ed48..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterGateway.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Collection; -import java.util.Objects; -import java.util.Set; - -/** - * Representation of a Router gateway. - */ -public final class RouterGateway { - - private final TenantNetworkId networkId; - private final boolean enableSnat; - private final Set externalFixedIps; - - // Public construction is prohibited - private RouterGateway(TenantNetworkId networkId, boolean enableSnat, - Set externalFixedIps) { - this.networkId = checkNotNull(networkId, "networkId cannot be null"); - this.enableSnat = enableSnat; - this.externalFixedIps = checkNotNull(externalFixedIps, "externalFixedIps cannot be null"); - } - - /** - * Creates router gateway object. - * - * @param networkId network identifier - * @param enableSnat SNAT enable or not - * @param externalFixedIps external fixed IP - * @return RouterGateway - */ - public static RouterGateway routerGateway(TenantNetworkId networkId, boolean enableSnat, - Set externalFixedIps) { - return new RouterGateway(networkId, enableSnat, externalFixedIps); - } - - /** - * Returns network identifier. - * - * @return networkId - */ - public TenantNetworkId networkId() { - return networkId; - } - - /** - * Return SNAT enable or not. - * - * @return enableSnat - */ - public boolean enableSnat() { - return enableSnat; - } - - /** - * Return external fixed Ip. - * - * @return externalFixedIps - */ - public Collection externalFixedIps() { - return externalFixedIps; - } - - @Override - public int hashCode() { - return Objects.hash(networkId, enableSnat, externalFixedIps); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof RouterGateway) { - final RouterGateway that = (RouterGateway) obj; - return Objects.equals(this.networkId, that.networkId) - && Objects.equals(this.enableSnat, that.enableSnat) - && Objects.equals(this.externalFixedIps, that.externalFixedIps); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("networkId", networkId) - .add("enableSnat", enableSnat) - .add("externalFixedIps", externalFixedIps) - .toString(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterId.java deleted file mode 100644 index 3527f805db..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterId.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable representation of a router identifier. - */ -public final class RouterId extends Identifier { - // Public construction is prohibited - private RouterId(String routerId) { - super(checkNotNull(routerId, "routerId cannot be null")); - } - - /** - * Creates a router identifier. - * - * @param routerId the router identifier - * @return the router identifier - */ - public static RouterId valueOf(String routerId) { - return new RouterId(routerId); - } - - /** - * Returns the router identifier. - * - * @return the router identifier - */ - public String routerId() { - return identifier; - } -} - diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterInterface.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterInterface.java deleted file mode 100644 index 84164b2142..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/RouterInterface.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -/** - * Representation of a Router interface. - */ -public final class RouterInterface { - private final SubnetId subnetId; - private final VirtualPortId portId; - private final RouterId routerId; - private final TenantId tenantId; - - // Public construction is prohibited - private RouterInterface(SubnetId subnetId, VirtualPortId portId, - RouterId routerId, TenantId tenantId) { - this.subnetId = checkNotNull(subnetId, "subnetId cannot be null"); - this.portId = checkNotNull(portId, "portId cannot be null"); - this.routerId = checkNotNull(routerId, "routerId cannot be null"); - this.tenantId = checkNotNull(tenantId, "tenantId cannot be null"); - } - - /** - * Creates router interface object. - * - * @param subnetId subnet identifier - * @param portId port identifier - * @param routerId router identifier - * @param tenantId tenant identifier - * @return RouterInterface - */ - public static RouterInterface routerInterface(SubnetId subnetId, - VirtualPortId portId, - RouterId routerId, - TenantId tenantId) { - return new RouterInterface(subnetId, portId, routerId, tenantId); - } - - /** - * Returns subnet identifier. - * - * @return subnetId the subnet identifier - */ - public SubnetId subnetId() { - return subnetId; - } - - /** - * Returns port identifier. - * - * @return portId the port identifier - */ - public VirtualPortId portId() { - return portId; - } - - /** - * Returns router identifier. - * - * @return routerId the router identifier - */ - public RouterId routerId() { - return routerId; - } - - /** - * Returns tenant identifier. - * - * @return tenantId the tenant identifier - */ - public TenantId tenantId() { - return tenantId; - } - - @Override - public int hashCode() { - return Objects.hash(subnetId, portId, routerId, tenantId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof RouterInterface) { - final RouterInterface that = (RouterInterface) obj; - return Objects.equals(this.subnetId, that.subnetId) - && Objects.equals(this.portId, that.portId) - && Objects.equals(this.routerId, that.routerId) - && Objects.equals(this.tenantId, that.tenantId); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("subnetId", subnetId) - .add("portId", portId).add("routerId", routerId) - .add("tenantId", tenantId).toString(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SecurityGroup.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SecurityGroup.java deleted file mode 100644 index ee56ba9d30..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SecurityGroup.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable representation of a security group. - */ -public final class SecurityGroup { - private final String securityGroup; - - /** - * Returns the securityGroup. - * - * @return securityGroup - */ - public String securityGroup() { - return securityGroup; - } - // Public construction is prohibited - private SecurityGroup(String securityGroup) { - checkNotNull(securityGroup, "SecurityGroup cannot be null"); - this.securityGroup = securityGroup; - } - - /** - * Creates a securityGroup using the supplied securityGroup. - * - * @param securityGroup security group - * @return securityGroup - */ - public static SecurityGroup securityGroup(String securityGroup) { - return new SecurityGroup(securityGroup); - } - - @Override - public int hashCode() { - return securityGroup.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof SecurityGroup) { - final SecurityGroup that = (SecurityGroup) obj; - return this.getClass() == that.getClass() - && Objects.equals(this.securityGroup, that.securityGroup); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this).add("securityGroup", securityGroup) - .toString(); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SegmentationId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SegmentationId.java deleted file mode 100644 index 414894c946..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SegmentationId.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable representation of a Segmentation identifier. - */ -public final class SegmentationId extends Identifier { - // Public construction is prohibited - private SegmentationId(String segmentationId) { - super(checkNotNull(segmentationId, "SegmentationId cannot be null")); - } - - /** - * Creates a SegmentationId object. - * - * @param segmentationId segmentation identifier - * @return SegmentationId - */ - public static SegmentationId segmentationId(String segmentationId) { - return new SegmentationId(segmentationId); - } - - /** - * Returns the segmentation identifier. - * - * @return segmentationId - */ - public String segmentationId() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/ServiceFunctionGroup.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/ServiceFunctionGroup.java deleted file mode 100644 index 2aed2235b1..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/ServiceFunctionGroup.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; - -import java.util.Map; -import java.util.Objects; - -import com.google.common.collect.ImmutableMap; - -/** - * Implementation of ServiceFunctionGroup class. - */ -public final class ServiceFunctionGroup { - - private final String name; - private final String description; - private final Map portPairLoadMap; - - /** - * Creates an instance of service function group. - * - * @param name name of port pair - * @param description description of port pair - * @param portPairLoadMap map of port pair id and its load - */ - public ServiceFunctionGroup(String name, String description, - Map portPairLoadMap) { - this.name = name; - this.description = description; - this.portPairLoadMap = portPairLoadMap; - } - - /** - * Returns name of service function group. - * - * @return name of service function group - */ - public String name() { - return name; - } - - /** - * Returns description of service function group. - * - * @return description of service function group. - */ - public String description() { - return description; - } - - /** - * Returns port pair load map. - * - * @return port pair load map - */ - public Map portPairLoadMap() { - return ImmutableMap.copyOf(portPairLoadMap); - } - - @Override - public int hashCode() { - return Objects.hash(name, description, portPairLoadMap); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof ServiceFunctionGroup) { - ServiceFunctionGroup that = (ServiceFunctionGroup) obj; - return Objects.equals(name, that.name()) && - Objects.equals(description, that.description()) && - Objects.equals(portPairLoadMap, that.portPairLoadMap()); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("name", name) - .add("description", description) - .add("portPairLoadMap", portPairLoadMap) - .toString(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Subnet.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Subnet.java deleted file mode 100644 index 29551f8c03..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/Subnet.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpAddress.Version; -import org.onlab.packet.IpPrefix; - -/** - * Representation of a subnet. - */ -public interface Subnet { - - /** - * Coarse classification of the type of the ipV6Mode. - */ - enum Mode { - DHCPV6_STATEFUL, DHCPV6_STATELESS, SLAAC - } - - /** - * Returns the subnet identifier. - * - * @return identifier - */ - SubnetId id(); - - /** - * Returns the name of the subnet. - * - * @return subnetName - */ - String subnetName(); - - /** - * Returns the network identifier. - * - * @return the network identifier - */ - TenantNetworkId networkId(); - - /** - * Returns tenant identifier. - * - * @return the tenant identifier - */ - TenantId tenantId(); - - /** - * Returns the IP version, which is 4 or 6. - * - * @return ipVersion - */ - Version ipVersion(); - - /** - * Returns the cidr. - * - * @return cidr - */ - IpPrefix cidr(); - - /** - * Returns the gateway IP address. - * - * @return gatewayIp - */ - IpAddress gatewayIp(); - - /** - * Returns true if DHCP is enabled and return false if DHCP is disabled. - * - * @return true or false - */ - boolean dhcpEnabled(); - - /** - * Indicates whether this tenantNetwork is shared across all tenants. By - * default, only administrative user can change this value. - * - * @return true or false - */ - boolean shared(); - - /** - * Returns a collection of hostRoutes. - * - * @return a collection of hostRoutes - */ - Iterable hostRoutes(); - - /** - * Returns the ipV6AddressMode. A valid value is dhcpv6-stateful, - * dhcpv6-stateless, or slaac. - * - * @return ipV6AddressMode whose value is dhcpv6-stateful, dhcpv6-stateless - * or slaac - */ - Mode ipV6AddressMode(); - - /** - * Returns the ipV6RaMode.A valid value is dhcpv6-stateful, - * dhcpv6-stateless, or slaac. - * - * @return ipV6RaMode whose value is dhcpv6-stateful, dhcpv6-stateless or - * slaac - */ - Mode ipV6RaMode(); - - /** - * Returns a collection of allocation_pools. - * - * @return a collection of allocationPools - */ - Iterable allocationPools(); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SubnetId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SubnetId.java deleted file mode 100644 index 77f0a44900..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/SubnetId.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable representation of a subnet identifier. - */ -public final class SubnetId extends Identifier { - // Public construction is prohibited - private SubnetId(String subnetId) { - super(checkNotNull(subnetId, "SubnetId cannot be null")); - } - - /** - * Creates a Subnet identifier. - * - * @param subnetId the subnet identifier - * @return the subnet identifier - */ - public static SubnetId subnetId(String subnetId) { - return new SubnetId(subnetId); - } - - /** - * Returns the subnet identifier. - * - * @return the subnet identifier - */ - public String subnetId() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantId.java deleted file mode 100644 index 120a305a57..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantId.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable representation of a tenant identifier. - */ -public final class TenantId extends Identifier { - // Public construction is prohibited - private TenantId(String tenantId) { - super(tenantId); - } - - /** - * Creates a network id using the tenantid. - * - * @param tenantid network String - * @return TenantId - */ - public static TenantId tenantId(String tenantid) { - checkNotNull(tenantid, "Tenant id can not be null"); - return new TenantId(tenantid); - } - - /** - * Returns the tenant identifier. - * - * @return the tenant identifier - */ - public String tenantId() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetwork.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetwork.java deleted file mode 100644 index 701b13ac79..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetwork.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -/** - * Representation of the tenantNetwork. - */ -public interface TenantNetwork { - - /** - * Coarse classification of the state of the tenantNetwork. - */ - enum State { - /** - * Signifies that a tenantNetwork is currently active.This state means - * that this network is available. - */ - ACTIVE, - /** - * Signifies that a tenantNetwork is currently built. - */ - BUILD, - /** - * Signifies that a tenantNetwork is currently unavailable. - */ - DOWN, - /** - * Signifies that a tenantNetwork is currently error. - */ - ERROR - } - - /** - * Coarse classification of the type of the tenantNetwork. - */ - enum Type { - /** - * Signifies that a tenantNetwork is local. - */ - LOCAL - } - - /** - * Returns the tenantNetwork identifier. - * - * @return tenantNetwork identifier - */ - TenantNetworkId id(); - - /** - * Returns the tenantNetwork name. - * - * @return tenantNetwork name - */ - String name(); - - /** - * Returns the administrative state of the tenantNetwork,which is up(true) - * or down(false). - * - * @return true or false - */ - boolean adminStateUp(); - - /** - * Returns the tenantNetwork state. - * - * @return tenant network state - */ - State state(); - - /** - * Indicates whether this tenantNetwork is shared across all tenants. By - * default,only administrative user can change this value. - * - * @return true or false - */ - boolean shared(); - - /** - * Returns the UUID of the tenant that will own the tenantNetwork. This - * tenant can be different from the tenant that makes the create - * tenantNetwork request. - * - * @return the tenant identifier - */ - TenantId tenantId(); - - /** - * Returns the routerExternal.Indicates whether this network is externally - * accessible. - * - * @return true or false - */ - boolean routerExternal(); - - /** - * Returns the tenantNetwork Type. - * - * @return tenantNetwork Type - */ - Type type(); - - /** - * Returns the tenantNetwork physical network. - * - * @return tenantNetwork physical network - */ - PhysicalNetwork physicalNetwork(); - - /** - * Returns the tenantNetwork segmentation id. - * - * @return tenantNetwork segmentation id - */ - SegmentationId segmentationId(); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetworkId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetworkId.java deleted file mode 100644 index 6921ba5672..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantNetworkId.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable representation of a tenantNetwork identity. - */ -public final class TenantNetworkId extends Identifier { - // Public construction is prohibited - private TenantNetworkId(String networkId) { - super(networkId); - } - - /** - * Creates a TenantNetwork identifier. - * - * @param networkId tenantNetwork identify string - * @return the attached tenantNetwork identifier - */ - public static TenantNetworkId networkId(String networkId) { - checkNotNull(networkId, "Networkid cannot be null"); - return new TenantNetworkId(networkId); - } - - /** - * Returns tenantNetwork identifier. - * - * @return the tenantNetwork identifier - */ - public String networkId() { - return identifier; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantRouter.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantRouter.java deleted file mode 100644 index ca221c7abd..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/TenantRouter.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Objects; - -public final class TenantRouter { - private final TenantId tenantId; - private final RouterId routerId; - - /** - * Construct a TenantRouter object. - * - * @param tenantId the tenant identifier - * @param routerId router identifier - */ - private TenantRouter(TenantId tenantId, RouterId routerId) { - this.tenantId = checkNotNull(tenantId, "tenantId cannot be null"); - this.routerId = checkNotNull(routerId, "routerId cannot be null"); - } - - /** - * Create a TenantRouter object. - * - * @param tenantId the tenant identifier - * @param routerId router identifier - * @return TenantRouter - */ - public static TenantRouter tenantRouter(TenantId tenantId, RouterId routerId) { - return new TenantRouter(tenantId, routerId); - } - - public TenantId tenantId() { - return tenantId; - } - - public RouterId routerId() { - return routerId; - } - - @Override - public int hashCode() { - return Objects.hash(tenantId, routerId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof TenantRouter) { - final TenantRouter that = (TenantRouter) obj; - return this.getClass() == that.getClass() - && Objects.equals(this.tenantId, that.tenantId) - && Objects.equals(this.routerId, that.routerId); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("tenantId", tenantId) - .add("routerId", routerId) - .toString(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPort.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPort.java deleted file mode 100644 index 94b166fffb..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPort.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.Collection; -import java.util.Set; - -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; - -/** - * Representation of the VirtualPort. - */ -public interface VirtualPort { - /** - * Coarse classification of the type of the virtual port. - */ - enum State { - /** - * Signifies that a virtualPort is currently active,This state mean that - * this virtualPort is available. - */ - ACTIVE, - /** - * Signifies that a virtualPort is currently unavailable. - */ - DOWN - } - - /** - * Returns the virtualPort identifier. - * - * @return virtualPort identifier - */ - VirtualPortId portId(); - - /** - * Returns the network identifier. - * - * @return tenantNetwork identifier - */ - TenantNetworkId networkId(); - - /** - * Returns the symbolic name for the virtualPort. - * - * @return virtualPort name - */ - String name(); - - /** - * Returns the administrative status of the port,which is up(true) or - * down(false). - * - * @return true if the administrative status of the port is up - */ - boolean adminStateUp(); - - /** - * Returns the state. - * - * @return state - */ - State state(); - - /** - * Returns the MAC address. - * - * @return MAC Address - */ - MacAddress macAddress(); - - /** - * Returns the port tenantId. - * - * @return port tenantId - */ - TenantId tenantId(); - - /** - * Returns the device identifier. - * - * @return deviceId - */ - DeviceId deviceId(); - - /** - * Returns the identifier of the entity that uses this port. - * - * @return deviceOwner - */ - String deviceOwner(); - - /** - * Returns the virtualPort allowedAddressPairs. - * - * @return virtualPort allowedAddressPairs - */ - Collection allowedAddressPairs(); - - /** - * Returns set of IP addresses for the port, include the IP addresses and subnet - * identity. - * - * @return FixedIps Set of fixedIp - */ - Set fixedIps(); - - /** - * Returns the virtualPort bindinghostId. - * - * @return virtualPort bindinghostId - */ - BindingHostId bindingHostId(); - - /** - * Returns the virtualPort bindingVnicType. - * - * @return virtualPort bindingVnicType - */ - String bindingVnicType(); - - /** - * Returns the virtualPort bindingVifType. - * - * @return virtualPort bindingVifType - */ - String bindingVifType(); - - /** - * Returns the virtualPort bindingvifDetail. - * - * @return virtualPort bindingvifDetail - */ - String bindingVifDetails(); - - /** - * Returns the security groups. - * - * @return port security groups - */ - Iterable securityGroups(); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPortId.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPortId.java deleted file mode 100644 index 1a5594a498..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/VirtualPortId.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.onlab.util.Identifier; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Immutable representation of a virtual port identifier. - */ -public final class VirtualPortId extends Identifier { - // Public construction is prohibited - private VirtualPortId(String virtualPortId) { - super(checkNotNull(virtualPortId, "VirtualPortId cannot be null")); - } - - public String portId() { - return identifier; - } - - /** - * Creates a virtualPort id using the supplied portId. - * - * @param portId virtualport identifier - * @return VirtualPortId - */ - public static VirtualPortId portId(String portId) { - return new VirtualPortId(portId); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/ClassifierService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/ClassifierService.java deleted file mode 100644 index 9f2c354302..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/ClassifierService.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.classifier; - -import org.onosproject.net.DeviceId; - -/** - * Provides Services for Classifier. - */ -public interface ClassifierService { - - /** - * Get Classifier devices for sfc. - * - * @return list of device id's for classifiers - */ - Iterable getClassifiers(); - - /** - * Add Classifier device for sfc. - * - * @param deviceId device id - */ - void addClassifier(DeviceId deviceId); - - /** - * Remove Classifier device for sfc. - * - * @param deviceId deviceId - */ - void removeClassifier(DeviceId deviceId); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/ClassifierManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/ClassifierManager.java deleted file mode 100644 index 74bf8b6958..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/ClassifierManager.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.classifier.impl; - -import com.google.common.collect.ImmutableList; -import org.onosproject.net.DeviceId; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.DistributedSet; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.onosproject.vtnrsc.classifier.ClassifierService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the Classifier Service. - */ -@Component(immediate = true, service = ClassifierService.class) -public class ClassifierManager implements ClassifierService { - - private final Logger log = getLogger(ClassifierManager.class); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - private DistributedSet classifierList; - - @Activate - protected void activate() { - classifierList = storageService.setBuilder() - .withName("classifier") - .withSerializer(Serializer.using(KryoNamespaces.API)) - .build() - .asDistributedSet(); - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - log.info("Stopped"); - } - - @Override - public void addClassifier(DeviceId deviceId) { - classifierList.add(deviceId); - } - - @Override - public Iterable getClassifiers() { - return ImmutableList.copyOf(classifierList); - } - - @Override - public void removeClassifier(DeviceId deviceId) { - classifierList.remove(deviceId); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/package-info.java deleted file mode 100644 index 7fac017595..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of the Classifier service. - */ -package org.onosproject.vtnrsc.classifier.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/package-info.java deleted file mode 100644 index 520554f672..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/classifier/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with Classifier of SFC. - */ -package org.onosproject.vtnrsc.classifier; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpCreateCommand.java deleted file mode 100644 index e21cbc3206..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpCreateCommand.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.floatingip; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onlab.packet.IpAddress; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.DefaultFloatingIp; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIp.Status; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.floatingip.FloatingIpService; - -import com.google.common.collect.Sets; - -/** - * Supports for create a floating IP. - */ -@Service -@Command(scope = "onos", name = "floatingip-create", - description = "Supports for creating a floating IP") -public class FloatingIpCreateCommand extends AbstractShellCommand { - @Argument(index = 0, name = "id", description = "The floating IP identifier", - required = true, multiValued = false) - String id = null; - - @Argument(index = 1, name = "networkId", description = "The network identifier of floating IP", - required = true, multiValued = false) - String networkId = null; - - @Argument(index = 2, name = "tenantId", description = "The tenant identifier of floating IP", - required = true, multiValued = false) - String tenantId = null; - - @Argument(index = 3, name = "routerId", description = "The router identifier of floating IP", - required = true, multiValued = false) - String routerId = null; - - @Argument(index = 4, name = "fixedIp", description = "The fixed IP of floating IP", - required = true, multiValued = false) - String fixedIp = null; - - @Argument(index = 5, name = "floatingIp", description = "The floating IP of floating IP", - required = true, multiValued = false) - String floatingIp = null; - - @Option(name = "-p", aliases = "--portId", description = "The port identifier of floating IP", - required = false, multiValued = false) - String portId = null; - - @Option(name = "-s", aliases = "--status", description = "The status of floating IP", - required = false, multiValued = false) - String status = null; - - @Override - protected void doExecute() { - FloatingIpService service = get(FloatingIpService.class); - try { - FloatingIp floatingIpObj = new DefaultFloatingIp( - FloatingIpId.of(id), - TenantId.tenantId(tenantId), - TenantNetworkId.networkId(networkId), - VirtualPortId.portId(portId), - RouterId.valueOf(routerId), - floatingIp == null ? null : IpAddress.valueOf(floatingIp), - fixedIp == null ? null : IpAddress.valueOf(fixedIp), - status == null ? Status.ACTIVE - : Status.valueOf(status)); - Set floatingIpSet = Sets.newHashSet(floatingIpObj); - service.createFloatingIps(floatingIpSet); - } catch (Exception e) { - print(null, e.getMessage()); - } - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpQueryCommand.java deleted file mode 100644 index d4b08a734b..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpQueryCommand.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.floatingip; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.floatingip.FloatingIpService; - -/** - * Supports for query a floating IP. - */ -@Service -@Command(scope = "onos", name = "floatingips", description = "Supports for querying a floating IP") -public class FloatingIpQueryCommand extends AbstractShellCommand { - @Option(name = "-I", aliases = "--id", description = "The floating IP identifier", - required = false, multiValued = false) - String id = null; - - @Option(name = "-i", aliases = "--fixedIp", description = "The fixed IP of floating IP", - required = false, multiValued = false) - String fixedIp = null; - - @Option(name = "-l", aliases = "--floatingIp", description = "The floating IP of floating IP", - required = false, multiValued = false) - String floatingIp = null; - - private static final String FMT = "floatingIpId=%s, networkId=%s, tenantId=%s, portId=%s," - + "routerId=%s, fixedIp=%s, floatingIp=%s, status=%s"; - - @Override - protected void doExecute() { - FloatingIpService service = get(FloatingIpService.class); - if (id != null) { - FloatingIp floatingIp = service.getFloatingIp(FloatingIpId - .of(id)); - printFloatingIp(floatingIp); - } else if (fixedIp != null || floatingIp != null) { - Iterable floatingIps = service.getFloatingIps(); - if (floatingIps == null) { - return; - } - if (fixedIp != null) { - for (FloatingIp floatingIp : floatingIps) { - if (floatingIp.fixedIp().toString().equals(fixedIp)) { - printFloatingIp(floatingIp); - return; - } - } - print(null, "The fixedIp is not existed"); - } - if (floatingIp != null) { - for (FloatingIp floatingIpObj : floatingIps) { - if (floatingIpObj.fixedIp().toString().equals(floatingIp)) { - printFloatingIp(floatingIpObj); - return; - } - } - print(null, "The floatingIp is not existed"); - } - } else { - Iterable floatingIps = service.getFloatingIps(); - if (floatingIps == null) { - return; - } - for (FloatingIp floatingIp : floatingIps) { - printFloatingIp(floatingIp); - } - } - } - - private void printFloatingIp(FloatingIp floatingIp) { - print(FMT, floatingIp.id(), floatingIp.networkId(), - floatingIp.tenantId(), floatingIp.portId(), - floatingIp.routerId(), floatingIp.fixedIp(), - floatingIp.floatingIp(), floatingIp.status()); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpRemoveCommand.java deleted file mode 100644 index 4071cd83cf..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpRemoveCommand.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.floatingip; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.floatingip.FloatingIpService; - -import com.google.common.collect.Sets; - -/** - * Supports for remove a floating IP. - */ -@Service -@Command(scope = "onos", name = "floatingip-remove", description = "Supports for removing a floating IP") -public class FloatingIpRemoveCommand extends AbstractShellCommand { - @Option(name = "-I", aliases = "--id", description = "The floating IP identifier", - required = false, multiValued = false) - String id = null; - - @Option(name = "-i", aliases = "--fixedIp", description = "The fixed IP of floating IP", - required = false, multiValued = false) - String fixedIp = null; - - @Option(name = "-l", aliases = "--floatingIp", description = "The floating IP of floating IP", - required = false, multiValued = false) - String floatingIp = null; - - @Override - protected void doExecute() { - FloatingIpService service = get(FloatingIpService.class); - if (id == null && fixedIp == null && floatingIp == null) { - print(null, "one of id, fixedIp, floatingIp should not be null"); - } - try { - Set floatingIpSet = Sets.newHashSet(); - if (id != null) { - floatingIpSet.add(FloatingIpId.of(id)); - service.removeFloatingIps(floatingIpSet); - } else { - Iterable floatingIps = service.getFloatingIps(); - if (floatingIps == null) { - return; - } - if (fixedIp != null) { - for (FloatingIp floatingIp : floatingIps) { - if (floatingIp.fixedIp().toString().equals(fixedIp)) { - floatingIpSet.add(floatingIp.id()); - service.removeFloatingIps(floatingIpSet); - return; - } - } - print(null, "The fixedIp is not existed"); - return; - } - if (floatingIp != null) { - for (FloatingIp floatingIpObj : floatingIps) { - if (floatingIpObj.fixedIp().toString() - .equals(floatingIp)) { - floatingIpSet.add(floatingIpObj.id()); - service.removeFloatingIps(floatingIpSet); - return; - } - } - print(null, "The floatingIp is not existed"); - return; - } - } - } catch (Exception e) { - print(null, e.getMessage()); - } - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpUpdateCommand.java deleted file mode 100644 index 5ec16c9981..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/FloatingIpUpdateCommand.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.floatingip; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onlab.packet.IpAddress; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.DefaultFloatingIp; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIp.Status; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.floatingip.FloatingIpService; - -import com.google.common.collect.Sets; - -/** - * Supports for update a floating IP. - */ -@Service -@Command(scope = "onos", name = "floatingip-update", - description = "Supports for updating a floating IP") -public class FloatingIpUpdateCommand extends AbstractShellCommand { - @Argument(index = 0, name = "id", description = "The floating IP identifier", - required = true, multiValued = false) - String id = null; - - @Option(name = "-n", aliases = "--networkId", description = "The network identifier of floating IP", - required = false, multiValued = false) - String networkId = null; - - @Option(name = "-t", aliases = "--tenantId", description = "The tenant identifier of floating IP", - required = false, multiValued = false) - String tenantId = null; - - @Option(name = "-r", aliases = "--routerId", description = "The router identifier of floating IP", - required = false, multiValued = false) - String routerId = null; - - @Option(name = "-p", aliases = "--portId", description = "The port identifier of floating IP", - required = false, multiValued = false) - String portId = null; - - @Option(name = "-s", aliases = "--status", description = "The status of floating IP", - required = false, multiValued = false) - String status = null; - - @Option(name = "-i", aliases = "--fixedIp", description = "The fixed IP of floating IP", - required = false, multiValued = false) - String fixedIp = null; - - @Option(name = "-l", aliases = "--floatingIp", description = "The floating IP of floating IP", - required = false, multiValued = false) - String floatingIp = null; - - @Override - protected void doExecute() { - FloatingIpService service = get(FloatingIpService.class); - FloatingIpId floatingIpId = FloatingIpId.of(id); - FloatingIp floatingIpStore = get(FloatingIpService.class).getFloatingIp(floatingIpId); - try { - FloatingIp floatingIpObj = new DefaultFloatingIp( - floatingIpId, - tenantId == null ? floatingIpStore.tenantId() - : TenantId.tenantId(tenantId), - networkId == null ? floatingIpStore.networkId() - : TenantNetworkId.networkId(networkId), - portId == null ? floatingIpStore.portId() - : VirtualPortId.portId(portId), - routerId == null ? floatingIpStore.routerId() - : RouterId.valueOf(routerId), - floatingIp == null ? floatingIpStore.floatingIp() - : IpAddress.valueOf(floatingIp), - fixedIp == null ? floatingIpStore.fixedIp() - : IpAddress.valueOf(fixedIp), - status == null ? floatingIpStore.status() - : Status.valueOf(status)); - Set floatingIpSet = Sets.newHashSet(floatingIpObj); - service.updateFloatingIps(floatingIpSet); - } catch (Exception e) { - print(null, e.getMessage()); - } - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/package-info.java deleted file mode 100644 index 715e4a6edb..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/floatingip/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Command line interface for floatingIP. - */ -package org.onosproject.vtnrsc.cli.floatingip; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkCreateCommand.java deleted file mode 100644 index 40669cb34b..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkCreateCommand.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.network; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.DefaultTenantNetwork; -import org.onosproject.vtnrsc.PhysicalNetwork; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; - -import com.google.common.collect.Sets; - -/** - * Supports for creating a TenantNetwork. - */ -@Service -@Command(scope = "onos", name = "tenantnetwork-create", - description = "Supports for creating a TenantNetwork") -public class TenantNetworkCreateCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "id", description = "TenantNetwork network id", required = true, - multiValued = false) - String id = null; - - @Argument(index = 1, name = "tenantID", description = "The tenant id of TenantNetwork", - required = true, multiValued = false) - String tenantID = null; - - @Argument(index = 2, name = "type", description = "The type of TenantNetwork", required = true, - multiValued = false) - String type = null; - - @Argument(index = 3, name = "segmentationID", description = "The segmentation id of TenantNetwork", - required = true, multiValued = false) - String segmentationID = ""; - - @Option(name = "-n", aliases = "--name", description = "TenantNetwork name", required = false, - multiValued = false) - String name = null; - - @Option(name = "-a", aliases = "--adminStateUp", description = "TenantNetwork adminStateUp is true or false", - required = false, multiValued = false) - boolean adminStateUp = false; - - @Option(name = "-s", aliases = "--state", description = "The state of TenantNetwork", - required = false, multiValued = false) - String state = null; - - @Option(name = "-d", aliases = "--shared", description = "TenantNetwork is shared or not", - required = false, multiValued = false) - boolean shared = false; - - @Option(name = "-r", aliases = "--routerExternal", - description = "TenantNetwork is routerExternal or not", required = false, - multiValued = false) - boolean routerExternal = false; - - @Option(name = "-p", aliases = "--physicalNetwork", description = "The physical network of Tenant", - required = false, multiValued = false) - String physicalNetwork = ""; - - @Override - protected void doExecute() { - TenantNetworkService service = get(TenantNetworkService.class); - TenantNetwork network = new DefaultTenantNetwork(TenantNetworkId.networkId(id), name, - adminStateUp, - TenantNetwork.State.valueOf(state), - shared, TenantId.tenantId(tenantID), - routerExternal, - TenantNetwork.Type.valueOf(type), - PhysicalNetwork.physicalNetwork(physicalNetwork), - SegmentationId.segmentationId(segmentationID)); - - Set networksSet = Sets.newHashSet(network); - service.createNetworks(networksSet); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkQueryCommand.java deleted file mode 100644 index 7521eff865..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkQueryCommand.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.network; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; - -/** - * Supports for querying TenantNetworks by network id. - */ -@Service -@Command(scope = "onos", name = "tenantnetworks", description = "Supports for querying" - + "tenantNetworks by networkid") -public class TenantNetworkQueryCommand extends AbstractShellCommand { - - @Option(name = "-i", aliases = "--id", description = "TenantNetwork id", required = false, - multiValued = false) - String id = null; - - private static final String FMT = "networkId=%s, networkName=%s, segmentationId=%s," - + "tenantId=%s, type=%s, adminStateUp=%s"; - - @Override - protected void doExecute() { - TenantNetworkService service = get(TenantNetworkService.class); - if (id != null) { - TenantNetwork network = service.getNetwork(TenantNetworkId.networkId(id)); - printNetwork(network); - } else { - Iterable networks = service.getNetworks(); - for (TenantNetwork network : networks) { - printNetwork(network); - } - } - } - - private void printNetwork(TenantNetwork network) { - if (network == null) { - return; - } - print(FMT, network.id(), network.name(), network.segmentationId(), - network.tenantId(), network.type(), network.adminStateUp()); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkRemoveCommand.java deleted file mode 100644 index d6a8673d1a..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkRemoveCommand.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.network; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; - -import com.google.common.collect.Sets; - -/** - * Supports for removing a TenantNetwork by network id. - */ -@Service -@Command(scope = "onos", name = "tenantnetwork-remove", description = "Supports for removing" - + " a tenantNetwork by tenantNetworkid") -public class TenantNetworkRemoveCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "id", description = "TenantNetwork neutronNetwork Id", - required = true, multiValued = false) - String id = null; - - @Override - protected void doExecute() { - TenantNetworkService service = get(TenantNetworkService.class); - Set networkIds = Sets.newHashSet(TenantNetworkId.networkId(id)); - service.removeNetworks(networkIds); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkUpdateCommand.java deleted file mode 100644 index 88c342eb58..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/TenantNetworkUpdateCommand.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.network; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.DefaultTenantNetwork; -import org.onosproject.vtnrsc.PhysicalNetwork; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; - -import com.google.common.collect.Sets; - -/** - * Supports for updating a TenantNetwork. - */ -@Service -@Command(scope = "onos", name = "tenantnetwork-update", - description = "Supports for updating a TenantNetwork") -public class TenantNetworkUpdateCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "id", description = "TenantNetwork network id", required = true, - multiValued = false) - String id = null; - - @Argument(index = 1, name = "tenantID", description = "The tenant id of TenantNetwork", - required = true, multiValued = false) - String tenantID = null; - - @Argument(index = 2, name = "type", description = "The type of TenantNetwork", required = true, - multiValued = false) - String type = null; - - @Argument(index = 3, name = "segmentationID", description = "The segmentation id of TenantNetwork", - required = true, multiValued = false) - String segmentationID = ""; - - @Option(name = "-n", aliases = "--name", description = "TenantNetwork name", required = false, - multiValued = false) - String name = null; - - @Option(name = "-a", aliases = "--adminStateUp", description = "TenantNetwork adminStateUp is true or false", - required = false, multiValued = false) - boolean adminStateUp = false; - - @Option(name = "-s", aliases = "--state", description = "The state of TenantNetwork", - required = false, multiValued = false) - String state = null; - - @Option(name = "-d", aliases = "--shared", description = "TenantNetwork is shared or not", - required = false, multiValued = false) - boolean shared = false; - - @Option(name = "-r", aliases = "--routerExternal", - description = "TenantNetwork is routerExternal or not", required = false, - multiValued = false) - boolean routerExternal = false; - - @Option(name = "-p", aliases = "--physicalNetwork", description = "The physical network of Tenant", - required = false, multiValued = false) - String physicalNetwork = ""; - - @Override - protected void doExecute() { - TenantNetworkService service = get(TenantNetworkService.class); - TenantNetwork network = new DefaultTenantNetwork(TenantNetworkId.networkId(id), name, - adminStateUp, - TenantNetwork.State.valueOf(state), - shared, TenantId.tenantId(tenantID), - routerExternal, - TenantNetwork.Type.valueOf(type), - PhysicalNetwork.physicalNetwork(physicalNetwork), - SegmentationId.segmentationId(segmentationID)); - - Set networksSet = Sets.newHashSet(); - networksSet.add(network); - service.updateNetworks(networksSet); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/package-info.java deleted file mode 100644 index b2ecfe1fcf..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/network/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Command line interface for tenant networks. - */ -package org.onosproject.vtnrsc.cli.network; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterCreateCommand.java deleted file mode 100644 index 4c0aee44ea..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterCreateCommand.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.router; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.DefaultRouter; -import org.onosproject.vtnrsc.Router; -import org.onosproject.vtnrsc.Router.Status; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.router.RouterService; - -import com.google.common.collect.Sets; - -/** - * Supports for create a router. - */ -@Service -@Command(scope = "onos", name = "router-create", - description = "Supports for creating a router") -public class RouterCreateCommand extends AbstractShellCommand { - @Argument(index = 0, name = "id", description = "The router identifier", - required = true, multiValued = false) - String id = null; - - @Argument(index = 1, name = "routerName", description = "The name of router", - required = true, multiValued = false) - String routerName = null; - - @Argument(index = 2, name = "tenantId", description = "The tenant identifier of router", - required = true, multiValued = false) - String tenantId = null; - - @Option(name = "-g", aliases = "--gatewayPortId", description = "The gatewayPort identifier of router", - required = false, multiValued = false) - String gatewayPortId = null; - - @Option(name = "-e", aliases = "--externalGatewayInfo", description = "The external gateway info of router", - required = false, multiValued = false) - String externalGatewayInfo = null; - - @Option(name = "-s", aliases = "--status", description = "The status of router", - required = false, multiValued = false) - String status = null; - - @Option(name = "-a", aliases = "--adminStateUp", description = "The boolean adminStateUp of router", - required = false, multiValued = false) - boolean adminStateUp = true; - - @Option(name = "-d", aliases = "--distributed", description = "The boolean distributed of router", - required = false, multiValued = false) - boolean distributed = false; - - @Override - protected void doExecute() { - RouterService service = get(RouterService.class); - try { - List routes = new ArrayList(); - Router router = new DefaultRouter( - RouterId.valueOf(id), - routerName, - adminStateUp, - status == null ? Status.ACTIVE - : Status.valueOf(status), - distributed, - null, - VirtualPortId.portId(gatewayPortId), - TenantId.tenantId(tenantId), - routes); - Set routerSet = Sets.newHashSet(router); - service.createRouters(routerSet); - } catch (Exception e) { - print(null, e.getMessage()); - } - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterQueryCommand.java deleted file mode 100644 index dc447d6f23..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterQueryCommand.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.router; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.Router; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.router.RouterService; - -/** - * Supports for query a list of router. - */ -@Service -@Command(scope = "onos", name = "routers", description = "Supports for creating a router") -public class RouterQueryCommand extends AbstractShellCommand { - @Option(name = "-i", aliases = "--id", description = "The router identifier", - required = false, multiValued = false) - String id = null; - - @Option(name = "-n", aliases = "--routerName", description = "The name of router", - required = false, multiValued = false) - String routerName = null; - - private static final String FMT = "routerId=%s, routerName=%s, tenantId=%s, gatewayPortId=%s," - + "externalGatewayInfo=%s, status=%s, adminStateUp=%s, distributed=%s, routers=%s"; - - @Override - protected void doExecute() { - RouterService service = get(RouterService.class); - if (id != null) { - Router router = service.getRouter(RouterId.valueOf(id)); - printFloatingIp(router); - } else if (routerName != null) { - Iterable routers = service.getRouters(); - if (routers == null) { - return; - } - for (Router router : routers) { - if (router.name().equals(routerName)) { - printFloatingIp(router); - return; - } - } - print(null, "The routerName is not existed"); - } else { - Iterable routers = service.getRouters(); - if (routers == null) { - return; - } - for (Router router : routers) { - printFloatingIp(router); - } - } - } - - private void printFloatingIp(Router router) { - print(FMT, router.id(), router.name(), router.tenantId(), - router.gatewayPortid(), router.externalGatewayInfo(), - router.status(), router.adminStateUp(), router.distributed(), - router.routes()); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterRemoveCommand.java deleted file mode 100644 index 45d642c81b..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterRemoveCommand.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.router; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.Router; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.router.RouterService; - -import com.google.common.collect.Sets; - -/** - * Supports for remove a router. - */ -@Service -@Command(scope = "onos", name = "router-remove", description = "Supports for removing a router") -public class RouterRemoveCommand extends AbstractShellCommand { - @Option(name = "-i", aliases = "--id", description = "The router identifier", - required = false, multiValued = false) - String id = null; - - @Option(name = "-n", aliases = "--routerName", description = "The name of router", - required = false, multiValued = false) - String routerName = null; - - @Override - protected void doExecute() { - RouterService service = get(RouterService.class); - if (id == null && routerName == null) { - print(null, "one of id, routerName should not be null"); - } - try { - Set routerSet = Sets.newHashSet(); - if (id != null) { - routerSet.add(RouterId.valueOf(id)); - service.removeRouters(routerSet); - } else { - Iterable routers = service.getRouters(); - if (routers == null) { - return; - } - for (Router router : routers) { - if (router.name().equals(routerName)) { - routerSet.add(router.id()); - service.removeRouters(routerSet); - return; - } - } - } - } catch (Exception e) { - print(null, e.getMessage()); - } - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterUpdateCommand.java deleted file mode 100644 index 0b2d89f790..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/RouterUpdateCommand.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.router; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.DefaultRouter; -import org.onosproject.vtnrsc.Router; -import org.onosproject.vtnrsc.Router.Status; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.router.RouterService; - -import com.google.common.collect.Sets; - -/** - * Supports for update a router. - */ -@Service -@Command(scope = "onos", name = "router-update", description = "Supports for updating a router") -public class RouterUpdateCommand extends AbstractShellCommand { - @Argument(index = 0, name = "id", description = "The router identifier", - required = true, multiValued = false) - String id = null; - - @Option(name = "-r", aliases = "--routerName", description = "The name of router", - required = false, multiValued = false) - String routerName = null; - - @Option(name = "-t", aliases = "--tenantId", description = "The tenant identifier of router", - required = false, multiValued = false) - String tenantId = null; - - @Option(name = "-g", aliases = "--gatewayPortId", description = "The gatewayPort identifier of router", - required = false, multiValued = false) - String gatewayPortId = null; - - @Option(name = "-e", aliases = "--externalGatewayInfo", description = "The externalGatewayInfo of router", - required = false, multiValued = false) - String externalGatewayInfo = null; - - @Option(name = "-s", aliases = "--status", description = "The status of router", - required = false, multiValued = false) - String status = null; - - @Option(name = "-a", aliases = "--adminStateUp", description = "The boolean adminStateUp of router", - required = false, multiValued = false) - boolean adminStateUp = true; - - @Option(name = "-d", aliases = "--distributed", description = "The boolean distributed of router", - required = false, multiValued = false) - boolean distributed = false; - - @Override - protected void doExecute() { - RouterService service = get(RouterService.class); - RouterId routerId = RouterId.valueOf(id); - Router router = get(RouterService.class).getRouter(routerId); - try { - List routes = new ArrayList(); - Router routerObj = new DefaultRouter( - RouterId.valueOf(id), - routerName == null ? router.name() : routerName, - adminStateUp, - status == null ? Status.ACTIVE - : Status.valueOf(status), - distributed, - null, - gatewayPortId == null ? router.gatewayPortid() - : VirtualPortId.portId(gatewayPortId), - tenantId == null ? router.tenantId() - : TenantId.tenantId(tenantId), - routes); - Set routerSet = Sets.newHashSet(routerObj); - service.createRouters(routerSet); - } catch (Exception e) { - print(null, e.getMessage()); - } - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/package-info.java deleted file mode 100644 index d217bfb192..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/router/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Command line interface for router. - */ -package org.onosproject.vtnrsc.cli.router; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceCreateCommand.java deleted file mode 100644 index c8c39cb2d1..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceCreateCommand.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.routerinterface; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.RouterInterface; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService; - -/** - * Supports for create a router interface. - */ -@Service -@Command(scope = "onos", name = "routerinterface-create", description = "Supports for creating a router interface") -public class RouterInterfaceCreateCommand extends AbstractShellCommand { - @Argument(index = 0, name = "routerId", description = "The router identifier of router interface", - required = true, multiValued = false) - String routerId = null; - - @Argument(index = 1, name = "tenantId", description = "The tenant identifier of router interface", - required = true, multiValued = false) - String tenantId = null; - - @Argument(index = 2, name = "portId", description = "The port identifier of router interface", - required = true, multiValued = false) - String portId = null; - - @Argument(index = 3, name = "subnetId", description = "The subnet identifier of router interface", - required = true, multiValued = false) - String subnetId = null; - - @Override - protected void doExecute() { - RouterInterfaceService service = get(RouterInterfaceService.class); - try { - RouterInterface routerInterface = RouterInterface.routerInterface( - SubnetId.subnetId(subnetId), - VirtualPortId.portId(portId), - RouterId.valueOf(routerId), - TenantId.tenantId(tenantId)); - service.addRouterInterface(routerInterface); - } catch (Exception e) { - print(null, e.getMessage()); - } - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceQueryCommand.java deleted file mode 100644 index 7486c12fc8..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceQueryCommand.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.routerinterface; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.RouterInterface; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService; - -/** - * Supports for query a router interface. - */ -@Service -@Command(scope = "onos", name = "routerinterfaces", description = "Supports for querying a router interface") -public class RouterInterfaceQueryCommand extends AbstractShellCommand { - @Option(name = "-s", aliases = "--subnetId", description = "The subnet identifier of router interface", - required = false, multiValued = false) - String subnetId = null; - - private static final String FMT = "subnetId=%s, tenantId=%s, portId=%s, routerId=%s"; - - @Override - protected void doExecute() { - RouterInterfaceService service = get(RouterInterfaceService.class); - if (subnetId != null) { - RouterInterface routerInterface = service - .getRouterInterface(SubnetId.subnetId(subnetId)); - printRouterInterface(routerInterface); - } else { - Iterable routerInterfaces = service - .getRouterInterfaces(); - for (RouterInterface routerInterface : routerInterfaces) { - printRouterInterface(routerInterface); - } - } - } - - private void printRouterInterface(RouterInterface routerInterface) { - print(FMT, routerInterface.subnetId(), routerInterface.tenantId(), - routerInterface.portId(), routerInterface.routerId()); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceRemoveCommand.java deleted file mode 100644 index 3bfd7d2f2f..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/RouterInterfaceRemoveCommand.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.routerinterface; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.RouterInterface; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService; - -/** - * Supports for remove a router interface. - */ -@Service -@Command(scope = "onos", name = "routerinterface-remove", description = "Supports for removing a router interface") -public class RouterInterfaceRemoveCommand extends AbstractShellCommand { - @Option(name = "-s", aliases = "--subnetId", description = "The subnet identifier of router interface", - required = true, multiValued = false) - String subnetId = null; - - @Override - protected void doExecute() { - RouterInterfaceService service = get(RouterInterfaceService.class); - try { - RouterInterface routerInterface = service - .getRouterInterface(SubnetId.subnetId(subnetId)); - if (routerInterface == null) { - print(null, "subnet ID of interface doesn't exist"); - return; - } - service.removeRouterInterface(routerInterface); - } catch (Exception e) { - print(null, e.getMessage()); - } - - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/package-info.java deleted file mode 100644 index e89b421f5a..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/routerinterface/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Command line interface for router interface. - */ -package org.onosproject.vtnrsc.cli.routerinterface; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java deleted file mode 100644 index 8a0a0340c4..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetCreateCommand.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.subnet; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpAddress.Version; -import org.onlab.packet.IpPrefix; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.AllocationPool; -import org.onosproject.vtnrsc.DefaultSubnet; -import org.onosproject.vtnrsc.HostRoute; -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.Subnet.Mode; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.subnet.SubnetService; - -import com.google.common.collect.Sets; - -/** - * Supports for creating a subnet. - */ -@Service -@Command(scope = "onos", name = "subnet-create", description = "Supports for creating a subnet") -public class SubnetCreateCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "id", description = "Subnet Id", required = true, - multiValued = false) - String id = null; - - @Argument(index = 1, name = "subnetName", description = "Subnet String name", required = true, - multiValued = false) - String subnetName = null; - - @Argument(index = 2, name = "networkId", description = "Subnet Network Id", required = true, - multiValued = false) - String networkId = null; - - @Argument(index = 3, name = "tenantId", description = "Subnet Tenant Id", required = true, - multiValued = false) - String tenantId = null; - - @Option(name = "-i", aliases = "--ipVersion", description = "Subnet Version ipVersion", - required = false, multiValued = false) - Version ipVersion = null; - - @Option(name = "-c", aliases = "--cidr", description = "Subnet IpPrefix cidr", - required = false, multiValued = false) - String cidr = "0.0.0.0/0"; - - @Option(name = "-g", aliases = "--gatewayIp", description = "Subnet IpAddress gatewayIp", - required = false, multiValued = false) - String gatewayIp = "0.0.0.0"; - - @Option(name = "-d", aliases = "--dhcpEnabled", description = "Subnet boolean dhcpEnabled", - required = false, multiValued = false) - boolean dhcpEnabled = false; - - @Option(name = "-s", aliases = "--shared", description = "Subnet boolean shared", - required = false, multiValued = false) - boolean shared = false; - - @Option(name = "-m", aliases = "--ipV6AddressMode", - description = "Subnet Mode ipV6AddressMode", required = false, multiValued = false) - String ipV6AddressMode = null; - - @Option(name = "-r", aliases = "--ipV6RaMode", description = "Subnet Mode ipV6RaMode", - required = false, multiValued = false) - String ipV6RaMode = null; - - @Option(name = "-h", aliases = "--hostRoutes", description = "Subnet jsonnode hostRoutes", - required = false, multiValued = false) - Set hostRoutes = Sets.newHashSet(); - - @Option(name = "-a", aliases = "--allocationPools", - description = "Subnet jsonnode allocationPools", required = false, multiValued = false) - Set allocationPools = Sets.newHashSet(); - - @Override - protected void doExecute() { - SubnetService service = get(SubnetService.class); - if (id == null || networkId == null || tenantId == null) { - print("id,networkId,tenantId can not be null"); - return; - } - Subnet subnet = new DefaultSubnet(SubnetId.subnetId(id), subnetName, - TenantNetworkId.networkId(networkId), - TenantId.tenantId(tenantId), ipVersion, - cidr == null ? null : IpPrefix.valueOf(cidr), - gatewayIp == null ? null : IpAddress.valueOf(gatewayIp), - dhcpEnabled, shared, hostRoutes, - ipV6AddressMode == null ? null : Mode.valueOf(ipV6AddressMode), - ipV6RaMode == null ? null : Mode.valueOf(ipV6RaMode), - allocationPools); - - Set subnetsSet = Sets.newHashSet(subnet); - service.createSubnets(subnetsSet); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetQueryCommand.java deleted file mode 100644 index 9cc3269716..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetQueryCommand.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.subnet; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.subnet.SubnetService; - -/** - * Supports for querying a subnet. - */ -@Service -@Command(scope = "onos", name = "subnets", description = "Supports for querying a subnet") -public class SubnetQueryCommand extends AbstractShellCommand { - - @Option(name = "-i", aliases = "--id", description = "Subnet id", required = false, - multiValued = false) - String id = null; - - private static final String FMT = "subnetId=%s, networkId=%s, subnetName=%s," - + "tenantId=%s, cidr=%s, dhcpEnabled=%s, gatewayIp=%s," + "ipVersion=%s"; - - @Override - protected void doExecute() { - SubnetService service = get(SubnetService.class); - if (id != null) { - Subnet subnet = service.getSubnet(SubnetId.subnetId(id)); - printSubnet(subnet); - } else { - Iterable subnets = service.getSubnets(); - if (subnets == null) { - return; - } - for (Subnet subnet : subnets) { - printSubnet(subnet); - } - } - } - - private void printSubnet(Subnet subnet) { - print(FMT, subnet.id(), subnet.networkId(), subnet.subnetName(), - subnet.tenantId(), subnet.cidr(), subnet.dhcpEnabled(), subnet - .gatewayIp(), subnet.ipVersion()); - - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetRemoveCommand.java deleted file mode 100644 index 4955bc94f6..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetRemoveCommand.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.subnet; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.subnet.SubnetService; - -import com.google.common.collect.Sets; - -/** - * Supports for removing a subnet. - */ -@Service -@Command(scope = "onos", name = "subnet-remove", description = "Supports for removing a subnet") -public class SubnetRemoveCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "id", description = "Subnet SubnetId Id", required = true, - multiValued = false) - String id = null; - - @Override - protected void doExecute() { - SubnetService service = get(SubnetService.class); - Set subnetsSet = Sets.newHashSet(); - subnetsSet.add(SubnetId.subnetId(id)); - service.removeSubnets(subnetsSet); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java deleted file mode 100644 index 50cfaa28d9..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/SubnetUpdateCommand.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.subnet; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpAddress.Version; -import org.onlab.packet.IpPrefix; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.AllocationPool; -import org.onosproject.vtnrsc.DefaultSubnet; -import org.onosproject.vtnrsc.HostRoute; -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.Subnet.Mode; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.subnet.SubnetService; - -import com.google.common.collect.Sets; - -/** - * Supports for updating a subnet. - */ -@Service -@Command(scope = "onos", name = "subnet-update", description = "Supports for updating a subnet") -public class SubnetUpdateCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "id", description = "Subnet Id", required = true, - multiValued = false) - String id = null; - - @Argument(index = 1, name = "subnetName", description = "Subnet String name", required = true, - multiValued = false) - String subnetName = null; - - @Argument(index = 2, name = "networkId", description = "Subnet Network Id", required = true, - multiValued = false) - String networkId = null; - - @Argument(index = 3, name = "tenantId", description = "Subnet Tenant Id", required = true, - multiValued = false) - String tenantId = null; - - @Option(name = "-i", aliases = "--ipVersion", description = "Subnet Version ipVersion", - required = false, multiValued = false) - Version ipVersion = null; - - @Option(name = "-c", aliases = "--cidr", description = "Subnet IpPrefix cidr", required = false, - multiValued = false) - String cidr = "0.0.0.0/0"; - - @Option(name = "-g", aliases = "--gatewayIp", description = "Subnet IpAddress gatewayIp", - required = false, multiValued = false) - String gatewayIp = "0.0.0.0"; - - @Option(name = "-d", aliases = "--dhcpEnabled", description = "Subnet boolean dhcpEnabled", - required = false, multiValued = false) - boolean dhcpEnabled = false; - - @Option(name = "-s", aliases = "--shared", description = "Subnet boolean shared", required = false, - multiValued = false) - boolean shared = false; - - @Option(name = "-m", aliases = "--ipV6AddressMode", description = "Subnet Mode ipV6AddressMode", - required = false, multiValued = false) - String ipV6AddressMode = null; - - @Option(name = "-r", aliases = "--ipV6RaMode", description = "Subnet Mode ipV6RaMode", - required = false, multiValued = false) - String ipV6RaMode = null; - - @Option(name = "-h", aliases = "--hostRoutes", description = "Subnet jsonnode hostRoutes", - required = false, multiValued = false) - Set hostRoutes = Sets.newHashSet(); - - @Option(name = "-a", aliases = "--allocationPools", - description = "Subnet jsonnode allocationPools", required = false, multiValued = false) - Set allocationPools = Sets.newHashSet(); - - @Override - protected void doExecute() { - SubnetService service = get(SubnetService.class); - if (id == null || networkId == null || tenantId == null) { - print("id,networkId,tenantId can not be null"); - return; - } - Subnet subnet = new DefaultSubnet(SubnetId.subnetId(id), subnetName, - TenantNetworkId.networkId(networkId), - TenantId.tenantId(tenantId), ipVersion, - cidr == null ? null : IpPrefix.valueOf(cidr), - gatewayIp == null ? null : IpAddress.valueOf(gatewayIp), - dhcpEnabled, shared, hostRoutes, - ipV6AddressMode == null ? null : Mode.valueOf(ipV6AddressMode), - ipV6RaMode == null ? null : Mode.valueOf(ipV6RaMode), - allocationPools); - Set subnetsSet = Sets.newHashSet(); - subnetsSet.add(subnet); - service.updateSubnets(subnetsSet); - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/package-info.java deleted file mode 100644 index cabb4a4049..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/subnet/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Command line interface for subnets. - */ -package org.onosproject.vtnrsc.cli.subnet; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java deleted file mode 100644 index 4bf53ff1bc..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortCreateCommand.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.virtualport; - -import java.util.Map; -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onlab.packet.MacAddress; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; - -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -/** - * Supports for creating a virtualPort. - */ -@Service -@Command(scope = "onos", name = "virtualport-create", - description = "Supports for creating a virtualPort.") -public class VirtualPortCreateCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "id", description = "virtualPort id.", required = true, - multiValued = false) - String id = null; - - @Argument(index = 1, name = "networkId", description = "network id.", required = true, - multiValued = false) - String networkId = null; - - @Argument(index = 2, name = "name", description = "virtualPort name.", required = true, - multiValued = false) - String name = null; - - @Argument(index = 3, name = "tenantId", description = "tenant id.", required = true, - multiValued = false) - String tenantId = null; - - @Argument(index = 4, name = "deviceId", description = "device id.", required = true, - multiValued = false) - String deviceId = null; - - @Option(name = "-a", aliases = "--adminStateUp", - description = "administrative status of the virtualPort which is true or false.", - required = false, multiValued = false) - Boolean adminStateUp = false; - - @Option(name = "-s", aliases = "--state", description = "virtualPort state.", required = false, - multiValued = false) - String state = null; - - @Option(name = "-m", aliases = "--macAddress", description = "MAC address.", required = false, - multiValued = false) - String macAddress = ""; - - @Option(name = "-d", aliases = "--deviceOwner", description = "ID of the entity that uses this " - + "virtualPort.", required = false, multiValued = false) - String deviceOwner = null; - - @Option(name = "-f", aliases = "--fixedIp", - description = "The IP address for the port,include the IP address " - + "and subnet identity.", required = false, multiValued = false) - FixedIp fixedIp = null; - - @Option(name = "-i", aliases = "--bindingHostId", description = "virtualPort bindingHostId.", - required = false, multiValued = false) - String bindingHostId = null; - - @Option(name = "-t", aliases = "--bindingvnicType", description = "virtualPort bindingvnicType.", - required = false, multiValued = false) - String bindingvnicType = null; - - @Option(name = "-v", aliases = "--bindingvifType", description = "virtualPort bindingvifType.", - required = false, multiValued = false) - String bindingvifType = null; - - @Option(name = "-b", aliases = "--bindingvnicDetails", - description = "virtualPort bindingvnicDetails.", required = false, multiValued = false) - String bindingvnicDetails = null; - - @Option(name = "-l", aliases = "--allowedAddress", description = "virtual allowedAddressPair.", - required = false, multiValued = false) - Set allowedAddressPairs = Sets.newHashSet(); - - @Option(name = "-e", aliases = "--securityGroups", description = "virtualPort securityGroups.", - required = false, multiValued = false) - Set securityGroups = Sets.newHashSet(); - - @Override - protected void doExecute() { - Map strMap = Maps.newHashMap(); - strMap.putIfAbsent("name", name); - strMap.putIfAbsent("deviceOwner", deviceOwner); - strMap.putIfAbsent("bindingvnicType", bindingvnicType); - strMap.putIfAbsent("bindingvifType", bindingvifType); - strMap.putIfAbsent("bindingvnicDetails", bindingvnicDetails); - VirtualPortService service = get(VirtualPortService.class); - VirtualPort virtualPort = new DefaultVirtualPort(VirtualPortId.portId(id), - TenantNetworkId.networkId(networkId), - false, strMap, VirtualPort.State.ACTIVE, - MacAddress.valueOf(macAddress), - TenantId.tenantId(tenantId), - DeviceId.deviceId(deviceId), Sets.newHashSet(fixedIp), - BindingHostId.bindingHostId(bindingHostId), - allowedAddressPairs, securityGroups); - Set virtualPorts = Sets.newHashSet(virtualPort); - service.createPorts(virtualPorts); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortExGwUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortExGwUpdateCommand.java deleted file mode 100644 index 113fd44be0..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortExGwUpdateCommand.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.virtualport; - -import java.util.Map; -import java.util.Set; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.subnet.SubnetService; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; - -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -/** - * Supports for updating the external gateway virtualPort. - */ -@Service -@Command(scope = "onos", name = "externalgateway-update", - description = "Supports for updating the external gateway virtualPort.") -public class VirtualPortExGwUpdateCommand extends AbstractShellCommand { - - @Option(name = "-m", aliases = "--macAddress", description = "MAC address.", required = true, - multiValued = false) - String macAddress = ""; - - @Override - protected void doExecute() { - VirtualPortService service = get(VirtualPortService.class); - SubnetService subnetService = get(SubnetService.class); - TenantNetworkService tenantNetworkService = get(TenantNetworkService.class); - Iterable networks = tenantNetworkService.getNetworks(); - if (networks != null) { - for (TenantNetwork network : networks) { - if (network.routerExternal()) { - Iterable subnets = subnetService.getSubnets(); - if (subnets != null) { - for (Subnet subnet : subnets) { - if (network.id().networkId().equals(subnet.networkId().networkId())) { - IpAddress exgwip = subnet.gatewayIp(); - FixedIp fixedGwIp = FixedIp.fixedIp(subnet.id(), exgwip); - VirtualPort exgwPort = service.getPort(fixedGwIp); - if (exgwPort == null) { - createExGwPort(network, subnet, fixedGwIp); - } else { - updateExGwPort(exgwPort); - } - } - } - } - } - } - } - } - - private void createExGwPort(TenantNetwork network, Subnet subnet, FixedIp fixedGwIp) { - VirtualPortService service = get(VirtualPortService.class); - Map strMap = Maps.newHashMap(); - VirtualPort virtualPort = new DefaultVirtualPort(VirtualPortId.portId("externalgateway-update-id"), - network.id(), - false, strMap, - VirtualPort.State.DOWN, - MacAddress.valueOf(macAddress), - subnet.tenantId(), - DeviceId.deviceId(""), - Sets.newHashSet(fixedGwIp), - BindingHostId.bindingHostId(""), - Sets.newHashSet(), - Sets.newHashSet()); - Set virtualPorts = Sets.newHashSet(virtualPort); - service.createPorts(virtualPorts); - } - - private void updateExGwPort(VirtualPort exgwPort) { - VirtualPortService service = get(VirtualPortService.class); - Map strMap = Maps.newHashMap(); - strMap.putIfAbsent("name", exgwPort.name()); - strMap.putIfAbsent("deviceOwner", exgwPort.deviceOwner()); - strMap.putIfAbsent("bindingvnicType", exgwPort.bindingVnicType()); - strMap.putIfAbsent("bindingvifType", exgwPort.bindingVifType()); - strMap.putIfAbsent("bindingvnicDetails", exgwPort.bindingVifDetails()); - VirtualPort virtualPort = new DefaultVirtualPort(exgwPort.portId(), - exgwPort.networkId(), - false, strMap, - VirtualPort.State.DOWN, - MacAddress.valueOf(macAddress), - exgwPort.tenantId(), - exgwPort.deviceId(), - exgwPort.fixedIps(), - exgwPort.bindingHostId(), - Sets.newHashSet(exgwPort - .allowedAddressPairs()), - Sets.newHashSet(exgwPort - .securityGroups())); - Set virtualPorts = Sets.newHashSet(virtualPort); - service.updatePorts(virtualPorts); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortQueryCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortQueryCommand.java deleted file mode 100644 index b667dabba8..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortQueryCommand.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.virtualport; - -import java.util.Collection; - -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; - -/** - * Supports for querying virtualPorts. - */ -@Service -@Command(scope = "onos", name = "virtualports", description = "Supports for querying virtualPorts.") -public class VirtualPortQueryCommand extends AbstractShellCommand { - - @Option(name = "-v", aliases = "--vPortId", description = "virtualPort ID.", required = false, - multiValued = false) - String vPortId; - - @Option(name = "-n", aliases = "--networkId", description = "network ID.", required = false, - multiValued = false) - String networkId; - - @Option(name = "-d", aliases = "--deviceId", description = "device ID.", required = false, - multiValued = false) - String deviceId; - - @Option(name = "-t", aliases = "--tenantId", description = "tenant ID.", required = false, - multiValued = false) - String tenantId; - - private static final String FMT = "virtualPortId=%s, networkId=%s, name=%s," - + " tenantId=%s, deviceId=%s, adminStateUp=%s, state=%s," - + " macAddress=%s, deviceOwner=%s, fixedIp=%s, bindingHostId=%s," - + " bindingvnicType=%s, bindingvifType=%s, bindingvnicDetails=%s," - + " allowedAddress=%s, securityGroups=%s"; - - @Override - protected void doExecute() { - VirtualPortService service = get(VirtualPortService.class); - if (vPortId != null && networkId == null && deviceId == null && tenantId == null) { - VirtualPort port = service.getPort(VirtualPortId.portId(vPortId)); - printPort(port); - } else if (vPortId == null && networkId != null && deviceId == null && tenantId == null) { - Collection ports = service.getPorts(TenantNetworkId.networkId(networkId)); - printPorts(ports); - } else if (vPortId == null && networkId == null && deviceId != null && tenantId == null) { - Collection ports = service.getPorts(DeviceId.deviceId(deviceId)); - printPorts(ports); - } else if (vPortId == null && networkId == null && deviceId == null && tenantId != null) { - Collection ports = service.getPorts(DeviceId.deviceId(tenantId)); - printPorts(ports); - } else if (vPortId == null && networkId == null && deviceId == null) { - Collection ports = service.getPorts(); - printPorts(ports); - } else { - print("cannot input more than one parameter"); - } - - } - - private void printPorts(Collection ports) { - for (VirtualPort port : ports) { - printPort(port); - } - } - - private void printPort(VirtualPort port) { - print(FMT, port.portId(), port.networkId(), port.name(), port.tenantId(), port.deviceId(), - port.adminStateUp(), port.state(), port.macAddress(), port.deviceOwner(), port - .fixedIps(), port.bindingHostId(), port.bindingVnicType(), - port.bindingVifType(), port.bindingVifDetails(), port.allowedAddressPairs(), - port.securityGroups()); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortRemoveCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortRemoveCommand.java deleted file mode 100644 index 4984099a8f..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortRemoveCommand.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.virtualport; - -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; - -import com.google.common.collect.Sets; - -/** - * Supports for removing a virtualPort. - */ -@Service -@Command(scope = "onos", name = "virtualport-remove", - description = "Supports for removing a virtualPort.") -public class VirtualPortRemoveCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "id", description = "virtualPort id.", required = true, - multiValued = false) - String id = null; - - @Override - protected void doExecute() { - VirtualPortService service = get(VirtualPortService.class); - Set virtualPorts = Sets.newHashSet(VirtualPortId.portId(id)); - service.removePorts(virtualPorts); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java deleted file mode 100644 index 6cd7791601..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/VirtualPortUpdateCommand.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.cli.virtualport; - -import java.util.Map; -import java.util.Set; - -import org.apache.karaf.shell.api.action.Argument; -import org.apache.karaf.shell.api.action.Command; -import org.apache.karaf.shell.api.action.Option; -import org.apache.karaf.shell.api.action.lifecycle.Service; -import org.onlab.packet.MacAddress; -import org.onosproject.cli.AbstractShellCommand; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; - -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -/** - * Supports for updating a virtualPort. - */ -@Service -@Command(scope = "onos", name = "virtualport-update", - description = "Supports for updating a virtualPort.") -public class VirtualPortUpdateCommand extends AbstractShellCommand { - - @Argument(index = 0, name = "id", description = "virtualPort id.", required = true, - multiValued = false) - String id = null; - - @Argument(index = 1, name = "networkId", description = "network id.", required = true, - multiValued = false) - String networkId = null; - - @Argument(index = 2, name = "name", description = "virtualPort name.", required = true, - multiValued = false) - String name = null; - - @Argument(index = 3, name = "tenantId", description = "tenant id.", required = true, - multiValued = false) - String tenantId = null; - - @Argument(index = 4, name = "deviceId", description = "device id.", required = true, - multiValued = false) - String deviceId = null; - - @Option(name = "-a", aliases = "--adminStateUp", - description = "administrative status of the virtualPort which is true or false.", - required = false, multiValued = false) - Boolean adminStateUp = false; - - @Option(name = "-s", aliases = "--state", description = "virtualPort state.", required = false, - multiValued = false) - String state = null; - - @Option(name = "-m", aliases = "--macAddress", description = "MAC address.", required = false, - multiValued = false) - String macAddress = ""; - - @Option(name = "-d", aliases = "--deviceOwner", - description = "ID of the entity that uses this " + "virtualPort.", required = false, - multiValued = false) - String deviceOwner = null; - - @Option(name = "-f", aliases = "--fixedIp", - description = "The IP address for the port,include the IP address " - + "and subnet identity.", required = false, multiValued = false) - FixedIp fixedIp = null; - - @Option(name = "-i", aliases = "--bindingHostId", description = "virtualPort bindingHostId.", - required = false, multiValued = false) - String bindingHostId = ""; - - @Option(name = "-t", aliases = "--bindingvnicType", - description = "virtualPort bindingvnicType.", required = false, multiValued = false) - String bindingvnicType = null; - - @Option(name = "-v", aliases = "--bindingvifType", description = "virtualPort bindingvifType.", - required = false, multiValued = false) - String bindingvifType = null; - - @Option(name = "-b", aliases = "--bindingvnicDetails", - description = "virtualPort bindingvnicDetails.", required = false, multiValued = false) - String bindingvnicDetails = null; - - @Option(name = "-l", aliases = "--allowedAddress", description = "virtual allowedAddressPair.", - required = false, multiValued = false) - Set allowedAddressPairs = Sets.newHashSet(); - - @Option(name = "-e", aliases = "--securityGroups", description = "virtualPort securityGroups.", - required = false, multiValued = false) - Set securityGroups = Sets.newHashSet(); - - @Override - protected void doExecute() { - VirtualPortService service = get(VirtualPortService.class); - Map strMap = Maps.newHashMap(); - strMap.putIfAbsent("name", name); - strMap.putIfAbsent("deviceOwner", deviceOwner); - strMap.putIfAbsent("bindingvnicType", bindingvnicType); - strMap.putIfAbsent("bindingvifType", bindingvifType); - strMap.putIfAbsent("bindingvnicDetails", bindingvnicDetails); - VirtualPort virtualPort = new DefaultVirtualPort(VirtualPortId.portId(id), - TenantNetworkId.networkId(networkId), - false, strMap, VirtualPort.State.ACTIVE, - MacAddress.valueOf(macAddress), - TenantId.tenantId(tenantId), - DeviceId.deviceId(deviceId), Sets.newHashSet(fixedIp), - BindingHostId.bindingHostId(bindingHostId), - allowedAddressPairs, securityGroups); - Set virtualPorts = Sets.newHashSet(virtualPort); - service.updatePorts(virtualPorts); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/package-info.java deleted file mode 100644 index aef5c22276..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/cli/virtualport/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Command line interface for virtual ports. - */ -package org.onosproject.vtnrsc.cli.virtualport; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEvent.java deleted file mode 100644 index 0c8dc64c4e..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEvent.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.event; - -import org.onosproject.event.AbstractEvent; - - -/** - * Describes network vtnrsc event. - */ -public class VtnRscEvent - extends AbstractEvent { - - /** - * Type of vtnrsc events. - */ - public enum Type { - /** - * Signifies that floating IP has create. - */ - FLOATINGIP_PUT, - /** - * Signifies that floating IP has delete. - */ - FLOATINGIP_DELETE, - /** - * Signifies that Floating IP has been bound. - */ - FLOATINGIP_BIND, - /** - * Signifies that Floating IP has been unbound. - */ - FLOATINGIP_UNBIND, - /** - * Signifies that router has create. - */ - ROUTER_PUT, - /** - * Signifies that router has delete. - */ - ROUTER_DELETE, - /** - * Signifies that router interface has add. - */ - ROUTER_INTERFACE_PUT, - /** - * Signifies that router interface has remove. - */ - ROUTER_INTERFACE_DELETE, - /** - * Signifies that port-pair has add. - */ - PORT_PAIR_PUT, - /** - * Signifies that port-pair has remove. - */ - PORT_PAIR_DELETE, - /** - * Signifies that port-pair has update. - */ - PORT_PAIR_UPDATE, - /** - * Signifies that port-pair-group has add. - */ - PORT_PAIR_GROUP_PUT, - /** - * Signifies that port-pair-group has remove. - */ - PORT_PAIR_GROUP_DELETE, - /** - * Signifies that port-pair-group has update. - */ - PORT_PAIR_GROUP_UPDATE, - /** - * Signifies that flow-classifier has add. - */ - FLOW_CLASSIFIER_PUT, - /** - * Signifies that flow-classifier has remove. - */ - FLOW_CLASSIFIER_DELETE, - /** - * Signifies that flow-classifier has update. - */ - FLOW_CLASSIFIER_UPDATE, - /** - * Signifies that port-chain has add. - */ - PORT_CHAIN_PUT, - /** - * Signifies that port-chain has remove. - */ - PORT_CHAIN_DELETE, - /** - * Signifies that port-chain has update. - */ - PORT_CHAIN_UPDATE, - /** - * Signifies that virtual-port has created. - */ - VIRTUAL_PORT_PUT, - /** - * Signifies that virtual-port has removed. - */ - VIRTUAL_PORT_DELETE - } - - /** - * Creates an event of a given type and for the specified vtn event feedback. - * - * @param type Vtnrsc event type - * @param vtnFeedback event VtnrscEventFeedback subject - */ - public VtnRscEvent(Type type, VtnRscEventFeedback vtnFeedback) { - super(type, vtnFeedback); - } - - /** - * Creates an event of a given type and for the specified vtn event feedback. - * - * @param type Vtnrsc event type - * @param vtnFeedback event VtnrscEventFeedback subject - * @param time occurrence time - */ - public VtnRscEvent(Type type, VtnRscEventFeedback vtnFeedback, long time) { - super(type, vtnFeedback, time); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEventFeedback.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEventFeedback.java deleted file mode 100644 index 1e3f8491c2..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscEventFeedback.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.event; - -import java.util.Objects; - -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.Router; -import org.onosproject.vtnrsc.RouterInterface; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.VirtualPort; - -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Representation of a VtnRsc event feedback. - */ -public class VtnRscEventFeedback { - private final FloatingIp floaingtIp; - private final Router router; - private final RouterInterface routerInterface; - private final PortPair portPair; - private final PortPairGroup portPairGroup; - private final FlowClassifier flowClassifier; - private final PortChain portChain; - private final VirtualPort virtualPort; - - /** - * Creates VtnRscEventFeedback object. - * - * @param floatingIp the floating Ip - */ - public VtnRscEventFeedback(FloatingIp floatingIp) { - this.floaingtIp = checkNotNull(floatingIp, "floaintIp cannot be null"); - this.router = null; - this.routerInterface = null; - this.portPair = null; - this.portPairGroup = null; - this.flowClassifier = null; - this.portChain = null; - this.virtualPort = null; - } - - /** - * Creates VtnRscEventFeedback object. - * - * @param router the router - */ - public VtnRscEventFeedback(Router router) { - this.floaingtIp = null; - this.router = checkNotNull(router, "router cannot be null"); - this.routerInterface = null; - this.portPair = null; - this.portPairGroup = null; - this.flowClassifier = null; - this.portChain = null; - this.virtualPort = null; - } - - /** - * Creates VtnRscEventFeedback object. - * - * @param routerInterface the router interface - */ - public VtnRscEventFeedback(RouterInterface routerInterface) { - this.floaingtIp = null; - this.router = null; - this.routerInterface = checkNotNull(routerInterface, - "routerInterface cannot be null"); - this.portPair = null; - this.portPairGroup = null; - this.flowClassifier = null; - this.portChain = null; - this.virtualPort = null; - } - - /** - * Creates VtnRscEventFeedback object. - * - * @param portPair the Port-Pair - */ - public VtnRscEventFeedback(PortPair portPair) { - this.floaingtIp = null; - this.router = null; - this.routerInterface = null; - this.portPair = checkNotNull(portPair, - "Port-Pair cannot be null"); - this.portPairGroup = null; - this.flowClassifier = null; - this.portChain = null; - this.virtualPort = null; - } - - /** - * Creates VtnRscEventFeedback object. - * - * @param portPairGroup the Port-Pair-Group - */ - public VtnRscEventFeedback(PortPairGroup portPairGroup) { - this.floaingtIp = null; - this.router = null; - this.routerInterface = null; - this.portPair = null; - this.portPairGroup = checkNotNull(portPairGroup, - "Port-Pair-Group cannot be null"); - this.flowClassifier = null; - this.portChain = null; - this.virtualPort = null; - } - - /** - * Creates VtnRscEventFeedback object. - * - * @param flowClassifier the Flow-Classifier - */ - public VtnRscEventFeedback(FlowClassifier flowClassifier) { - this.floaingtIp = null; - this.router = null; - this.routerInterface = null; - this.portPair = null; - this.portPairGroup = null; - this.flowClassifier = checkNotNull(flowClassifier, - "Flow-Classifier cannot be null"); - this.portChain = null; - this.virtualPort = null; - } - - /** - * Creates VtnRscEventFeedback object. - * - * @param portChain the Port-Chain - */ - public VtnRscEventFeedback(PortChain portChain) { - this.floaingtIp = null; - this.router = null; - this.routerInterface = null; - this.portPair = null; - this.portPairGroup = null; - this.flowClassifier = null; - this.portChain = checkNotNull(portChain, - "Port-Chain cannot be null"); - this.virtualPort = null; - } - - /** - * Creates VtnRscEventFeedback object. - * - * @param virtualPort the Virtual-Port - */ - public VtnRscEventFeedback(VirtualPort virtualPort) { - this.floaingtIp = null; - this.router = null; - this.routerInterface = null; - this.portPair = null; - this.portPairGroup = null; - this.flowClassifier = null; - this.portChain = null; - this.virtualPort = checkNotNull(virtualPort, - "Virtual-port cannot be null"); - } - - /** - * Returns floating IP. - * - * @return floaingtIp the floating IP - */ - public FloatingIp floatingIp() { - return floaingtIp; - } - - /** - * Returns router. - * - * @return router the router - */ - public Router router() { - return router; - } - - /** - * Returns router interface. - * - * @return routerInterface the router interface - */ - public RouterInterface routerInterface() { - return routerInterface; - } - - /** - * Returns Port-Pair. - * - * @return portPair the Port-Pair - */ - public PortPair portPair() { - return portPair; - } - - /** - * Returns Port-Pair-Group. - * - * @return portPairGroup the Port-Pair-Group - */ - public PortPairGroup portPairGroup() { - return portPairGroup; - } - - /** - * Returns Flow-Classifier. - * - * @return flowClassifier the Flow-Classifier - */ - public FlowClassifier flowClassifier() { - return flowClassifier; - } - - /** - * Returns Port-Chain. - * - * @return portChain the Port-Chain - */ - public PortChain portChain() { - return portChain; - } - - /** - * Returns Virtual-Port. - * - * @return virtualPort the Virtual-Port - */ - public VirtualPort virtualPort() { - return virtualPort; - } - - @Override - public int hashCode() { - return Objects.hash(floaingtIp, router, routerInterface, portPair, - portPairGroup, flowClassifier, portChain, virtualPort); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof VtnRscEventFeedback) { - final VtnRscEventFeedback that = (VtnRscEventFeedback) obj; - return Objects.equals(this.floaingtIp, that.floaingtIp) - && Objects.equals(this.router, that.router) - && Objects.equals(this.routerInterface, that.routerInterface) - && Objects.equals(this.portPair, that.portPair) - && Objects.equals(this.portPairGroup, that.portPairGroup) - && Objects.equals(this.flowClassifier, that.flowClassifier) - && Objects.equals(this.portChain, that.portChain) - && Objects.equals(this.virtualPort, that.virtualPort); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("router", router) - .add("floaingtIp", floaingtIp) - .add("routerInterface", routerInterface) - .add("portPair", portPair) - .add("portPairGroup", portPairGroup) - .add("flowClassifier", flowClassifier) - .add("portChain", portChain) - .add("virtualPort", virtualPort) - .toString(); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscListener.java deleted file mode 100644 index 0ae4e31ebf..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/VtnRscListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc.event; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of VtnRsc related events. - */ -public interface VtnRscListener extends EventListener { - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/package-info.java deleted file mode 100644 index 9e7adb012d..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/event/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Event of VtnRsc for VtnRsc service. - */ -package org.onosproject.vtnrsc.event; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpEvent.java deleted file mode 100644 index 2bbd329952..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpEvent.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.floatingip; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.vtnrsc.FloatingIp; - -/** - * Describes network Floating IP event. - */ -public class FloatingIpEvent - extends AbstractEvent { - /** - * Type of Floating IP events. - */ - public enum Type { - /** - * Signifies that Floating IP has been created. - */ - FLOATINGIP_PUT, - /** - * Signifies that Floating IP has been deleted. - */ - FLOATINGIP_DELETE, - /** - * Signifies that Floating IP has been bound. - */ - FLOATINGIP_BIND, - /** - * Signifies that Floating IP has been unbound. - */ - FLOATINGIP_UNBIND - } - - /** - * Creates an event of a given type and for the specified Floating IP. - * - * @param type Floating IP event type - * @param floagingIp Floating IP subject - */ - public FloatingIpEvent(Type type, FloatingIp floagingIp) { - super(type, floagingIp); - } - - /** - * Creates an event of a given type and for the specified Floating IP. - * - * @param type Floating IP event type - * @param floagingIp Floating IP subject - * @param time occurrence time - */ - public FloatingIpEvent(Type type, FloatingIp floagingIp, long time) { - super(type, floagingIp, time); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpListener.java deleted file mode 100644 index b650f4c762..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.floatingip; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of Floating IP related events. - */ -public interface FloatingIpListener extends EventListener { - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpService.java deleted file mode 100644 index 307c6c411a..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/FloatingIpService.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.floatingip; - -import java.util.Collection; - -import org.onlab.packet.IpAddress; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.TenantId; - -/** - * Service for interacting with the inventory of floating IP. - */ -public interface FloatingIpService { - /** - * Returns exists or not of specific floatingIp identifier. - * - * @param floatingIpId floatingIp identifier - * @return true or false - */ - boolean exists(FloatingIpId floatingIpId); - - /** - * Returns is used or not of specific floating IP address. - * - * @param floatingIpAddr floatingIp address - * @param floatingIpId floatingIp identifier - * @return true or false - */ - boolean floatingIpIsUsed(IpAddress floatingIpAddr, FloatingIpId floatingIpId); - - /** - * Returns is used or not of specific fixed IP address. - * - * @param fixedIpAddr fixedIp address - * @param tenantId the tenant identifier of floating IP - * @param floatingIpId floatingIp identifier - * @return true or false - */ - boolean fixedIpIsUsed(IpAddress fixedIpAddr, TenantId tenantId, FloatingIpId floatingIpId); - - /** - * Returns a collection of the currently known floating IP. - * - * @return collection of floating IP - */ - Collection getFloatingIps(); - - /** - * Returns the floatingIp with the specified identifier. - * - * @param floatingIpId floatingIp identifier - * @return floatingIp or null if one with the given identifier is not known - */ - FloatingIp getFloatingIp(FloatingIpId floatingIpId); - - /** - * Creates new floatingIps. - * - * @param floatingIps the collection of floatingIp - * @return true if the identifier floatingIp has been created right - */ - boolean createFloatingIps(Collection floatingIps); - - /** - * Updates existing floatingIps. - * - * @param floatingIps the collection of floatingIp - * @return true if all floatingIp were updated successfully - */ - boolean updateFloatingIps(Collection floatingIps); - - /** - * Removes the specified floatingIp from the store. - * - * @param floatingIpIds the collection of floatingIp identifier - * @return true if remove identifier floatingIp successfully - */ - boolean removeFloatingIps(Collection floatingIpIds); - - /** - * Adds the specified listener to floating Ip manager. - * - * @param listener floating Ip listener - */ - void addListener(FloatingIpListener listener); - - /** - * Removes the specified listener to floating Ip manager. - * - * @param listener floating Ip listener - */ - void removeListener(FloatingIpListener listener); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/FloatingIpManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/FloatingIpManager.java deleted file mode 100644 index 196d889e48..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/FloatingIpManager.java +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.floatingip.impl; - -import com.google.common.collect.Sets; -import org.onlab.packet.IpAddress; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.EventuallyConsistentMapEvent; -import org.onosproject.store.service.EventuallyConsistentMapListener; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.DefaultFloatingIp; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.floatingip.FloatingIpEvent; -import org.onosproject.vtnrsc.floatingip.FloatingIpListener; -import org.onosproject.vtnrsc.floatingip.FloatingIpService; -import org.onosproject.vtnrsc.router.RouterService; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Collection; -import java.util.Collections; -import java.util.Set; -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the FloatingIp service. - */ -@Component(immediate = true, service = FloatingIpService.class) -public class FloatingIpManager implements FloatingIpService { - private static final String FLOATINGIP_ID_NOT_NULL = "Floatingip ID cannot be null"; - private static final String FLOATINGIP_NOT_NULL = "Floatingip cannot be null"; - private static final String FLOATINGIPSTORE = "vtn-floatingip-store"; - private static final String FLOATINGIPBINDSTORE = "vtn-floatingip-bind-store"; - private static final String VTNRSC_APP = "org.onosproject.vtnrsc"; - private static final String LISTENER_NOT_NULL = "Listener cannot be null"; - private static final String EVENT_NOT_NULL = "event cannot be null"; - - private final Logger log = getLogger(getClass()); - private final Set listeners = Sets - .newCopyOnWriteArraySet(); - private EventuallyConsistentMapListener floatingIpListener = - new InnerFloatingIpStoreListener(); - protected EventuallyConsistentMap floatingIpStore; - protected EventuallyConsistentMap floatingIpBindStore; - protected ApplicationId appId; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TenantNetworkService tenantNetworkService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VirtualPortService virtualPortService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected RouterService routerService; - - @Activate - public void activate() { - appId = coreService.registerApplication(VTNRSC_APP); - KryoNamespace.Builder serializer = KryoNamespace - .newBuilder() - .register(KryoNamespaces.API) - .register(FloatingIp.class, FloatingIpId.class, - TenantNetworkId.class, TenantId.class, - FloatingIp.Status.class, RouterId.class, - VirtualPortId.class, DefaultFloatingIp.class, - UUID.class); - floatingIpStore = storageService - .eventuallyConsistentMapBuilder() - .withName(FLOATINGIPSTORE).withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - floatingIpBindStore = storageService - .eventuallyConsistentMapBuilder() - .withName(FLOATINGIPBINDSTORE).withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - floatingIpStore.addListener(floatingIpListener); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - floatingIpStore.removeListener(floatingIpListener); - floatingIpStore.destroy(); - floatingIpBindStore.destroy(); - listeners.clear(); - log.info("Stopped"); - } - - @Override - public Collection getFloatingIps() { - return Collections.unmodifiableCollection(floatingIpStore.values()); - } - - @Override - public FloatingIp getFloatingIp(FloatingIpId floatingIpId) { - checkNotNull(floatingIpId, FLOATINGIP_ID_NOT_NULL); - return floatingIpStore.get(floatingIpId); - } - - @Override - public boolean exists(FloatingIpId floatingIpId) { - checkNotNull(floatingIpId, FLOATINGIP_ID_NOT_NULL); - return floatingIpStore.containsKey(floatingIpId); - } - - @Override - public boolean floatingIpIsUsed(IpAddress floatingIpAddr, - FloatingIpId floatingIpId) { - checkNotNull(floatingIpAddr, "Floating IP address cannot be null"); - checkNotNull(floatingIpId, "Floating IP Id cannot be null"); - Collection floatingIps = getFloatingIps(); - for (FloatingIp floatingIp : floatingIps) { - if (floatingIp.floatingIp().equals(floatingIpAddr) - && !floatingIp.id().equals(floatingIpId)) { - return true; - } - } - return false; - } - - @Override - public boolean fixedIpIsUsed(IpAddress fixedIpAddr, TenantId tenantId, - FloatingIpId floatingIpId) { - checkNotNull(fixedIpAddr, "Fixed IP address cannot be null"); - checkNotNull(tenantId, "Tenant Id cannot be null"); - checkNotNull(floatingIpId, "Floating IP Id cannot be null"); - Collection floatingIps = getFloatingIps(); - for (FloatingIp floatingIp : floatingIps) { - IpAddress fixedIp = floatingIp.fixedIp(); - if (fixedIp != null) { - if (fixedIp.equals(fixedIpAddr) - && floatingIp.tenantId().equals(tenantId) - && !floatingIp.id().equals(floatingIpId)) { - return true; - } - } - } - return false; - } - - @Override - public boolean createFloatingIps(Collection floatingIps) { - checkNotNull(floatingIps, FLOATINGIP_NOT_NULL); - boolean result = true; - for (FloatingIp floatingIp : floatingIps) { - verifyFloatingIpData(floatingIp); - floatingIpStore.put(floatingIp.id(), floatingIp); - if (!floatingIpStore.containsKey(floatingIp.id())) { - log.debug("The floating Ip is created failed whose identifier is {}", - floatingIp.id().toString()); - result = false; - } - } - return result; - } - - @Override - public boolean updateFloatingIps(Collection floatingIps) { - checkNotNull(floatingIps, FLOATINGIP_NOT_NULL); - boolean result = true; - for (FloatingIp floatingIp : floatingIps) { - verifyFloatingIpData(floatingIp); - FloatingIp oldFloatingIp = floatingIpStore.get(floatingIp.id()); - floatingIpBindStore.put(floatingIp.id(), oldFloatingIp); - floatingIpStore.put(floatingIp.id(), floatingIp); - if (!floatingIpStore.containsKey(floatingIp.id())) { - log.debug("The floating Ip is updated failed whose identifier is {}", - floatingIp.id().toString()); - result = false; - } - } - return result; - } - - @Override - public boolean removeFloatingIps(Collection floatingIpIds) { - checkNotNull(floatingIpIds, FLOATINGIP_ID_NOT_NULL); - boolean result = true; - for (FloatingIpId floatingIpId : floatingIpIds) { - if (!floatingIpStore.containsKey(floatingIpId)) { - log.debug("The floatingIp is not exist whose identifier is {}", - floatingIpId.toString()); - throw new IllegalArgumentException( - "FloatingIP ID doesn't exist"); - } - FloatingIp floatingIp = floatingIpStore.get(floatingIpId); - floatingIpStore.remove(floatingIpId, floatingIp); - floatingIpBindStore.remove(floatingIpId); - if (floatingIpStore.containsKey(floatingIpId)) { - log.debug("The floating Ip is deleted failed whose identifier is {}", - floatingIpId.toString()); - result = false; - } - } - return result; - } - - @Override - public void addListener(FloatingIpListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.add(listener); - } - - @Override - public void removeListener(FloatingIpListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.remove(listener); - } - - /** - * Verifies validity of FloatingIp data. - * - * @param floatingIps floatingIp instance - */ - private void verifyFloatingIpData(FloatingIp floatingIps) { - checkNotNull(floatingIps, FLOATINGIP_NOT_NULL); - if (!tenantNetworkService.exists(floatingIps.networkId())) { - log.debug("The network identifier {} that the floating Ip {} create for is not exist", - floatingIps.networkId().toString(), floatingIps.id() - .toString()); - throw new IllegalArgumentException( - "Floating network ID doesn't exist"); - } - - VirtualPortId portId = floatingIps.portId(); - if (portId != null && !virtualPortService.exists(portId)) { - log.debug("The port identifier {} that the floating Ip {} create for is not exist", - floatingIps.portId().toString(), floatingIps.id() - .toString()); - throw new IllegalArgumentException("Port ID doesn't exist"); - } - - RouterId routerId = floatingIps.routerId(); - if (routerId != null && !routerService.exists(routerId)) { - log.debug("The router identifier {} that the floating Ip {} create for is not exist", - floatingIps.routerId().toString(), floatingIps.id() - .toString()); - throw new IllegalArgumentException("Router ID doesn't exist"); - } - - if (floatingIpIsUsed(floatingIps.floatingIp(), floatingIps.id())) { - log.debug("The floaing Ip {} that the floating Ip {} create for is used", - floatingIps.floatingIp().toString(), floatingIps.id() - .toString()); - throw new IllegalArgumentException( - "The floating IP address is used"); - } - - IpAddress fixedIp = floatingIps.fixedIp(); - if (fixedIp != null - && fixedIpIsUsed(fixedIp, floatingIps.tenantId(), - floatingIps.id())) { - log.debug("The fixed Ip {} that the floating Ip {} create for is used", - floatingIps.fixedIp().toString(), floatingIps.id() - .toString()); - throw new IllegalArgumentException("The fixed IP address is used"); - } - } - - private class InnerFloatingIpStoreListener - implements - EventuallyConsistentMapListener { - - @Override - public void event(EventuallyConsistentMapEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - FloatingIp floatingIp = event.value(); - if (EventuallyConsistentMapEvent.Type.PUT == event.type()) { - notifyListeners(new FloatingIpEvent( - FloatingIpEvent.Type.FLOATINGIP_PUT, - floatingIp)); - if (floatingIp.portId() != null) { - notifyListeners(new FloatingIpEvent( - FloatingIpEvent.Type.FLOATINGIP_BIND, - floatingIp)); - } else { - FloatingIp oldFloatingIp = floatingIpBindStore.get(floatingIp.id()); - if (oldFloatingIp != null) { - notifyListeners(new FloatingIpEvent( - FloatingIpEvent.Type.FLOATINGIP_UNBIND, - oldFloatingIp)); - } - } - } - if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) { - notifyListeners(new FloatingIpEvent( - FloatingIpEvent.Type.FLOATINGIP_DELETE, - floatingIp)); - if (floatingIp.portId() != null) { - notifyListeners(new FloatingIpEvent( - FloatingIpEvent.Type.FLOATINGIP_UNBIND, - floatingIp)); - } - } - } - } - - /** - * Notifies specify event to all listeners. - * - * @param event Floating IP event - */ - private void notifyListeners(FloatingIpEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - listeners.forEach(listener -> listener.event(event)); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/package-info.java deleted file mode 100644 index c632e99ed8..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of the FloatingIp service. - */ -package org.onosproject.vtnrsc.floatingip.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/package-info.java deleted file mode 100644 index b17b9c0233..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/floatingip/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of FloatingIp. - */ -package org.onosproject.vtnrsc.floatingip; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierEvent.java deleted file mode 100644 index 463a2084b4..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierEvent.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.flowclassifier; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.vtnrsc.FlowClassifier; - -/** - * Describes network Flow-Classifier event. - */ -public class FlowClassifierEvent extends AbstractEvent { - /** - * Type of flow-classifier events. - */ - public enum Type { - /** - * Signifies that flow-classifier has been created. - */ - FLOW_CLASSIFIER_PUT, - /** - * Signifies that flow-classifier has been deleted. - */ - FLOW_CLASSIFIER_DELETE, - /** - * Signifies that flow-classifier has been updated. - */ - FLOW_CLASSIFIER_UPDATE - } - - /** - * Creates an event of a given type and for the specified Flow-Classifier. - * - * @param type Flow-Classifier event type - * @param flowClassifier Flow-Classifier subject - */ - public FlowClassifierEvent(Type type, FlowClassifier flowClassifier) { - super(type, flowClassifier); - } - - /** - * Creates an event of a given type and for the specified Flow-Classifier. - * - * @param type Flow-Classifier event type - * @param flowClassifier Flow-Classifier subject - * @param time occurrence time - */ - public FlowClassifierEvent(Type type, FlowClassifier flowClassifier, long time) { - super(type, flowClassifier, time); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierListener.java deleted file mode 100644 index eedbac1f03..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.flowclassifier; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of Flow-Classifier related events. - */ -public interface FlowClassifierListener extends EventListener { - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java deleted file mode 100644 index 0924bb9ac3..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.flowclassifier; - -import org.onosproject.event.ListenerService; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; - -/** - * Provides Services for Flow Classifier. - */ -public interface FlowClassifierService extends ListenerService { - - /** - * Check whether Flow Classifier is present based on given Flow Classifier - * Id. - * - * @param id flow classifier identifier - * @return true if flow classifier is present otherwise return false - */ - boolean exists(FlowClassifierId id); - - /** - * Returns the number of flow classifiers known to the system. - * - * @return number of flow classifiers - */ - int getFlowClassifierCount(); - - /** - * Store Flow Classifier. - * - * @param flowClassifier flow classifier - * @return true if adding flow classifier into store is success otherwise - * return false - */ - boolean createFlowClassifier(FlowClassifier flowClassifier); - - /** - * Return the existing collection of Flow Classifier. - * - * @return flow classifier collections - */ - Iterable getFlowClassifiers(); - - /** - * Retrieve the Flow Classifier based on given Flow Classifier id. - * - * @param id flow classifier identifier - * @return flow classifier if present otherwise returns null - */ - FlowClassifier getFlowClassifier(FlowClassifierId id); - - /** - * Update Flow Classifier based on given Flow Classifier Id. - * - * @param flowClassifier flow classifier - * @return true if flow classifier update is success otherwise return false - */ - boolean updateFlowClassifier(FlowClassifier flowClassifier); - - /** - * Remove Flow Classifier from store based on given Flow Classifier Id. - * - * @param id flow classifier identifier - * @return true if flow classifier removal is success otherwise return - * false - */ - boolean removeFlowClassifier(FlowClassifierId id); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java deleted file mode 100644 index 216a2c54cf..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.flowclassifier.impl; - -import com.google.common.collect.ImmutableList; -import org.onlab.packet.IpPrefix; -import org.onlab.util.KryoNamespace; -import org.onosproject.event.AbstractListenerManager; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.EventuallyConsistentMapEvent; -import org.onosproject.store.service.EventuallyConsistentMapListener; -import org.onosproject.store.service.MultiValuedTimestamp; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.DefaultFlowClassifier; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierEvent; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierListener; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the Flow Classifier Service. - */ -@Component(immediate = true, service = FlowClassifierService.class) -public class FlowClassifierManager extends AbstractListenerManager - implements FlowClassifierService { - - private static final String FLOW_CLASSIFIER_NOT_NULL = "Flow Classifier cannot be null"; - private static final String FLOW_CLASSIFIER_ID_NOT_NULL = "Flow Classifier Id cannot be null"; - private static final String LISTENER_NOT_NULL = "Listener cannot be null"; - private static final String EVENT_NOT_NULL = "event cannot be null"; - - private final Logger log = getLogger(FlowClassifierManager.class); - - private EventuallyConsistentMap flowClassifierStore; - - private EventuallyConsistentMapListener flowClassifierListener = - new InnerFlowClassifierStoreListener(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Activate - protected void activate() { - eventDispatcher.addSink(FlowClassifierEvent.class, listenerRegistry); - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API) - .register(MultiValuedTimestamp.class) - .register(FlowClassifier.class, FlowClassifierId.class, UUID.class, IpPrefix.class, - VirtualPortId.class, DefaultFlowClassifier.class, TenantId.class); - flowClassifierStore = storageService - .eventuallyConsistentMapBuilder() - .withName("flowclassifierstore").withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()).build(); - flowClassifierStore.addListener(flowClassifierListener); - log.info("Flow Classifier service activated"); - } - - @Deactivate - protected void deactivate() { - eventDispatcher.removeSink(FlowClassifierEvent.class); - flowClassifierStore.destroy(); - log.info("Flow Classifier service deactivated"); - } - - @Override - public boolean exists(FlowClassifierId id) { - checkNotNull(id, FLOW_CLASSIFIER_ID_NOT_NULL); - return flowClassifierStore.containsKey(id); - } - - @Override - public int getFlowClassifierCount() { - return flowClassifierStore.size(); - } - - @Override - public Iterable getFlowClassifiers() { - return ImmutableList.copyOf(flowClassifierStore.values()); - } - - @Override - public FlowClassifier getFlowClassifier(FlowClassifierId id) { - checkNotNull(id, FLOW_CLASSIFIER_ID_NOT_NULL); - return flowClassifierStore.get(id); - } - - @Override - public boolean createFlowClassifier(FlowClassifier flowClassifier) { - log.debug("createFlowClassifier"); - checkNotNull(flowClassifier, FLOW_CLASSIFIER_NOT_NULL); - FlowClassifierId id = flowClassifier.flowClassifierId(); - - flowClassifierStore.put(id, flowClassifier); - if (!flowClassifierStore.containsKey(id)) { - log.debug("Flow Classifier creation is failed whose identifier is {}.", id.toString()); - return false; - } - return true; - } - - @Override - public boolean updateFlowClassifier(FlowClassifier flowClassifier) { - checkNotNull(flowClassifier, FLOW_CLASSIFIER_NOT_NULL); - - if (!flowClassifierStore.containsKey(flowClassifier.flowClassifierId())) { - log.debug("The flowClassifier is not exist whose identifier was {} ", flowClassifier.flowClassifierId() - .toString()); - return false; - } - - flowClassifierStore.put(flowClassifier.flowClassifierId(), flowClassifier); - - if (!flowClassifier.equals(flowClassifierStore.get(flowClassifier.flowClassifierId()))) { - log.debug("Updation of flowClassifier is failed whose identifier was {} ", flowClassifier - .flowClassifierId().toString()); - return false; - } - return true; - } - - @Override - public boolean removeFlowClassifier(FlowClassifierId id) { - checkNotNull(id, FLOW_CLASSIFIER_ID_NOT_NULL); - flowClassifierStore.remove(id); - if (flowClassifierStore.containsKey(id)) { - log.debug("The Flow Classifier removal is failed whose identifier is {}", id.toString()); - return false; - } - return true; - } - - private class InnerFlowClassifierStoreListener - implements - EventuallyConsistentMapListener { - - @Override - public void event(EventuallyConsistentMapEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - FlowClassifier flowClassifier = event.value(); - if (EventuallyConsistentMapEvent.Type.PUT == event.type()) { - notifyListeners(new FlowClassifierEvent( - FlowClassifierEvent.Type.FLOW_CLASSIFIER_PUT, - flowClassifier)); - } - if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) { - notifyListeners(new FlowClassifierEvent( - FlowClassifierEvent.Type.FLOW_CLASSIFIER_DELETE, - flowClassifier)); - } - } - } - - /** - * Notifies specify event to all listeners. - * - * @param event flow classifier event - */ - private void notifyListeners(FlowClassifierEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - post(event); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/package-info.java deleted file mode 100644 index abcbe8bb20..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of the flow Classifier service. - */ -package org.onosproject.vtnrsc.flowclassifier.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/package-info.java deleted file mode 100644 index ea4aca23a1..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with flow Classifier of SFC. - */ -package org.onosproject.vtnrsc.flowclassifier; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/package-info.java deleted file mode 100644 index 1e663ddf57..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VTN resources that used by virtual tenant network. - */ -package org.onosproject.vtnrsc; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainEvent.java deleted file mode 100644 index bbc7c0f96e..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainEvent.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portchain; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.vtnrsc.PortChain; - -/** - * Describes network Port-Chain event. - */ -public class PortChainEvent extends AbstractEvent { - /** - * Type of port-chain events. - */ - public enum Type { - /** - * Signifies that port-chain has been created. - */ - PORT_CHAIN_PUT, - /** - * Signifies that port-chain has been deleted. - */ - PORT_CHAIN_DELETE, - /** - * Signifies that port-chain has been updated. - */ - PORT_CHAIN_UPDATE - } - - /** - * Creates an event of a given type and for the specified Port-Chain. - * - * @param type Port-Chain event type - * @param portChain Port-Chain subject - */ - public PortChainEvent(Type type, PortChain portChain) { - super(type, portChain); - } - - /** - * Creates an event of a given type and for the specified Port-Chain. - * - * @param type Port-Chain event type - * @param portChain Port-Chain subject - * @param time occurrence time - */ - public PortChainEvent(Type type, PortChain portChain, long time) { - super(type, portChain, time); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainListener.java deleted file mode 100644 index 9448ebd277..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portchain; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of Port-Chain related events. - */ -public interface PortChainListener extends EventListener { - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainService.java deleted file mode 100644 index 3b8727ca37..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/PortChainService.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portchain; - -import org.onosproject.event.ListenerService; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; - -/** - * Service for interacting with the inventory of port chains. - */ -public interface PortChainService extends ListenerService { - - /** - * Returns if the port chain is existed. - * - * @param portChainId port chain identifier - * @return true or false if one with the given identifier exists. - */ - boolean exists(PortChainId portChainId); - - /** - * Returns the number of port chains known to the system. - * - * @return number of port chains. - */ - int getPortChainCount(); - - /** - * Returns an iterable collection of the currently known port chains. - * - * @return collection of port chains. - */ - Iterable getPortChains(); - - /** - * Returns the portChain with the given identifier. - * - * @param portChainId port chain identifier - * @return PortChain or null if port chain with the given identifier is not - * known. - */ - PortChain getPortChain(PortChainId portChainId); - - /** - * Creates a PortChain in the store. - * - * @param portChain the port chain to create - * @return true if given port chain is created successfully. - */ - boolean createPortChain(PortChain portChain); - - /** - * Updates the portChain in the store. - * - * @param portChain the port chain to update - * @return true if given port chain is updated successfully. - */ - boolean updatePortChain(PortChain portChain); - - /** - * Deletes portChain by given portChainId. - * - * @param portChainId id of port chain to remove - * @return true if the give port chain is deleted successfully. - */ - boolean removePortChain(PortChainId portChainId); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/PortChainManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/PortChainManager.java deleted file mode 100644 index 6aa6bf3e35..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/PortChainManager.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portchain.impl; - -import org.onlab.util.KryoNamespace; -import org.onosproject.event.AbstractListenerManager; -import org.onosproject.net.DeviceId; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.EventuallyConsistentMapEvent; -import org.onosproject.store.service.EventuallyConsistentMapListener; -import org.onosproject.store.service.MultiValuedTimestamp; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.DefaultPortChain; -import org.onosproject.vtnrsc.FiveTuple; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.LoadBalanceId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.portchain.PortChainEvent; -import org.onosproject.vtnrsc.portchain.PortChainListener; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Collections; -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the portChainService. - */ -@Component(immediate = true, service = PortChainService.class) -public class PortChainManager extends AbstractListenerManager implements - PortChainService { - - private static final String PORT_CHAIN_ID_NULL = "PortChain ID cannot be null"; - private static final String PORT_CHAIN_NULL = "PortChain cannot be null"; - private static final String EVENT_NOT_NULL = "event cannot be null"; - - private final Logger log = getLogger(getClass()); - private EventuallyConsistentMap portChainStore; - - private EventuallyConsistentMapListener portChainListener = - new InnerPortChainStoreListener(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Activate - public void activate() { - - eventDispatcher.addSink(PortChainEvent.class, listenerRegistry); - - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API) - .register(MultiValuedTimestamp.class) - .register(PortChain.class, PortChainId.class, UUID.class, PortPairGroupId.class, - FlowClassifierId.class, FiveTuple.class, LoadBalanceId.class, DeviceId.class, - DefaultPortChain.class, PortPairId.class, TenantId.class); - - portChainStore = storageService - .eventuallyConsistentMapBuilder() - .withName("portchainstore").withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()).build(); - - portChainStore.addListener(portChainListener); - - log.info("Started"); - } - - @Deactivate - public void deactivate() { - eventDispatcher.removeSink(PortChainEvent.class); - portChainStore.removeListener(portChainListener); - portChainStore.destroy(); - log.info("Stopped"); - } - - @Override - public boolean exists(PortChainId portChainId) { - checkNotNull(portChainId, PORT_CHAIN_ID_NULL); - return portChainStore.containsKey(portChainId); - } - - @Override - public int getPortChainCount() { - return portChainStore.size(); - } - - @Override - public Iterable getPortChains() { - return Collections.unmodifiableCollection(portChainStore.values()); - } - - @Override - public PortChain getPortChain(PortChainId portChainId) { - checkNotNull(portChainId, PORT_CHAIN_ID_NULL); - return portChainStore.get(portChainId); - } - - @Override - public boolean createPortChain(PortChain portChain) { - checkNotNull(portChain, PORT_CHAIN_NULL); - - portChainStore.put(portChain.portChainId(), portChain); - if (!portChainStore.containsKey(portChain.portChainId())) { - log.error("The portChain created is failed which identifier was {}", portChain.portChainId() - .toString()); - return false; - } - return true; - } - - @Override - public boolean updatePortChain(PortChain portChain) { - checkNotNull(portChain, PORT_CHAIN_NULL); - PortChain oldPortChain = null; - if (!portChainStore.containsKey(portChain.portChainId())) { - log.warn("The portChain is not exist whose identifier was {} ", - portChain.portChainId().toString()); - return false; - } else { - oldPortChain = portChainStore.get(portChain.portChainId()); - } - PortChain newPortChain = DefaultPortChain.create(portChain, oldPortChain); - portChainStore.put(newPortChain.portChainId(), newPortChain); - - if (!newPortChain.equals(portChainStore.get(newPortChain.portChainId()))) { - log.debug("The portChain is updated failed whose identifier was {} ", - newPortChain.portChainId().toString()); - return false; - } - return true; - } - - @Override - public boolean removePortChain(PortChainId portChainId) { - checkNotNull(portChainId, PORT_CHAIN_NULL); - - portChainStore.remove(portChainId); - if (portChainStore.containsKey(portChainId)) { - log.debug("The portChain is removed failed whose identifier was {}", - portChainId.toString()); - return false; - } - return true; - } - - private class InnerPortChainStoreListener - implements - EventuallyConsistentMapListener { - - @Override - public void event(EventuallyConsistentMapEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - PortChain portChain = event.value(); - if (EventuallyConsistentMapEvent.Type.PUT == event.type()) { - notifyListeners(new PortChainEvent( - PortChainEvent.Type.PORT_CHAIN_PUT, - portChain)); - } - if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) { - notifyListeners(new PortChainEvent( - PortChainEvent.Type.PORT_CHAIN_DELETE, - portChain)); - } - } - } - - /** - * Notifies specify event to all listeners. - * - * @param event port chain event - */ - private void notifyListeners(PortChainEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - post(event); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/package-info.java deleted file mode 100644 index 84ac7d7589..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of service for interacting with the inventory of port chains. - */ -package org.onosproject.vtnrsc.portchain.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/package-info.java deleted file mode 100644 index 896e646c65..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchain/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of port chains. - */ -package org.onosproject.vtnrsc.portchain; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/PortChainSfMapService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/PortChainSfMapService.java deleted file mode 100644 index 33189e04d7..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/PortChainSfMapService.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portchainsfmap; - -import java.util.List; - -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.ServiceFunctionGroup; - -/** - * Service for interacting with the inventory of service functions for a given port chain. - */ -public interface PortChainSfMapService { - - /** - * Returns true if the port chain exists. - * - * @param portChainId port chain identifier - * @return true or false if one with the given identifier exists. - */ - boolean exists(PortChainId portChainId); - - /** - * Returns the list of service function groups available in the given port chain. - * - * @param portChainId port chain id - * @return list of service functions - */ - List getServiceFunctions(PortChainId portChainId); - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/PortChainSfMapManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/PortChainSfMapManager.java deleted file mode 100644 index 78737b3e81..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/PortChainSfMapManager.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portchainsfmap.impl; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.ServiceFunctionGroup; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.onosproject.vtnrsc.portchainsfmap.PortChainSfMapService; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.List; -import java.util.ListIterator; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the PortChainSfMapService. - * A port pair group is nothing but group of similar service functions. - * A port pair is nothing but a service function. - */ -@Component(immediate = true, service = PortChainSfMapService.class) -public class PortChainSfMapManager implements PortChainSfMapService { - - private static final String PORT_CHAIN_ID_NULL = "PortChain ID cannot be null"; - - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PortChainService portChainService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PortPairGroupService portPairGroupService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PortPairService portPairService; - - @Activate - public void activate() { - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); - } - - @Override - public boolean exists(PortChainId portChainId) { - checkNotNull(portChainId, PORT_CHAIN_ID_NULL); - return portChainService.exists(portChainId); - } - - @Override - public List getServiceFunctions(PortChainId portChainId) { - List serviceFunctionGroupList = Lists.newArrayList(); - PortChain portChain = portChainService.getPortChain(portChainId); - // Go through the port pair group list - List portPairGrpList = portChain.portPairGroups(); - ListIterator listGrpIterator = portPairGrpList.listIterator(); - - while (listGrpIterator.hasNext()) { - PortPairGroupId portPairGroupId = listGrpIterator.next(); - PortPairGroup portPairGroup = portPairGroupService.getPortPairGroup(portPairGroupId); - ServiceFunctionGroup sfg = new ServiceFunctionGroup(portPairGroup.name(), portPairGroup.description(), - portPairGroup.portPairLoadMap()); - serviceFunctionGroupList.add(sfg); - } - return ImmutableList.copyOf(serviceFunctionGroupList); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/package-info.java deleted file mode 100644 index dd75dbca16..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of port chains to get details of service functions and stats. - */ -package org.onosproject.vtnrsc.portchainsfmap.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/package-info.java deleted file mode 100644 index 1fb4183fd2..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portchainsfmap/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of port chains to get details of service functions and stats. - */ -package org.onosproject.vtnrsc.portchainsfmap; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairEvent.java deleted file mode 100644 index b08b0b2bb2..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairEvent.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpair; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.vtnrsc.PortPair; - -/** - * Describes network Port-Pair event. - */ -public class PortPairEvent extends AbstractEvent { - /** - * Type of port-pair events. - */ - public enum Type { - /** - * Signifies that port-pair has been created. - */ - PORT_PAIR_PUT, - /** - * Signifies that port-pair has been deleted. - */ - PORT_PAIR_DELETE, - /** - * Signifies that port-pair has been updated. - */ - PORT_PAIR_UPDATE - } - - /** - * Creates an event of a given type and for the specified Port-Pair. - * - * @param type Port-Pair event type - * @param portPair Port-Pair subject - */ - public PortPairEvent(Type type, PortPair portPair) { - super(type, portPair); - } - - /** - * Creates an event of a given type and for the specified Port-Pair. - * - * @param type Port-Pair event type - * @param portPair Port-Pair subject - * @param time occurrence time - */ - public PortPairEvent(Type type, PortPair portPair, long time) { - super(type, portPair, time); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairListener.java deleted file mode 100644 index 75d9dc9569..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpair; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of Port-Pair related events. - */ -public interface PortPairListener extends EventListener { - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java deleted file mode 100644 index add238f3a7..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/PortPairService.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpair; - -import org.onosproject.event.ListenerService; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -/** - * Service for interacting with the inventory of port pairs. - */ -public interface PortPairService extends ListenerService { - - /** - * Returns if the port pair is existed. - * - * @param portPairId port pair identifier - * @return true or false if one with the given identifier exists. - */ - boolean exists(PortPairId portPairId); - - /** - * Returns the number of port pairs known to the system. - * - * @return number of port pairs. - */ - int getPortPairCount(); - - /** - * Returns an iterable collection of the currently known port pairs. - * - * @return collection of port pairs. - */ - Iterable getPortPairs(); - - /** - * Returns the portPair with the given identifier. - * - * @param portPairId port pair identifier - * @return PortPair or null if port pair with the given identifier is not - * known. - */ - PortPair getPortPair(PortPairId portPairId); - - /** - * Creates a PortPair in the store. - * - * @param portPair the port pair to create - * @return true if given port pair is created successfully. - */ - boolean createPortPair(PortPair portPair); - - /** - * Updates the portPair in the store. - * - * @param portPair the port pair to update - * @return true if given port pair is updated successfully. - */ - boolean updatePortPair(PortPair portPair); - - /** - * Deletes portPair by given portPairId. - * - * @param portPairId id of port pair to remove - * @return true if the give port pair is deleted successfully. - */ - boolean removePortPair(PortPairId portPairId); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java deleted file mode 100644 index 47dbe1cf7d..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/PortPairManager.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpair.impl; - -import org.onlab.util.KryoNamespace; -import org.onosproject.event.AbstractListenerManager; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.EventuallyConsistentMapEvent; -import org.onosproject.store.service.EventuallyConsistentMapListener; -import org.onosproject.store.service.MultiValuedTimestamp; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.DefaultPortPair; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.portpair.PortPairEvent; -import org.onosproject.vtnrsc.portpair.PortPairListener; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Collections; -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the portPairService. - */ -@Component(immediate = true, service = PortPairService.class) -public class PortPairManager extends AbstractListenerManager implements - PortPairService { - - private static final String PORT_PAIR_ID_NULL = "PortPair ID cannot be null"; - private static final String PORT_PAIR_NULL = "PortPair cannot be null"; - private static final String LISTENER_NOT_NULL = "Listener cannot be null"; - private static final String EVENT_NOT_NULL = "event cannot be null"; - - private final Logger log = getLogger(getClass()); - - private EventuallyConsistentMap portPairStore; - - private EventuallyConsistentMapListener portPairListener = - new InnerPortPairStoreListener(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Activate - public void activate() { - - eventDispatcher.addSink(PortPairEvent.class, listenerRegistry); - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API) - .register(MultiValuedTimestamp.class) - .register(PortPair.class, PortPairId.class, UUID.class, DefaultPortPair.class, TenantId.class); - - portPairStore = storageService.eventuallyConsistentMapBuilder() - .withName("portpairstore") - .withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - - portPairStore.addListener(portPairListener); - - log.info("Started"); - } - - @Deactivate - public void deactivate() { - eventDispatcher.removeSink(PortPairEvent.class); - portPairStore.destroy(); - log.info("Stopped"); - } - - @Override - public boolean exists(PortPairId portPairId) { - checkNotNull(portPairId, PORT_PAIR_ID_NULL); - return portPairStore.containsKey(portPairId); - } - - @Override - public int getPortPairCount() { - return portPairStore.size(); - } - - @Override - public Iterable getPortPairs() { - return Collections.unmodifiableCollection(portPairStore.values()); - } - - @Override - public PortPair getPortPair(PortPairId portPairId) { - checkNotNull(portPairId, PORT_PAIR_ID_NULL); - return portPairStore.get(portPairId); - } - - @Override - public boolean createPortPair(PortPair portPair) { - checkNotNull(portPair, PORT_PAIR_NULL); - - portPairStore.put(portPair.portPairId(), portPair); - if (!portPairStore.containsKey(portPair.portPairId())) { - log.debug("The portPair is created failed which identifier was {}", portPair.portPairId().toString()); - return false; - } - return true; - } - - @Override - public boolean updatePortPair(PortPair portPair) { - checkNotNull(portPair, PORT_PAIR_NULL); - - if (!portPairStore.containsKey(portPair.portPairId())) { - log.debug("The portPair is not exist whose identifier was {} ", portPair.portPairId().toString()); - return false; - } - - portPairStore.put(portPair.portPairId(), portPair); - - if (!portPair.equals(portPairStore.get(portPair.portPairId()))) { - log.debug("The portPair is updated failed whose identifier was {} ", portPair.portPairId().toString()); - return false; - } - return true; - } - - @Override - public boolean removePortPair(PortPairId portPairId) { - checkNotNull(portPairId, PORT_PAIR_NULL); - - portPairStore.remove(portPairId); - if (portPairStore.containsKey(portPairId)) { - log.debug("The portPair is removed failed whose identifier was {}", portPairId.toString()); - return false; - } - return true; - } - - private class InnerPortPairStoreListener - implements - EventuallyConsistentMapListener { - - @Override - public void event(EventuallyConsistentMapEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - PortPair portPair = event.value(); - if (EventuallyConsistentMapEvent.Type.PUT == event.type()) { - notifyListeners(new PortPairEvent( - PortPairEvent.Type.PORT_PAIR_PUT, - portPair)); - } - if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) { - notifyListeners(new PortPairEvent( - PortPairEvent.Type.PORT_PAIR_DELETE, - portPair)); - } - } - } - - /** - * Notifies specify event to all listeners. - * - * @param event port pair event - */ - private void notifyListeners(PortPairEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - post(event); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/package-info.java deleted file mode 100644 index f4b5583cb3..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of service for interacting with the inventory of port pairs. - */ -package org.onosproject.vtnrsc.portpair.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/package-info.java deleted file mode 100644 index 449c3bdaaf..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpair/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of port pairs. - */ -package org.onosproject.vtnrsc.portpair; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupEvent.java deleted file mode 100644 index 917e6dce3c..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupEvent.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpairgroup; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.vtnrsc.PortPairGroup; - -/** - * Describes network Port-Pair-Group event. - */ -public class PortPairGroupEvent extends AbstractEvent { - /** - * Type of port-pair-group events. - */ - public enum Type { - /** - * Signifies that port-pair-group has been created. - */ - PORT_PAIR_GROUP_PUT, - /** - * Signifies that port-pair-group has been deleted. - */ - PORT_PAIR_GROUP_DELETE, - /** - * Signifies that port-pair-group has been updated. - */ - PORT_PAIR_GROUP_UPDATE - } - - /** - * Creates an event of a given type and for the specified Port-Pair-Group. - * - * @param type Port-Pair-Group event type - * @param portPairGroup Port-Pair-Group subject - */ - public PortPairGroupEvent(Type type, PortPairGroup portPairGroup) { - super(type, portPairGroup); - } - - /** - * Creates an event of a given type and for the specified Port-Pair-Group. - * - * @param type Port-Pair-Group event type - * @param portPairGroup Port-Pair-Group subject - * @param time occurrence time - */ - public PortPairGroupEvent(Type type, PortPairGroup portPairGroup, long time) { - super(type, portPairGroup, time); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupListener.java deleted file mode 100644 index e591be4232..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpairgroup; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of Port-Pair-Group related events. - */ -public interface PortPairGroupListener extends EventListener { - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java deleted file mode 100644 index f78dccf6d3..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpairgroup; - -import org.onosproject.event.ListenerService; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; - -/** - * Service for interacting with the inventory of port pair groups. - */ -public interface PortPairGroupService extends ListenerService { - - /** - * Returns if the port pair group is existed. - * - * @param portPairGroupId port pair group identifier - * @return true or false if one with the given identifier exists. - */ - boolean exists(PortPairGroupId portPairGroupId); - - /** - * Returns the number of port pair groups known to the system. - * - * @return number of port pair groups. - */ - int getPortPairGroupCount(); - - /** - * Returns an iterable collection of the currently known port pair groups. - * - * @return collection of port pair groups. - */ - Iterable getPortPairGroups(); - - /** - * Returns the portPairGroup with the given identifier. - * - * @param portPairGroupId port pair group identifier - * @return PortPairGroup or null if port pair group with the given identifier is not - * known. - */ - PortPairGroup getPortPairGroup(PortPairGroupId portPairGroupId); - - /** - * Creates a PortPairGroup in the store. - * - * @param portPairGroup the port pair group to create - * @return true if given port pair group is created successfully. - */ - boolean createPortPairGroup(PortPairGroup portPairGroup); - - /** - * Updates the portPairGroup in the store. - * - * @param portPairGroup the port pair group to update - * @return true if given port pair group is updated successfully. - */ - boolean updatePortPairGroup(PortPairGroup portPairGroup); - - /** - * Deletes portPairGroup by given portPairGroupId. - * - * @param portPairGroupId id of port pair group to remove - * @return true if the give port pair group is deleted successfully. - */ - boolean removePortPairGroup(PortPairGroupId portPairGroupId); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java deleted file mode 100644 index f5ff8e895d..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpairgroup.impl; - -import org.onlab.util.KryoNamespace; -import org.onosproject.event.AbstractListenerManager; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.EventuallyConsistentMapEvent; -import org.onosproject.store.service.EventuallyConsistentMapListener; -import org.onosproject.store.service.MultiValuedTimestamp; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.DefaultPortPairGroup; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupEvent; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupListener; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Collections; -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the portPairGroupService. - */ -@Component(immediate = true, service = PortPairGroupService.class) -public class PortPairGroupManager extends AbstractListenerManager implements - PortPairGroupService { - - private static final String PORT_PAIR_GROUP_ID_NULL = "PortPairGroup ID cannot be null"; - private static final String PORT_PAIR_GROUP_NULL = "PortPairGroup cannot be null"; - private static final String LISTENER_NOT_NULL = "Listener cannot be null"; - private static final String EVENT_NOT_NULL = "event cannot be null"; - - private final Logger log = getLogger(getClass()); - - private EventuallyConsistentMap portPairGroupStore; - - private EventuallyConsistentMapListener portPairGroupListener = - new InnerPortPairGroupStoreListener(); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Activate - public void activate() { - eventDispatcher.addSink(PortPairGroupEvent.class, listenerRegistry); - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API) - .register(MultiValuedTimestamp.class) - .register(PortPairGroup.class, PortPairGroupId.class, UUID.class, DefaultPortPairGroup.class, - TenantId.class, PortPairId.class); - - portPairGroupStore = storageService - .eventuallyConsistentMapBuilder() - .withName("portpairgroupstore").withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()).build(); - - portPairGroupStore.addListener(portPairGroupListener); - - log.info("Started"); - } - - @Deactivate - public void deactivate() { - eventDispatcher.removeSink(PortPairGroupEvent.class); - portPairGroupStore.destroy(); - log.info("Stopped"); - } - - @Override - public boolean exists(PortPairGroupId portPairGroupId) { - checkNotNull(portPairGroupId, PORT_PAIR_GROUP_ID_NULL); - return portPairGroupStore.containsKey(portPairGroupId); - } - - @Override - public int getPortPairGroupCount() { - return portPairGroupStore.size(); - } - - @Override - public Iterable getPortPairGroups() { - return Collections.unmodifiableCollection(portPairGroupStore.values()); - } - - @Override - public PortPairGroup getPortPairGroup(PortPairGroupId portPairGroupId) { - checkNotNull(portPairGroupId, PORT_PAIR_GROUP_ID_NULL); - return portPairGroupStore.get(portPairGroupId); - } - - @Override - public boolean createPortPairGroup(PortPairGroup portPairGroup) { - checkNotNull(portPairGroup, PORT_PAIR_GROUP_NULL); - - portPairGroupStore.put(portPairGroup.portPairGroupId(), portPairGroup); - if (!portPairGroupStore.containsKey(portPairGroup.portPairGroupId())) { - log.debug("The portPairGroup is created failed which identifier was {}", portPairGroup.portPairGroupId() - .toString()); - return false; - } - return true; - } - - @Override - public boolean updatePortPairGroup(PortPairGroup portPairGroup) { - checkNotNull(portPairGroup, PORT_PAIR_GROUP_NULL); - - if (!portPairGroupStore.containsKey(portPairGroup.portPairGroupId())) { - log.debug("The portPairGroup is not exist whose identifier was {} ", - portPairGroup.portPairGroupId().toString()); - return false; - } - - portPairGroupStore.put(portPairGroup.portPairGroupId(), portPairGroup); - - if (!portPairGroup.equals(portPairGroupStore.get(portPairGroup.portPairGroupId()))) { - log.debug("The portPairGroup is updated failed whose identifier was {} ", - portPairGroup.portPairGroupId().toString()); - return false; - } - return true; - } - - @Override - public boolean removePortPairGroup(PortPairGroupId portPairGroupId) { - checkNotNull(portPairGroupId, PORT_PAIR_GROUP_NULL); - - portPairGroupStore.remove(portPairGroupId); - if (portPairGroupStore.containsKey(portPairGroupId)) { - log.debug("The portPairGroup is removed failed whose identifier was {}", - portPairGroupId.toString()); - return false; - } - return true; - } - - - private class InnerPortPairGroupStoreListener - implements - EventuallyConsistentMapListener { - - @Override - public void event(EventuallyConsistentMapEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - PortPairGroup portPairGroup = event.value(); - if (EventuallyConsistentMapEvent.Type.PUT == event.type()) { - notifyListeners(new PortPairGroupEvent( - PortPairGroupEvent.Type.PORT_PAIR_GROUP_PUT, - portPairGroup)); - } - if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) { - notifyListeners(new PortPairGroupEvent( - PortPairGroupEvent.Type.PORT_PAIR_GROUP_DELETE, - portPairGroup)); - } - } - } - - /** - * Notifies specify event to all listeners. - * - * @param event PortPairGroup event - */ - private void notifyListeners(PortPairGroupEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - post(event); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/package-info.java deleted file mode 100644 index 1286ca7af8..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of service for interacting with the inventory of port pair groups. - */ -package org.onosproject.vtnrsc.portpairgroup.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/package-info.java deleted file mode 100644 index 506448e3e5..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of port pair groups. - */ -package org.onosproject.vtnrsc.portpairgroup; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterEvent.java deleted file mode 100644 index cacbf0d7a1..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterEvent.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.router; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.vtnrsc.Router; - -/** - * Describes network Router event. - */ -public class RouterEvent extends AbstractEvent { - /** - * Type of Router events. - */ - public enum Type { - /** - * Signifies that router has been created. - */ - ROUTER_PUT, - /** - * Signifies that router has been deleted. - */ - ROUTER_DELETE - } - - /** - * Creates an event of a given type and for the specified Router. - * - * @param type Router event type - * @param router Router subject - */ - public RouterEvent(Type type, Router router) { - super(type, router); - } - - /** - * Creates an event of a given type and for the specified Router. - * - * @param type Router event type - * @param router Router subject - * @param time occurrence time - */ - public RouterEvent(Type type, Router router, long time) { - super(type, router, time); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterListener.java deleted file mode 100644 index b75cef54aa..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.router; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of Router related events. - */ -public interface RouterListener extends EventListener { - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterService.java deleted file mode 100644 index 001b01e71e..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/RouterService.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.router; - -import java.util.Collection; - -import org.onosproject.vtnrsc.Router; -import org.onosproject.vtnrsc.RouterId; - -/** - * Service for interacting with the inventory of Routers. - */ -public interface RouterService { - /** - * Returns exists or not of specific router identifier. - * - * @param routerId router identifier - * @return true or false - */ - boolean exists(RouterId routerId); - - /** - * Returns a collection of the currently known Routers. - * - * @return collection of Routers - */ - Collection getRouters(); - - /** - * Returns the Router with the specified identifier. - * - * @param routerId Router identifier - * @return Router or null if one with the given identifier is not known - */ - Router getRouter(RouterId routerId); - - /** - * Creates new Routers. - * - * @param routers the collection of Routers - * @return true if the identifier Router has been created right. - * false if the identifier Router is failed to store - */ - boolean createRouters(Collection routers); - - /** - * Updates existing Routers. - * - * @param routers the collection of Routers - * @return true if Routers were updated successfully. - * false if Routers were updated failed - */ - boolean updateRouters(Collection routers); - - /** - * Removes the specified Routers from the store. - * - * @param routerIds the collection of Routers identifier - * @return true if remove identifier Routers successfully. false if remove - * identifier Routers failed - */ - boolean removeRouters(Collection routerIds); - - /** - * Adds the specified listener to Router manager. - * - * @param listener Router listener - */ - void addListener(RouterListener listener); - - /** - * Removes the specified listener to Router manager. - * - * @param listener Router listener - */ - void removeListener(RouterListener listener); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/RouterManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/RouterManager.java deleted file mode 100644 index 8954a384d9..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/RouterManager.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.router.impl; - -import com.google.common.collect.Sets; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.EventuallyConsistentMapEvent; -import org.onosproject.store.service.EventuallyConsistentMapListener; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.DefaultRouter; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.Router; -import org.onosproject.vtnrsc.RouterGateway; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.router.RouterEvent; -import org.onosproject.vtnrsc.router.RouterListener; -import org.onosproject.vtnrsc.router.RouterService; -import org.onosproject.vtnrsc.subnet.SubnetService; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Collection; -import java.util.Collections; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the Router service. - */ -@Component(immediate = true, service = RouterService.class) -public class RouterManager implements RouterService { - - private static final String ROUTER_ID_NULL = "Router ID cannot be null"; - private static final String ROUTER_NOT_NULL = "Router cannot be null"; - private static final String ROUTER = "vtn-router-store"; - private static final String VTNRSC_APP = "org.onosproject.vtnrsc"; - private static final String LISTENER_NOT_NULL = "Listener cannot be null"; - private static final String EVENT_NOT_NULL = "event cannot be null"; - - private final Logger log = getLogger(getClass()); - private final Set listeners = Sets.newCopyOnWriteArraySet(); - private EventuallyConsistentMapListener routerListener = new InnerRouterStoreListener(); - protected EventuallyConsistentMap routerStore; - protected ApplicationId appId; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TenantNetworkService tenantNetworkService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VirtualPortService virtualPortService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected SubnetService subnetService; - - @Activate - public void activate() { - appId = coreService.registerApplication(VTNRSC_APP); - KryoNamespace.Builder serializer = KryoNamespace - .newBuilder() - .register(KryoNamespaces.API) - .register(Router.class, RouterId.class, DefaultRouter.class, - TenantNetworkId.class, TenantId.class, - VirtualPortId.class, DefaultRouter.class, - RouterGateway.class, Router.Status.class, - SubnetId.class, FixedIp.class); - routerStore = storageService - .eventuallyConsistentMapBuilder() - .withName(ROUTER).withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - routerStore.addListener(routerListener); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - routerStore.removeListener(routerListener); - routerStore.destroy(); - listeners.clear(); - log.info("Stopped"); - } - - @Override - public boolean exists(RouterId routerId) { - checkNotNull(routerId, ROUTER_ID_NULL); - return routerStore.containsKey(routerId); - } - - @Override - public Collection getRouters() { - return Collections.unmodifiableCollection(routerStore.values()); - } - - @Override - public Router getRouter(RouterId routerId) { - checkNotNull(routerId, ROUTER_ID_NULL); - return routerStore.get(routerId); - } - - @Override - public boolean createRouters(Collection routers) { - checkNotNull(routers, ROUTER_NOT_NULL); - for (Router router : routers) { - verifyRouterData(router); - routerStore.put(router.id(), router); - if (!routerStore.containsKey(router.id())) { - log.debug("The router is created failed whose identifier is {}", - router.id().toString()); - return false; - } - } - return true; - } - - @Override - public boolean updateRouters(Collection routers) { - checkNotNull(routers, ROUTER_NOT_NULL); - for (Router router : routers) { - if (!routerStore.containsKey(router.id())) { - log.debug("The routers is not exist whose identifier is {}", - router.id().toString()); - throw new IllegalArgumentException( - "routers ID doesn't exist"); - } - verifyRouterData(router); - routerStore.put(router.id(), router); - if (!router.equals(routerStore.get(router.id()))) { - log.debug("The router is updated failed whose identifier is {}", - router.id().toString()); - return false; - } - } - return true; - } - - @Override - public boolean removeRouters(Collection routerIds) { - checkNotNull(routerIds, ROUTER_ID_NULL); - for (RouterId routerId : routerIds) { - if (!routerStore.containsKey(routerId)) { - log.debug("The router is not exist whose identifier is {}", - routerId.toString()); - throw new IllegalArgumentException( - "router ID doesn't exist"); - } - Router router = routerStore.get(routerId); - routerStore.remove(routerId, router); - if (routerStore.containsKey(routerId)) { - log.debug("The router deleted is failed whose identifier is {}", - routerId.toString()); - return false; - } - } - return true; - } - - @Override - public void addListener(RouterListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.add(listener); - } - - @Override - public void removeListener(RouterListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.remove(listener); - } - - /** - * Verifies validity of Router data. - * - * @param routers router instance - */ - private void verifyRouterData(Router routers) { - checkNotNull(routers, ROUTER_NOT_NULL); - if (routers.gatewayPortid() != null - && !virtualPortService.exists(routers.gatewayPortid())) { - log.debug("The gateway port ID is not exist whose identifier is {}", - routers.gatewayPortid().toString()); - throw new IllegalArgumentException("gateway port ID doesn't exist"); - } - - if (routers.externalGatewayInfo() != null) { - RouterGateway routerGateway = routers.externalGatewayInfo(); - if (!tenantNetworkService.exists(routerGateway.networkId())) { - log.debug("The network ID of gateway info is not exist whose identifier is {}", - routers.id().toString()); - throw new IllegalArgumentException( - "network ID of gateway info doesn't exist"); - } - Iterable fixedIps = routerGateway.externalFixedIps(); - for (FixedIp fixedIp : fixedIps) { - if (!subnetService.exists(fixedIp.subnetId())) { - log.debug("The subnet ID of gateway info is not exist whose identifier is {}", - routers.id().toString()); - throw new IllegalArgumentException( - "subnet ID of gateway info doesn't exist"); - } - } - } - } - - private class InnerRouterStoreListener - implements EventuallyConsistentMapListener { - - @Override - public void event(EventuallyConsistentMapEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - Router router = event.value(); - if (EventuallyConsistentMapEvent.Type.PUT == event.type()) { - notifyListeners(new RouterEvent(RouterEvent.Type.ROUTER_PUT, - router)); - } - if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) { - notifyListeners(new RouterEvent(RouterEvent.Type.ROUTER_DELETE, - router)); - } - } - } - - /** - * Notifies specify event to all listeners. - * - * @param event Floating IP event - */ - private void notifyListeners(RouterEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - listeners.forEach(listener -> listener.event(event)); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/package-info.java deleted file mode 100644 index 38cbc44a1a..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of the Router service. - */ -package org.onosproject.vtnrsc.router.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/package-info.java deleted file mode 100644 index 4da56b8699..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/router/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of Router. - */ -package org.onosproject.vtnrsc.router; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceEvent.java deleted file mode 100644 index b6754b1224..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceEvent.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.routerinterface; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.vtnrsc.RouterInterface; - -/** - * Describes network Router Interface event. - */ -public class RouterInterfaceEvent - extends AbstractEvent { - - /** - * Type of Router Interface events. - */ - public enum Type { - /** - * Signifies that router interface has been added. - */ - ROUTER_INTERFACE_PUT, - /** - * Signifies that router interface has been removed. - */ - ROUTER_INTERFACE_DELETE - } - - /** - * Creates an event of a given type and for the specified Router Interface. - * - * @param type Router Interface event type - * @param routerInterface Router Interface subject - */ - public RouterInterfaceEvent(Type type, RouterInterface routerInterface) { - super(type, routerInterface); - } - - /** - * Creates an event of a given type and for the specified Router Interface. - * - * @param type Router Interface event type. - * @param routerInterface Router Interface subject - * @param time occurrence time - */ - public RouterInterfaceEvent(Type type, RouterInterface routerInterface, - long time) { - super(type, routerInterface, time); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceListener.java deleted file mode 100644 index e1fdae4161..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceListener.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc.routerinterface; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of Router Interface related events. - */ -public interface RouterInterfaceListener - extends EventListener { - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceService.java deleted file mode 100644 index 76ea44bd5d..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/RouterInterfaceService.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.routerinterface; - -import java.util.Collection; - -import org.onosproject.vtnrsc.RouterInterface; -import org.onosproject.vtnrsc.SubnetId; - -/** - * Service for interacting with the inventory of Router interface. - */ -public interface RouterInterfaceService { - /** - * Returns exists or not of specific subnet identifier. - * - * @param subnetId subnet identifier - * @return true or false - */ - boolean exists(SubnetId subnetId); - - /** - * Returns a collection of the currently known Router interface. - * - * @return collection of RouterInterface - */ - Collection getRouterInterfaces(); - - /** - * Returns the Router interface with the specified subnet identifier. - * - * @param subnetId subnet identifier - * @return RouterInterface or null if one with the given identifier is not - * known - */ - RouterInterface getRouterInterface(SubnetId subnetId); - - /** - * Adds the specified RouterInterface. - * - * @param routerInterface the interface add to router - * @return true if add router interface successfully - */ - boolean addRouterInterface(RouterInterface routerInterface); - - /** - * Removes the specified RouterInterface. - * - * @param routerInterface the interface remove from router - * @return true if remove router interface successfully - */ - boolean removeRouterInterface(RouterInterface routerInterface); - - /** - * Adds the specified listener to Router Interface manager. - * - * @param listener Router Interface listener - */ - void addListener(RouterInterfaceListener listener); - - /** - * Removes the specified listener to RouterInterface manager. - * - * @param listener Router Interface listener - */ - void removeListener(RouterInterfaceListener listener); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/RouterInterfaceManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/RouterInterfaceManager.java deleted file mode 100644 index 854efd9e09..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/RouterInterfaceManager.java +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.routerinterface.impl; - -import com.google.common.collect.Sets; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.EventuallyConsistentMapEvent; -import org.onosproject.store.service.EventuallyConsistentMapListener; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.RouterInterface; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.router.RouterService; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceEvent; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceListener; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService; -import org.onosproject.vtnrsc.subnet.SubnetService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Collection; -import java.util.Collections; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the Router interface service. - */ -@Component(immediate = true, service = RouterInterfaceService.class) -public class RouterInterfaceManager implements RouterInterfaceService { - private static final String SUBNET_ID_NULL = "Subnet ID cannot be null"; - private static final String ROUTER_INTERFACE_NULL = "Router Interface cannot be null"; - private static final String ROUTER_INTERFACE = "vtn-router-interface-store"; - private static final String VTNRSC_APP = "org.onosproject.vtnrsc"; - private static final String LISTENER_NOT_NULL = "Listener cannot be null"; - private static final String EVENT_NOT_NULL = "event cannot be null"; - - private final Logger log = getLogger(getClass()); - private final Set listeners = Sets - .newCopyOnWriteArraySet(); - private EventuallyConsistentMapListener routerInterfaceListener = - new InnerRouterInterfaceStoreListener(); - protected EventuallyConsistentMap routerInterfaceStore; - protected ApplicationId appId; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VirtualPortService virtualPortService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected SubnetService subnetService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected RouterService routerService; - - @Activate - public void activate() { - appId = coreService.registerApplication(VTNRSC_APP); - KryoNamespace.Builder serializer = KryoNamespace - .newBuilder() - .register(KryoNamespaces.API) - .register(RouterId.class, TenantId.class, VirtualPortId.class, - RouterInterface.class, SubnetId.class); - routerInterfaceStore = storageService - .eventuallyConsistentMapBuilder() - .withName(ROUTER_INTERFACE).withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - routerInterfaceStore.addListener(routerInterfaceListener); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - routerInterfaceStore.removeListener(routerInterfaceListener); - routerInterfaceStore.destroy(); - listeners.clear(); - log.info("Stopped"); - } - - @Override - public boolean exists(SubnetId subnetId) { - checkNotNull(subnetId, SUBNET_ID_NULL); - return routerInterfaceStore.containsKey(subnetId); - } - - @Override - public Collection getRouterInterfaces() { - return Collections - .unmodifiableCollection(routerInterfaceStore.values()); - } - - @Override - public RouterInterface getRouterInterface(SubnetId subnetId) { - checkNotNull(subnetId, SUBNET_ID_NULL); - return routerInterfaceStore.get(subnetId); - } - - @Override - public boolean addRouterInterface(RouterInterface routerInterface) { - checkNotNull(routerInterface, ROUTER_INTERFACE_NULL); - if (!virtualPortService.exists(routerInterface.portId())) { - log.debug("The port ID of interface is not exist whose identifier is {}", - routerInterface.portId().toString()); - throw new IllegalArgumentException( - "port ID of interface doesn't exist"); - } - verifyRouterInterfaceData(routerInterface); - routerInterfaceStore.put(routerInterface.subnetId(), routerInterface); - if (!routerInterfaceStore.containsKey(routerInterface.subnetId())) { - log.debug("The router interface is created failed whose identifier is {}", - routerInterface.subnetId().toString()); - return false; - } - return true; - } - - @Override - public boolean removeRouterInterface(RouterInterface routerInterface) { - checkNotNull(routerInterface, ROUTER_INTERFACE_NULL); - if (!routerInterfaceStore.containsKey(routerInterface.subnetId())) { - log.debug("The router interface is not exist whose identifier is {}", - routerInterface.subnetId().toString()); - throw new IllegalArgumentException("subnet ID doesn't exist"); - } - verifyRouterInterfaceData(routerInterface); - routerInterfaceStore - .remove(routerInterface.subnetId(), routerInterface); - if (routerInterfaceStore.containsKey(routerInterface.subnetId())) { - log.debug("The router interface deleted is failed whose identifier is {}", - routerInterface.subnetId().toString()); - return false; - } - return true; - } - - @Override - public void addListener(RouterInterfaceListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.add(listener); - } - - @Override - public void removeListener(RouterInterfaceListener listener) { - checkNotNull(listener, LISTENER_NOT_NULL); - listeners.remove(listener); - } - - /** - * Verifies validity of Router interface data. - * - * @param routers router instance - */ - private void verifyRouterInterfaceData(RouterInterface routerInterface) { - checkNotNull(routerInterface, ROUTER_INTERFACE_NULL); - if (!subnetService.exists(routerInterface.subnetId())) { - log.debug("The subnet ID of interface is not exist whose identifier is {}", - routerInterface.subnetId().toString()); - throw new IllegalArgumentException( - "subnet ID of interface doesn't exist"); - } - if (!routerService.exists(routerInterface.routerId())) { - log.debug("The router ID of interface is not exist whose identifier is {}", - routerInterface.routerId().toString()); - throw new IllegalArgumentException( - "router ID of interface doesn't exist"); - } - } - - private class InnerRouterInterfaceStoreListener - implements - EventuallyConsistentMapListener { - - @Override - public void event(EventuallyConsistentMapEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - RouterInterface routerInterface = event.value(); - if (EventuallyConsistentMapEvent.Type.PUT == event.type()) { - notifyListeners(new RouterInterfaceEvent( - RouterInterfaceEvent.Type.ROUTER_INTERFACE_PUT, - routerInterface)); - } - if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) { - notifyListeners(new RouterInterfaceEvent( - RouterInterfaceEvent.Type.ROUTER_INTERFACE_DELETE, - routerInterface)); - } - } - } - - /** - * Notifies specify event to all listeners. - * - * @param event Floating IP event - */ - private void notifyListeners(RouterInterfaceEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - listeners.forEach(listener -> listener.event(event)); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/package-info.java deleted file mode 100644 index b7824bff27..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of the RouterInterface service. - */ -package org.onosproject.vtnrsc.routerinterface.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/package-info.java deleted file mode 100644 index 9dea3c3a75..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/routerinterface/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of RouterInterface. - */ -package org.onosproject.vtnrsc.routerinterface; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/VtnRscService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/VtnRscService.java deleted file mode 100644 index fd81987368..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/VtnRscService.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.service; - -import org.onlab.packet.MacAddress; -import org.onosproject.event.ListenerService; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantRouter; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.event.VtnRscEvent; -import org.onosproject.vtnrsc.event.VtnRscListener; - -import java.util.Iterator; - -/** - * Service for interacting with the inventory of Vtn resource. - */ -public interface VtnRscService extends ListenerService { - /** - * Returns the SegmentationId of tenant. - * - * @param tenantId tenant identifier - * @return SegmentationId the SegmentationId of tenant - */ - SegmentationId getL3vni(TenantId tenantId); - - /** - * Returns the SegmentationId of tenantRouter. - * - * @param tenantRouter TenantRouter - * @return SegmentationId the SegmentationId of tenantRouter - */ - SegmentationId getL3vni(TenantRouter tenantRouter); - - /** - * Returns Classifier Ovs list of the specific tenant. - * - * @param tenantId tenant identifier - * @return iterable collection of Device - */ - Iterator getClassifierOfTenant(TenantId tenantId); - - /** - * Returns Service function forwarders Ovs list of the specific tenant. - * - * @param tenantId tenant identifier - * @return iterable collection of Device - */ - Iterator getSffOfTenant(TenantId tenantId); - - /** - * Returns gateway mac address of the specific host. - * - * @param hostId host identifier - * @return MacAddress of host - */ - MacAddress getGatewayMac(HostId hostId); - - /** - * Checks if a specific port is a service function. - * - * @param portId port identifier - * @return true or false - */ - boolean isServiceFunction(VirtualPortId portId); - - /** - * Returns device identifier mapping to the specific port. - * - * @param portId port identifier - * @return device identifier - */ - DeviceId getSfToSffMaping(VirtualPortId portId); - - /** - * Adds specify Device identifier to Service Function Forward OvsMap - * or Classifier OvsMap. - * - * @param virtualPortId the VirtualPort identifier - * @param tenantId the tenant identifier - * @param deviceId the device identifier - */ - void addDeviceIdOfOvsMap(VirtualPortId virtualPortId, TenantId tenantId, DeviceId deviceId); - - /** - * Removes specify Device identifier from Service Function Forward OvsMap - * or Classifier OvsMap. - * - * @param host Host - * @param tenantId the tenant identifier - * @param deviceId the device identifier - */ - void removeDeviceIdOfOvsMap(Host host, TenantId tenantId, DeviceId deviceId); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/VtnRscManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/VtnRscManager.java deleted file mode 100644 index 37f2de4169..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/VtnRscManager.java +++ /dev/null @@ -1,625 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.service.impl; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.CoreService; -import org.onosproject.event.AbstractListenerManager; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.device.DeviceService; -import org.onosproject.net.host.HostService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.LogicalClockService; -import org.onosproject.store.service.StorageService; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.Router; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.RouterInterface; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantRouter; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.event.VtnRscEvent; -import org.onosproject.vtnrsc.event.VtnRscEventFeedback; -import org.onosproject.vtnrsc.event.VtnRscListener; -import org.onosproject.vtnrsc.floatingip.FloatingIpEvent; -import org.onosproject.vtnrsc.floatingip.FloatingIpListener; -import org.onosproject.vtnrsc.floatingip.FloatingIpService; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierEvent; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierListener; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; -import org.onosproject.vtnrsc.portchain.PortChainEvent; -import org.onosproject.vtnrsc.portchain.PortChainListener; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.onosproject.vtnrsc.portpair.PortPairEvent; -import org.onosproject.vtnrsc.portpair.PortPairListener; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupEvent; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupListener; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.onosproject.vtnrsc.router.RouterEvent; -import org.onosproject.vtnrsc.router.RouterListener; -import org.onosproject.vtnrsc.router.RouterService; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceEvent; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceListener; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService; -import org.onosproject.vtnrsc.service.VtnRscService; -import org.onosproject.vtnrsc.subnet.SubnetService; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortEvent; -import org.onosproject.vtnrsc.virtualport.VirtualPortListener; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the VtnRsc service. - */ -@Component(immediate = true, service = VtnRscService.class) -public class VtnRscManager extends AbstractListenerManager - implements VtnRscService { - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected LogicalClockService clockService; - - private final Logger log = getLogger(getClass()); - private FloatingIpListener floatingIpListener = new InnerFloatingIpListener(); - private RouterListener routerListener = new InnerRouterListener(); - private RouterInterfaceListener routerInterfaceListener = new InnerRouterInterfaceListener(); - private PortPairListener portPairListener = new InnerPortPairListener(); - private PortPairGroupListener portPairGroupListener = new InnerPortPairGroupListener(); - private FlowClassifierListener flowClassifierListener = new InnerFlowClassifierListener(); - private PortChainListener portChainListener = new InnerPortChainListener(); - private VirtualPortListener virtualPortListener = new InnerVirtualPortListener(); - - private EventuallyConsistentMap l3vniTenantMap; - private EventuallyConsistentMap l3vniTenantRouterMap; - private EventuallyConsistentMap> classifierOvsMap; - private EventuallyConsistentMap> sffOvsMap; - - private static final String IFACEID = "ifaceid"; - private static final String RUNNELOPTOPOIC = "tunnel-ops-ids"; - private static final String EVENT_NOT_NULL = "event cannot be null"; - private static final String TENANTID_NOT_NULL = "tenantId cannot be null"; - private static final String DEVICEID_NOT_NULL = "deviceId cannot be null"; - private static final String VIRTUALPORTID_NOT_NULL = "virtualPortId cannot be null"; - private static final String HOST_NOT_NULL = "host cannot be null"; - private static final String L3VNITENANTMAP = "l3vniTenantMap"; - private static final String L3VNITENANTROUTERMAP = "l3vniTenantRouterMap"; - private static final String CLASSIFIEROVSMAP = "classifierOvsMap"; - private static final String SFFOVSMAP = "sffOvsMap"; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected RouterService routerService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected FloatingIpService floatingIpService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected RouterInterfaceService routerInterfaceService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected VirtualPortService virtualPortService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected HostService hostService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected SubnetService subnetService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TenantNetworkService tenantNetworkService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DeviceService deviceService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PortPairService portPairService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PortPairGroupService portPairGroupService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected FlowClassifierService flowClassifierService; - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected PortChainService portChainService; - - @Activate - public void activate() { - eventDispatcher.addSink(VtnRscEvent.class, listenerRegistry); - floatingIpService.addListener(floatingIpListener); - routerService.addListener(routerListener); - routerInterfaceService.addListener(routerInterfaceListener); - portPairService.addListener(portPairListener); - portPairGroupService.addListener(portPairGroupListener); - flowClassifierService.addListener(flowClassifierListener); - portChainService.addListener(portChainListener); - virtualPortService.addListener(virtualPortListener); - - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API) - .register(TenantId.class, SegmentationId.class, - TenantRouter.class, RouterId.class); - l3vniTenantMap = storageService - .eventuallyConsistentMapBuilder() - .withName(L3VNITENANTMAP).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - l3vniTenantRouterMap = storageService - .eventuallyConsistentMapBuilder() - .withName(L3VNITENANTROUTERMAP).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - classifierOvsMap = storageService - .>eventuallyConsistentMapBuilder() - .withName(CLASSIFIEROVSMAP).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - - sffOvsMap = storageService - .>eventuallyConsistentMapBuilder() - .withName(SFFOVSMAP).withSerializer(serializer) - .withTimestampProvider((k, v) -> clockService.getTimestamp()) - .build(); - } - - @Deactivate - public void deactivate() { - eventDispatcher.removeSink(VtnRscEvent.class); - floatingIpService.removeListener(floatingIpListener); - routerService.removeListener(routerListener); - routerInterfaceService.removeListener(routerInterfaceListener); - portPairService.removeListener(portPairListener); - portPairGroupService.removeListener(portPairGroupListener); - flowClassifierService.removeListener(flowClassifierListener); - portChainService.removeListener(portChainListener); - virtualPortService.removeListener(virtualPortListener); - - l3vniTenantMap.destroy(); - l3vniTenantRouterMap.destroy(); - classifierOvsMap.destroy(); - sffOvsMap.destroy(); - log.info("Stopped"); - } - - @Override - public SegmentationId getL3vni(TenantId tenantId) { - checkNotNull(tenantId, "tenantId cannot be null"); - SegmentationId l3vni = l3vniTenantMap.get(tenantId); - if (l3vni == null) { - long segmentationId = coreService.getIdGenerator(RUNNELOPTOPOIC) - .getNewId(); - l3vni = SegmentationId.segmentationId(String - .valueOf(segmentationId)); - l3vniTenantMap.put(tenantId, l3vni); - } - return l3vni; - } - - @Override - public SegmentationId getL3vni(TenantRouter tenantRouter) { - checkNotNull(tenantRouter, "tenantRouter cannot be null"); - SegmentationId l3vni = l3vniTenantRouterMap.get(tenantRouter); - if (l3vni == null) { - long segmentationId = coreService.getIdGenerator(RUNNELOPTOPOIC) - .getNewId(); - l3vni = SegmentationId.segmentationId(String - .valueOf(segmentationId)); - l3vniTenantRouterMap.put(tenantRouter, l3vni); - } - return l3vni; - } - - private class InnerFloatingIpListener implements FloatingIpListener { - - @Override - public void event(FloatingIpEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - FloatingIp floatingIp = event.subject(); - if (FloatingIpEvent.Type.FLOATINGIP_PUT == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.FLOATINGIP_PUT, - new VtnRscEventFeedback( - floatingIp))); - } - if (FloatingIpEvent.Type.FLOATINGIP_DELETE == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.FLOATINGIP_DELETE, - new VtnRscEventFeedback( - floatingIp))); - } - if (FloatingIpEvent.Type.FLOATINGIP_BIND == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.FLOATINGIP_BIND, - new VtnRscEventFeedback( - floatingIp))); - } - if (FloatingIpEvent.Type.FLOATINGIP_UNBIND == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.FLOATINGIP_UNBIND, - new VtnRscEventFeedback( - floatingIp))); - } - } - } - - private class InnerRouterListener implements RouterListener { - - @Override - public void event(RouterEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - Router router = event.subject(); - if (RouterEvent.Type.ROUTER_PUT == event.type()) { - notifyListeners(new VtnRscEvent(VtnRscEvent.Type.ROUTER_PUT, - new VtnRscEventFeedback(router))); - } - if (RouterEvent.Type.ROUTER_DELETE == event.type()) { - notifyListeners(new VtnRscEvent(VtnRscEvent.Type.ROUTER_DELETE, - new VtnRscEventFeedback(router))); - } - } - } - - private class InnerRouterInterfaceListener - implements RouterInterfaceListener { - - @Override - public void event(RouterInterfaceEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - RouterInterface routerInterface = event.subject(); - if (RouterInterfaceEvent.Type.ROUTER_INTERFACE_PUT == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.ROUTER_INTERFACE_PUT, - new VtnRscEventFeedback( - routerInterface))); - } - if (RouterInterfaceEvent.Type.ROUTER_INTERFACE_DELETE == event - .type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.ROUTER_INTERFACE_DELETE, - new VtnRscEventFeedback( - routerInterface))); - } - } - } - - private class InnerPortPairListener implements PortPairListener { - - @Override - public void event(PortPairEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - PortPair portPair = event.subject(); - if (PortPairEvent.Type.PORT_PAIR_PUT == event.type()) { - notifyListeners(new VtnRscEvent(VtnRscEvent.Type.PORT_PAIR_PUT, - new VtnRscEventFeedback(portPair))); - } else if (PortPairEvent.Type.PORT_PAIR_DELETE == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.PORT_PAIR_DELETE, - new VtnRscEventFeedback(portPair))); - } else if (PortPairEvent.Type.PORT_PAIR_UPDATE == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.PORT_PAIR_UPDATE, - new VtnRscEventFeedback(portPair))); - } - } - } - - private class InnerPortPairGroupListener implements PortPairGroupListener { - - @Override - public void event(PortPairGroupEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - PortPairGroup portPairGroup = event.subject(); - if (PortPairGroupEvent.Type.PORT_PAIR_GROUP_PUT == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.PORT_PAIR_GROUP_PUT, - new VtnRscEventFeedback(portPairGroup))); - } else if (PortPairGroupEvent.Type.PORT_PAIR_GROUP_DELETE == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.PORT_PAIR_GROUP_DELETE, - new VtnRscEventFeedback(portPairGroup))); - } else if (PortPairGroupEvent.Type.PORT_PAIR_GROUP_UPDATE == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.PORT_PAIR_GROUP_UPDATE, - new VtnRscEventFeedback(portPairGroup))); - } - } - } - - private class InnerFlowClassifierListener implements FlowClassifierListener { - - @Override - public void event(FlowClassifierEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - FlowClassifier flowClassifier = event.subject(); - if (FlowClassifierEvent.Type.FLOW_CLASSIFIER_PUT == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.FLOW_CLASSIFIER_PUT, - new VtnRscEventFeedback(flowClassifier))); - } else if (FlowClassifierEvent.Type.FLOW_CLASSIFIER_DELETE == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.FLOW_CLASSIFIER_DELETE, - new VtnRscEventFeedback(flowClassifier))); - } else if (FlowClassifierEvent.Type.FLOW_CLASSIFIER_UPDATE == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.FLOW_CLASSIFIER_UPDATE, - new VtnRscEventFeedback(flowClassifier))); - } - } - } - - private class InnerPortChainListener implements PortChainListener { - - @Override - public void event(PortChainEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - PortChain portChain = event.subject(); - if (PortChainEvent.Type.PORT_CHAIN_PUT == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.PORT_CHAIN_PUT, - new VtnRscEventFeedback(portChain))); - } else if (PortChainEvent.Type.PORT_CHAIN_DELETE == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.PORT_CHAIN_DELETE, - new VtnRscEventFeedback(portChain))); - } else if (PortChainEvent.Type.PORT_CHAIN_UPDATE == event.type()) { - notifyListeners(new VtnRscEvent( - VtnRscEvent.Type.PORT_CHAIN_UPDATE, - new VtnRscEventFeedback(portChain))); - } - } - } - - private class InnerVirtualPortListener implements VirtualPortListener { - - @Override - public void event(VirtualPortEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - VirtualPort virtualPort = event.subject(); - if (VirtualPortEvent.Type.VIRTUAL_PORT_PUT == event.type()) { - notifyListeners(new VtnRscEvent(VtnRscEvent.Type.VIRTUAL_PORT_PUT, - new VtnRscEventFeedback(virtualPort))); - } else if (VirtualPortEvent.Type.VIRTUAL_PORT_DELETE == event.type()) { - notifyListeners(new VtnRscEvent(VtnRscEvent.Type.VIRTUAL_PORT_DELETE, - new VtnRscEventFeedback(virtualPort))); - } - } - } - - @Override - public Iterator getClassifierOfTenant(TenantId tenantId) { - checkNotNull(tenantId, TENANTID_NOT_NULL); - Set deviceIdSet = classifierOvsMap.get(tenantId); - Set deviceSet = new HashSet<>(); - if (deviceIdSet != null) { - for (DeviceId deviceId : deviceIdSet) { - deviceSet.add(deviceService.getDevice(deviceId)); - } - } - return deviceSet.iterator(); - } - - @Override - public Iterator getSffOfTenant(TenantId tenantId) { - checkNotNull(tenantId, TENANTID_NOT_NULL); - Set deviceIdSet = sffOvsMap.get(tenantId); - Set deviceSet = new HashSet<>(); - if (deviceIdSet != null) { - for (DeviceId deviceId : deviceIdSet) { - deviceSet.add(deviceService.getDevice(deviceId)); - } - } - return deviceSet.iterator(); - } - - @Override - public MacAddress getGatewayMac(HostId hostId) { - checkNotNull(hostId, "hostId cannot be null"); - Host host = hostService.getHost(hostId); - String ifaceId = host.annotations().value(IFACEID); - VirtualPortId hPortId = VirtualPortId.portId(ifaceId); - VirtualPort hPort = virtualPortService.getPort(hPortId); - SubnetId subnetId = hPort.fixedIps().iterator().next().subnetId(); - Subnet subnet = subnetService.getSubnet(subnetId); - IpAddress gatewayIp = subnet.gatewayIp(); - Iterable virtualPorts = virtualPortService.getPorts(); - MacAddress macAddress = null; - for (VirtualPort port : virtualPorts) { - Set fixedIpSet = port.fixedIps(); - for (FixedIp fixedIp : fixedIpSet) { - if (fixedIp.ip().equals(gatewayIp)) { - macAddress = port.macAddress(); - } - } - } - return macAddress; - } - - @Override - public boolean isServiceFunction(VirtualPortId portId) { - return portPairService.exists(PortPairId.of(portId.portId())); - } - - @Override - public DeviceId getSfToSffMaping(VirtualPortId portId) { - checkNotNull(portId, "portId cannot be null"); - VirtualPort vmPort = virtualPortService.getPort(portId); - Set hostSet = hostService.getHostsByMac(vmPort.macAddress()); - for (Host host : hostSet) { - if (host.annotations().value(IFACEID).equals(vmPort.portId().portId())) { - return host.location().deviceId(); - } - } - return null; - } - - @Override - public void addDeviceIdOfOvsMap(VirtualPortId virtualPortId, - TenantId tenantId, DeviceId deviceId) { - checkNotNull(virtualPortId, VIRTUALPORTID_NOT_NULL); - checkNotNull(tenantId, TENANTID_NOT_NULL); - checkNotNull(deviceId, DEVICEID_NOT_NULL); - if (isServiceFunction(virtualPortId)) { - addDeviceIdToSpecificMap(tenantId, deviceId, sffOvsMap); - } else { - addDeviceIdToSpecificMap(tenantId, deviceId, classifierOvsMap); - } - } - - @Override - public void removeDeviceIdOfOvsMap(Host host, TenantId tenantId, DeviceId deviceId) { - checkNotNull(host, HOST_NOT_NULL); - checkNotNull(tenantId, TENANTID_NOT_NULL); - checkNotNull(deviceId, DEVICEID_NOT_NULL); - if (isLastSFHostOfTenant(host, deviceId, tenantId)) { - removeDeviceIdToSpecificMap(tenantId, deviceId, sffOvsMap); - } - if (isLastClassifierHostOfTenant(host, deviceId, tenantId)) { - removeDeviceIdToSpecificMap(tenantId, deviceId, classifierOvsMap); - } - } - - /** - * Checks whether the last Service Function host of a specific tenant in - * this device. - * - * @param host the host on device - * @param deviceId the device identifier - * @param tenantId the tenant identifier - * @return true or false - */ - private boolean isLastSFHostOfTenant(Host host, DeviceId deviceId, - TenantId tenantId) { - Set hostSet = hostService.getConnectedHosts(deviceId); - if (hostSet != null) { - for (Host h : hostSet) { - String ifaceId = h.annotations().value(IFACEID); - if (ifaceId != null) { - VirtualPortId hPortId = VirtualPortId.portId(ifaceId); - if (virtualPortService.getPort(hPortId).tenantId().tenantId() - .equals(tenantId.tenantId()) - && isServiceFunction(hPortId)) { - if (!h.equals(host)) { - return false; - } - } - } - } - } - return true; - } - - /** - * Checks whether the last Classifier host of a specific tenant in this - * device. - * - * @param host the host on device - * @param deviceId the device identifier - * @param tenantId the tenant identifier - * @return true or false - */ - private boolean isLastClassifierHostOfTenant(Host host, DeviceId deviceId, - TenantId tenantId) { - Set hostSet = hostService.getConnectedHosts(deviceId); - if (hostSet != null) { - for (Host h : hostSet) { - String ifaceId = h.annotations().value(IFACEID); - if (ifaceId != null) { - VirtualPortId hPortId = VirtualPortId.portId(ifaceId); - if (virtualPortService.getPort(hPortId).tenantId().tenantId() - .equals(tenantId.tenantId()) - && !isServiceFunction(hPortId)) { - if (!h.equals(host)) { - return false; - } - } - } - } - } - return true; - } - - /** - * Adds specify Device identifier to OvsMap. - * - * @param tenantId the tenant identifier - * @param deviceId the device identifier - * @param ovsMap the instance of map to store device identifier - */ - private void addDeviceIdToSpecificMap(TenantId tenantId, - DeviceId deviceId, - EventuallyConsistentMap> ovsMap) { - if (ovsMap.containsKey(tenantId)) { - Set deviceIdSet = ovsMap.get(tenantId); - deviceIdSet.add(deviceId); - ovsMap.put(tenantId, deviceIdSet); - } else { - Set deviceIdSet = new HashSet<>(); - deviceIdSet.add(deviceId); - ovsMap.put(tenantId, deviceIdSet); - } - } - - /** - * Removes specify Device identifier from OvsMap. - * - * @param tenantId the tenant identifier - * @param deviceId the device identifier - * @param ovsMap the instance of map to store device identifier - */ - private void removeDeviceIdToSpecificMap(TenantId tenantId, - DeviceId deviceId, - EventuallyConsistentMap> ovsMap) { - Set deviceIdSet = ovsMap.get(tenantId); - if (deviceIdSet != null && deviceIdSet.size() > 1) { - deviceIdSet.remove(deviceId); - ovsMap.put(tenantId, deviceIdSet); - } else { - ovsMap.remove(tenantId); - } - } - - /** - * Notifies specify event to all listeners. - * - * @param event VtnRsc event - */ - private void notifyListeners(VtnRscEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - post(event); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/package-info.java deleted file mode 100644 index 687deecbc8..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of the VtnRsc service. - */ -package org.onosproject.vtnrsc.service.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/package-info.java deleted file mode 100644 index f7325ae5d1..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of Vtn resource. - */ -package org.onosproject.vtnrsc.service; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/SubnetService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/SubnetService.java deleted file mode 100644 index 047b244a14..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/SubnetService.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.subnet; - -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.SubnetId; - - -/** - * Service for interacting with the inventory of subnets. - */ -public interface SubnetService { - /** - * Returns the subnet with the specified identifier. - * - * @param subnetId subnet identifier - * @return true or false - */ - boolean exists(SubnetId subnetId); - /** - * Returns a collection of the currently known subnets. - * - * @return iterable collection of subnets - */ - Iterable getSubnets(); - - /** - * Returns the subnet with the specified identifier. - * - * @param subnetId subnet identifier - * @return subnet or null if one with the given identifier is not known - */ - Subnet getSubnet(SubnetId subnetId); - /** - * Creates new subnets. - * - * @param subnets the iterable collection of subnets - * @return true if the identifier subnet has been created right - */ - boolean createSubnets(Iterable subnets); - - /** - * Updates existing subnets. - * - * @param subnets the iterable collection of subnets - * @return true if all subnets were updated successfully - */ - boolean updateSubnets(Iterable subnets); - - /** - * Administratively removes the specified subnets from the store. - * - * @param subnetIds the iterable collection of subnets identifier - * @return true if remove identifier subnets successfully - */ - boolean removeSubnets(Iterable subnetIds); - - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/SubnetManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/SubnetManager.java deleted file mode 100644 index 5d13cb1fe9..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/SubnetManager.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.subnet.impl; - -import org.onlab.packet.IpAddress; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.onosproject.vtnrsc.AllocationPool; -import org.onosproject.vtnrsc.DefaultAllocationPool; -import org.onosproject.vtnrsc.DefaultHostRoute; -import org.onosproject.vtnrsc.DefaultSubnet; -import org.onosproject.vtnrsc.HostRoute; -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.subnet.SubnetService; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Arrays; -import java.util.Collections; -import java.util.Map; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the Subnet service. - */ -@Component(immediate = true, service = SubnetService.class) -public class SubnetManager implements SubnetService { - - private static final String SUBNET_ID_NULL = "Subnet ID cannot be null"; - private static final String SUBNET_NOT_NULL = "Subnet cannot be null"; - private static final String SUBNET = "vtn-subnet-store"; - private static final String VTNRSC_APP = "org.onosproject.vtnrsc"; - - - private final Logger log = getLogger(getClass()); - - protected Map subnetStore; - protected ApplicationId appId; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TenantNetworkService tenantNetworkService; - - @Activate - public void activate() { - - appId = coreService.registerApplication(VTNRSC_APP); - - subnetStore = storageService.consistentMapBuilder() - .withName(SUBNET) - .withApplicationId(appId) - .withPurgeOnUninstall() - .withSerializer(Serializer.using(Arrays.asList(KryoNamespaces.API), - Subnet.class, - SubnetId.class, - TenantNetworkId.class, - TenantId.class, - HostRoute.class, - DefaultHostRoute.class, - Subnet.Mode.class, - AllocationPool.class, - DefaultAllocationPool.class, - DefaultSubnet.class, - IpAddress.Version.class)) - .build().asJavaMap(); - - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); - } - - @Override - public Iterable getSubnets() { - return Collections.unmodifiableCollection(subnetStore.values()); - } - - @Override - public Subnet getSubnet(SubnetId subnetId) { - checkNotNull(subnetId, SUBNET_ID_NULL); - return subnetStore.get(subnetId); - } - - @Override - public boolean exists(SubnetId subnetId) { - checkNotNull(subnetId, SUBNET_ID_NULL); - return subnetStore.containsKey(subnetId); - } - - @Override - public boolean createSubnets(Iterable subnets) { - checkNotNull(subnets, SUBNET_NOT_NULL); - for (Subnet subnet : subnets) { - if (!tenantNetworkService.exists(subnet.networkId())) { - log.debug("The network identifier that the subnet {} belong to is not exist", - subnet.networkId().toString(), subnet.id().toString()); - return false; - } - subnetStore.put(subnet.id(), subnet); - if (!subnetStore.containsKey(subnet.id())) { - log.debug("The identified subnet whose identifier is {} create failed", - subnet.id().toString()); - return false; - } - } - return true; - } - - @Override - public boolean updateSubnets(Iterable subnets) { - checkNotNull(subnets, SUBNET_NOT_NULL); - for (Subnet subnet : subnets) { - if (!subnetStore.containsKey(subnet.id())) { - log.debug("The subnet is not exist whose identifier is {}", - subnet.id().toString()); - return false; - } - - subnetStore.put(subnet.id(), subnet); - - if (!subnet.equals(subnetStore.get(subnet.id()))) { - log.debug("The subnet is updated failed whose identifier is {}", - subnet.id().toString()); - return false; - } - } - return true; - } - - @Override - public boolean removeSubnets(Iterable subnetIds) { - checkNotNull(subnetIds, SUBNET_ID_NULL); - for (SubnetId subnetId : subnetIds) { - subnetStore.remove(subnetId); - if (subnetStore.containsKey(subnetId)) { - log.debug("The subnet created is failed whose identifier is {}", - subnetId.toString()); - return false; - } - } - return true; - } - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/package-info.java deleted file mode 100644 index cff1593213..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of the Subnet service. - */ -package org.onosproject.vtnrsc.subnet.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/package-info.java deleted file mode 100644 index 26c27ff766..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/subnet/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of subnets. - */ -package org.onosproject.vtnrsc.subnet; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkService.java deleted file mode 100644 index 296c0e8074..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/TenantNetworkService.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.tenantnetwork; - -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; - -/** - * Service for interacting with the inventory of tenantNetwork. - */ -public interface TenantNetworkService { - - /** - * Returns if the tenantNetwork is existed. - * - * @param networkId tenantNetwork identifier - * @return true or false if one with the given identifier exists. - */ - boolean exists(TenantNetworkId networkId); - - /** - * Returns the number of tenantNetwork known to the system. - * - * @return number of tenantNetwork. - */ - int getNetworkCount(); - - /** - * Returns an iterable collection of the currently known tenantNetwork. - * - * @return collection of tenantNetwork. - */ - Iterable getNetworks(); - - /** - * Returns the tenantNetwork with the identifier. - * - * @param networkId TenantNetwork identifier - * @return TenantNetwork or null if one with the given identifier is not - * known. - */ - TenantNetwork getNetwork(TenantNetworkId networkId); - - /** - * Creates tenantNetworks by networks. - * - * @param networks the collection of tenantNetworks - * @return true if all given identifiers created successfully. - */ - boolean createNetworks(Iterable networks); - - /** - * Updates tenantNetworks by tenantNetworks. - * - * @param networks the collection of tenantNetworks - * @return true if all given identifiers updated successfully. - */ - boolean updateNetworks(Iterable networks); - - /** - * Deletes tenantNetwork by tenantNetworkIds. - * - * @param networksIds the collection of tenantNetworkIds - * @return true if the specified tenantNetworks deleted successfully. - */ - boolean removeNetworks(Iterable networksIds); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/TenantNetworkManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/TenantNetworkManager.java deleted file mode 100644 index 753e38af70..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/TenantNetworkManager.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.tenantnetwork.impl; - -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.Serializer; -import org.onosproject.store.service.StorageService; -import org.onosproject.vtnrsc.DefaultTenantNetwork; -import org.onosproject.vtnrsc.PhysicalNetwork; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.Arrays; -import java.util.Collections; -import java.util.Map; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Provides implementation of the tenantNetworkService. - */ -@Component(immediate = true, service = TenantNetworkService.class) -public class TenantNetworkManager implements TenantNetworkService { - - private static final String NETWORK_ID_NULL = "Network ID cannot be null"; - private static final String NETWORK_NOT_NULL = "Network ID cannot be null"; - private static final String TENANTNETWORK = "vtn-tenant-network-store"; - private static final String VTNRSC_APP = "org.onosproject.vtnrsc"; - - protected Map networkIdAsKeyStore; - protected ApplicationId appId; - - private final Logger log = getLogger(getClass()); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - - @Activate - public void activate() { - - appId = coreService.registerApplication(VTNRSC_APP); - - networkIdAsKeyStore = storageService.consistentMapBuilder() - .withName(TENANTNETWORK) - .withApplicationId(appId) - .withPurgeOnUninstall() - .withSerializer(Serializer.using(Arrays.asList(KryoNamespaces.API), - TenantNetworkId.class, - DefaultTenantNetwork.class, - TenantNetwork.State.class, - TenantId.class, - TenantNetwork.Type.class, - PhysicalNetwork.class, - SegmentationId.class)) - .build().asJavaMap(); - - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); - } - - @Override - public boolean exists(TenantNetworkId networkId) { - checkNotNull(networkId, NETWORK_ID_NULL); - return networkIdAsKeyStore.containsKey(networkId); - } - - @Override - public int getNetworkCount() { - return networkIdAsKeyStore.size(); - } - - @Override - public Iterable getNetworks() { - return Collections.unmodifiableCollection(networkIdAsKeyStore.values()); - } - - @Override - public TenantNetwork getNetwork(TenantNetworkId networkId) { - checkNotNull(networkId, NETWORK_ID_NULL); - return networkIdAsKeyStore.get(networkId); - } - - @Override - public boolean createNetworks(Iterable networks) { - checkNotNull(networks, NETWORK_NOT_NULL); - for (TenantNetwork network : networks) { - networkIdAsKeyStore.put(network.id(), network); - if (!networkIdAsKeyStore.containsKey(network.id())) { - log.debug("The tenantNetwork is created failed which identifier was {}", network.id() - .toString()); - return false; - } - } - return true; - } - - @Override - public boolean updateNetworks(Iterable networks) { - checkNotNull(networks, NETWORK_NOT_NULL); - for (TenantNetwork network : networks) { - if (!networkIdAsKeyStore.containsKey(network.id())) { - log.debug("The tenantNetwork is not exist whose identifier was {} ", - network.id().toString()); - return false; - } - - networkIdAsKeyStore.put(network.id(), network); - - if (!network.equals(networkIdAsKeyStore.get(network.id()))) { - log.debug("The tenantNetwork is updated failed whose identifier was {} ", - network.id().toString()); - return false; - } - - } - return true; - } - - @Override - public boolean removeNetworks(Iterable networkIds) { - checkNotNull(networkIds, NETWORK_NOT_NULL); - for (TenantNetworkId networkId : networkIds) { - networkIdAsKeyStore.remove(networkId); - if (networkIdAsKeyStore.containsKey(networkId)) { - log.debug("The tenantNetwork is removed failed whose identifier was {}", - networkId.toString()); - return false; - } - } - return true; - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/package-info.java deleted file mode 100644 index c243f26c93..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of service for interacting with the inventory of tenant networks. - */ -package org.onosproject.vtnrsc.tenantnetwork.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/package-info.java deleted file mode 100644 index a99d3ccb9f..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/tenantnetwork/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of tenant networks. - */ -package org.onosproject.vtnrsc.tenantnetwork; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortEvent.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortEvent.java deleted file mode 100644 index e991bf8d72..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortEvent.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.virtualport; - -import org.onosproject.event.AbstractEvent; -import org.onosproject.vtnrsc.VirtualPort; - -/** - * Describes virtual port event. - */ -public class VirtualPortEvent extends AbstractEvent { - /** - * Type of virtual port events. - */ - public enum Type { - /** - * Signifies that virtual port has been created. - */ - VIRTUAL_PORT_PUT, - /** - * Signifies that virtual port has been deleted. - */ - VIRTUAL_PORT_DELETE, - /** - * Signifies that virtual port has been updated. - */ - VIRTUAL_PORT_UPDATE - } - - /** - * Creates an event of a given type and for the specified virtual port. - * - * @param type virtual port event type - * @param virtualPort virtual port subject - */ - public VirtualPortEvent(Type type, VirtualPort virtualPort) { - super(type, virtualPort); - } - - /** - * Creates an event of a given type and for the specified virtual port. - * - * @param type virtual port event type - * @param virtualPort virtual port subject - * @param time occurrence time - */ - public VirtualPortEvent(Type type, VirtualPort virtualPort, long time) { - super(type, virtualPort, time); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortListener.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortListener.java deleted file mode 100644 index cc689cf241..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortListener.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.virtualport; - -import org.onosproject.event.EventListener; - -/** - * Entity capable of virtual port related events. - */ -public interface VirtualPortListener extends EventListener { - -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java deleted file mode 100644 index 8677c02087..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.virtualport; - -import java.util.Collection; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.event.ListenerService; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; - -/** - * Service for interacting with the inventory of virtualPort. - */ -public interface VirtualPortService extends ListenerService { - /** - * Returns if the virtualPort is existed. - * - * @param virtualPortId virtualPort identifier - * @return true or false if one with the given identifier is not existed. - */ - boolean exists(VirtualPortId virtualPortId); - - /** - * Returns the virtualPort with the identifier. - * - * @param virtualPortId virtualPort ID - * @return VirtualPort or null if one with the given ID is not know. - */ - VirtualPort getPort(VirtualPortId virtualPortId); - - /** - * Returns the virtualPort associated with the fixedIP. - * - * @param fixedIP the fixedIP identifier - * @return virtualPort. - */ - VirtualPort getPort(FixedIp fixedIP); - - /** - * Returns the virtualPort associated with the mac address. - * - * @param mac the mac address - * @return virtualPort. - */ - VirtualPort getPort(MacAddress mac); - - /** - * Returns the virtualPort associated with the networkId and ip. - * - * @param networkId the TenantNetworkId identifier - * @param ip the ip identifier - * @return virtualPort. - */ - VirtualPort getPort(TenantNetworkId networkId, IpAddress ip); - - /** - * Returns the collection of the currently known virtualPort. - * @return collection of VirtualPort. - */ - Collection getPorts(); - - /** - * Returns the collection of the virtualPorts associated with the networkId. - * - * @param networkId the network identifer - * @return collection of virtualPort. - */ - Collection getPorts(TenantNetworkId networkId); - - /** - * Returns the collection of the virtualPorts associated with the tenantId. - * - * @param tenantId the tenant identifier - * @return collection of virtualPorts. - */ - Collection getPorts(TenantId tenantId); - - /** - * Returns the collection of the virtualPorts associated with the deviceId. - * - * @param deviceId the device identifier - * @return collection of virtualPort. - */ - Collection getPorts(DeviceId deviceId); - - /** - * Creates virtualPorts by virtualPorts. - * - * @param virtualPorts the iterable collection of virtualPorts - * @return true if all given identifiers created successfully. - */ - boolean createPorts(Iterable virtualPorts); - - /** - * Updates virtualPorts by virtualPorts. - * - * @param virtualPorts the iterable collection of virtualPorts - * @return true if all given identifiers updated successfully. - */ - boolean updatePorts(Iterable virtualPorts); - - /** - * Deletes virtualPortIds by virtualPortIds. - * - * @param virtualPortIds the iterable collection of virtualPort identifiers - * @return true or false if one with the given identifier to delete is - * successfully. - */ - boolean removePorts(Iterable virtualPortIds); -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java deleted file mode 100644 index 5206e3f569..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java +++ /dev/null @@ -1,332 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.virtualport.impl; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.util.KryoNamespace; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.event.AbstractListenerManager; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Host; -import org.onosproject.store.serializers.KryoNamespaces; -import org.onosproject.store.service.EventuallyConsistentMap; -import org.onosproject.store.service.EventuallyConsistentMapEvent; -import org.onosproject.store.service.EventuallyConsistentMapListener; -import org.onosproject.store.service.MultiValuedTimestamp; -import org.onosproject.store.service.StorageService; -import org.onosproject.store.service.WallClockTimestamp; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultFloatingIp; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.TenantRouter; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnrsc.virtualport.VirtualPortEvent; -import org.onosproject.vtnrsc.virtualport.VirtualPortListener; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Provides implementation of the VirtualPort APIs. - */ -@Component(immediate = true, service = VirtualPortService.class) -public class VirtualPortManager extends AbstractListenerManager -implements VirtualPortService { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private static final String VIRTUALPORT = "vtn-virtual-port-store"; - private static final String VTNRSC_APP = "org.onosproject.vtnrsc"; - - private static final String VIRTUALPORT_ID_NULL = "VirtualPort ID cannot be null"; - private static final String VIRTUALPORT_NOT_NULL = "VirtualPort cannot be null"; - private static final String TENANTID_NOT_NULL = "TenantId cannot be null"; - private static final String NETWORKID_NOT_NULL = "NetworkId cannot be null"; - private static final String DEVICEID_NOT_NULL = "DeviceId cannot be null"; - private static final String FIXEDIP_NOT_NULL = "FixedIp cannot be null"; - private static final String MAC_NOT_NULL = "Mac address cannot be null"; - private static final String IP_NOT_NULL = "Ip cannot be null"; - private static final String EVENT_NOT_NULL = "event cannot be null"; - - protected EventuallyConsistentMap vPortStore; - protected ApplicationId appId; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected StorageService storageService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected TenantNetworkService networkService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - private EventuallyConsistentMapListener virtualPortListener = - new InnerVirtualPortStoreListener(); - - @Activate - public void activate() { - - appId = coreService.registerApplication(VTNRSC_APP); - - eventDispatcher.addSink(VirtualPortEvent.class, listenerRegistry); - - KryoNamespace.Builder serializer = KryoNamespace.newBuilder() - .register(KryoNamespaces.API) - .register(MultiValuedTimestamp.class) - .register(TenantNetworkId.class) - .register(Host.class) - .register(TenantNetwork.class) - .register(TenantNetworkId.class) - .register(TenantId.class) - .register(SubnetId.class) - .register(VirtualPortId.class) - .register(VirtualPort.State.class) - .register(AllowedAddressPair.class) - .register(FixedIp.class) - .register(FloatingIp.class) - .register(FloatingIpId.class) - .register(FloatingIp.Status.class) - .register(UUID.class) - .register(DefaultFloatingIp.class) - .register(BindingHostId.class) - .register(SecurityGroup.class) - .register(IpAddress.class) - .register(DefaultVirtualPort.class) - .register(RouterId.class) - .register(TenantRouter.class) - .register(VirtualPort.class); - vPortStore = storageService - .eventuallyConsistentMapBuilder() - .withName(VIRTUALPORT).withSerializer(serializer) - .withTimestampProvider((k, v) -> new WallClockTimestamp()) - .build(); - - vPortStore.addListener(virtualPortListener); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - vPortStore.removeListener(virtualPortListener); - vPortStore.destroy(); - log.info("Stoppped"); - } - - @Override - public boolean exists(VirtualPortId vPortId) { - checkNotNull(vPortId, VIRTUALPORT_ID_NULL); - return vPortStore.containsKey(vPortId); - } - - @Override - public VirtualPort getPort(VirtualPortId vPortId) { - checkNotNull(vPortId, VIRTUALPORT_ID_NULL); - return vPortStore.get(vPortId); - } - - @Override - public VirtualPort getPort(FixedIp fixedIP) { - checkNotNull(fixedIP, FIXEDIP_NOT_NULL); - List vPorts = new ArrayList<>(); - vPortStore.values().forEach(p -> { - Iterator fixedIps = p.fixedIps().iterator(); - while (fixedIps.hasNext()) { - if (fixedIps.next().equals(fixedIP)) { - vPorts.add(p); - break; - } - } - }); - if (vPorts.isEmpty()) { - return null; - } - return vPorts.get(0); - } - - @Override - public VirtualPort getPort(MacAddress mac) { - checkNotNull(mac, MAC_NOT_NULL); - List vPorts = new ArrayList<>(); - vPortStore.values().forEach(p -> { - if (p.macAddress().equals(mac)) { - vPorts.add(p); - } - }); - if (vPorts.isEmpty()) { - return null; - } - return vPorts.get(0); - } - - @Override - public VirtualPort getPort(TenantNetworkId networkId, IpAddress ip) { - checkNotNull(networkId, NETWORKID_NOT_NULL); - checkNotNull(ip, IP_NOT_NULL); - List vPorts = new ArrayList<>(); - vPortStore.values().stream().filter(p -> p.networkId().equals(networkId)) - .forEach(p -> { - Iterator fixedIps = p.fixedIps().iterator(); - while (fixedIps.hasNext()) { - if (fixedIps.next().ip().equals(ip)) { - vPorts.add(p); - break; - } - } - }); - if (vPorts.isEmpty()) { - return null; - } - return vPorts.get(0); - } - - @Override - public Collection getPorts() { - return Collections.unmodifiableCollection(vPortStore.values()); - } - - @Override - public Collection getPorts(TenantNetworkId networkId) { - checkNotNull(networkId, NETWORKID_NOT_NULL); - return vPortStore.values().stream().filter(d -> d.networkId().equals(networkId)) - .collect(Collectors.toList()); - } - - @Override - public Collection getPorts(TenantId tenantId) { - checkNotNull(tenantId, TENANTID_NOT_NULL); - return vPortStore.values().stream().filter(d -> d.tenantId().equals(tenantId)) - .collect(Collectors.toList()); - } - - @Override - public Collection getPorts(DeviceId deviceId) { - checkNotNull(deviceId, DEVICEID_NOT_NULL); - return vPortStore.values().stream().filter(d -> d.deviceId().equals(deviceId)) - .collect(Collectors.toList()); - } - - @Override - public boolean createPorts(Iterable vPorts) { - checkNotNull(vPorts, VIRTUALPORT_NOT_NULL); - for (VirtualPort vPort : vPorts) { - log.debug("vPortId is {} ", vPort.portId().toString()); - vPortStore.put(vPort.portId(), vPort); - if (!vPortStore.containsKey(vPort.portId())) { - log.debug("The virtualPort is created failed whose identifier is {} ", - vPort.portId().toString()); - return false; - } - } - return true; - } - - @Override - public boolean updatePorts(Iterable vPorts) { - checkNotNull(vPorts, VIRTUALPORT_NOT_NULL); - for (VirtualPort vPort : vPorts) { - vPortStore.put(vPort.portId(), vPort); - if (!vPortStore.containsKey(vPort.portId())) { - log.debug("The virtualPort is not exist whose identifier is {}", - vPort.portId().toString()); - return false; - } - - vPortStore.put(vPort.portId(), vPort); - - if (!vPort.equals(vPortStore.get(vPort.portId()))) { - log.debug("The virtualPort is updated failed whose identifier is {}", - vPort.portId().toString()); - return false; - } - } - return true; - } - - @Override - public boolean removePorts(Iterable vPortIds) { - checkNotNull(vPortIds, VIRTUALPORT_ID_NULL); - for (VirtualPortId vPortId : vPortIds) { - vPortStore.remove(vPortId); - if (vPortStore.containsKey(vPortId)) { - log.debug("The virtualPort is removed failed whose identifier is {}", - vPortId.toString()); - return false; - } - } - return true; - } - - private class InnerVirtualPortStoreListener - implements - EventuallyConsistentMapListener { - - @Override - public void event(EventuallyConsistentMapEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - log.info("virtual port event raised"); - VirtualPort virtualPort = event.value(); - if (EventuallyConsistentMapEvent.Type.PUT == event.type()) { - notifyListeners(new VirtualPortEvent( - VirtualPortEvent.Type.VIRTUAL_PORT_PUT, - virtualPort)); - } - if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) { - notifyListeners(new VirtualPortEvent( - VirtualPortEvent.Type.VIRTUAL_PORT_DELETE, - virtualPort)); - } - } - } - - /** - * Notifies specify event to all listeners. - * - * @param event virtual port event - */ - private void notifyListeners(VirtualPortEvent event) { - checkNotNull(event, EVENT_NOT_NULL); - post(event); - } -} diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/package-info.java deleted file mode 100644 index 4a4bee734c..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of service for interacting with the inventory of virtual ports. - */ -package org.onosproject.vtnrsc.virtualport.impl; diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/package-info.java deleted file mode 100644 index 77da0170c4..0000000000 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service for interacting with the inventory of virtual ports. - */ -package org.onosproject.vtnrsc.virtualport; diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/AllowedAddressPairTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/AllowedAddressPairTest.java deleted file mode 100644 index 19e9a627f6..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/AllowedAddressPairTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for AllowedAddressPair class. - */ -public class AllowedAddressPairTest { - - final IpAddress ip1 = IpAddress.valueOf("192.168.0.1"); - final IpAddress ip2 = IpAddress.valueOf("192.168.0.2"); - final MacAddress mac1 = MacAddress.valueOf("fa:16:3e:76:83:88"); - final MacAddress mac2 = MacAddress.valueOf("aa:16:3e:76:83:88"); - - /** - * Checks that the AllowedAddressPair class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(AllowedAddressPair.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - AllowedAddressPair p1 = AllowedAddressPair - .allowedAddressPair(ip1, mac1); - AllowedAddressPair p2 = AllowedAddressPair - .allowedAddressPair(ip1, mac1); - AllowedAddressPair p3 = AllowedAddressPair - .allowedAddressPair(ip2, mac2); - new EqualsTester().addEqualityGroup(p1, p2).addEqualityGroup(p3) - .testEquals(); - } - - /** - * Checks the construction of a AllowedAddressPair object. - */ - @Test - public void testConstruction() { - AllowedAddressPair allowedAddressPair = AllowedAddressPair - .allowedAddressPair(ip1, mac1); - assertThat(ip1, is(notNullValue())); - assertThat(ip1, is(allowedAddressPair.ip())); - assertThat(mac1, is(notNullValue())); - assertThat(mac1, is(allowedAddressPair.mac())); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultAllocationPoolTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultAllocationPoolTest.java deleted file mode 100644 index 422da004f8..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultAllocationPoolTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; -import org.onlab.packet.IpAddress; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for DefaultAllocationPool class. - */ -public class DefaultAllocationPoolTest { - - final IpAddress startIP1 = IpAddress.valueOf("192.168.1.1"); - final IpAddress startIP2 = IpAddress.valueOf("192.168.1.2"); - final IpAddress endIP1 = IpAddress.valueOf("192.168.1.1"); - final IpAddress endIP2 = IpAddress.valueOf("192.168.1.2"); - - /** - * Checks that the DefaultAllocationPool class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultAllocationPool.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - AllocationPool pool1 = new DefaultAllocationPool(startIP1, endIP1); - AllocationPool pool2 = new DefaultAllocationPool(startIP1, endIP1); - AllocationPool pool3 = new DefaultAllocationPool(startIP2, endIP2); - new EqualsTester().addEqualityGroup(pool1, pool2) - .addEqualityGroup(pool3).testEquals(); - } - - /** - * Checks the construction of a DefaultAllocationPool object. - */ - @Test - public void testConstruction() { - final AllocationPool apool = new DefaultAllocationPool(startIP1, endIP1); - assertThat(startIP1, is(apool.startIp())); - assertThat(endIP1, is(apool.endIp())); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFiveTupleTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFiveTupleTest.java deleted file mode 100644 index 301553474c..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFiveTupleTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IPv4; -import org.onlab.packet.IpAddress; -import org.onosproject.net.PortNumber; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for FiveTuple class. - */ -public class DefaultFiveTupleTest { - - - final FiveTuple fiveTuple1 = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("1.1.1.1")) - .setIpDst(IpAddress.valueOf("2.2.2.2")) - .setPortSrc(PortNumber.portNumber(500)) - .setPortDst(PortNumber.portNumber(1000)) - .setProtocol(IPv4.PROTOCOL_TCP) - .setTenantId(TenantId.tenantId("aaa")) - .build(); - - final FiveTuple sameAsFiveTuple1 = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("1.1.1.1")) - .setIpDst(IpAddress.valueOf("2.2.2.2")) - .setPortSrc(PortNumber.portNumber(500)) - .setPortDst(PortNumber.portNumber(1000)) - .setProtocol(IPv4.PROTOCOL_TCP) - .setTenantId(TenantId.tenantId("aaa")) - .build(); - - final FiveTuple fiveTuple2 = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("3.3.3.3")) - .setIpDst(IpAddress.valueOf("4.4.4.4")) - .setPortSrc(PortNumber.portNumber(1500)) - .setPortDst(PortNumber.portNumber(2000)) - .setProtocol(IPv4.PROTOCOL_UDP) - .setTenantId(TenantId.tenantId("bbb")) - .build(); - - /** - * Checks that the FiveTuple class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultFiveTuple.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(fiveTuple1, sameAsFiveTuple1).addEqualityGroup(fiveTuple2) - .testEquals(); - } - - /** - * Checks the construction of a FiveTuple object. - */ - @Test - public void testConstruction() { - final FiveTuple fiveTuple1 = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("1.1.1.1")) - .setIpDst(IpAddress.valueOf("2.2.2.2")) - .setPortSrc(PortNumber.portNumber(500)) - .setPortDst(PortNumber.portNumber(1000)) - .setProtocol(IPv4.PROTOCOL_TCP) - .setTenantId(TenantId.tenantId("aaa")) - .build(); - - assertThat(fiveTuple1, is(notNullValue())); - assertThat(fiveTuple1.protocol(), is(IPv4.PROTOCOL_TCP)); - assertThat(fiveTuple1.ipSrc(), is(IpAddress.valueOf("1.1.1.1"))); - assertThat(fiveTuple1.ipDst(), is(IpAddress.valueOf("2.2.2.2"))); - assertThat(fiveTuple1.portSrc(), is(PortNumber.portNumber(500))); - assertThat(fiveTuple1.portDst(), is(PortNumber.portNumber(1000))); - assertThat(fiveTuple1.tenantId(), is(TenantId.tenantId("aaa"))); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFlowClassifierTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFlowClassifierTest.java deleted file mode 100644 index 743c5a4b11..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultFlowClassifierTest.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; -import org.onlab.packet.IpPrefix; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for DefaultFlowClassifier class. - */ -public class DefaultFlowClassifierTest { - /** - * Checks that the DefaultFlowClassifier class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultFlowClassifier.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // Create same two flow classifier objects. - final String name = "FlowClassifier1"; - final String description = "FlowClassifier1"; - final String ethType = "IPv4"; - final String protocol = "tcp"; - final int priority = 65535; - final int minSrcPortRange = 5; - final int maxSrcPortRange = 10; - final int minDstPortRange = 5; - final int maxDstPortRange = 10; - final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0"); - final VirtualPortId virtualSrcPort = VirtualPortId.portId("1"); - final VirtualPortId virtualDstPort = VirtualPortId.portId("2"); - - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - final FlowClassifier flowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId) - .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType) - .setProtocol(protocol).setPriority(priority).setMinSrcPortRange(minSrcPortRange) - .setMaxSrcPortRange(maxSrcPortRange).setMinDstPortRange(minDstPortRange) - .setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix).setDstIpPrefix(dstIpPrefix) - .setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - - flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - final FlowClassifier sameAsFlowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId) - .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType) - .setProtocol(protocol).setPriority(priority).setMinSrcPortRange(minSrcPortRange) - .setMaxSrcPortRange(maxSrcPortRange).setMinDstPortRange(minDstPortRange) - .setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix).setDstIpPrefix(dstIpPrefix) - .setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - - // Create different classifier object. - final String name2 = "FlowClassifier2"; - final String description2 = "FlowClassifier2"; - final String ethType2 = "IPv6"; - final String protocol2 = "udp"; - final int priority2 = 50000; - final int minSrcPortRange2 = 5; - final int maxSrcPortRange2 = 10; - final int minDstPortRange2 = 5; - final int maxDstPortRange2 = 10; - final FlowClassifierId flowClassifierId2 = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final IpPrefix srcIpPrefix2 = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix2 = IpPrefix.valueOf("10.10.10.10/0"); - final VirtualPortId virtualSrcPort2 = VirtualPortId.portId("3"); - final VirtualPortId virtualDstPort2 = VirtualPortId.portId("4"); - - DefaultFlowClassifier.Builder flowClassifierBuilder3 = new DefaultFlowClassifier.Builder(); - final FlowClassifier flowClassifier2 = flowClassifierBuilder3.setFlowClassifierId(flowClassifierId2) - .setTenantId(tenantId2).setName(name2).setDescription(description2).setEtherType(ethType2) - .setProtocol(protocol2).setMinSrcPortRange(minSrcPortRange2).setMaxSrcPortRange(maxSrcPortRange2) - .setMinDstPortRange(minDstPortRange2).setMaxDstPortRange(maxDstPortRange2).setSrcIpPrefix(srcIpPrefix2) - .setDstIpPrefix(dstIpPrefix2).setSrcPort(virtualSrcPort2).setDstPort(virtualDstPort2) - .setPriority(priority2).build(); - - new EqualsTester().addEqualityGroup(flowClassifier1, sameAsFlowClassifier1).addEqualityGroup(flowClassifier2) - .testEquals(); - } - - /** - * Checks the construction of a DefaultFlowClassifier object. - */ - @Test - public void testConstruction() { - final String name = "FlowClassifier"; - final String description = "FlowClassifier"; - final String ethType = "IPv4"; - final String protocol = "tcp"; - final int priority = 30000; - final int minSrcPortRange = 5; - final int maxSrcPortRange = 10; - final int minDstPortRange = 5; - final int maxDstPortRange = 10; - final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0"); - final VirtualPortId virtualSrcPort = VirtualPortId.portId("1"); - final VirtualPortId virtualDstPort = VirtualPortId.portId("2"); - - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - final FlowClassifier flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId) - .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType) - .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort) - .setPriority(priority).build(); - - assertThat(flowClassifierId, is(flowClassifier.flowClassifierId())); - assertThat(tenantId, is(flowClassifier.tenantId())); - assertThat(name, is(flowClassifier.name())); - assertThat(description, is(flowClassifier.description())); - assertThat(ethType, is(flowClassifier.etherType())); - assertThat(protocol, is(flowClassifier.protocol())); - assertThat(priority, is(flowClassifier.priority())); - assertThat(minSrcPortRange, is(flowClassifier.minSrcPortRange())); - assertThat(maxSrcPortRange, is(flowClassifier.maxSrcPortRange())); - assertThat(minDstPortRange, is(flowClassifier.minDstPortRange())); - assertThat(maxDstPortRange, is(flowClassifier.maxDstPortRange())); - assertThat(srcIpPrefix, is(flowClassifier.srcIpPrefix())); - assertThat(dstIpPrefix, is(flowClassifier.dstIpPrefix())); - assertThat(virtualSrcPort, is(flowClassifier.srcPort())); - assertThat(virtualDstPort, is(flowClassifier.dstPort())); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultHostRouteTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultHostRouteTest.java deleted file mode 100644 index 8bfde9c639..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultHostRouteTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpPrefix; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for DefaultHostRoute class. - */ -public class DefaultHostRouteTest { - final IpAddress nexthop1 = IpAddress.valueOf("192.168.1.1"); - final IpAddress nexthop2 = IpAddress.valueOf("192.168.1.2"); - final IpPrefix destination1 = IpPrefix.valueOf("1.1.1.1/1"); - final IpPrefix destination2 = IpPrefix.valueOf("1.1.1.1/2"); - - /** - * Checks that the DefaultHostRoute class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultHostRoute.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - HostRoute route1 = new DefaultHostRoute(nexthop1, destination1); - HostRoute route2 = new DefaultHostRoute(nexthop1, destination1); - HostRoute route3 = new DefaultHostRoute(nexthop2, destination2); - new EqualsTester().addEqualityGroup(route1, route2) - .addEqualityGroup(route3).testEquals(); - } - - /** - * Checks the construction of a DefaultHostRoute object. - */ - @Test - public void testConstruction() { - final HostRoute host = new DefaultHostRoute(nexthop1, destination1); - assertThat(nexthop1, is(host.nexthop())); - assertThat(destination1, is(host.destination())); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultNeutronNetworkTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultNeutronNetworkTest.java deleted file mode 100644 index 93edd8f61f..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultNeutronNetworkTest.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for DefaultNeutronNetwork class. - */ -public class DefaultNeutronNetworkTest { - - private String networkIdStr1 = "123"; - private String networkIdStr2 = "234"; - private String physicalNetworkStr = "1234"; - private String tenantIdStr = "345"; - private String segmentationIdStr = "1"; - private String name = "456"; - - /** - * Checks that the DefaultNeutronNetwork class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultTenantNetwork.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquality() { - TenantNetworkId networkid1 = TenantNetworkId.networkId(networkIdStr1); - TenantNetworkId networkid2 = TenantNetworkId.networkId(networkIdStr2); - PhysicalNetwork physicalNetwork = PhysicalNetwork - .physicalNetwork(physicalNetworkStr); - TenantId tenantId = TenantId.tenantId(tenantIdStr); - SegmentationId segmentationID = SegmentationId - .segmentationId(segmentationIdStr); - TenantNetwork p1 = new DefaultTenantNetwork(networkid1, name, false, - TenantNetwork.State.ACTIVE, - false, tenantId, false, - TenantNetwork.Type.LOCAL, - physicalNetwork, - segmentationID); - TenantNetwork p2 = new DefaultTenantNetwork(networkid1, name, false, - TenantNetwork.State.ACTIVE, - false, tenantId, false, - TenantNetwork.Type.LOCAL, - physicalNetwork, - segmentationID); - TenantNetwork p3 = new DefaultTenantNetwork(networkid2, name, false, - TenantNetwork.State.ACTIVE, - false, tenantId, false, - TenantNetwork.Type.LOCAL, - physicalNetwork, - segmentationID); - new EqualsTester().addEqualityGroup(p1, p2).addEqualityGroup(p3) - .testEquals(); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortChainTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortChainTest.java deleted file mode 100644 index dc1d1aca51..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortChainTest.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import org.junit.Test; -import org.onlab.packet.IPv4; -import org.onlab.packet.IpAddress; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; - -import com.google.common.collect.Lists; -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultPortChain class. - */ -public class DefaultPortChainTest { - - final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortChain"; - final String description = "PortChain"; - final List portPairGroups = new LinkedList(); - final List flowClassifiers = new LinkedList(); - - private PortChain getPortChain() { - - portPairGroups.clear(); - flowClassifiers.clear(); - // create list of Port Pair Groups. - PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroups.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroups.add(portPairGroupId); - // create list of Flow classifiers. - FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifiers.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifiers.add(flowClassifierId); - - DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder(); - final PortChain portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers) - .build(); - - return portChain; - } - - /** - * Checks that the DefaultPortChain class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPortChain.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - - // Create same two port chain objects. - final PortChain portChain1 = getPortChain(); - final PortChain samePortChain1 = getPortChain(); - - // Create different port chain object. - final PortChainId portChainId2 = PortChainId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortChain2"; - final String description2 = "PortChain2"; - // create list of Port Pair Groups. - final List portPairGroups2 = new LinkedList(); - PortPairGroupId portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroups2.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroups2.add(portPairGroupId); - // create list of Flow classifiers. - final List flowClassifiers2 = new LinkedList(); - FlowClassifierId flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifiers2.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifiers2.add(flowClassifierId); - - DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder(); - final PortChain portChain2 = portChainBuilder.setId(portChainId2).setTenantId(tenantId2).setName(name2) - .setDescription(description2).setPortPairGroups(portPairGroups2).setFlowClassifiers(flowClassifiers2) - .build(); - - new EqualsTester().addEqualityGroup(portChain1, samePortChain1).addEqualityGroup(portChain2).testEquals(); - } - - /** - * Checks the construction of a DefaultPortChain object. - */ - @Test - public void testConstruction() { - - final PortChain portChain = getPortChain(); - - assertThat(portChainId, is(portChain.portChainId())); - assertThat(tenantId, is(portChain.tenantId())); - assertThat(name, is(portChain.name())); - assertThat(description, is(portChain.description())); - assertThat(portPairGroups, is(portChain.portPairGroups())); - assertThat(flowClassifiers, is(portChain.flowClassifiers())); - } - - /** - * Verifies the load balance data structures. - */ - @Test - public void testLoadBalanceIdMap() { - - final PortChain portChain = getPortChain(); - - final FiveTuple fiveTuple1 = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("1.1.1.1")) - .setIpDst(IpAddress.valueOf("2.2.2.2")) - .setPortSrc(PortNumber.portNumber(500)) - .setPortDst(PortNumber.portNumber(1000)) - .setProtocol(IPv4.PROTOCOL_TCP) - .build(); - - PortPairId portPairId = PortPairId.of("a4444444-4a56-2a6e-cd3a-9dee4e2ec345"); - - final LoadBalanceId id1 = LoadBalanceId.of((byte) 1); - - List tempPath = Lists.newArrayList(); - tempPath.add(portPairId); - - portChain.addLoadBalancePath(fiveTuple1, id1, tempPath); - Set keys = portChain.getLoadBalanceIdMapKeys(); - List path = portChain.getLoadBalancePath(fiveTuple1); - - assertThat(portChain.getLoadBalancePath(fiveTuple1), is(path)); - assertThat(portChain.getLoadBalancePath(id1), is(path)); - assertThat(portChain.getLoadBalanceId(fiveTuple1), is(id1)); - assertThat(keys.contains(fiveTuple1), is(true)); - assertThat(path.contains(portPairId), is(true)); - } - - /** - * Verifies sfc classifiers. - */ - @Test - public void testSfcClassifier() { - final PortChain portChain = getPortChain(); - - final LoadBalanceId id1 = LoadBalanceId.of((byte) 1); - List classifierList = Lists.newArrayList(); - DeviceId deviceId1 = DeviceId.deviceId("of:000000001"); - classifierList.add(deviceId1); - DeviceId deviceId2 = DeviceId.deviceId("of:000000002"); - classifierList.add(deviceId2); - portChain.addSfcClassifiers(id1, classifierList); - - assertThat(portChain.getSfcClassifiers(id1).contains(deviceId1), is(true)); - } - - /** - * Verifies sfc forwarders. - */ - @Test - public void testSfcForwarder() { - final PortChain portChain = getPortChain(); - - final LoadBalanceId id1 = LoadBalanceId.of((byte) 1); - List forwarderList = Lists.newArrayList(); - DeviceId deviceId1 = DeviceId.deviceId("of:000000001"); - forwarderList.add(deviceId1); - DeviceId deviceId2 = DeviceId.deviceId("of:000000002"); - forwarderList.add(deviceId2); - portChain.addSfcForwarders(id1, forwarderList); - - assertThat(portChain.getSfcForwarders(id1).contains(deviceId1), is(true)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairGroupTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairGroupTest.java deleted file mode 100644 index 305ded374c..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairGroupTest.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import java.util.LinkedList; -import java.util.List; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultPortPairGroup class. - */ -public class DefaultPortPairGroupTest { - - final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPairGroup1"; - final String description = "PortPairGroup1"; - final List portPairList = new LinkedList(); - - private PortPairGroup getPortPairGroup() { - - portPairList.clear(); - // Create same two port-pair-group objects. - PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList.add(portPairId); - portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList.add(portPairId); - - DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - PortPairGroup portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId) - .setName(name).setDescription(description).setPortPairs(portPairList).build(); - - return portPairGroup; - - } - - /** - * Checks that the DefaultPortPairGroup class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPortPairGroup.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - - final PortPairGroup portPairGroup1 = getPortPairGroup(); - - DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - final PortPairGroup samePortPairGroup1 = getPortPairGroup(); - - // Create different port-pair-group object. - final PortPairGroupId portPairGroupId2 = PortPairGroupId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortPairGroup2"; - final String description2 = "PortPairGroup2"; - // create port-pair-id list - final List portPairList2 = new LinkedList(); - PortPairId portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList2.add(portPairId); - portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairList2.add(portPairId); - - portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - final PortPairGroup portPairGroup2 = portPairGroupBuilder.setId(portPairGroupId2).setTenantId(tenantId2) - .setName(name2).setDescription(description2).setPortPairs(portPairList2).build(); - - new EqualsTester().addEqualityGroup(portPairGroup1, samePortPairGroup1).addEqualityGroup(portPairGroup2) - .testEquals(); - } - - /** - * Checks the construction of a DefaultPortPairGroup object. - */ - @Test - public void testConstruction() { - - final PortPairGroup portPairGroup = getPortPairGroup(); - - assertThat(portPairGroupId, is(portPairGroup.portPairGroupId())); - assertThat(tenantId, is(portPairGroup.tenantId())); - assertThat(name, is(portPairGroup.name())); - assertThat(description, is(portPairGroup.description())); - assertThat(portPairList, is(portPairGroup.portPairs())); - } - - /** - * Checks the port pair load map. - */ - @Test - public void testPortPairLod() { - - PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairGroup portPairGroup = getPortPairGroup(); - int load1 = portPairGroup.getLoad(portPairId); - portPairGroup.addLoad(portPairId); - int load2 = portPairGroup.getLoad(portPairId); - - assertThat((load1 + 1), is(load2)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairTest.java deleted file mode 100644 index 57855f176b..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultPortPairTest.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for DefaultPortPair class. - */ -public class DefaultPortPairTest { - /** - * Checks that the DefaultPortPair class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultPortPair.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - // Create same two port pair objects. - final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPair1"; - final String description = "PortPair1"; - final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - final PortPair portPair1 = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name) - .setDescription(description).setIngress(ingress).setEgress(egress).build(); - - portPairBuilder = new DefaultPortPair.Builder(); - final PortPair samePortPair1 = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name) - .setDescription(description).setIngress(ingress).setEgress(egress).build(); - - // Create different port pair object. - final PortPairId portPairId2 = PortPairId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortPair2"; - final String description2 = "PortPair2"; - final String ingress2 = "d5555555-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress2 = "a6666666-4a56-2a6e-cd3a-9dee4e2ec345"; - - portPairBuilder = new DefaultPortPair.Builder(); - final PortPair portPair2 = portPairBuilder.setId(portPairId2).setTenantId(tenantId2).setName(name2) - .setDescription(description2).setIngress(ingress2).setEgress(egress2).build(); - - new EqualsTester().addEqualityGroup(portPair1, samePortPair1).addEqualityGroup(portPair2).testEquals(); - } - - /** - * Checks the construction of a DefaultPortPair object. - */ - @Test - public void testConstruction() { - final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPair"; - final String description = "PortPair"; - final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - final PortPair portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name) - .setDescription(description).setIngress(ingress).setEgress(egress).build(); - - assertThat(portPairId, is(portPair.portPairId())); - assertThat(tenantId, is(portPair.tenantId())); - assertThat(name, is(portPair.name())); - assertThat(description, is(portPair.description())); - assertThat(ingress, is(portPair.ingress())); - assertThat(egress, is(portPair.egress())); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultVirtualPortTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultVirtualPortTest.java deleted file mode 100644 index 77f5be365d..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/DefaultVirtualPortTest.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc; - -import java.util.Map; -import java.util.Set; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onosproject.net.DeviceId; - -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.google.common.testing.EqualsTester; - -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for DefaultVirtualPort class. - */ -public class DefaultVirtualPortTest { - - private Set fixedIps; - private Map propertyMap; - private Set allowedAddressPairs; - private Set securityGroups; - private VirtualPortId id1; - private VirtualPortId id2; - private String macAddressStr = "fa:12:3e:56:ee:a2"; - private String ipAddress = "10.1.1.1"; - private String deviceStr = "of:000000000000001"; - private String tenantIdStr = "123"; - private String portId1 = "1241"; - private String portId2 = "1242"; - private String tenantNetworkId = "1234567"; - private String subnet = "1212"; - private String hostIdStr = "fa:e2:3e:56:ee:a2"; - - private void initVirtualPortId() { - id1 = VirtualPortId.portId(portId1); - id2 = VirtualPortId.portId(portId2); - } - - private void initFixedIpSet() { - FixedIp fixedIp = FixedIp.fixedIp(SubnetId.subnetId(subnet), - IpAddress.valueOf(ipAddress)); - fixedIps = Sets.newHashSet(); - fixedIps.add(fixedIp); - } - - private void initPropertyMap() { - String deviceOwner = "james"; - propertyMap = Maps.newHashMap(); - propertyMap.putIfAbsent("deviceOwner", deviceOwner); - } - - private void initAddressPairSet() { - allowedAddressPairs = Sets.newHashSet(); - AllowedAddressPair allowedAddressPair = AllowedAddressPair - .allowedAddressPair(IpAddress.valueOf(ipAddress), - MacAddress.valueOf(macAddressStr)); - allowedAddressPairs.add(allowedAddressPair); - } - - private void initSecurityGroupSet() { - securityGroups = Sets.newHashSet(); - } - - /** - * Checks that the DefaultVirtualPort class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SecurityGroup.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - initVirtualPortId(); - initFixedIpSet(); - initPropertyMap(); - initAddressPairSet(); - initSecurityGroupSet(); - TenantNetworkId networkId = TenantNetworkId.networkId(tenantNetworkId); - MacAddress macAddress = MacAddress.valueOf(macAddressStr); - TenantId tenantId = TenantId.tenantId(tenantIdStr); - DeviceId deviceId = DeviceId.deviceId(deviceStr); - BindingHostId bindingHostId = BindingHostId.bindingHostId(hostIdStr); - - VirtualPort d1 = new DefaultVirtualPort(id1, networkId, true, - propertyMap, - VirtualPort.State.ACTIVE, - macAddress, tenantId, deviceId, - fixedIps, bindingHostId, - allowedAddressPairs, - securityGroups); - VirtualPort d2 = new DefaultVirtualPort(id1, networkId, true, - propertyMap, - VirtualPort.State.ACTIVE, - macAddress, tenantId, deviceId, - fixedIps, bindingHostId, - allowedAddressPairs, - securityGroups); - VirtualPort d3 = new DefaultVirtualPort(id2, networkId, true, - propertyMap, - VirtualPort.State.ACTIVE, - macAddress, tenantId, deviceId, - fixedIps, bindingHostId, - allowedAddressPairs, - securityGroups); - new EqualsTester().addEqualityGroup(d1, d2).addEqualityGroup(d3) - .testEquals(); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FixedIpTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FixedIpTest.java deleted file mode 100644 index b387afed78..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FixedIpTest.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc; - -import org.junit.Test; -import org.onlab.packet.IpAddress; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for FixedIp class. - */ -public class FixedIpTest { - - final SubnetId subnetId1 = SubnetId.subnetId("lef11-95w-4er-9c9c"); - final SubnetId subnetId2 = SubnetId.subnetId("lefaa-95w-4er-9c9c"); - final IpAddress ip1 = IpAddress.valueOf("192.168.0.1"); - final IpAddress ip2 = IpAddress.valueOf("192.168.1.1"); - - /** - * Checks that the FixedIp class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(FixedIp.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - FixedIp fixedIp1 = FixedIp.fixedIp(subnetId1, ip1); - FixedIp fixedIp2 = FixedIp.fixedIp(subnetId1, ip1); - FixedIp fixedIp3 = FixedIp.fixedIp(subnetId2, ip2); - new EqualsTester().addEqualityGroup(fixedIp1, fixedIp2) - .addEqualityGroup(fixedIp3).testEquals(); - } - - /** - * Checks the construction of a FixedIp object. - */ - @Test - public void testConstruction() { - FixedIp fixedIp = FixedIp.fixedIp(subnetId1, ip1); - assertThat(ip1, is(notNullValue())); - assertThat(ip1, is(fixedIp.ip())); - assertThat(subnetId1, is(notNullValue())); - assertThat(subnetId1, is(fixedIp.subnetId())); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FlowClassifierIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FlowClassifierIdTest.java deleted file mode 100644 index dd247c24fb..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/FlowClassifierIdTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.UUID; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for FlowClassifierId class. - */ -public class FlowClassifierIdTest { - - final FlowClassifierId flowClassifierId1 = FlowClassifierId - .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final FlowClassifierId sameAsFlowClassifierId1 = FlowClassifierId - .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final FlowClassifierId flowClassifierId2 = FlowClassifierId - .of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the FlowClassifierId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(FlowClassifierId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(flowClassifierId1, sameAsFlowClassifierId1) - .addEqualityGroup(flowClassifierId2).testEquals(); - } - - /** - * Checks the construction of a FlowClassifierId object. - */ - @Test - public void testConstruction() { - final String flowClassifierIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final FlowClassifierId flowClassifierId = FlowClassifierId.of(flowClassifierIdValue); - assertThat(flowClassifierId, is(notNullValue())); - assertThat(flowClassifierId.value(), is(UUID.fromString(flowClassifierIdValue))); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/LoadBalanceIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/LoadBalanceIdTest.java deleted file mode 100644 index 55586b81b4..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/LoadBalanceIdTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for LoadBalanceId class. - */ -public class LoadBalanceIdTest { - - final LoadBalanceId id1 = LoadBalanceId.of((byte) 1); - final LoadBalanceId sameAsId1 = LoadBalanceId.of((byte) 1); - final LoadBalanceId id2 = LoadBalanceId.of((byte) 2); - - /** - * Checks that the LoadBalanceId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(LoadBalanceId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(id1, sameAsId1).addEqualityGroup(id2) - .testEquals(); - } - - /** - * Checks the construction of a LoadBalanceId object. - */ - @Test - public void testConstruction() { - final LoadBalanceId id = LoadBalanceId.of((byte) 1); - assertThat(id, is(notNullValue())); - assertThat(id.loadBalanceId(), is((byte) 1)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PhysicalNetworkTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PhysicalNetworkTest.java deleted file mode 100644 index 2da07766db..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PhysicalNetworkTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for PhysicalNetwork class. - */ -public class PhysicalNetworkTest { - - final PhysicalNetwork physicalNetwork1 = PhysicalNetwork.physicalNetwork("1"); - final PhysicalNetwork sameAsPhysicalNetwork1 = PhysicalNetwork.physicalNetwork("1"); - final PhysicalNetwork physicalNetwork2 = PhysicalNetwork.physicalNetwork("2"); - - /** - * Checks that the PhysicalNetwork class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PhysicalNetwork.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(physicalNetwork1, sameAsPhysicalNetwork1) - .addEqualityGroup(physicalNetwork2).testEquals(); - } - - /** - * Checks the construction of a PhysicalNetwork object. - */ - @Test - public void testConstruction() { - final String physicalNetworkValue = "s"; - final PhysicalNetwork physicalNetwork = PhysicalNetwork - .physicalNetwork(physicalNetworkValue); - assertThat(physicalNetwork, is(notNullValue())); - assertThat(physicalNetwork.physicalNetwork(), is(physicalNetworkValue)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortChainIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortChainIdTest.java deleted file mode 100644 index ac6193ee97..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortChainIdTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.UUID; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for PortChainId class. - */ -public class PortChainIdTest { - - final PortChainId portChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortChainId sameAsPortChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortChainId portChainId2 = PortChainId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the PortChainId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PortChainId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(portChainId1, sameAsPortChainId1).addEqualityGroup(portChainId2) - .testEquals(); - } - - /** - * Checks the construction of a PortChainId object. - */ - @Test - public void testConstruction() { - final String portChainIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final PortChainId portChainId = PortChainId.of(portChainIdValue); - assertThat(portChainId, is(notNullValue())); - assertThat(portChainId.value(), is(UUID.fromString(portChainIdValue))); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairGroupIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairGroupIdTest.java deleted file mode 100644 index b9142c3a87..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairGroupIdTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.UUID; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for PortPairGroupId class. - */ -public class PortPairGroupIdTest { - - final PortPairGroupId portPairGroupId1 = PortPairGroupId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairGroupId sameAsPortPairGroupId1 = PortPairGroupId - .of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairGroupId portPairGroupId2 = PortPairGroupId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the PortPairGroupId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PortPairGroupId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(portPairGroupId1, sameAsPortPairGroupId1) - .addEqualityGroup(portPairGroupId2).testEquals(); - } - - /** - * Checks the construction of a PortPairGroupId object. - */ - @Test - public void testConstruction() { - final String portPairGroupIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final PortPairGroupId portPairGroupId = PortPairGroupId.of(portPairGroupIdValue); - assertThat(portPairGroupId, is(notNullValue())); - assertThat(portPairGroupId.value(), is(UUID.fromString(portPairGroupIdValue))); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairIdTest.java deleted file mode 100644 index 5af357e036..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/PortPairIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.UUID; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for PortPairId class. - */ -public class PortPairIdTest { - - final PortPairId portPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairId sameAsPortPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - final PortPairId portPairId2 = PortPairId.of("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - - /** - * Checks that the PortPairId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(PortPairId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(portPairId1, sameAsPortPairId1).addEqualityGroup(portPairId2).testEquals(); - } - - /** - * Checks the construction of a PortPairId object. - */ - @Test - public void testConstruction() { - final String portPairIdValue = "dace4513-24fc-4fae-af4b-321c5e2eb3d1"; - final PortPairId portPairId = PortPairId.of(portPairIdValue); - assertThat(portPairId, is(notNullValue())); - assertThat(portPairId.value(), is(UUID.fromString(portPairIdValue))); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterGatewayTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterGatewayTest.java deleted file mode 100644 index eeec41e725..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterGatewayTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import java.util.HashSet; -import java.util.Set; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for RouterGateway class. - */ -public class RouterGatewayTest { - final TenantNetworkId networkId1 = TenantNetworkId.networkId("1"); - final TenantNetworkId networkId2 = TenantNetworkId.networkId("2"); - final Set fixedIpSet1 = new HashSet<>(); - final Set fixedIpSet2 = new HashSet<>(); - - /** - * Checks that the RouterGateway class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(RouterGateway.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - RouterGateway routerGateway1 = RouterGateway.routerGateway(networkId1, - true, - fixedIpSet1); - RouterGateway routerGateway2 = RouterGateway.routerGateway(networkId1, - true, - fixedIpSet1); - RouterGateway routerGateway3 = RouterGateway.routerGateway(networkId2, - true, - fixedIpSet2); - new EqualsTester().addEqualityGroup(routerGateway1, routerGateway2) - .addEqualityGroup(routerGateway3).testEquals(); - } - - /** - * Checks the construction of a RouterGateway object. - */ - @Test - public void testConstruction() { - RouterGateway routerGateway = RouterGateway.routerGateway(networkId1, - true, - fixedIpSet1); - assertThat(fixedIpSet1, is(notNullValue())); - assertThat(fixedIpSet1, is(routerGateway.externalFixedIps())); - assertThat(networkId1, is(notNullValue())); - assertThat(networkId1, is(routerGateway.networkId())); - assertThat(routerGateway.enableSnat(), is(true)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterIdTest.java deleted file mode 100644 index 134577acc2..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/RouterIdTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for RouterId class. - */ -public class RouterIdTest { - final RouterId routerId1 = RouterId.valueOf("1"); - final RouterId sameAsRouterId1 = RouterId.valueOf("1"); - final RouterId routerId2 = RouterId.valueOf("2"); - - /** - * Checks that the RouterId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(RouterId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(routerId1, sameAsRouterId1).addEqualityGroup(routerId2) - .testEquals(); - } - - /** - * Checks the construction of a RouterId object. - */ - @Test - public void testConstruction() { - final String routerIdValue = "s"; - final RouterId routerId = RouterId.valueOf(routerIdValue); - assertThat(routerId, is(notNullValue())); - assertThat(routerId.routerId(), is(routerIdValue)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SecurityGroupTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SecurityGroupTest.java deleted file mode 100644 index 324d8bd7ae..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SecurityGroupTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for SecurityGroup class. - */ -public class SecurityGroupTest { - - final SecurityGroup securityGroup1 = SecurityGroup.securityGroup("1"); - final SecurityGroup sameAssecurityGroup = SecurityGroup.securityGroup("1"); - final SecurityGroup securityGroup2 = SecurityGroup.securityGroup("2"); - - /** - * Checks that the SecurityGroup class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SecurityGroup.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(securityGroup1, sameAssecurityGroup) - .addEqualityGroup(securityGroup2).testEquals(); - } - - /** - * Checks the construction of a SecurityGroup object. - */ - @Test - public void testConstruction() { - final String securityGroupValue = "1"; - final SecurityGroup securityGroup = SecurityGroup.securityGroup(securityGroupValue); - assertThat(securityGroup, is(notNullValue())); - assertThat(securityGroup.securityGroup(), is(securityGroupValue)); - - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SegmentationIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SegmentationIdTest.java deleted file mode 100644 index 545d1d442e..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SegmentationIdTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for SegmentationId class. - */ -public class SegmentationIdTest { - - final SegmentationId segmentationID1 = SegmentationId.segmentationId("1"); - final SegmentationId sameAsSegmentationID1 = SegmentationId.segmentationId("1"); - final SegmentationId segmentationID2 = SegmentationId.segmentationId("2"); - - /** - * Checks that the SegmentationId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SegmentationId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(segmentationID1, sameAsSegmentationID1) - .addEqualityGroup(segmentationID2).testEquals(); - } - - /** - * Checks the construction of a segmentationId object. - */ - @Test - public void testConstruction() { - final String segmentationIdValue = "s"; - final SegmentationId segmentationId = SegmentationId.segmentationId(segmentationIdValue); - assertThat(segmentationId, is(notNullValue())); - assertThat(segmentationId.segmentationId(), is(segmentationIdValue)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/ServiceFunctionGroupTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/ServiceFunctionGroupTest.java deleted file mode 100644 index c34cdee027..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/ServiceFunctionGroupTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for ServiceFunctionGroup class. - */ -public class ServiceFunctionGroupTest { - - /** - * Checks that the ServiceFunctionGroup class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(ServiceFunctionGroup.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - String name1 = "Firewall"; - String description1 = "Firewall service function"; - Map portPairLoadMap1 = new ConcurrentHashMap<>(); - PortPairId portPairId1 = PortPairId.of("a4444444-4a56-2a6e-cd3a-9dee4e2ec345"); - portPairLoadMap1.put(portPairId1, Integer.valueOf(2)); - ServiceFunctionGroup sfg1 = new ServiceFunctionGroup(name1, description1, portPairLoadMap1); - ServiceFunctionGroup sameAsSfg1 = new ServiceFunctionGroup(name1, description1, portPairLoadMap1); - - String name2 = "Dpi"; - String description2 = "Dpi service function"; - Map portPairLoadMap2 = new ConcurrentHashMap<>(); - PortPairId portPairId2 = PortPairId.of("b6666666-4a56-2a6e-cd3a-9dee4e2ec345"); - portPairLoadMap2.put(portPairId2, Integer.valueOf(3)); - ServiceFunctionGroup sfg2 = new ServiceFunctionGroup(name2, description2, portPairLoadMap2); - - new EqualsTester().addEqualityGroup(sfg1, sameAsSfg1).addEqualityGroup(sfg2).testEquals(); - } - - /** - * Checks the construction of a ServiceFunctionGroup object. - */ - @Test - public void testConstruction() { - - String name = "Firewall"; - String description = "Firewall service function"; - Map portPairLoadMap = new ConcurrentHashMap<>(); - PortPairId portPairId = PortPairId.of("a4444444-4a56-2a6e-cd3a-9dee4e2ec345"); - portPairLoadMap.put(portPairId, Integer.valueOf(2)); - ServiceFunctionGroup sfg = new ServiceFunctionGroup(name, description, portPairLoadMap); - - assertThat(name, is(sfg.name())); - assertThat(description, is(sfg.description())); - assertThat(2, is(sfg.portPairLoadMap().get(portPairId))); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SubnetIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SubnetIdTest.java deleted file mode 100644 index 2c9d6a9616..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/SubnetIdTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for SubnetId class. - */ -public class SubnetIdTest { - - final SubnetId subnetId1 = SubnetId.subnetId("1"); - final SubnetId sameAsSubnetId1 = SubnetId.subnetId("1"); - final SubnetId subnetId2 = SubnetId.subnetId("2"); - - /** - * Checks that the SubnetId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(SubnetId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(subnetId1, sameAsSubnetId1).addEqualityGroup(subnetId2) - .testEquals(); - } - - /** - * Checks the construction of a SubnetId object. - */ - @Test - public void testConstruction() { - final String subnetIdValue = "s"; - final SubnetId subnetId = SubnetId.subnetId(subnetIdValue); - assertThat(subnetId, is(notNullValue())); - assertThat(subnetId.subnetId(), is(subnetIdValue)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantIdTest.java deleted file mode 100644 index 265fe8c0c6..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantIdTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for TenantId class. - */ -public class TenantIdTest { - - final TenantId tenantId1 = TenantId.tenantId("1"); - final TenantId sameAsTenantId1 = TenantId.tenantId("1"); - final TenantId tenantId2 = TenantId.tenantId("2"); - - /** - * Checks that the TenantId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(TenantId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(tenantId1, sameAsTenantId1).addEqualityGroup(tenantId2) - .testEquals(); - } - - /** - * Checks the construction of a TenantId object. - */ - @Test - public void testConstruction() { - final String tenantIdValue = "s"; - final TenantId tenantId = TenantId.tenantId(tenantIdValue); - assertThat(tenantId, is(notNullValue())); - assertThat(tenantId.tenantId(), is(tenantIdValue)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantNetworkIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantNetworkIdTest.java deleted file mode 100644 index 3a118241d6..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/TenantNetworkIdTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for TenantNetworkId class. - */ -public class TenantNetworkIdTest { - - final TenantNetworkId networkId1 = TenantNetworkId.networkId("1"); - final TenantNetworkId sameAsnetworkId1 = TenantNetworkId.networkId("1"); - final TenantNetworkId networkId2 = TenantNetworkId.networkId("2"); - - /** - * Checks that the TenantNetworkId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(TenantNetworkId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(networkId1, sameAsnetworkId1) - .addEqualityGroup(networkId2).testEquals(); - } - - /** - * Checks the construction of a TenantNetworkId object. - */ - @Test - public void testConstruction() { - final String networkIdValue = "s"; - final TenantNetworkId networkId = TenantNetworkId.networkId(networkIdValue); - assertThat(networkId, is(notNullValue())); - assertThat(networkId.networkId(), is(networkIdValue)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/VirtualPortIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/VirtualPortIdTest.java deleted file mode 100644 index 303723dc06..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/VirtualPortIdTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnrsc; - -import org.junit.Test; - -import com.google.common.testing.EqualsTester; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -/** - * Unit tests for VirtualPortId class. - */ -public class VirtualPortIdTest { - - final VirtualPortId virtualPortId1 = VirtualPortId.portId("1"); - final VirtualPortId sameAsVirtualPortId1 = VirtualPortId.portId("1"); - final VirtualPortId virtualPortId2 = VirtualPortId.portId("2"); - - /** - * Checks that the VirtualPortId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(VirtualPortId.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - new EqualsTester().addEqualityGroup(virtualPortId1, sameAsVirtualPortId1) - .addEqualityGroup(virtualPortId2).testEquals(); - } - - /** - * Checks the construction of a VirtualPortId object. - */ - @Test - public void testConstruction() { - final String vPortIdValue = "aaa"; - final VirtualPortId virtualPortId = VirtualPortId.portId(vPortIdValue); - assertThat(virtualPortId, is(notNullValue())); - assertThat(virtualPortId.portId(), is(vPortIdValue)); - - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/DefaultFloatingIpTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/DefaultFloatingIpTest.java deleted file mode 100644 index 4ae6d9c179..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/DefaultFloatingIpTest.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.floatingip; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onosproject.vtnrsc.DefaultFloatingIp; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPortId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultFloatingIp class. - */ -public class DefaultFloatingIpTest { - - private String floatingIpIdStr1 = "5fb63824-4d5c-4b85-9f2f-ebb93c9ce3df"; - private String floatingIpIdStr2 = "fa44f585-fe02-40d3-afe7-d1d7e5782c99"; - private String floatingIpStr = "10.1.1.2"; - private String fixedIpStr = "192.168.1.2"; - private String tenantIdStr = "123"; - private String tenantNetworkId = "1234567"; - private String virtualPortId = "1212"; - private String routerIdStr = "123"; - - /** - * Checks that the DefaultFloatingIp class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultFloatingIp.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - final TenantId tenantId = TenantId.tenantId(tenantIdStr); - final TenantNetworkId networkId = TenantNetworkId - .networkId(tenantNetworkId); - final VirtualPortId portId = VirtualPortId.portId(virtualPortId); - final RouterId routerId = RouterId.valueOf(routerIdStr); - final FloatingIpId id1 = FloatingIpId.of(floatingIpIdStr1); - final FloatingIpId id2 = FloatingIpId.of(floatingIpIdStr2); - final IpAddress floatingIpAddress = IpAddress.valueOf(floatingIpStr); - final IpAddress fixedIpAddress = IpAddress.valueOf(fixedIpStr); - - FloatingIp fip1 = new DefaultFloatingIp(id1, tenantId, networkId, - portId, routerId, - floatingIpAddress, - fixedIpAddress, - FloatingIp.Status.ACTIVE); - FloatingIp fip2 = new DefaultFloatingIp(id1, tenantId, networkId, - portId, routerId, - floatingIpAddress, - fixedIpAddress, - FloatingIp.Status.ACTIVE); - FloatingIp fip3 = new DefaultFloatingIp(id2, tenantId, networkId, - portId, routerId, - floatingIpAddress, - fixedIpAddress, - FloatingIp.Status.ACTIVE); - - new EqualsTester().addEqualityGroup(fip1, fip2).addEqualityGroup(fip3) - .testEquals(); - } - - /** - * Checks the construction of a DefaultFloatingIp object. - */ - @Test - public void testConstruction() { - final TenantId tenantId = TenantId.tenantId(tenantIdStr); - final TenantNetworkId networkId = TenantNetworkId - .networkId(tenantNetworkId); - final VirtualPortId portId = VirtualPortId.portId(virtualPortId); - final RouterId routerId = RouterId.valueOf(routerIdStr); - final FloatingIpId id = FloatingIpId.of(floatingIpIdStr1); - final IpAddress floatingIpAddress = IpAddress.valueOf(floatingIpStr); - final IpAddress fixedIpAddress = IpAddress.valueOf(fixedIpStr); - - FloatingIp fip = new DefaultFloatingIp(id, tenantId, networkId, portId, - routerId, floatingIpAddress, - fixedIpAddress, - FloatingIp.Status.ACTIVE); - assertThat(id, is(notNullValue())); - assertThat(id, is(fip.id())); - assertThat(tenantId, is(notNullValue())); - assertThat(tenantId, is(fip.tenantId())); - assertThat(networkId, is(notNullValue())); - assertThat(networkId, is(fip.networkId())); - assertThat(portId, is(notNullValue())); - assertThat(portId, is(fip.portId())); - assertThat(routerId, is(notNullValue())); - assertThat(routerId, is(fip.routerId())); - assertThat(floatingIpAddress, is(notNullValue())); - assertThat(floatingIpAddress, is(fip.floatingIp())); - assertThat(fixedIpAddress, is(notNullValue())); - assertThat(fixedIpAddress, is(fip.fixedIp())); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/FloatingIpIdTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/FloatingIpIdTest.java deleted file mode 100644 index 22510b246e..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/floatingip/FloatingIpIdTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.floatingip; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.FloatingIpId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for FloatingIpId class. - */ -public class FloatingIpIdTest { - private String floatingIpIdStr1 = "5fb63824-4d5c-4b85-9f2f-ebb93c9ce3df"; - private String floatingIpIdStr2 = "fa44f585-fe02-40d3-afe7-d1d7e5782c99"; - - /** - * Checks that the FloatingIpId class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(FloatingIpId.class); - } - - /** - * Checks the operation of equals() methods. - */ - @Test - public void testEquals() { - FloatingIpId id1 = FloatingIpId.of(floatingIpIdStr1); - FloatingIpId id2 = FloatingIpId.of(floatingIpIdStr1); - FloatingIpId id3 = FloatingIpId.of(floatingIpIdStr2); - new EqualsTester().addEqualityGroup(id1, id2).addEqualityGroup(id3) - .testEquals(); - } - - /** - * Checks the construction of a FloatingIpId object. - */ - @Test - public void testConstruction() { - final FloatingIpId id = FloatingIpId.of(floatingIpIdStr1); - assertThat(id, is(notNullValue())); - assertThat(id.floatingIpId().toString(), is(floatingIpIdStr1)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManagerTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManagerTest.java deleted file mode 100644 index dac4758c62..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManagerTest.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.flowclassifier.impl; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import org.junit.Test; - -import org.onlab.packet.IpPrefix; - -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.DefaultFlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.util.VtnStorageServiceTest; -import org.onosproject.common.event.impl.TestEventDispatcher; - -import static org.onosproject.net.NetTestTools.injectEventDispatcher; - -/** - * Unit tests for FlowClassifierManager class. - */ -public class FlowClassifierManagerTest { - - final String name = "FlowClassifier"; - final String description = "FlowClassifier"; - final String ethType = "IPv4"; - final String protocol = "udp"; - final int minSrcPortRange = 1024; - final int maxSrcPortRange = 5000; - final int minDstPortRange = 1024; - final int maxDstPortRange = 5000; - final FlowClassifierId flowClassifierId = FlowClassifierId.of("71111111-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("8"); - final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0"); - final IpPrefix dstIpPrefix = IpPrefix.valueOf("100.100.100.100/0"); - final VirtualPortId virtualSrcPort = VirtualPortId.portId("100"); - final VirtualPortId virtualDstPort = VirtualPortId.portId("200"); - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - FlowClassifierManager flowClassifierMgr = new FlowClassifierManager(); - FlowClassifier flowClassifier = null; - private final VtnStorageServiceTest storageService = new VtnStorageServiceTest(); - - /** - * Checks the operation of createFlowClassifier() method. - */ - @Test - public void testCreateFlowClassifier() { - // initialize flow classifier manager - flowClassifierMgr.storageService = storageService; - injectEventDispatcher(flowClassifierMgr, new TestEventDispatcher()); - flowClassifierMgr.activate(); - - // create flow classifier - flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId).setTenantId(tenantId) - .setName(name).setDescription(description).setEtherType(ethType).setProtocol(protocol) - .setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build(); - assertThat(flowClassifierMgr.createFlowClassifier(flowClassifier), is(true)); - } - - /** - * Checks the operation of exists() method. - */ - @Test - public void testExists() { - testCreateFlowClassifier(); - assertThat(flowClassifierMgr.exists(flowClassifierId), is(true)); - } - - /** - * Checks the operation of getFlowClassifierCount() method. - */ - @Test - public void testGetFlowClassifierCount() { - testCreateFlowClassifier(); - assertThat(flowClassifierMgr.getFlowClassifierCount(), is(1)); - } - - /** - * Checks the operation of getFlowClassifiers() method. - */ - @Test - public void testGetFlowClassifiers() { - testCreateFlowClassifier(); - final Iterable flowClassifierList = flowClassifierMgr.getFlowClassifiers(); - assertThat(flowClassifierList, is(notNullValue())); - assertThat(flowClassifierList.iterator().hasNext(), is(true)); - } - - /** - * Checks the operation of getFlowClassifier() method. - */ - @Test - public void testGetFlowClassifier() { - testCreateFlowClassifier(); - assertThat(flowClassifier, is(notNullValue())); - assertThat(flowClassifierMgr.getFlowClassifier(flowClassifierId), is(flowClassifier)); - } - - /** - * Checks the operation of updateFlowClassifier() method. - */ - @Test - public void testUpdateFlowClassifier() { - // create a flow classifier - testCreateFlowClassifier(); - - // new updates - final String name2 = "FlowClassifier2"; - final String description2 = "FlowClassifier2"; - final String ethType2 = "IPv6"; - final String protocol2 = "tcp"; - final TenantId tenantId2 = TenantId.tenantId("10"); - final VirtualPortId virtualSrcPort2 = VirtualPortId.portId("300"); - final VirtualPortId virtualDstPort2 = VirtualPortId.portId("400"); - flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId) - .setTenantId(tenantId2).setName(name2).setDescription(description2).setEtherType(ethType2) - .setProtocol(protocol2).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange) - .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix) - .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort2).setDstPort(virtualDstPort2).build(); - assertThat(flowClassifierMgr.updateFlowClassifier(flowClassifier), is(true)); - } - - /** - * Checks the operation of removeFlowClassifier() method. - */ - @Test - public void testRemoveFlowClassifier() { - testCreateFlowClassifier(); - assertThat(flowClassifierMgr.removeFlowClassifier(flowClassifierId), is(true)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/impl/PortChainManagerTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/impl/PortChainManagerTest.java deleted file mode 100644 index e79d9dba60..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portchain/impl/PortChainManagerTest.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portchain.impl; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import org.junit.Test; -import java.util.List; -import java.util.LinkedList; - -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.DefaultPortChain; -import org.onosproject.vtnrsc.DefaultFlowClassifier; -import org.onosproject.vtnrsc.util.VtnStorageServiceTest; -import org.onosproject.common.event.impl.TestEventDispatcher; - -import static org.onosproject.net.NetTestTools.injectEventDispatcher; - -/** - * Unit tests for PortChainManager class. - */ -public class PortChainManagerTest { - final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortChain"; - final String description = "PortChain"; - final List portPairGroupList = new LinkedList(); - final List flowClassifierList = new LinkedList(); - DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder(); - DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder(); - PortChainManager portChainMgr = new PortChainManager(); - PortChain portChain = null; - private final VtnStorageServiceTest storageService = new VtnStorageServiceTest(); - - /** - * Checks the operation of createPortChain() method. - */ - @Test - public void testCreatePortChain() { - // initialize port chain manager - portChainMgr.storageService = storageService; - injectEventDispatcher(portChainMgr, new TestEventDispatcher()); - portChainMgr.activate(); - - // create list of Port Pair Groups. - PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroupList.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroupList.add(portPairGroupId); - - // create list of Flow classifiers. - FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifierList.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifierList.add(flowClassifierId); - - // create port chain - portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name).setDescription(description) - .setPortPairGroups(portPairGroupList).setFlowClassifiers(flowClassifierList).build(); - assertThat(portChainMgr.createPortChain(portChain), is(true)); - } - - /** - * Checks the operation of exists() method. - */ - @Test - public void testExists() { - testCreatePortChain(); - assertThat(portChainMgr.exists(portChainId), is(true)); - } - - /** - * Checks the operation of getPortChainCount() method. - */ - @Test - public void testGetPortChainCount() { - testCreatePortChain(); - assertThat(portChainMgr.getPortChainCount(), is(1)); - } - - /** - * Checks the operation of getPortChains() method. - */ - @Test - public void testGetPortChains() { - testCreatePortChain(); - final Iterable portChainList = portChainMgr.getPortChains(); - assertThat(portChainList, is(notNullValue())); - assertThat(portChainList.iterator().hasNext(), is(true)); - } - - /** - * Checks the operation of getPortChain() method. - */ - @Test - public void testGetPortChain() { - testCreatePortChain(); - assertThat(portChain, is(notNullValue())); - assertThat(portChainMgr.getPortChain(portChainId), is(portChain)); - } - - /** - * Checks the operation of updatePortChain() method. - */ - @Test - public void testUpdatePortChain() { - // create a port chain - testCreatePortChain(); - - // new updates - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortChain2"; - final String description2 = "PortChain2"; - // create list of Port Pair Groups. - final List portPairGroupList = new LinkedList(); - PortPairGroupId portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairGroupList.add(portPairGroupId); - portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3af"); - portPairGroupList.add(portPairGroupId); - // create list of Flow classifiers. - final List flowClassifierList = new LinkedList(); - FlowClassifierId flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3ae"); - flowClassifierList.add(flowClassifierId); - flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3af"); - flowClassifierList.add(flowClassifierId); - portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId2).setName(name2) - .setDescription(description2).setPortPairGroups(portPairGroupList) - .setFlowClassifiers(flowClassifierList).build(); - assertThat(portChainMgr.updatePortChain(portChain), is(true)); - } - - /** - * Checks the operation of removePortChain() method. - */ - @Test - public void testRemovePortChain() { - testCreatePortChain(); - assertThat(portChainMgr.removePortChain(portChainId), is(true)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/impl/PortPairManagerTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/impl/PortPairManagerTest.java deleted file mode 100644 index 06e3e5749c..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpair/impl/PortPairManagerTest.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpair.impl; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import org.junit.Test; - -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.DefaultPortPair; -import org.onosproject.vtnrsc.util.VtnStorageServiceTest; -import org.onosproject.common.event.impl.TestEventDispatcher; - -import static org.onosproject.net.NetTestTools.injectEventDispatcher; - -/** - * Unit tests for PortPairManager class. - */ -public class PortPairManagerTest { - final PortPairId portPairId = PortPairId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPair"; - final String description = "PortPair"; - final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345"; - DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder(); - PortPairManager portPairMgr = new PortPairManager(); - PortPair portPair = null; - private final VtnStorageServiceTest storageService = new VtnStorageServiceTest(); - - /** - * Checks the operation of createPortPair() method. - */ - @Test - public void testCreatePortPair() { - // initialize port pair manager - portPairMgr.storageService = storageService; - injectEventDispatcher(portPairMgr, new TestEventDispatcher()); - portPairMgr.activate(); - - // create port pair - portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId).setName(name) - .setDescription(description).setIngress(ingress).setEgress(egress).build(); - assertThat(portPairMgr.createPortPair(portPair), is(true)); - } - - /** - * Checks the operation of exists() method. - */ - @Test - public void testExists() { - testCreatePortPair(); - assertThat(portPairMgr.exists(portPairId), is(true)); - } - - /** - * Checks the operation of getPortPairCount() method. - */ - @Test - public void testGetPortPairCount() { - testCreatePortPair(); - assertThat(portPairMgr.getPortPairCount(), is(1)); - } - - /** - * Checks the operation of getPortPairs() method. - */ - @Test - public void testGetPortPairs() { - testCreatePortPair(); - final Iterable portPairList = portPairMgr.getPortPairs(); - assertThat(portPairList, is(notNullValue())); - assertThat(portPairList.iterator().hasNext(), is(true)); - } - - /** - * Checks the operation of getPortPair() method. - */ - @Test - public void testGetPortPair() { - testCreatePortPair(); - assertThat(portPair, is(notNullValue())); - assertThat(portPairMgr.getPortPair(portPairId), is(portPair)); - } - - /** - * Checks the operation of updatePortPair() method. - */ - @Test - public void testUpdatePortPair() { - // create a port pair - testCreatePortPair(); - - // new updates - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortPair2"; - final String description2 = "PortPair2"; - final String ingress2 = "d5555555-24fc-4fae-af4b-321c5e2eb3d1"; - final String egress2 = "a6666666-4a56-2a6e-cd3a-9dee4e2ec345"; - portPair = portPairBuilder.setId(portPairId).setTenantId(tenantId2).setName(name2) - .setDescription(description2).setIngress(ingress2).setEgress(egress2).build(); - assertThat(portPairMgr.updatePortPair(portPair), is(true)); - } - - /** - * Checks the operation of removePortPair() method. - */ - @Test - public void testRemovePortPair() { - testCreatePortPair(); - assertThat(portPairMgr.removePortPair(portPairId), is(true)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManagerTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManagerTest.java deleted file mode 100644 index 6edcef66d5..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManagerTest.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.portpairgroup.impl; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import org.junit.Test; -import java.util.List; -import java.util.LinkedList; - -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.DefaultPortPairGroup; -import org.onosproject.vtnrsc.util.VtnStorageServiceTest; -import org.onosproject.common.event.impl.TestEventDispatcher; - -import static org.onosproject.net.NetTestTools.injectEventDispatcher; - -/** - * Unit tests for PortPairGroupManager class. - */ -public class PortPairGroupManagerTest { - final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae"); - final TenantId tenantId = TenantId.tenantId("1"); - final String name = "PortPairGroup"; - final String description = "PortPairGroup"; - final List portPairIdList = new LinkedList(); - DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder(); - PortPairGroupManager portPairGroupMgr = new PortPairGroupManager(); - PortPairGroup portPairGroup = null; - private final VtnStorageServiceTest storageService = new VtnStorageServiceTest(); - - /** - * Checks the operation of createPortPairGroup() method. - */ - @Test - public void testCreatePortPairGroup() { - // initialize port pair group manager - portPairGroupMgr.storageService = storageService; - injectEventDispatcher(portPairGroupMgr, new TestEventDispatcher()); - portPairGroupMgr.activate(); - - // create port-pair-id list - PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairIdList.add(portPairId); - portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairIdList.add(portPairId); - - // create port pair - portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId).setName(name) - .setDescription(description).setPortPairs(portPairIdList).build(); - assertThat(portPairGroupMgr.createPortPairGroup(portPairGroup), is(true)); - } - - /** - * Checks the operation of exists() method. - */ - @Test - public void testExists() { - testCreatePortPairGroup(); - assertThat(portPairGroupMgr.exists(portPairGroupId), is(true)); - } - - /** - * Checks the operation of getPortPairGroupCount() method. - */ - @Test - public void testGetPortPairGroupCount() { - testCreatePortPairGroup(); - assertThat(portPairGroupMgr.getPortPairGroupCount(), is(1)); - } - - /** - * Checks the operation of getPortPairGroups() method. - */ - @Test - public void testGetPortPairGroups() { - testCreatePortPairGroup(); - final Iterable portPairGroupList = portPairGroupMgr.getPortPairGroups(); - assertThat(portPairGroupList, is(notNullValue())); - assertThat(portPairGroupList.iterator().hasNext(), is(true)); - } - - /** - * Checks the operation of getPortPairGroup() method. - */ - @Test - public void testGetPortPairGroup() { - testCreatePortPairGroup(); - assertThat(portPairGroup, is(notNullValue())); - assertThat(portPairGroupMgr.getPortPairGroup(portPairGroupId), is(portPairGroup)); - } - - /** - * Checks the operation of updatePortPairGroup() method. - */ - @Test - public void testUpdatePortPairGroup() { - // create a port pair group - testCreatePortPairGroup(); - - // new updates - // create port-pair-id list - final TenantId tenantId2 = TenantId.tenantId("2"); - final String name2 = "PortPairGroup2"; - final String description2 = "PortPairGroup2"; - final List portPairIdList = new LinkedList(); - PortPairId portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairIdList.add(portPairId); - portPairId = PortPairId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3ae"); - portPairIdList.add(portPairId); - - // create port pair - portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId2).setName(name2) - .setDescription(description2).setPortPairs(portPairIdList).build(); - assertThat(portPairGroupMgr.updatePortPairGroup(portPairGroup), is(true)); - } - - /** - * Checks the operation of removePortPairGroup() method. - */ - @Test - public void testRemovePortPairGroup() { - testCreatePortPairGroup(); - assertThat(portPairGroupMgr.removePortPairGroup(portPairGroupId), is(true)); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/DefaultRouterTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/DefaultRouterTest.java deleted file mode 100644 index c2ebe44100..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/DefaultRouterTest.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.router; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import java.util.Collections; - -import org.junit.Test; -import org.onosproject.vtnrsc.DefaultRouter; -import org.onosproject.vtnrsc.Router; -import org.onosproject.vtnrsc.RouterGateway; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPortId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for DefaultRouter class. - */ -public class DefaultRouterTest { - - private String tenantIdStr = "123"; - private String virtualPortId = "1212"; - private String routeIdStr1 = "1"; - private String routeIdStr2 = "2"; - private String routerName = "router"; - private String tenantNetworkId = "1234567"; - - /** - * Checks that the DefaultRouter class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(DefaultRouter.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - final TenantId tenantId = TenantId.tenantId(tenantIdStr); - final VirtualPortId portId = VirtualPortId.portId(virtualPortId); - final RouterId routerId1 = RouterId.valueOf(routeIdStr1); - final RouterId routerId2 = RouterId.valueOf(routeIdStr2); - final TenantNetworkId networkId = TenantNetworkId - .networkId(tenantNetworkId); - final RouterGateway routerGateway = RouterGateway.routerGateway( - networkId, - true, - Collections - .emptySet()); - - Router r1 = new DefaultRouter(routerId1, routerName, false, - Router.Status.ACTIVE, false, - routerGateway, portId, tenantId, null); - Router r2 = new DefaultRouter(routerId1, routerName, false, - Router.Status.ACTIVE, false, - routerGateway, portId, tenantId, null); - Router r3 = new DefaultRouter(routerId2, routerName, false, - Router.Status.ACTIVE, false, - routerGateway, portId, tenantId, null); - - new EqualsTester().addEqualityGroup(r1, r2).addEqualityGroup(r3) - .testEquals(); - } - - /** - * Checks the construction of a DefaultRouter object. - */ - @Test - public void testConstruction() { - final TenantId tenantId = TenantId.tenantId(tenantIdStr); - final VirtualPortId portId = VirtualPortId.portId(virtualPortId); - final RouterId routerId = RouterId.valueOf(routeIdStr1); - final TenantNetworkId networkId = TenantNetworkId - .networkId(tenantNetworkId); - final RouterGateway routerGateway = RouterGateway.routerGateway( - networkId, - true, - Collections - .emptySet()); - - Router r1 = new DefaultRouter(routerId, routerName, false, - Router.Status.ACTIVE, false, - routerGateway, portId, tenantId, null); - assertThat(routerId, is(notNullValue())); - assertThat(routerId, is(r1.id())); - assertThat(tenantId, is(notNullValue())); - assertThat(tenantId, is(r1.tenantId())); - assertThat(routerGateway, is(notNullValue())); - assertThat(routerGateway, is(r1.externalGatewayInfo())); - } - -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterInterfaceTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterInterfaceTest.java deleted file mode 100644 index b937605b2e..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/router/RouterInterfaceTest.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.router; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; - -import org.junit.Test; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.RouterInterface; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; - -import com.google.common.testing.EqualsTester; - -/** - * Unit tests for RouterInterface class. - */ -public class RouterInterfaceTest { - private String tenantIdStr = "123"; - private String virtualPortId = "1212"; - private String routeIdStr1 = "1"; - private String routeIdStr2 = "2"; - private String subnetIdStr = "1234567"; - - /** - * Checks that the RouterInterface class is immutable. - */ - @Test - public void testImmutability() { - assertThatClassIsImmutable(RouterInterface.class); - } - - /** - * Checks the operation of equals(). - */ - @Test - public void testEquals() { - final TenantId tenantId = TenantId.tenantId(tenantIdStr); - final VirtualPortId portId = VirtualPortId.portId(virtualPortId); - final RouterId routerId1 = RouterId.valueOf(routeIdStr1); - final RouterId routerId2 = RouterId.valueOf(routeIdStr2); - final SubnetId subnet = SubnetId.subnetId(subnetIdStr); - - RouterInterface ri1 = RouterInterface.routerInterface(subnet, portId, - routerId1, - tenantId); - RouterInterface ri2 = RouterInterface.routerInterface(subnet, portId, - routerId1, - tenantId); - RouterInterface ri3 = RouterInterface.routerInterface(subnet, portId, - routerId2, - tenantId); - - new EqualsTester().addEqualityGroup(ri1, ri2).addEqualityGroup(ri3) - .testEquals(); - } - - /** - * Checks the construction of a RouterInterface object. - */ - @Test - public void testConstruction() { - final TenantId tenantId = TenantId.tenantId(tenantIdStr); - final VirtualPortId portId = VirtualPortId.portId(virtualPortId); - final RouterId routerId1 = RouterId.valueOf(routeIdStr1); - final SubnetId subnet = SubnetId.subnetId(subnetIdStr); - - RouterInterface ri1 = RouterInterface.routerInterface(subnet, portId, - routerId1, - tenantId); - assertThat(portId, is(notNullValue())); - assertThat(portId, is(ri1.portId())); - assertThat(tenantId, is(notNullValue())); - assertThat(tenantId, is(ri1.tenantId())); - assertThat(routerId1, is(notNullValue())); - assertThat(routerId1, is(ri1.routerId())); - assertThat(subnet, is(notNullValue())); - assertThat(subnet, is(ri1.subnetId())); - } -} diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnEventuallyConsistentMapTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnEventuallyConsistentMapTest.java deleted file mode 100644 index 3f5e50e402..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnEventuallyConsistentMapTest.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.util; - -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.function.BiFunction; - -import org.onlab.util.KryoNamespace; -import org.onosproject.cluster.NodeId; -import org.onosproject.store.Timestamp; - -import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.*; - -import org.onosproject.store.service.EventuallyConsistentMapAdapter; -import org.onosproject.store.service.EventuallyConsistentMapListener; -import org.onosproject.store.service.EventuallyConsistentMapEvent; -import org.onosproject.store.service.EventuallyConsistentMapBuilder; -import org.onosproject.store.service.EventuallyConsistentMap; - -/** - * Testing version of an Eventually Consistent Map. - */ - -public final class VtnEventuallyConsistentMapTest extends EventuallyConsistentMapAdapter { - - private final HashMap map; - private final String mapName; - private final List> listeners; - private final BiFunction> peerUpdateFunction; - - private VtnEventuallyConsistentMapTest(String mapName, - BiFunction> peerUpdateFunction) { - map = new HashMap<>(); - listeners = new LinkedList<>(); - this.mapName = mapName; - this.peerUpdateFunction = peerUpdateFunction; - } - - /** - * Notify all listeners of an event. - */ - private void notifyListeners(EventuallyConsistentMapEvent event) { - listeners.forEach( - listener -> listener.event(event) - ); - } - - @Override - public int size() { - return map.size(); - } - - @Override - public boolean isEmpty() { - return map.isEmpty(); - } - - @Override - public boolean containsKey(K key) { - return map.containsKey(key); - } - - @Override - public boolean containsValue(V value) { - return map.containsValue(value); - } - - @Override - public V get(K key) { - return map.get(key); - } - - @SuppressWarnings("ReturnValueIgnored") - @Override - public void put(K key, V value) { - map.put(key, value); - EventuallyConsistentMapEvent addEvent = - new EventuallyConsistentMapEvent<>(mapName, PUT, key, value); - notifyListeners(addEvent); - if (peerUpdateFunction != null) { - peerUpdateFunction.apply(key, value); - } - } - - @Override - public V remove(K key) { - V result = map.remove(key); - if (result != null) { - EventuallyConsistentMapEvent removeEvent = - new EventuallyConsistentMapEvent<>(mapName, REMOVE, - key, map.get(key)); - notifyListeners(removeEvent); - } - return result; - } - - @Override - public void remove(K key, V value) { - boolean removed = map.remove(key, value); - if (removed) { - EventuallyConsistentMapEvent removeEvent = - new EventuallyConsistentMapEvent<>(mapName, REMOVE, key, value); - notifyListeners(removeEvent); - } - } - - @Override - public V compute(K key, BiFunction recomputeFunction) { - return map.compute(key, recomputeFunction); - } - - @Override - public void putAll(Map m) { - map.putAll(m); - } - - @Override - public void clear() { - map.clear(); - } - - @Override - public Set keySet() { - return map.keySet(); - } - - @Override - public Collection values() { - return map.values(); - } - - @Override - public Set> entrySet() { - return map.entrySet(); - } - - public static Builder builder() { - return new Builder<>(); - } - - @Override - public void addListener(EventuallyConsistentMapListener listener) { - listeners.add(listener); - } - - @Override - public void removeListener(EventuallyConsistentMapListener listener) { - listeners.remove(listener); - } - - public static class Builder implements EventuallyConsistentMapBuilder { - private String name; - private BiFunction> peerUpdateFunction; - - @Override - public EventuallyConsistentMapBuilder withName(String name) { - this.name = name; - return this; - } - - @Override - public EventuallyConsistentMapBuilder withSerializer(KryoNamespace.Builder serializerBuilder) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withSerializer(KryoNamespace serializer) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder - withTimestampProvider(BiFunction timestampProvider) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withEventExecutor(ExecutorService executor) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withCommunicationExecutor(ExecutorService executor) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withBackgroundExecutor(ScheduledExecutorService executor) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder - withPeerUpdateFunction(BiFunction> peerUpdateFunction) { - this.peerUpdateFunction = peerUpdateFunction; - return this; - } - - @Override - public EventuallyConsistentMapBuilder withTombstonesDisabled() { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withAntiEntropyPeriod(long period, TimeUnit unit) { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withFasterConvergence() { - return this; - } - - @Override - public EventuallyConsistentMapBuilder withPersistence() { - return this; - } - - @Override - public EventuallyConsistentMap build() { - if (name == null) { - name = "test"; - } - return new VtnEventuallyConsistentMapTest<>(name, peerUpdateFunction); - } - } - -} - diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnStorageServiceTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnStorageServiceTest.java deleted file mode 100644 index 90fad4779f..0000000000 --- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/util/VtnStorageServiceTest.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnrsc.util; - -import org.onosproject.store.service.EventuallyConsistentMapBuilder; -import org.onosproject.store.service.StorageServiceAdapter; - -public class VtnStorageServiceTest extends StorageServiceAdapter { - @Override - public EventuallyConsistentMapBuilder eventuallyConsistentMapBuilder() { - return VtnEventuallyConsistentMapTest.builder(); - } -} diff --git a/apps/vtn/vtnweb/BUILD b/apps/vtn/vtnweb/BUILD deleted file mode 100644 index 0142518ed3..0000000000 --- a/apps/vtn/vtnweb/BUILD +++ /dev/null @@ -1,16 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + JACKSON + REST + [ - "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc", -] - -TEST_DEPS = TEST_REST + [ - "@minimal_json//jar", - "//utils/osgi:onlab-osgi-tests", - "//web/api:onos-rest-tests", -] - -osgi_jar_with_tests( - exclude_tests = ["org.onosproject.vtnweb.resources.VtnResourceTest"], - test_deps = TEST_DEPS, - web_context = "/onos/vtn", - deps = COMPILE_DEPS, -) diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcUiExtensionManager.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcUiExtensionManager.java deleted file mode 100644 index 7997d4ad42..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcUiExtensionManager.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.gui; - -import com.google.common.collect.ImmutableList; -import org.onosproject.ui.UiExtension; -import org.onosproject.ui.UiExtensionService; -import org.onosproject.ui.UiMessageHandlerFactory; -import org.onosproject.ui.UiView; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; - -import java.util.List; - -import static com.google.common.collect.ImmutableList.of; -import static org.onosproject.ui.UiView.Category.NETWORK; -import static org.slf4j.LoggerFactory.getLogger; - -/** - * service function chain gui. - */ -@Component(immediate = true, service = SfcUiExtensionManager.class) -public class SfcUiExtensionManager { - private final Logger log = getLogger(getClass()); - - private static final ClassLoader CL = - SfcUiExtensionManager.class.getClassLoader(); - private static final String GUI = "gui"; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected UiExtensionService uiExtensionService; - - // service function chain extension - private final UiExtension sfc = createSfcExtension(); - - // Creates service function chain UI extension - private UiExtension createSfcExtension() { - List coreViews = of( - //TODO add a new type of icon for sfc - new UiView(NETWORK, "sfc", "SFC", "nav_sfcs") - ); - - UiMessageHandlerFactory messageHandlerFactory = - () -> ImmutableList.of( - new SfcViewMessageHandler() - ); - - return new UiExtension.Builder(CL, coreViews) - .messageHandlerFactory(messageHandlerFactory) - .resourcePath(GUI) - .build(); - } - - @Activate - public void activate() { - uiExtensionService.register(sfc); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - uiExtensionService.unregister(sfc); - log.info("Stopped"); - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcViewMessageHandler.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcViewMessageHandler.java deleted file mode 100644 index 3b65e8bee5..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/SfcViewMessageHandler.java +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnweb.gui; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import org.onlab.packet.IpAddress; -import org.onosproject.ui.RequestHandler; -import org.onosproject.ui.UiMessageHandler; -import org.onosproject.ui.table.TableModel; -import org.onosproject.ui.table.TableRequestHandler; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.ImmutableSet; - -/** - * Message handler for service function chain view related messages. - */ -public class SfcViewMessageHandler extends UiMessageHandler { - - private static final String SLASH = " -> "; - private static final String NONE = "none"; - private static final String SFCTYPE = "Service Function Chain"; - - private static final String SFC_DATA_REQ = "sfcDataRequest"; - private static final String SFC_DATA_RESP = "sfcDataResponse"; - private static final String SFCS = "sfcs"; - - private static final String ID = "id"; - private static final String STATE = "_iconid_state"; - private static final String PORTCHAINNAME = "portChainName"; - private static final String SFS = "sfs"; - private static final String TYPE = "type"; - private static final String SRCIP = "srcIp"; - private static final String DSTIP = "dstIp"; - - private static final String[] COL_IDS = { - ID, STATE, PORTCHAINNAME, SFS, TYPE, SRCIP, DSTIP - }; - - private static final String ICON_ID_ONLINE = "active"; - private static final String ICON_ID_OFFLINE = "inactive"; - - @Override - protected Collection createRequestHandlers() { - return ImmutableSet.of(new SfcDataRequest()); - } - - // handler for sfc table requests - private final class SfcDataRequest extends TableRequestHandler { - - private static final String NO_ROWS_MESSAGE = "No Service Function Chain found"; - - private SfcDataRequest() { - super(SFC_DATA_REQ, SFC_DATA_RESP, SFCS); - } - - @Override - protected String[] getColumnIds() { - return COL_IDS; - } - - @Override - protected String defaultColumnId() { - return PORTCHAINNAME; - } - - @Override - protected String noRowsMessage(ObjectNode payload) { - return NO_ROWS_MESSAGE; - } - - @Override - protected void populateTable(TableModel tm, ObjectNode payload) { - PortChainService pcs = get(PortChainService.class); - Iterable portChains = pcs.getPortChains(); - portChains.forEach(pchain -> populateRow(tm.addRow(), pchain)); - } - - //populate the row of service function chain - private void populateRow(TableModel.Row row, PortChain pchain) { - PortChainIpRange portChainIpRange = portChainIpRange(pchain); - List vpList = sfcPorts(pchain); - row.cell(ID, pchain.portChainId().value().toString()) - .cell(STATE, sfcState(vpList)) - .cell(PORTCHAINNAME, pchain.name()) - .cell(SFS, sfcHosts(vpList)) - .cell(TYPE, SFCTYPE) - .cell(SRCIP, portChainIpRange.srcip()) - .cell(DSTIP, portChainIpRange.dstip()); - } - - //PortChainIpRange - private PortChainIpRange portChainIpRange(PortChain pchain) { - List flowClassifierList = pchain.flowClassifiers(); - FlowClassifierService fcs = get(FlowClassifierService.class); - StringBuffer srcipbuf = new StringBuffer(); - StringBuffer dstipbuf = new StringBuffer(); - if (flowClassifierList != null) { - flowClassifierList.forEach(fcid -> { - FlowClassifier fc = fcs.getFlowClassifier(fcid); - String srcip = fc.srcIpPrefix().toString(); - String dstip = fc.dstIpPrefix().toString(); - srcipbuf.append(srcip).append(SLASH); - dstipbuf.append(dstip).append(SLASH); - }); - } - String srcip = NONE; - String dstip = NONE; - if (srcipbuf.length() > 0) { - srcip = srcipbuf.substring(0, srcipbuf.length() - SLASH.length()); - } - if (dstipbuf.length() > 0) { - dstip = dstipbuf.substring(0, dstipbuf.length() - SLASH.length()); - } - PortChainIpRange portChainIpRange = new PortChainIpRange(srcip, dstip); - return portChainIpRange; - } - - //the VirtualPorts of service function chain - private List sfcPorts(PortChain pchain) { - List portPairGroupList = pchain.portPairGroups(); - PortPairGroupService ppgs = get(PortPairGroupService.class); - PortPairService pps = get(PortPairService.class); - VirtualPortService vps = get(VirtualPortService.class); - List vpList = new ArrayList(); - if (portPairGroupList != null) { - portPairGroupList.forEach(ppgid -> { - PortPairGroup ppg = ppgs.getPortPairGroup(ppgid); - List portPairList = ppg.portPairs(); - if (portPairList != null) { - portPairList.forEach(ppid -> { - PortPair pp = pps.getPortPair(ppid); - VirtualPort vp = vps.getPort(VirtualPortId.portId(pp.ingress())); - vpList.add(vp); - }); - } - }); - } - return vpList; - } - - //the state of service function chain - private String sfcState(List vpList) { - for (VirtualPort vp : vpList) { - if (vp.state().equals(VirtualPort.State.DOWN)) { - return ICON_ID_OFFLINE; - } - } - return ICON_ID_ONLINE; - } - - //the hosts of service function chain - private String sfcHosts(List vpList) { - StringBuffer hostsbuf = new StringBuffer(); - for (VirtualPort vp : vpList) { - Iterator fixedIps = vp.fixedIps().iterator(); - if (fixedIps.hasNext()) { - FixedIp fixedIp = fixedIps.next(); - IpAddress ip = fixedIp.ip(); - hostsbuf.append(ip.toString()).append(SLASH); - } - } - if (hostsbuf.length() > 0) { - return hostsbuf.substring(0, hostsbuf.length() - SLASH.length()); - } - return hostsbuf.toString(); - } - - //source ip prefix and destination ip prefix - private final class PortChainIpRange { - private final String srcip; - private final String dstip; - - private PortChainIpRange(String srcip, String dstip) { - this.srcip = srcip; - this.dstip = dstip; - } - - public String srcip() { - return srcip; - } - - public String dstip() { - return dstip; - } - } - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/package-info.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/package-info.java deleted file mode 100644 index bee6e77177..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/gui/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Service Function Chain gui. - */ -package org.onosproject.vtnweb.gui; diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/ClassifierWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/ClassifierWebResource.java deleted file mode 100644 index 991f0fc1bb..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/ClassifierWebResource.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.Consumes; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.net.DeviceId; -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.classifier.ClassifierService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program classifiers. - */ -@Path("classifiers") -public class ClassifierWebResource extends AbstractWebResource { - - private final Logger log = LoggerFactory.getLogger(ClassifierWebResource.class); - - /** - * Get the list of classifier devices. - * - * @return 200 OK - */ - @GET - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getClassifiers() { - - ObjectNode result = mapper().createObjectNode(); - - Iterable classifierDevices = get(ClassifierService.class).getClassifiers(); - ArrayNode classifier = result.putArray("classifiers"); - if (classifierDevices != null) { - for (final DeviceId deviceId : classifierDevices) { - ObjectNode dev = mapper().createObjectNode() - .put("DeviceId", deviceId.toString()); - classifier.add(dev); - } - } - return ok(result.toString()).build(); - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java deleted file mode 100644 index 9fc25a856e..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Sets; -import org.onlab.packet.IpAddress; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.DefaultFloatingIp; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIp.Status; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.floatingip.FloatingIpService; -import org.onosproject.vtnweb.web.FloatingIpCodec; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.IOException; -import java.io.InputStream; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static javax.ws.rs.core.Response.Status.BAD_REQUEST; -import static javax.ws.rs.core.Response.Status.CONFLICT; -import static javax.ws.rs.core.Response.Status.CREATED; -import static javax.ws.rs.core.Response.Status.NOT_FOUND; -import static org.onlab.util.Tools.readTreeFromStream; - -@Path("floatingips") -public class FloatingIpWebResource extends AbstractWebResource { - private final Logger log = LoggerFactory - .getLogger(FloatingIpWebResource.class); - public static final String CREATE_FAIL = "Floating IP is failed to create!"; - public static final String UPDATE_FAIL = "Floating IP is failed to update!"; - public static final String DELETE_FAIL = "Floating IP is failed to delete!"; - public static final String GET_FAIL = "Floating IP is failed to get!"; - public static final String NOT_EXIST = "Floating IP does not exist!"; - public static final String DELETE_SUCCESS = "Floating IP delete success!"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - - @GET - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response listFloatingIps() { - Collection floatingIps = get(FloatingIpService.class) - .getFloatingIps(); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("floatingips", - new FloatingIpCodec().encode(floatingIps, this)); - return ok(result.toString()).build(); - } - - @GET - @Path("{floatingIpUUID}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getFloatingIp(@PathParam("floatingIpUUID") String id, - @QueryParam("fields") List fields) { - - if (!get(FloatingIpService.class).exists(FloatingIpId.of(id))) { - return Response.status(NOT_FOUND).entity(NOT_EXIST).build(); - } - FloatingIp sub = nullIsNotFound(get(FloatingIpService.class) - .getFloatingIp(FloatingIpId.of(id)), GET_FAIL); - - ObjectNode result = new ObjectMapper().createObjectNode(); - if (!fields.isEmpty()) { - result.set("floatingip", - new FloatingIpCodec().extracFields(sub, this, fields)); - } else { - result.set("floatingip", new FloatingIpCodec().encode(sub, this)); - } - return ok(result.toString()).build(); - } - - @POST - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response createFloatingIp(final InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = readTreeFromStream(mapper, input); - Collection floatingIps = createOrUpdateByInputStream(subnode); - Boolean result = nullIsNotFound((get(FloatingIpService.class) - .createFloatingIps(floatingIps)), - CREATE_FAIL); - if (!result) { - return Response.status(CONFLICT).entity(CREATE_FAIL).build(); - } - return Response.status(CREATED).entity(result.toString()).build(); - - } catch (Exception e) { - return Response.status(BAD_REQUEST).entity(e.getMessage()).build(); - } - } - - @PUT - @Path("{floatingIpUUID}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updateFloatingIp(@PathParam("floatingIpUUID") String id, - final InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = readTreeFromStream(mapper, input); - Collection floatingIps = createOrUpdateByInputStream(subnode); - Boolean result = nullIsNotFound(get(FloatingIpService.class) - .updateFloatingIps(floatingIps), UPDATE_FAIL); - if (!result) { - return Response.status(CONFLICT).entity(UPDATE_FAIL).build(); - } - return ok(result.toString()).build(); - } catch (Exception e) { - return Response.status(BAD_REQUEST).entity(e.getMessage()).build(); - } - } - - @DELETE - @Path("{floatingIpUUID}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response deleteSingleFloatingIp(@PathParam("floatingIpUUID") String id) - throws IOException { - try { - FloatingIpId floatingIpId = FloatingIpId.of(id); - Set floatingIpIds = Sets.newHashSet(floatingIpId); - Boolean result = nullIsNotFound(get(FloatingIpService.class) - .removeFloatingIps(floatingIpIds), DELETE_FAIL); - if (!result) { - return Response.status(CONFLICT).entity(DELETE_FAIL).build(); - } - return Response.noContent().entity(DELETE_SUCCESS).build(); - } catch (Exception e) { - return Response.status(NOT_FOUND).entity(e.getMessage()).build(); - } - } - - private Collection createOrUpdateByInputStream(JsonNode subnode) { - checkNotNull(subnode, JSON_NOT_NULL); - Collection floatingIps = null; - JsonNode floatingIpNodes = subnode.get("floatingips"); - if (floatingIpNodes == null) { - floatingIpNodes = subnode.get("floatingip"); - } - log.debug("floatingNodes is {}", floatingIpNodes.toString()); - - if (floatingIpNodes.isArray()) { - throw new IllegalArgumentException("only singleton requests allowed"); - } else { - floatingIps = changeJsonToSub(floatingIpNodes); - } - return floatingIps; - } - - /** - * Returns a collection of floatingIps from floatingIpNodes. - * - * @param floatingIpNodes the floatingIp json node - * @return floatingIps a collection of floatingIp - */ - public Collection changeJsonToSub(JsonNode floatingIpNodes) { - checkNotNull(floatingIpNodes, JSON_NOT_NULL); - Map subMap = new HashMap(); - if (!floatingIpNodes.hasNonNull("id")) { - throw new IllegalArgumentException("id should not be null"); - } else if (floatingIpNodes.get("id").asText().isEmpty()) { - throw new IllegalArgumentException("id should not be empty"); - } - FloatingIpId id = FloatingIpId.of(floatingIpNodes.get("id") - .asText()); - - if (!floatingIpNodes.hasNonNull("tenant_id")) { - throw new IllegalArgumentException("tenant_id should not be null"); - } else if (floatingIpNodes.get("tenant_id").asText().isEmpty()) { - throw new IllegalArgumentException("tenant_id should not be empty"); - } - TenantId tenantId = TenantId.tenantId(floatingIpNodes.get("tenant_id") - .asText()); - - if (!floatingIpNodes.hasNonNull("floating_network_id")) { - throw new IllegalArgumentException( - "floating_network_id should not be null"); - } else if (floatingIpNodes.get("floating_network_id").asText() - .isEmpty()) { - throw new IllegalArgumentException( - "floating_network_id should not be empty"); - } - TenantNetworkId networkId = TenantNetworkId.networkId(floatingIpNodes - .get("floating_network_id").asText()); - - VirtualPortId portId = null; - if (floatingIpNodes.hasNonNull("port_id")) { - portId = VirtualPortId.portId(floatingIpNodes.get("port_id") - .asText()); - } - - RouterId routerId = null; - if (floatingIpNodes.hasNonNull("router_id")) { - routerId = RouterId.valueOf(floatingIpNodes.get("router_id") - .asText()); - } - - IpAddress fixedIp = null; - if (floatingIpNodes.hasNonNull("fixed_ip_address")) { - fixedIp = IpAddress.valueOf(floatingIpNodes.get("fixed_ip_address") - .asText()); - } - - if (!floatingIpNodes.hasNonNull("floating_ip_address")) { - throw new IllegalArgumentException( - "floating_ip_address should not be null"); - } else if (floatingIpNodes.get("floating_ip_address").asText() - .isEmpty()) { - throw new IllegalArgumentException( - "floating_ip_address should not be empty"); - } - IpAddress floatingIp = IpAddress.valueOf(floatingIpNodes - .get("floating_ip_address").asText()); - - if (!floatingIpNodes.hasNonNull("status")) { - throw new IllegalArgumentException("status should not be null"); - } else if (floatingIpNodes.get("status").asText().isEmpty()) { - throw new IllegalArgumentException("status should not be empty"); - } - Status status = Status.valueOf(floatingIpNodes.get("status").asText()); - - DefaultFloatingIp floatingIpObj = new DefaultFloatingIp(id, tenantId, - networkId, - portId, - routerId, - floatingIp, - fixedIp, status); - subMap.put(id, floatingIpObj); - return Collections.unmodifiableCollection(subMap.values()); - } - - /** - * Returns the specified item if that items is null; otherwise throws not - * found exception. - * - * @param item item to check - * @param item type - * @param message not found message - * @return item if not null - * @throws org.onlab.util.ItemNotFoundException if item is null - */ - protected T nullIsNotFound(T item, String message) { - if (item == null) { - throw new ItemNotFoundException(message); - } - return item; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java deleted file mode 100644 index 47e249fc55..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import static javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.nullIsNotFound; -import static org.onlab.util.Tools.readTreeFromStream; - -import java.io.IOException; -import java.io.InputStream; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program flow classifier. - */ -@Path("flow_classifiers") -public class FlowClassifierWebResource extends AbstractWebResource { - - private final Logger log = LoggerFactory.getLogger(FlowClassifierWebResource.class); - - public static final String FLOW_CLASSIFIER_NOT_FOUND = "Flow classifier not found"; - - /** - * Get all flow classifiers created. - * - * @return 200 OK - */ - @GET - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response getFlowClassifiers() { - Iterable flowClassifiers = get(FlowClassifierService.class).getFlowClassifiers(); - ObjectNode result = mapper().createObjectNode(); - ArrayNode flowClassifierEntry = result.putArray("flow_classifiers"); - if (flowClassifiers != null) { - for (final FlowClassifier flowClassifier : flowClassifiers) { - flowClassifierEntry.add(codec(FlowClassifier.class).encode(flowClassifier, this)); - } - } - return ok(result.toString()).build(); - } - - /** - * Get details of a flow classifier. - * - * @param id - * flow classifier id - * @return 200 OK , 404 if given identifier does not exist - */ - @GET - @Path("{flow_id}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response getFlowClassifier(@PathParam("flow_id") String id) { - FlowClassifier flowClassifier = nullIsNotFound(get(FlowClassifierService.class) - .getFlowClassifier(FlowClassifierId.of(id)), FLOW_CLASSIFIER_NOT_FOUND); - - ObjectNode result = mapper().createObjectNode(); - result.set("flow_classifier", codec(FlowClassifier.class).encode(flowClassifier, this)); - - return ok(result.toString()).build(); - } - - /** - * Creates and stores a new flow classifier. - * - * @param stream - * flow classifier from JSON - * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid - */ - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createFlowClassifier(InputStream stream) { - try { - ObjectNode jsonTree = readTreeFromStream(mapper(), stream); - JsonNode flow = jsonTree.get("flow_classifier"); - - FlowClassifier flowClassifier = codec(FlowClassifier.class).decode((ObjectNode) flow, this); - Boolean issuccess = nullIsNotFound(get(FlowClassifierService.class).createFlowClassifier(flowClassifier), - FLOW_CLASSIFIER_NOT_FOUND); - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (IOException ex) { - log.error("Exception while creating flow classifier {}.", ex.toString()); - throw new IllegalArgumentException(ex); - } - } - - /** - * Update details of a flow classifier. - * - * @param id - * flow classifier id - * @param stream - * InputStream - * @return 200 OK, 404 if given identifier does not exist - */ - @PUT - @Path("{flow_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updateFlowClassifier(@PathParam("flow_id") String id, final InputStream stream) { - try { - - JsonNode jsonTree = readTreeFromStream(mapper(), stream); - JsonNode flow = jsonTree.get("flow_classifier"); - FlowClassifier flowClassifier = codec(FlowClassifier.class).decode((ObjectNode) flow, this); - Boolean result = nullIsNotFound(get(FlowClassifierService.class).updateFlowClassifier(flowClassifier), - FLOW_CLASSIFIER_NOT_FOUND); - return Response.status(OK).entity(result.toString()).build(); - } catch (IOException e) { - log.error("Update flow classifier failed because of exception {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Delete details of a flow classifier. - * - * @param id flow classifier id - * @return 204 NO CONTENT - */ - @Path("{flow_id}") - @DELETE - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response deleteFlowClassifier(@PathParam("flow_id") String id) { - log.debug("Deletes flow classifier by identifier {}.", id); - FlowClassifierId flowClassifierId = FlowClassifierId.of(id); - Boolean issuccess = nullIsNotFound(get(FlowClassifierService.class).removeFlowClassifier(flowClassifierId), - FLOW_CLASSIFIER_NOT_FOUND); - return Response.noContent().build(); - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainDeviceMapWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainDeviceMapWebResource.java deleted file mode 100644 index 8a48afb0f9..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainDeviceMapWebResource.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.nullIsNotFound; - -import java.util.Set; - -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.codec.CodecContext; -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.LoadBalanceId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.portchain.PortChainService; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program port chain. - */ - -@Path("portChainDeviceMap") -public class PortChainDeviceMapWebResource extends AbstractWebResource { - - public static final String PORT_CHAIN_NOT_FOUND = "Port chain not found"; - public static final String PORT_CHAIN_ID_EXIST = "Port chain exists"; - public static final String PORT_CHAIN_ID_NOT_EXIST = "Port chain does not exist with identifier"; - - private static final String NAME = "name"; - private static final String ID = "id"; - private static final String CLASSIFIERS = "classifiers"; - private static final String FORWARDERS = "forwarders"; - private static final String LOADBALANCEID = "loadBalanceId"; - - /** - * Get details of a specified port chain id. - * - * @param id port chain id - * @return 200 OK, 404 if given identifier does not exist - */ - @GET - @Path("{chain_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getPortChainDeviceMap(@PathParam("chain_id") String id) { - - PortChain portChain = nullIsNotFound(get(PortChainService.class).getPortChain(PortChainId.of(id)), - PORT_CHAIN_NOT_FOUND); - ObjectNode result = mapper().createObjectNode(); - result.set("portChainDeviceMap", encode(portChain, this)); - - return ok(result.toString()).build(); - } - - private ObjectNode encode(PortChain portChain, CodecContext context) { - checkNotNull(portChain, "portChain cannot be null"); - ObjectNode result = context.mapper().createObjectNode(); - result.put(ID, portChain.portChainId().toString()) - .put(NAME, portChain.name()); - - Set loadBalanceIds = portChain.getLoadBalancePathMapKeys(); - for (LoadBalanceId id : loadBalanceIds) { - result.put(LOADBALANCEID, id.toString()) - .put(CLASSIFIERS, portChain.getSfcClassifiers(id).toString()) - .put(FORWARDERS, portChain.getSfcForwarders(id).toString()); - } - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainSfMapWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainSfMapWebResource.java deleted file mode 100644 index 7d08f88a04..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainSfMapWebResource.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import static org.onlab.util.Tools.nullIsNotFound; - -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.ServiceFunctionGroup; -import org.onosproject.vtnrsc.portchainsfmap.PortChainSfMapService; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query service function and load details by port chain. - */ - -@Path("portChainSfMap") -public class PortChainSfMapWebResource extends AbstractWebResource { - - public static final String PORT_CHAIN_NOT_FOUND = "Port chain not found"; - public static final String PORT_CHAIN_ID_EXIST = "Port chain exists"; - public static final String PORT_CHAIN_ID_NOT_EXIST = "Port chain does not exist with identifier"; - - /** - * Get service function details of a specified port chain id. - * - * @param id port chain id - * @return 200 OK, 404 if given identifier does not exist - */ - @GET - @Path("{chainId}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getPortChainSfMap(@PathParam("chainId") String id) { - - Iterable serviceFunctionGroups = nullIsNotFound(get(PortChainSfMapService.class) - .getServiceFunctions(PortChainId.of(id)), - PORT_CHAIN_NOT_FOUND); - ObjectNode result = mapper().createObjectNode(); - ArrayNode portChainSfMap = result.putArray("portChainSfMap"); - if (serviceFunctionGroups != null) { - for (final ServiceFunctionGroup serviceFunctionGroup : serviceFunctionGroups) { - portChainSfMap.add(codec(ServiceFunctionGroup.class).encode(serviceFunctionGroup, this)); - } - } - return ok(result.toString()).build(); - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java deleted file mode 100644 index 1bfa44f920..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import static javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.nullIsNotFound; -import static org.onlab.util.Tools.readTreeFromStream; - -import java.io.IOException; -import java.io.InputStream; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program port chain. - */ - -@Path("port_chains") -public class PortChainWebResource extends AbstractWebResource { - - private final Logger log = LoggerFactory.getLogger(PortChainWebResource.class); - public static final String PORT_CHAIN_NOT_FOUND = "Port chain not found"; - public static final String PORT_CHAIN_ID_EXIST = "Port chain exists"; - public static final String PORT_CHAIN_ID_NOT_EXIST = "Port chain does not exist with identifier"; - - /** - * Get details of all port chains created. - * - * @return 200 OK - */ - @GET - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getPortChains() { - Iterable portChains = get(PortChainService.class).getPortChains(); - ObjectNode result = mapper().createObjectNode(); - ArrayNode portChainEntry = result.putArray("port_chains"); - if (portChains != null) { - for (final PortChain portChain : portChains) { - portChainEntry.add(codec(PortChain.class).encode(portChain, this)); - } - } - return ok(result.toString()).build(); - } - - /** - * Get details of a specified port chain id. - * - * @param id port chain id - * @return 200 OK, 404 if given identifier does not exist - */ - @GET - @Path("{chain_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getPortPain(@PathParam("chain_id") String id) { - - PortChain portChain = nullIsNotFound(get(PortChainService.class).getPortChain(PortChainId.of(id)), - PORT_CHAIN_NOT_FOUND); - ObjectNode result = mapper().createObjectNode(); - result.set("port_chain", codec(PortChain.class).encode(portChain, this)); - return ok(result.toString()).build(); - } - - /** - * Creates a new port chain. - * - * @param stream port chain from JSON - * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid - */ - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createPortChain(InputStream stream) { - try { - ObjectNode jsonTree = readTreeFromStream(mapper(), stream); - JsonNode port = jsonTree.get("port_chain"); - PortChain portChain = codec(PortChain.class).decode((ObjectNode) port, this); - Boolean issuccess = nullIsNotFound(get(PortChainService.class).createPortChain(portChain), - PORT_CHAIN_NOT_FOUND); - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (IOException e) { - log.error("Exception while creating port chain {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Update details of a specified port chain id. - * - * @param id port chain id - * @param stream port chain json - * @return 200 OK, 404 if given identifier does not exist - */ - @PUT - @Path("{chain_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updatePortPain(@PathParam("chain_id") String id, - final InputStream stream) { - try { - ObjectNode jsonTree = readTreeFromStream(mapper(), stream); - JsonNode port = jsonTree.get("port_chain"); - PortChain portChain = codec(PortChain.class).decode((ObjectNode) port, this); - Boolean result = nullIsNotFound(get(PortChainService.class).updatePortChain(portChain), - PORT_CHAIN_NOT_FOUND); - return Response.status(OK).entity(result.toString()).build(); - } catch (IOException e) { - log.error("Update port chain failed because of exception {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Delete details of a specified port chain id. - * - * @param id port chain id - * @return 204 NO CONTENT - */ - @Path("{chain_id}") - @DELETE - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response deletePortPain(@PathParam("chain_id") String id) { - log.debug("Deletes port chain by identifier {}.", id); - PortChainId portChainId = PortChainId.of(id); - - Boolean issuccess = nullIsNotFound(get(PortChainService.class).removePortChain(portChainId), - PORT_CHAIN_NOT_FOUND); - if (!issuccess) { - log.debug("Port Chain identifier {} does not exist", id); - } - return Response.noContent().build(); - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java deleted file mode 100644 index 91793ca77f..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnweb.resources; - -import static javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.nullIsNotFound; -import static org.onlab.util.Tools.readTreeFromStream; - -import java.io.IOException; -import java.io.InputStream; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program port pair group. - */ - -@Path("port_pair_groups") -public class PortPairGroupWebResource extends AbstractWebResource { - - private final Logger log = LoggerFactory.getLogger(PortPairGroupWebResource.class); - public static final String PORT_PAIR_GROUP_NOT_FOUND = "Port pair group not found"; - public static final String PORT_PAIR_GROUP_ID_EXIST = "Port pair group exists"; - public static final String PORT_PAIR_GROUP_ID_NOT_EXIST = "Port pair group does not exist with identifier"; - - /** - * Get details of all port pair groups created. - * - * @return 200 OK - */ - @GET - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getPortPairGroups() { - Iterable portPairGroups = get(PortPairGroupService.class).getPortPairGroups(); - ObjectNode result = mapper().createObjectNode(); - ArrayNode portPairGroupEntry = result.putArray("port_pair_groups"); - if (portPairGroups != null) { - for (final PortPairGroup portPairGroup : portPairGroups) { - portPairGroupEntry.add(codec(PortPairGroup.class).encode(portPairGroup, this)); - } - } - return ok(result.toString()).build(); - } - - /** - * Get details of a specified port pair group id. - * - * @param id port pair group id - * @return 200 OK, 404 if given identifier does not exist - */ - @GET - @Path("{group_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getPortPairGroup(@PathParam("group_id") String id) { - PortPairGroup portPairGroup = nullIsNotFound(get(PortPairGroupService.class) - .getPortPairGroup(PortPairGroupId.of(id)), - PORT_PAIR_GROUP_NOT_FOUND); - - ObjectNode result = mapper().createObjectNode(); - result.set("port_pair_group", codec(PortPairGroup.class).encode(portPairGroup, this)); - return ok(result.toString()).build(); - } - - /** - * Creates a new port pair group. - * - * @param stream port pair group from JSON - * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid - */ - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createPortPairGroup(InputStream stream) { - - try { - ObjectMapper mapper = new ObjectMapper(); - ObjectNode jsonTree = readTreeFromStream(mapper, stream); - JsonNode port = jsonTree.get("port_pair_group"); - - PortPairGroup portPairGroup = codec(PortPairGroup.class).decode((ObjectNode) port, this); - Boolean issuccess = nullIsNotFound(get(PortPairGroupService.class).createPortPairGroup(portPairGroup), - PORT_PAIR_GROUP_NOT_FOUND); - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (IOException e) { - log.error("Exception while creating port pair group {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Update details of a specified port pair group id. - * - * @param id port pair group id - * @param stream port pair group from json - * @return 200 OK, 404 if given identifier does not exist - */ - @PUT - @Path("{group_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updatePortPairGroup(@PathParam("group_id") String id, - final InputStream stream) { - try { - ObjectMapper mapper = new ObjectMapper(); - ObjectNode jsonTree = readTreeFromStream(mapper, stream); - JsonNode port = jsonTree.get("port_pair_group"); - PortPairGroup portPairGroup = codec(PortPairGroup.class).decode((ObjectNode) port, this); - Boolean isSuccess = nullIsNotFound(get(PortPairGroupService.class).updatePortPairGroup(portPairGroup), - PORT_PAIR_GROUP_NOT_FOUND); - return Response.status(OK).entity(isSuccess.toString()).build(); - } catch (IOException e) { - log.error("Update port pair group failed because of exception {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Delete details of a specified port pair group id. - * - * @param id port pair group id - * @return 204 NO CONTENT - */ - @Path("{group_id}") - @DELETE - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response deletePortPairGroup(@PathParam("group_id") String id) { - log.debug("Deletes port pair group by identifier {}.", id); - PortPairGroupId portPairGroupId = PortPairGroupId.of(id); - Boolean issuccess = nullIsNotFound(get(PortPairGroupService.class).removePortPairGroup(portPairGroupId), - PORT_PAIR_GROUP_NOT_FOUND); - if (!issuccess) { - log.debug("Port pair group identifier {} does not exist", id); - } - - return Response.noContent().build(); - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java deleted file mode 100644 index 2c88f6fe9a..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnweb.resources; - -import static javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.nullIsNotFound; -import static org.onlab.util.Tools.readTreeFromStream; - -import java.io.IOException; -import java.io.InputStream; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program port pair. - */ -@Path("port_pairs") -public class PortPairWebResource extends AbstractWebResource { - - private final Logger log = LoggerFactory.getLogger(PortPairWebResource.class); - public static final String PORT_PAIR_NOT_FOUND = "Port pair not found"; - public static final String PORT_PAIR_ID_EXIST = "Port pair exists"; - public static final String PORT_PAIR_ID_NOT_EXIST = "Port pair does not exist with identifier"; - - /** - * Get details of all port pairs created. - * - * @return 200 OK - */ - @GET - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getPortPairs() { - Iterable portPairs = get(PortPairService.class).getPortPairs(); - ObjectNode result = mapper().createObjectNode(); - ArrayNode portPairEntry = result.putArray("port_pairs"); - if (portPairs != null) { - for (final PortPair portPair : portPairs) { - portPairEntry.add(codec(PortPair.class).encode(portPair, this)); - } - } - return ok(result.toString()).build(); - } - - /** - * Get details of a specified port pair id. - * - * @param id port pair id - * @return 200 OK, 404 if given identifier does not exist - */ - @GET - @Path("{pair_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getPortPair(@PathParam("pair_id") String id) { - PortPair portPair = nullIsNotFound(get(PortPairService.class).getPortPair(PortPairId.of(id)), - PORT_PAIR_NOT_FOUND); - ObjectNode result = mapper().createObjectNode(); - result.set("port_pair", codec(PortPair.class).encode(portPair, this)); - return ok(result.toString()).build(); - } - - /** - * Creates a new port pair. - * - * @param stream port pair from JSON - * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid - */ - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createPortPair(InputStream stream) { - try { - ObjectNode jsonTree = readTreeFromStream(mapper(), stream); - JsonNode port = jsonTree.get("port_pair"); - PortPair portPair = codec(PortPair.class).decode((ObjectNode) port, this); - Boolean isSuccess = nullIsNotFound(get(PortPairService.class).createPortPair(portPair), - PORT_PAIR_NOT_FOUND); - return Response.status(OK).entity(isSuccess.toString()).build(); - } catch (IOException e) { - log.error("Exception while creating port pair {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Update details of a specified port pair id. - * - * @param id port pair id - * @param stream port pair from json - * @return 200 OK, 404 if the given identifier does not exist - */ - @PUT - @Path("{pair_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updatePortPair(@PathParam("pair_id") String id, - final InputStream stream) { - try { - ObjectNode jsonTree = readTreeFromStream(mapper(), stream); - JsonNode port = jsonTree.get("port_pair"); - PortPair portPair = codec(PortPair.class).decode((ObjectNode) port, this); - Boolean isSuccess = nullIsNotFound(get(PortPairService.class).updatePortPair(portPair), - PORT_PAIR_NOT_FOUND); - return Response.status(OK).entity(isSuccess.toString()).build(); - } catch (IOException e) { - log.error("Update port pair failed because of exception {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Delete details of a specified port pair id. - * - * @param id port pair id - * @return 204 NO CONTENT - */ - @Path("{pair_id}") - @DELETE - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response deletePortPair(@PathParam("pair_id") String id) { - - PortPairId portPairId = PortPairId.of(id); - Boolean isSuccess = nullIsNotFound(get(PortPairService.class).removePortPair(portPairId), PORT_PAIR_NOT_FOUND); - if (!isSuccess) { - log.debug("Port pair identifier {} does not exist", id); - } - return Response.noContent().build(); - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java deleted file mode 100644 index 15d56cf834..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java +++ /dev/null @@ -1,491 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import org.onlab.packet.IpAddress; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.DefaultRouter; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.Router; -import org.onosproject.vtnrsc.Router.Status; -import org.onosproject.vtnrsc.RouterGateway; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.RouterInterface; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.router.RouterService; -import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService; -import org.onosproject.vtnweb.web.RouterCodec; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentMap; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static javax.ws.rs.core.Response.Status.BAD_REQUEST; -import static javax.ws.rs.core.Response.Status.CONFLICT; -import static javax.ws.rs.core.Response.Status.CREATED; -import static javax.ws.rs.core.Response.Status.NOT_FOUND; -import static org.onlab.util.Tools.readTreeFromStream; - -@Path("routers") -public class RouterWebResource extends AbstractWebResource { - private final Logger log = LoggerFactory.getLogger(RouterWebResource.class); - public static final String CREATE_FAIL = "Router is failed to create!"; - public static final String UPDATE_FAIL = "Router is failed to update!"; - public static final String GET_FAIL = "Router is failed to get!"; - public static final String NOT_EXIST = "Router does not exist!"; - public static final String DELETE_SUCCESS = "Router delete success!"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - public static final String INTFACR_ADD_SUCCESS = "Interface add success"; - public static final String INTFACR_DEL_SUCCESS = "Interface delete success"; - - @GET - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response listRouters() { - Collection routers = get(RouterService.class).getRouters(); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("routers", new RouterCodec().encode(routers, this)); - return ok(result.toString()).build(); - } - - @GET - @Path("{routerUUID}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getRouter(@PathParam("routerUUID") String id, - @QueryParam("fields") List fields) { - - if (!get(RouterService.class).exists(RouterId.valueOf(id))) { - return Response.status(NOT_FOUND) - .entity("The Router does not exists").build(); - } - Router sub = nullIsNotFound(get(RouterService.class) - .getRouter(RouterId.valueOf(id)), NOT_EXIST); - - ObjectNode result = new ObjectMapper().createObjectNode(); - if (!fields.isEmpty()) { - result.set("router", - new RouterCodec().extracFields(sub, this, fields)); - } else { - result.set("router", new RouterCodec().encode(sub, this)); - } - return ok(result.toString()).build(); - } - - @POST - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response createRouter(final InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = readTreeFromStream(mapper, input); - Collection routers = createOrUpdateByInputStream(subnode); - - Boolean result = nullIsNotFound((get(RouterService.class) - .createRouters(routers)), CREATE_FAIL); - if (!result) { - return Response.status(CONFLICT).entity(CREATE_FAIL).build(); - } - return Response.status(CREATED).entity(result.toString()).build(); - - } catch (IllegalArgumentException | IOException e) { - return Response.status(BAD_REQUEST).entity(e.getMessage()).build(); - } - } - - @PUT - @Path("{routerUUID}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updateRouter(@PathParam("routerUUID") String id, - final InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = readTreeFromStream(mapper, input); - Collection routers = changeUpdateJsonToSub(subnode, id); - Boolean result = nullIsNotFound(get(RouterService.class) - .updateRouters(routers), UPDATE_FAIL); - if (!result) { - return Response.status(CONFLICT).entity(UPDATE_FAIL).build(); - } - return ok(result.toString()).build(); - } catch (Exception e) { - return Response.status(BAD_REQUEST).entity(e.getMessage()).build(); - } - } - - @DELETE - @Path("{routerUUID}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response deleteSingleRouter(@PathParam("routerUUID") String id) - throws IOException { - try { - RouterId routerId = RouterId.valueOf(id); - Set routerIds = Sets.newHashSet(routerId); - get(RouterService.class).removeRouters(routerIds); - return Response.noContent().entity(DELETE_SUCCESS).build(); - } catch (Exception e) { - return Response.status(BAD_REQUEST).entity(e.getMessage()).build(); - } - } - - @PUT - @Path("{routerUUID}/add_router_interface") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response addRouterInterface(@PathParam("routerUUID") String id, - final InputStream input) { - if (!get(RouterService.class).exists(RouterId.valueOf(id))) { - return Response.status(NOT_FOUND).entity(NOT_EXIST).build(); - } - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = readTreeFromStream(mapper, input); - if (!subnode.hasNonNull("id")) { - throw new IllegalArgumentException("id should not be null"); - } else if (subnode.get("id").asText().isEmpty()) { - throw new IllegalArgumentException("id should not be empty"); - } - RouterId routerId = RouterId.valueOf(id); - if (!subnode.hasNonNull("subnet_id")) { - throw new IllegalArgumentException("subnet_id should not be null"); - } else if (subnode.get("subnet_id").asText().isEmpty()) { - throw new IllegalArgumentException("subnet_id should not be empty"); - } - SubnetId subnetId = SubnetId - .subnetId(subnode.get("subnet_id").asText()); - if (!subnode.hasNonNull("tenant_id")) { - throw new IllegalArgumentException("tenant_id should not be null"); - } else if (subnode.get("tenant_id").asText().isEmpty()) { - throw new IllegalArgumentException("tenant_id should not be empty"); - } - TenantId tenantId = TenantId - .tenantId(subnode.get("tenant_id").asText()); - if (!subnode.hasNonNull("port_id")) { - throw new IllegalArgumentException("port_id should not be null"); - } else if (subnode.get("port_id").asText().isEmpty()) { - throw new IllegalArgumentException("port_id should not be empty"); - } - VirtualPortId portId = VirtualPortId - .portId(subnode.get("port_id").asText()); - RouterInterface routerInterface = RouterInterface - .routerInterface(subnetId, portId, routerId, tenantId); - get(RouterInterfaceService.class) - .addRouterInterface(routerInterface); - return ok(INTFACR_ADD_SUCCESS).build(); - } catch (Exception e) { - return Response.status(BAD_REQUEST).entity(e.getMessage()).build(); - } - } - - @PUT - @Path("{routerUUID}/remove_router_interface") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response removeRouterInterface(@PathParam("routerUUID") String id, - final InputStream input) { - if (!get(RouterService.class).exists(RouterId.valueOf(id))) { - return Response.status(NOT_FOUND).entity(NOT_EXIST).build(); - } - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = readTreeFromStream(mapper, input); - if (!subnode.hasNonNull("id")) { - throw new IllegalArgumentException("id should not be null"); - } else if (subnode.get("id").asText().isEmpty()) { - throw new IllegalArgumentException("id should not be empty"); - } - RouterId routerId = RouterId.valueOf(id); - if (!subnode.hasNonNull("subnet_id")) { - throw new IllegalArgumentException("subnet_id should not be null"); - } else if (subnode.get("subnet_id").asText().isEmpty()) { - throw new IllegalArgumentException("subnet_id should not be empty"); - } - SubnetId subnetId = SubnetId - .subnetId(subnode.get("subnet_id").asText()); - if (!subnode.hasNonNull("port_id")) { - throw new IllegalArgumentException("port_id should not be null"); - } else if (subnode.get("port_id").asText().isEmpty()) { - throw new IllegalArgumentException("port_id should not be empty"); - } - VirtualPortId portId = VirtualPortId - .portId(subnode.get("port_id").asText()); - if (!subnode.hasNonNull("tenant_id")) { - throw new IllegalArgumentException("tenant_id should not be null"); - } else if (subnode.get("tenant_id").asText().isEmpty()) { - throw new IllegalArgumentException("tenant_id should not be empty"); - } - TenantId tenantId = TenantId - .tenantId(subnode.get("tenant_id").asText()); - RouterInterface routerInterface = RouterInterface - .routerInterface(subnetId, portId, routerId, tenantId); - get(RouterInterfaceService.class) - .removeRouterInterface(routerInterface); - return ok(INTFACR_DEL_SUCCESS).build(); - } catch (Exception e) { - return Response.status(BAD_REQUEST).entity(e.getMessage()).build(); - } - } - - private Collection createOrUpdateByInputStream(JsonNode subnode) { - checkNotNull(subnode, JSON_NOT_NULL); - JsonNode routerNode = subnode.get("routers"); - if (routerNode == null) { - routerNode = subnode.get("router"); - } - log.debug("routerNode is {}", routerNode.toString()); - - if (routerNode.isArray()) { - throw new IllegalArgumentException("only singleton requests allowed"); - } else { - return changeJsonToSub(routerNode); - } - } - - /** - * Returns a collection of floatingIps from floatingIpNodes. - * - * @param routerNode the router json node - * @return routers a collection of router - */ - public Collection changeJsonToSub(JsonNode routerNode) { - checkNotNull(routerNode, JSON_NOT_NULL); - Map subMap = new HashMap(); - if (!routerNode.hasNonNull("id")) { - throw new IllegalArgumentException("id should not be null"); - } else if (routerNode.get("id").asText().isEmpty()) { - throw new IllegalArgumentException("id should not be empty"); - } - RouterId id = RouterId.valueOf(routerNode.get("id").asText()); - - if (!routerNode.hasNonNull("tenant_id")) { - throw new IllegalArgumentException("tenant_id should not be null"); - } else if (routerNode.get("tenant_id").asText().isEmpty()) { - throw new IllegalArgumentException("tenant_id should not be empty"); - } - TenantId tenantId = TenantId - .tenantId(routerNode.get("tenant_id").asText()); - - VirtualPortId gwPortId = null; - if (routerNode.hasNonNull("gw_port_id")) { - gwPortId = VirtualPortId - .portId(routerNode.get("gw_port_id").asText()); - } - - if (!routerNode.hasNonNull("status")) { - throw new IllegalArgumentException("status should not be null"); - } else if (routerNode.get("status").asText().isEmpty()) { - throw new IllegalArgumentException("status should not be empty"); - } - Status status = Status.valueOf(routerNode.get("status").asText()); - - String routerName = null; - if (routerNode.hasNonNull("name")) { - routerName = routerNode.get("name").asText(); - } - - boolean adminStateUp = true; - checkArgument(routerNode.get("admin_state_up").isBoolean(), - "admin_state_up should be boolean"); - if (routerNode.hasNonNull("admin_state_up")) { - adminStateUp = routerNode.get("admin_state_up").asBoolean(); - } - boolean distributed = false; - if (routerNode.hasNonNull("distributed")) { - distributed = routerNode.get("distributed").asBoolean(); - } - RouterGateway gateway = null; - if (routerNode.hasNonNull("external_gateway_info")) { - gateway = jsonNodeToGateway(routerNode - .get("external_gateway_info")); - } - List routes = new ArrayList(); - DefaultRouter routerObj = new DefaultRouter(id, routerName, - adminStateUp, status, - distributed, gateway, - gwPortId, tenantId, routes); - subMap.put(id, routerObj); - return Collections.unmodifiableCollection(subMap.values()); - } - - /** - * Returns a collection of floatingIps from floatingIpNodes. - * - * @param subnode the router json node - * @param routerId the router identify - * @return routers a collection of router - */ - public Collection changeUpdateJsonToSub(JsonNode subnode, - String routerId) { - checkNotNull(subnode, JSON_NOT_NULL); - checkNotNull(routerId, "routerId should not be null"); - Map subMap = new HashMap(); - JsonNode routerNode = subnode.get("router"); - RouterId id = RouterId.valueOf(routerId); - Router sub = nullIsNotFound(get(RouterService.class).getRouter(id), - NOT_EXIST); - TenantId tenantId = sub.tenantId(); - - VirtualPortId gwPortId = null; - if (routerNode.hasNonNull("gw_port_id")) { - gwPortId = VirtualPortId - .portId(routerNode.get("gw_port_id").asText()); - } - Status status = sub.status(); - - String routerName = routerNode.get("name").asText(); - - checkArgument(routerNode.get("admin_state_up").isBoolean(), - "admin_state_up should be boolean"); - boolean adminStateUp = routerNode.get("admin_state_up").asBoolean(); - - boolean distributed = sub.distributed(); - if (routerNode.hasNonNull("distributed")) { - distributed = routerNode.get("distributed").asBoolean(); - } - RouterGateway gateway = sub.externalGatewayInfo(); - if (routerNode.hasNonNull("external_gateway_info")) { - gateway = jsonNodeToGateway(routerNode - .get("external_gateway_info")); - } - List routes = new ArrayList(); - DefaultRouter routerObj = new DefaultRouter(id, routerName, - adminStateUp, status, - distributed, gateway, - gwPortId, tenantId, routes); - subMap.put(id, routerObj); - return Collections.unmodifiableCollection(subMap.values()); - } - - /** - * Changes JsonNode Gateway to the Gateway. - * - * @param gateway the gateway JsonNode - * @return gateway - */ - private RouterGateway jsonNodeToGateway(JsonNode gateway) { - checkNotNull(gateway, JSON_NOT_NULL); - if (!gateway.hasNonNull("network_id")) { - throw new IllegalArgumentException("network_id should not be null"); - } else if (gateway.get("network_id").asText().isEmpty()) { - throw new IllegalArgumentException("network_id should not be empty"); - } - TenantNetworkId networkId = TenantNetworkId - .networkId(gateway.get("network_id").asText()); - - if (!gateway.hasNonNull("enable_snat")) { - throw new IllegalArgumentException("enable_snat should not be null"); - } else if (gateway.get("enable_snat").asText().isEmpty()) { - throw new IllegalArgumentException("enable_snat should not be empty"); - } - checkArgument(gateway.get("enable_snat").isBoolean(), - "enable_snat should be boolean"); - boolean enableSnat = gateway.get("enable_snat").asBoolean(); - - if (!gateway.hasNonNull("external_fixed_ips")) { - throw new IllegalArgumentException("external_fixed_ips should not be null"); - } else if (gateway.get("external_fixed_ips").isNull()) { - throw new IllegalArgumentException("external_fixed_ips should not be empty"); - } - Iterable fixedIpList = jsonNodeToFixedIp(gateway - .get("external_fixed_ips")); - RouterGateway gatewayObj = RouterGateway - .routerGateway(networkId, enableSnat, Sets.newHashSet(fixedIpList)); - return gatewayObj; - } - - /** - * Changes JsonNode fixedIp to a collection of the fixedIp. - * - * @param fixedIp the allocationPools JsonNode - * @return a collection of fixedIp - */ - private Iterable jsonNodeToFixedIp(JsonNode fixedIp) { - checkNotNull(fixedIp, JSON_NOT_NULL); - ConcurrentMap fixedIpMaps = Maps.newConcurrentMap(); - Integer i = 0; - for (JsonNode node : fixedIp) { - if (!node.hasNonNull("subnet_id")) { - throw new IllegalArgumentException("subnet_id should not be null"); - } else if (node.get("subnet_id").asText().isEmpty()) { - throw new IllegalArgumentException("subnet_id should not be empty"); - } - SubnetId subnetId = SubnetId - .subnetId(node.get("subnet_id").asText()); - if (!node.hasNonNull("ip_address")) { - throw new IllegalArgumentException("ip_address should not be null"); - } else if (node.get("ip_address").asText().isEmpty()) { - throw new IllegalArgumentException("ip_address should not be empty"); - } - IpAddress ipAddress = IpAddress - .valueOf(node.get("ip_address").asText()); - FixedIp fixedIpObj = FixedIp.fixedIp(subnetId, ipAddress); - - fixedIpMaps.putIfAbsent(i, fixedIpObj); - i++; - } - return Collections.unmodifiableCollection(fixedIpMaps.values()); - } - - /** - * Returns the specified item if that items is null; otherwise throws not - * found exception. - * - * @param item item to check - * @param item type - * @param message not found message - * @return item if not null - * @throws org.onlab.util.ItemNotFoundException if item is null - */ - protected T nullIsNotFound(T item, String message) { - if (item == null) { - throw new ItemNotFoundException(message); - } - return item; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java deleted file mode 100644 index b0951f47f2..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java +++ /dev/null @@ -1,384 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; -import static javax.ws.rs.core.Response.Status.NOT_FOUND; -import static org.onlab.util.Tools.readTreeFromStream; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentMap; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpAddress.Version; -import org.onlab.packet.IpPrefix; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.AllocationPool; -import org.onosproject.vtnrsc.DefaultAllocationPool; -import org.onosproject.vtnrsc.DefaultHostRoute; -import org.onosproject.vtnrsc.DefaultSubnet; -import org.onosproject.vtnrsc.HostRoute; -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.Subnet.Mode; -import org.onosproject.vtnrsc.subnet.SubnetService; -import org.onosproject.vtnweb.web.SubnetCodec; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -@Path("subnets") -public class SubnetWebResource extends AbstractWebResource { - private final Logger log = LoggerFactory.getLogger(SubnetWebResource.class); - public static final String SUBNET_NOT_CREATED = "Subnet failed to create!"; - public static final String SUBNET_NOT_FOUND = "Subnet is not found"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - - @GET - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response listSubnets() { - Iterable subnets = get(SubnetService.class).getSubnets(); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("subnets", new SubnetCodec().encode(subnets, this)); - return ok(result.toString()).build(); - } - - @GET - @Path("{subnetUUID}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getSubnet(@PathParam("subnetUUID") String id) { - - if (!get(SubnetService.class).exists(SubnetId.subnetId(id))) { - return Response.status(NOT_FOUND) - .entity(SUBNET_NOT_FOUND).build(); - } - Subnet sub = nullIsNotFound(get(SubnetService.class) - .getSubnet(SubnetId.subnetId(id)), - SUBNET_NOT_FOUND); - - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("subnet", new SubnetCodec().encode(sub, this)); - return ok(result.toString()).build(); - } - - @POST - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response createSubnet(final InputStream input) { - - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = readTreeFromStream(mapper, input); - Iterable subnets = createOrUpdateByInputStream(subnode); - Boolean result = nullIsNotFound((get(SubnetService.class) - .createSubnets(subnets)), - SUBNET_NOT_CREATED); - - if (!result) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(SUBNET_NOT_CREATED).build(); - } - return Response.status(202).entity(result.toString()).build(); - } catch (Exception e) { - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @PUT - @Path("{subnetUUID}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updateSubnet(@PathParam("id") String id, - final InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = readTreeFromStream(mapper, input); - Iterable subnets = createOrUpdateByInputStream(subnode); - Boolean result = nullIsNotFound(get(SubnetService.class) - .updateSubnets(subnets), SUBNET_NOT_FOUND); - if (!result) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(SUBNET_NOT_FOUND).build(); - } - return Response.status(203).entity(result.toString()).build(); - } catch (Exception e) { - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @DELETE - @Path("{subnetUUID}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response deleteSingleSubnet(@PathParam("subnetUUID") String id) - throws IOException { - try { - SubnetId subId = SubnetId.subnetId(id); - Set subIds = new HashSet<>(); - subIds.add(subId); - get(SubnetService.class).removeSubnets(subIds); - return Response.noContent().entity("SUCCESS").build(); - } catch (Exception e) { - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - private Iterable createOrUpdateByInputStream(JsonNode subnode) { - checkNotNull(subnode, JSON_NOT_NULL); - Iterable subnets = null; - JsonNode subnetNodes = subnode.get("subnets"); - if (subnetNodes == null) { - subnetNodes = subnode.get("subnet"); - } - log.debug("subnetNodes is {}", subnetNodes.toString()); - if (subnetNodes.isArray()) { - subnets = changeJsonToSubs(subnetNodes); - } else { - subnets = changeJsonToSub(subnetNodes); - } - return subnets; - } - - /** - * Returns a collection of subnets from subnetNodes. - * - * @param subnetNodes the subnet json node - * @return subnets a collection of subnets - */ - public Iterable changeJsonToSubs(JsonNode subnetNodes) { - checkNotNull(subnetNodes, JSON_NOT_NULL); - Map subMap = new HashMap<>(); - for (JsonNode subnetNode : subnetNodes) { - if (!subnetNode.hasNonNull("id")) { - return null; - } - SubnetId id = SubnetId.subnetId(subnetNode.get("id").asText()); - String subnetName = subnetNode.get("name").asText(); - TenantId tenantId = TenantId - .tenantId(subnetNode.get("tenant_id").asText()); - TenantNetworkId networkId = TenantNetworkId - .networkId(subnetNode.get("network_id").asText()); - String version = subnetNode.get("ip_version").asText(); - Version ipVersion; - switch (version) { - case "4": - ipVersion = Version.INET; - break; - case "6": - ipVersion = Version.INET; - break; - default: - throw new IllegalArgumentException("ipVersion should be 4 or 6."); - } - IpPrefix cidr = IpPrefix.valueOf(subnetNode.get("cidr").asText()); - IpAddress gatewayIp = IpAddress - .valueOf(subnetNode.get("gateway_ip").asText()); - Boolean dhcpEnabled = subnetNode.get("enable_dhcp").asBoolean(); - Boolean shared = subnetNode.get("shared").asBoolean(); - JsonNode hostRoutes = subnetNode.get("host_routes"); - Iterable hostRoutesIt = jsonNodeToHostRoutes(hostRoutes); - JsonNode allocationPools = subnetNode.get("allocation_pools"); - Iterable allocationPoolsIt = jsonNodeToAllocationPools(allocationPools); - Mode ipV6AddressMode = Mode - .valueOf(subnetNode.get("ipv6_address_mode").asText()); - Mode ipV6RaMode = Mode - .valueOf(subnetNode.get("ipv6_ra_mode").asText()); - Subnet subnet = new DefaultSubnet(id, subnetName, networkId, - tenantId, ipVersion, cidr, - gatewayIp, dhcpEnabled, shared, - Sets.newHashSet(hostRoutesIt), ipV6AddressMode, - ipV6RaMode, Sets.newHashSet(allocationPoolsIt)); - subMap.put(id, subnet); - } - return Collections.unmodifiableCollection(subMap.values()); - } - - /** - * Returns a collection of subnets from subnetNodes. - * - * @param subnetNodes the subnet json node - * @return subnets a collection of subnets - */ - public Iterable changeJsonToSub(JsonNode subnetNodes) { - checkNotNull(subnetNodes, JSON_NOT_NULL); - checkArgument(subnetNodes.get("enable_dhcp").isBoolean(), "enable_dhcp should be boolean"); - checkArgument(subnetNodes.get("shared").isBoolean(), "shared should be boolean"); - Map subMap = new HashMap<>(); - if (!subnetNodes.hasNonNull("id")) { - return null; - } - SubnetId id = SubnetId.subnetId(subnetNodes.get("id").asText()); - String subnetName = subnetNodes.get("name").asText(); - TenantId tenantId = TenantId - .tenantId(subnetNodes.get("tenant_id").asText()); - TenantNetworkId networkId = TenantNetworkId - .networkId(subnetNodes.get("network_id").asText()); - String version = subnetNodes.get("ip_version").asText(); - Version ipVersion; - switch (version) { - case "4": - ipVersion = Version.INET; - break; - case "6": - ipVersion = Version.INET; - break; - default: - throw new IllegalArgumentException("ipVersion should be 4 or 6."); - } - - IpPrefix cidr = IpPrefix.valueOf(subnetNodes.get("cidr").asText()); - IpAddress gatewayIp = IpAddress - .valueOf(subnetNodes.get("gateway_ip").asText()); - Boolean dhcpEnabled = subnetNodes.get("enable_dhcp").asBoolean(); - Boolean shared = subnetNodes.get("shared").asBoolean(); - JsonNode hostRoutes = subnetNodes.get("host_routes"); - Iterable hostRoutesIt = jsonNodeToHostRoutes(hostRoutes); - JsonNode allocationPools = subnetNodes.get("allocation_pools"); - Iterable allocationPoolsIt = jsonNodeToAllocationPools(allocationPools); - - Mode ipV6AddressMode = getMode(subnetNodes.get("ipv6_address_mode") - .asText()); - Mode ipV6RaMode = getMode(subnetNodes.get("ipv6_ra_mode").asText()); - - Subnet subnet = new DefaultSubnet(id, subnetName, networkId, tenantId, - ipVersion, cidr, gatewayIp, - dhcpEnabled, shared, Sets.newHashSet(hostRoutesIt), - ipV6AddressMode, ipV6RaMode, - Sets.newHashSet(allocationPoolsIt)); - subMap.put(id, subnet); - return Collections.unmodifiableCollection(subMap.values()); - } - - /** - * Gets ipv6_address_mode or ipv6_ra_mode type. - * - * @param mode the String value in JsonNode - * @return ipV6Mode Mode of the ipV6Mode - */ - private Mode getMode(String mode) { - Mode ipV6Mode; - if (mode == null) { - return null; - } - switch (mode) { - case "dhcpv6-stateful": - ipV6Mode = Mode.DHCPV6_STATEFUL; - break; - case "dhcpv6-stateless": - ipV6Mode = Mode.DHCPV6_STATELESS; - break; - case "slaac": - ipV6Mode = Mode.SLAAC; - break; - default: - ipV6Mode = null; - } - return ipV6Mode; - } - - /** - * Changes JsonNode alocPools to a collection of the alocPools. - * - * @param allocationPools the allocationPools JsonNode - * @return a collection of allocationPools - */ - public Iterable jsonNodeToAllocationPools(JsonNode allocationPools) { - checkNotNull(allocationPools, JSON_NOT_NULL); - ConcurrentMap alocplMaps = Maps - .newConcurrentMap(); - Integer i = 0; - for (JsonNode node : allocationPools) { - IpAddress startIp = IpAddress.valueOf(node.get("start").asText()); - IpAddress endIp = IpAddress.valueOf(node.get("end").asText()); - AllocationPool alocPls = new DefaultAllocationPool(startIp, endIp); - alocplMaps.putIfAbsent(i, alocPls); - i++; - } - return Collections.unmodifiableCollection(alocplMaps.values()); - } - - /** - * Changes hostRoutes JsonNode to a collection of the hostRoutes. - * - * @param hostRoutes the hostRoutes json node - * @return a collection of hostRoutes - */ - public Iterable jsonNodeToHostRoutes(JsonNode hostRoutes) { - checkNotNull(hostRoutes, JSON_NOT_NULL); - ConcurrentMap hostRouteMaps = Maps - .newConcurrentMap(); - Integer i = 0; - for (JsonNode node : hostRoutes) { - IpAddress nexthop = IpAddress.valueOf(node.get("nexthop").asText()); - IpPrefix destination = IpPrefix.valueOf(node.get("destination") - .asText()); - HostRoute hostRoute = new DefaultHostRoute(nexthop, destination); - hostRouteMaps.putIfAbsent(i, hostRoute); - i++; - } - return Collections.unmodifiableCollection(hostRouteMaps.values()); - } - - /** - * Returns the specified item if that items is null; otherwise throws not - * found exception. - * - * @param item item to check - * @param item type - * @param message not found message - * @return item if not null - * @throws org.onlab.util.ItemNotFoundException if item is null - */ - protected T nullIsNotFound(T item, String message) { - if (item == null) { - throw new ItemNotFoundException(message); - } - return item; - } - -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java deleted file mode 100644 index a18682c2b5..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java +++ /dev/null @@ -1,377 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Maps; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.DefaultTenantNetwork; -import org.onosproject.vtnrsc.PhysicalNetwork; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetwork.State; -import org.onosproject.vtnrsc.TenantNetwork.Type; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.service.VtnRscService; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnweb.web.TenantNetworkCodec; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.InputStream; -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; -import java.util.concurrent.ConcurrentMap; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; -import static javax.ws.rs.core.Response.Status.NOT_FOUND; -import static javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.readTreeFromStream; - -/** - * REST resource for interacting with the inventory of networks. - */ -@Path("networks") -public class TenantNetworkWebResource extends AbstractWebResource { - public static final String NETWORK_NOT_FOUND = "Network is not found"; - public static final String NETWORK_ID_EXIST = "Network id is existed"; - public static final String NETWORK_ID_NOT_EXIST = "Network id is not existed"; - public static final String CREATE_NETWORK = "create network"; - public static final String UPDATE_NETWORK = "update network"; - public static final String DELETE_NETWORK = "delete network"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - - private static final Logger log = LoggerFactory - .getLogger(TenantNetworkWebResource.class); - private final ConcurrentMap networksMap = Maps - .newConcurrentMap(); - - @GET - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getNetworks(@QueryParam("id") String queryId, - @QueryParam("name") String queryName, - @QueryParam("admin_state_up") String queryadminStateUp, - @QueryParam("status") String querystate, - @QueryParam("shared") String queryshared, - @QueryParam("tenant_id") String querytenantId, - @QueryParam("router:external") String routerExternal, - @QueryParam("provider:network_type") String type, - @QueryParam("provider:physical_network") String physicalNetwork, - @QueryParam("provider:segmentation_id") String segmentationId) { - Iterable networks = get(TenantNetworkService.class) - .getNetworks(); - Iterator networkors = networks.iterator(); - while (networkors.hasNext()) { - TenantNetwork network = networkors.next(); - if ((queryId == null || queryId.equals(network.id().toString())) - && (queryName == null || queryName.equals(network.name())) - && (queryadminStateUp == null || queryadminStateUp - .equals(Boolean.toString(network.adminStateUp()))) - && (querystate == null || querystate.equals(network.state() - .toString())) - && (queryshared == null || queryshared.equals(Boolean.toString(network - .shared()))) - && (querytenantId == null || querytenantId.equals(network - .tenantId().toString())) - && (routerExternal == null || routerExternal.equals(Boolean.toString(network - .routerExternal()))) - && (type == null || type.equals(network.type().toString())) - && (physicalNetwork == null || physicalNetwork - .equals(network.physicalNetwork().toString())) - && (segmentationId == null || segmentationId.equals(network - .segmentationId().toString()))) { - networksMap.putIfAbsent(network.id(), network); - } - } - networks = Collections.unmodifiableCollection(networksMap.values()); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("networks", new TenantNetworkCodec().encode(networks, this)); - - return ok(result.toString()).build(); - } - - private State isState(String state) { - if ("ACTIVE".equals(state)) { - return TenantNetwork.State.ACTIVE; - } else if ("BUILD".equals(state)) { - return TenantNetwork.State.BUILD; - } else if ("DOWN".equals(state)) { - return TenantNetwork.State.DOWN; - } else if ("ERROR".equals(state)) { - return TenantNetwork.State.ERROR; - } else { - return null; - } - } - - private Type isType(String type) { - if ("LOCAL".equals(type)) { - return TenantNetwork.Type.LOCAL; - } else { - return null; - } - } - - @GET - @Path("{id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getNetwork(@PathParam("id") String id) { - - if (!get(TenantNetworkService.class).exists(TenantNetworkId - .networkId(id))) { - return Response.status(NOT_FOUND) - .entity(NETWORK_NOT_FOUND).build(); - } - TenantNetwork network = nullIsNotFound(get(TenantNetworkService.class) - .getNetwork(TenantNetworkId.networkId(id)), NETWORK_NOT_FOUND); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("network", new TenantNetworkCodec().encode(network, this)); - - return ok(result.toString()).build(); - - } - - @POST - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response createNetworks(InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode cfg = readTreeFromStream(mapper, input); - JsonNode nodes = null; - Iterable networks = null; - if (cfg.get("network") != null) { - nodes = cfg.get("network"); - if (nodes.isArray()) { - networks = changeJson2objs(nodes); - } else { - networks = changeJson2obj(CREATE_NETWORK, null, nodes); - } - } else if (cfg.get("networks") != null) { - nodes = cfg.get("networks"); - networks = changeJson2objs(nodes); - } - Boolean issuccess = nullIsNotFound((get(TenantNetworkService.class) - .createNetworks(networks)), - NETWORK_NOT_FOUND); - - if (!issuccess) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(NETWORK_ID_EXIST).build(); - } - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (Exception e) { - log.error("Creates tenantNetwork exception {}.", e.toString()); - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @PUT - @Path("{id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updateNetworks(@PathParam("id") String id, InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode cfg = readTreeFromStream(mapper, input); - JsonNode nodes = null; - Iterable networks = null; - if (cfg.get("network") != null) { - nodes = cfg.get("network"); - if (nodes.isArray()) { - networks = changeJson2objs(nodes); - } else { - networks = changeJson2obj(UPDATE_NETWORK, - TenantNetworkId.networkId(id), - nodes); - } - } else if (cfg.get("networks") != null) { - nodes = cfg.get("networks"); - networks = changeJson2objs(nodes); - } - Boolean issuccess = nullIsNotFound((get(TenantNetworkService.class) - .updateNetworks(networks)), - NETWORK_NOT_FOUND); - if (!issuccess) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(NETWORK_ID_NOT_EXIST).build(); - } - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (Exception e) { - log.error("Updates tenantNetwork failed because of exception {}.", - e.toString()); - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @DELETE - @Path("{id}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response deleteNetworks(@PathParam("id") String id) { - log.debug("Deletes network by identifier {}.", id); - Set networkSet = new HashSet<>(); - networkSet.add(TenantNetworkId.networkId(id)); - Boolean issuccess = nullIsNotFound(get(TenantNetworkService.class) - .removeNetworks(networkSet), NETWORK_NOT_FOUND); - if (!issuccess) { - log.debug("Network identifier {} is not existed", id); - return Response.status(INTERNAL_SERVER_ERROR) - .entity(NETWORK_ID_NOT_EXIST).build(); - } - return ok(issuccess.toString()).build(); - } - - /** - * Returns a collection of tenantNetworks. - * - * @param flag the flag - * @param networkId network identifier - * @param node the network json node - * @return a collection of tenantNetworks - */ - public Iterable changeJson2obj(String flag, - TenantNetworkId networkId, - JsonNode node) { - checkNotNull(node, JSON_NOT_NULL); - TenantNetwork network = null; - ConcurrentMap networksMap = Maps - .newConcurrentMap(); - checkArgument(node.get("admin_state_up").isBoolean(), "admin_state_up should be boolean"); - checkArgument(node.get("shared").isBoolean(), "shared should be boolean"); - checkArgument(node.get("router:external").isBoolean(), "router:external should be boolean"); - String name = node.get("name").asText(); - boolean adminStateUp = node.get("admin_state_up").asBoolean(); - String state = node.get("status").asText(); - boolean shared = node.get("shared").asBoolean(); - String tenantIdStr = node.get("tenant_id").asText(); - boolean routerExternal = node.get("router:external").asBoolean(); - String type = node.get("provider:network_type").asText(); - String physicalNetwork = node.get("provider:physical_network").asText(); - String segmentationIdStr = node.get("provider:segmentation_id").asText(); - SegmentationId segmentationId = SegmentationId.segmentationId(segmentationIdStr); - TenantId tenantId = TenantId.tenantId(tenantIdStr); - if (segmentationIdStr == null || "null".equals(segmentationIdStr)) { - segmentationId = get(VtnRscService.class).getL3vni(tenantId); - } - TenantNetworkId id = null; - if (flag.equals(CREATE_NETWORK)) { - id = TenantNetworkId.networkId(node.get("id").asText()); - } else if (flag.equals(UPDATE_NETWORK)) { - id = networkId; - } - network = new DefaultTenantNetwork( - id, - name, - adminStateUp, - isState(state), - shared, - tenantId, - routerExternal, - isType(type), - PhysicalNetwork - .physicalNetwork(physicalNetwork), - segmentationId); - networksMap.putIfAbsent(id, network); - - return Collections.unmodifiableCollection(networksMap.values()); - } - - /** - * Returns a collection of tenantNetworks. - * - * @param nodes the network jsonnodes - * @return a collection of tenantNetworks - */ - public Iterable changeJson2objs(JsonNode nodes) { - checkNotNull(nodes, JSON_NOT_NULL); - TenantNetwork network = null; - ConcurrentMap networksMap = Maps - .newConcurrentMap(); - for (JsonNode node : nodes) { - String id = node.get("id").asText(); - String name = node.get("name").asText(); - boolean adminStateUp = node.get("admin_state_up").asBoolean(); - String state = node.get("status").asText(); - boolean shared = node.get("shared").asBoolean(); - String tenantIdStr = node.get("tenant_id").asText(); - boolean routerExternal = node.get("router:external") - .asBoolean(); - String type = node.get("provider:network_type").asText(); - String physicalNetwork = node.get("provider:physical_network").asText(); - String segmentationIdStr = node.get("provider:segmentation_id").asText(); - SegmentationId segmentationId = SegmentationId.segmentationId(segmentationIdStr); - TenantId tenantId = TenantId.tenantId(tenantIdStr); - if (segmentationIdStr == null || "null".equals(segmentationIdStr)) { - segmentationId = get(VtnRscService.class).getL3vni(tenantId); - } - network = new DefaultTenantNetwork( - TenantNetworkId.networkId(id), - name, - adminStateUp, - isState(state), - shared, - tenantId, - routerExternal, - isType(type), - PhysicalNetwork.physicalNetwork(physicalNetwork), - segmentationId); - networksMap.putIfAbsent(TenantNetworkId.networkId(id), network); - } - - return Collections.unmodifiableCollection(networksMap.values()); - } - - /** - * Returns the specified item if that items is null; otherwise throws not - * found exception. - * - * @param item item to check - * @param item type - * @param message not found message - * @return item if not null - * @throws org.onlab.util.ItemNotFoundException if item is null - */ - protected T nullIsNotFound(T item, String message) { - if (item == null) { - throw new ItemNotFoundException(message); - } - return item; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java deleted file mode 100644 index 014b5637c7..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java +++ /dev/null @@ -1,415 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.net.DeviceId; -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPort.State; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.onosproject.vtnweb.web.VirtualPortCodec; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.InputStream; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentMap; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; -import static javax.ws.rs.core.Response.Status.NOT_FOUND; -import static javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.readTreeFromStream; - -/** - * REST resource for interacting with the inventory of infrastructure - * virtualPort. - */ -@Path("ports") -public class VirtualPortWebResource extends AbstractWebResource { - public static final String VPORT_NOT_FOUND = "VirtualPort is not found"; - public static final String VPORT_ID_EXIST = "VirtualPort id is exist"; - public static final String VPORT_ID_NOT_EXIST = "VirtualPort id is not exist"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - private static final Logger log = LoggerFactory - .getLogger(VirtualPortService.class); - - @GET - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getPorts() { - Iterable virtualPorts = get(VirtualPortService.class) - .getPorts(); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("ports", new VirtualPortCodec().encode(virtualPorts, this)); - return ok(result.toString()).build(); - } - - @GET - @Path("{id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response getportsById(@PathParam("id") String id) { - - if (!get(VirtualPortService.class).exists(VirtualPortId.portId(id))) { - return Response.status(NOT_FOUND) - .entity(VPORT_NOT_FOUND).build(); - } - VirtualPort virtualPort = nullIsNotFound(get(VirtualPortService.class) - .getPort(VirtualPortId.portId(id)), VPORT_NOT_FOUND); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("port", new VirtualPortCodec().encode(virtualPort, this)); - return ok(result.toString()).build(); - } - - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createPorts(InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode cfg = readTreeFromStream(mapper, input); - Iterable vPorts = createOrUpdateByInputStream(cfg); - Boolean issuccess = nullIsNotFound(get(VirtualPortService.class) - .createPorts(vPorts), VPORT_NOT_FOUND); - if (!issuccess) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(VPORT_ID_NOT_EXIST).build(); - } - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (Exception e) { - log.error("Creates VirtualPort failed because of exception {}", - e.toString()); - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @DELETE - @Path("{portUUID}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response deletePorts(@PathParam("portUUID") String id) { - Set vPortIds = new HashSet<>(); - try { - if (id != null) { - vPortIds.add(VirtualPortId.portId(id)); - } - Boolean issuccess = nullIsNotFound(get(VirtualPortService.class) - .removePorts(vPortIds), VPORT_NOT_FOUND); - if (!issuccess) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(VPORT_ID_NOT_EXIST).build(); - } - return ok(issuccess.toString()).build(); - } catch (Exception e) { - log.error("Deletes VirtualPort failed because of exception {}", - e.toString()); - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @PUT - @Path("{id}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response updatePorts(@PathParam("id") String id, InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode cfg = readTreeFromStream(mapper, input); - Iterable vPorts = createOrUpdateByInputStream(cfg); - Boolean issuccess = nullIsNotFound(get(VirtualPortService.class) - .updatePorts(vPorts), VPORT_NOT_FOUND); - if (!issuccess) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(VPORT_ID_NOT_EXIST).build(); - } - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (Exception e) { - log.error("Updates failed because of exception {}", e.toString()); - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - /** - * Returns a Object of the currently known infrastructure virtualPort. - * - * @param vPortNode the virtualPort json node - * @return a collection of virtualPorts - */ - public Iterable createOrUpdateByInputStream(JsonNode vPortNode) { - checkNotNull(vPortNode, JSON_NOT_NULL); - JsonNode vPortNodes = vPortNode.get("ports"); - if (vPortNodes == null) { - vPortNodes = vPortNode.get("port"); - } - if (vPortNodes.isArray()) { - return changeJsonToPorts(vPortNodes); - } else { - return changeJsonToPort(vPortNodes); - } - } - - /** - * Returns the iterable collection of virtualports from subnetNodes. - * - * @param vPortNodes the virtualPort json node - * @return virtualPorts a collection of virtualPorts - */ - public Iterable changeJsonToPorts(JsonNode vPortNodes) { - checkNotNull(vPortNodes, JSON_NOT_NULL); - Map portMap = new HashMap<>(); - Map strMap = new HashMap<>(); - for (JsonNode vPortnode : vPortNodes) { - VirtualPortId id = VirtualPortId.portId(vPortnode.get("id") - .asText()); - String name = vPortnode.get("name").asText(); - TenantId tenantId = TenantId.tenantId(vPortnode.get("tenant_id") - .asText()); - TenantNetworkId networkId = TenantNetworkId.networkId(vPortnode - .get("network_id").asText()); - checkArgument(vPortnode.get("admin_state_up").isBoolean(), "admin_state_up should be boolean"); - Boolean adminStateUp = vPortnode.get("admin_state_up").asBoolean(); - String state = vPortnode.get("status").asText(); - MacAddress macAddress = MacAddress.valueOf(vPortnode - .get("mac_address").asText()); - DeviceId deviceId = DeviceId.deviceId(vPortnode.get("device_id") - .asText()); - String deviceOwner = vPortnode.get("device_owner").asText(); - JsonNode fixedIpNodes = vPortNodes.get("fixed_ips"); - Set fixedIps = new HashSet<>(); - for (JsonNode fixedIpNode : fixedIpNodes) { - FixedIp fixedIp = jsonNodeToFixedIps(fixedIpNode); - fixedIps.add(fixedIp); - } - - BindingHostId bindingHostId = BindingHostId - .bindingHostId(vPortnode.get("binding:host_id").asText()); - String bindingVnicType = vPortnode.get("binding:vnic_type") - .asText(); - String bindingVifType = vPortnode.get("binding:vif_type").asText(); - String bindingVifDetails = vPortnode.get("binding:vif_details") - .asText(); - JsonNode allowedAddressPairJsonNode = vPortnode - .get("allowed_address_pairs"); - Collection allowedAddressPairs = - jsonNodeToAllowedAddressPair(allowedAddressPairJsonNode); - JsonNode securityGroupNode = vPortnode.get("security_groups"); - Collection securityGroups = jsonNodeToSecurityGroup(securityGroupNode); - strMap.put("name", name); - strMap.put("deviceOwner", deviceOwner); - strMap.put("bindingVnicType", bindingVnicType); - strMap.put("bindingVifType", bindingVifType); - strMap.put("bindingVifDetails", bindingVifDetails); - VirtualPort vPort = new DefaultVirtualPort(id, networkId, - adminStateUp, strMap, - isState(state), - macAddress, tenantId, - deviceId, fixedIps, - bindingHostId, - Sets.newHashSet(allowedAddressPairs), - Sets.newHashSet(securityGroups)); - portMap.put(id, vPort); - } - return Collections.unmodifiableCollection(portMap.values()); - } - - /** - * Returns a collection of virtualPorts from subnetNodes. - * - * @param vPortNodes the virtualPort json node - * @return virtualPorts a collection of virtualPorts - */ - public Iterable changeJsonToPort(JsonNode vPortNodes) { - checkNotNull(vPortNodes, JSON_NOT_NULL); - Map vportMap = new HashMap<>(); - Map strMap = new HashMap<>(); - VirtualPortId id = VirtualPortId.portId(vPortNodes.get("id").asText()); - String name = vPortNodes.get("name").asText(); - TenantId tenantId = TenantId.tenantId(vPortNodes.get("tenant_id") - .asText()); - TenantNetworkId networkId = TenantNetworkId.networkId(vPortNodes - .get("network_id").asText()); - Boolean adminStateUp = vPortNodes.get("admin_state_up").asBoolean(); - String state = vPortNodes.get("status").asText(); - MacAddress macAddress = MacAddress.valueOf(vPortNodes - .get("mac_address").asText()); - DeviceId deviceId = DeviceId.deviceId(vPortNodes.get("device_id") - .asText()); - String deviceOwner = vPortNodes.get("device_owner").asText(); - JsonNode fixedIpNodes = vPortNodes.get("fixed_ips"); - Set fixedIps = new HashSet<>(); - for (JsonNode fixedIpNode : fixedIpNodes) { - FixedIp fixedIp = jsonNodeToFixedIps(fixedIpNode); - fixedIps.add(fixedIp); - } - - BindingHostId bindingHostId = BindingHostId - .bindingHostId(vPortNodes.get("binding:host_id").asText()); - String bindingVnicType = vPortNodes.get("binding:vnic_type").asText(); - String bindingVifType = vPortNodes.get("binding:vif_type").asText(); - String bindingVifDetails = vPortNodes.get("binding:vif_details") - .asText(); - JsonNode allowedAddressPairJsonNode = vPortNodes - .get("allowed_address_pairs"); - Collection allowedAddressPairs = - jsonNodeToAllowedAddressPair(allowedAddressPairJsonNode); - JsonNode securityGroupNode = vPortNodes.get("security_groups"); - Collection securityGroups = jsonNodeToSecurityGroup(securityGroupNode); - strMap.put("name", name); - strMap.put("deviceOwner", deviceOwner); - strMap.put("bindingVnicType", bindingVnicType); - strMap.put("bindingVifType", bindingVifType); - strMap.put("bindingVifDetails", bindingVifDetails); - VirtualPort vPort = new DefaultVirtualPort(id, networkId, adminStateUp, - strMap, isState(state), - macAddress, tenantId, - deviceId, fixedIps, - bindingHostId, - Sets.newHashSet(allowedAddressPairs), - Sets.newHashSet(securityGroups)); - vportMap.put(id, vPort); - - return Collections.unmodifiableCollection(vportMap.values()); - } - - /** - * Returns a Object of the currently known infrastructure virtualPort. - * - * @param allowedAddressPairs the allowedAddressPairs json node - * @return a collection of allowedAddressPair - */ - public Collection jsonNodeToAllowedAddressPair(JsonNode allowedAddressPairs) { - checkNotNull(allowedAddressPairs, JSON_NOT_NULL); - ConcurrentMap allowMaps = Maps - .newConcurrentMap(); - int i = 0; - for (JsonNode node : allowedAddressPairs) { - IpAddress ip = IpAddress.valueOf(node.get("ip_address").asText()); - MacAddress mac = MacAddress.valueOf(node.get("mac_address") - .asText()); - AllowedAddressPair allows = AllowedAddressPair - .allowedAddressPair(ip, mac); - allowMaps.put(i, allows); - i++; - } - log.debug("The jsonNode of allowedAddressPairallow is {}" - + allowedAddressPairs.toString()); - return Collections.unmodifiableCollection(allowMaps.values()); - } - - /** - * Returns a collection of virtualPorts. - * - * @param securityGroups the virtualPort jsonnode - * @return a collection of securityGroups - */ - public Collection jsonNodeToSecurityGroup(JsonNode securityGroups) { - checkNotNull(securityGroups, JSON_NOT_NULL); - ConcurrentMap securMaps = Maps - .newConcurrentMap(); - int i = 0; - for (JsonNode node : securityGroups) { - SecurityGroup securityGroup = SecurityGroup - .securityGroup(node.asText()); - securMaps.put(i, securityGroup); - i++; - } - return Collections.unmodifiableCollection(securMaps.values()); - } - - /** - * Returns a collection of fixedIps. - * - * @param fixedIpNode the fixedIp jsonnode - * @return a collection of SecurityGroup - */ - public FixedIp jsonNodeToFixedIps(JsonNode fixedIpNode) { - SubnetId subnetId = SubnetId.subnetId(fixedIpNode.get("subnet_id") - .asText()); - IpAddress ipAddress = IpAddress.valueOf(fixedIpNode.get("ip_address") - .asText()); - FixedIp fixedIps = FixedIp.fixedIp(subnetId, ipAddress); - return fixedIps; - } - - /** - * Returns VirtualPort State. - * - * @param state the virtualport state - * @return the virtualPort state - */ - private State isState(String state) { - if ("ACTIVE".equals(state)) { - return VirtualPort.State.ACTIVE; - } else { - return VirtualPort.State.DOWN; - } - - } - - /** - * Returns the specified item if that items is null; otherwise throws not - * found exception. - * - * @param item item to check - * @param item type - * @param message not found message - * @return item if not null - * @throws org.onlab.util.ItemNotFoundException if item is null - */ - protected T nullIsNotFound(T item, String message) { - if (item == null) { - throw new ItemNotFoundException(message); - } - return item; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VtnWebApplication.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VtnWebApplication.java deleted file mode 100644 index 64d5060ed0..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VtnWebApplication.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnweb.resources; - -import org.onlab.rest.AbstractWebApplication; - -import java.util.Set; - -/** - * VTN REST API web application. - */ -public class VtnWebApplication extends AbstractWebApplication { - @Override - public Set> getClasses() { - return getClasses(TenantNetworkWebResource.class, - SubnetWebResource.class, - VirtualPortWebResource.class, - FlowClassifierWebResource.class, - PortChainWebResource.class, - PortPairGroupWebResource.class, - PortPairWebResource.class, - FloatingIpWebResource.class, - RouterWebResource.class, - ClassifierWebResource.class, - PortChainSfMapWebResource.class, - PortChainDeviceMapWebResource.class); - } -} - diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/package-info.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/package-info.java deleted file mode 100644 index 473ba7e45e..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * VTN web that used rest to creat vtn resources. - */ -package org.onosproject.vtnweb.resources; diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllocationPoolsCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllocationPoolsCodec.java deleted file mode 100644 index e0e1b3f7a1..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllocationPoolsCodec.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.AllocationPool; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Subnet AllocationPool codec. - */ -public final class AllocationPoolsCodec extends JsonCodec { - - @Override - public ObjectNode encode(AllocationPool alocPool, CodecContext context) { - checkNotNull(alocPool, "AllocationPools cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("start", alocPool.startIp().toString()) - .put("end", alocPool.endIp().toString()); - return result; - } - -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllowedAddressPairCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllowedAddressPairCodec.java deleted file mode 100644 index a6a12be2b2..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllowedAddressPairCodec.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.AllowedAddressPair; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * VirtualPort AllowedAddressPair codec. - */ -public final class AllowedAddressPairCodec extends JsonCodec { - - @Override - public ObjectNode encode(AllowedAddressPair alocAddPair, CodecContext context) { - checkNotNull(alocAddPair, "AllowedAddressPair cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("ip_address", alocAddPair.ip().toString()) - .put("mac_address", alocAddPair.mac().toString()); - return result; - } - -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FixedIpCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FixedIpCodec.java deleted file mode 100644 index cdfdb424c9..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FixedIpCodec.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.FixedIp; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * VirtualPort FixedIp codec. - */ -public final class FixedIpCodec extends JsonCodec { - - @Override - public ObjectNode encode(FixedIp fixIp, CodecContext context) { - checkNotNull(fixIp, "FixedIp cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("subnet_id", fixIp.subnetId().toString()) - .put("ip_address", fixIp.ip().toString()); - return result; - } - -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FloatingIpCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FloatingIpCodec.java deleted file mode 100644 index 804f4244d6..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FloatingIpCodec.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Iterator; -import java.util.List; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.FloatingIp; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * FloatingIp JSON codec. - */ -public final class FloatingIpCodec extends JsonCodec { - @Override - public ObjectNode encode(FloatingIp floatingIp, CodecContext context) { - checkNotNull(floatingIp, "floatingIp cannot be null"); - ObjectNode result = context - .mapper() - .createObjectNode() - .put("id", floatingIp.id().floatingIpId().toString()) - .put("floating_network_id", floatingIp.networkId().toString()) - .put("router_id", - floatingIp.routerId() == null ? null : floatingIp - .routerId().routerId()) - .put("tenant_id", floatingIp.tenantId().toString()) - .put("port_id", - floatingIp.portId() == null ? null : floatingIp.portId() - .toString()) - .put("fixed_ip_address", - floatingIp.fixedIp() == null ? null : floatingIp.fixedIp() - .toString()) - .put("floating_ip_address", floatingIp.floatingIp().toString()) - .put("status", floatingIp.status().toString()); - return result; - } - - public ObjectNode extracFields(FloatingIp floatingIp, CodecContext context, - List fields) { - checkNotNull(floatingIp, "floatingIp cannot be null"); - ObjectNode result = context.mapper().createObjectNode(); - Iterator i = fields.iterator(); - while (i.hasNext()) { - String s = i.next(); - if ("floating_network_id".equals(s)) { - result.put("floating_network_id", floatingIp.networkId() - .toString()); - } - if ("router_id".equals(s)) { - result.put("router_id", - floatingIp.routerId() == null ? null : floatingIp - .routerId().routerId()); - } - if ("tenant_id".equals(s)) { - result.put("tenant_id", floatingIp.tenantId().toString()); - } - if ("port_id".equals(s)) { - result.put("port_id", - floatingIp.portId() == null ? null : floatingIp - .portId().toString()); - } - if ("id".equals(s)) { - result.put("id", floatingIp.id().floatingIpId().toString()); - } - if ("fixed_ip_address".equals(s)) { - result.put("fixed_ip_address", - floatingIp.fixedIp() == null ? null : floatingIp - .fixedIp().toString()); - } - if ("floating_ip_address".equals(s)) { - result.put("floating_ip_address", floatingIp.floatingIp() - .toString()); - } - if ("status".equals(s)) { - result.put("status", floatingIp.status().toString()); - } - } - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java deleted file mode 100644 index 491904a73f..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.nullIsIllegal; - -import org.onlab.packet.IpPrefix; -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.DefaultFlowClassifier; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Flow Classifier JSON codec. - */ -public final class FlowClassifierCodec extends JsonCodec { - - private static final String FLOW_CLASSIFIER_ID = "id"; - private static final String TENANT_ID = "tenant_id"; - private static final String NAME = "name"; - private static final String DESCRIPTION = "description"; - private static final String ETHER_TYPE = "ethertype"; - private static final String PROTOCOL = "protocol"; - private static final String PRIORITY = "priority"; - private static final String MIN_SRC_PORT_RANGE = "source_port_range_min"; - private static final String MAX_SRC_PORT_RANGE = "source_port_range_max"; - private static final String MIN_DST_PORT_RANGE = "destination_port_range_min"; - private static final String MAX_DST_PORT_RANGE = "destination_port_range_max"; - private static final String SRC_IP_PREFIX = "source_ip_prefix"; - private static final String DST_IP_PREFIX = "destination_ip_prefix"; - private static final String SRC_PORT = "logical_source_port"; - private static final String DST_PORT = "logical_destination_port"; - private static final String MISSING_MEMBER_MESSAGE = " member is required in Flow Classifier."; - - @Override - public FlowClassifier decode(ObjectNode json, CodecContext context) { - if (json == null || !json.isObject()) { - return null; - } - - FlowClassifier.Builder resultBuilder = new DefaultFlowClassifier.Builder(); - - String flowClassifierId = nullIsIllegal(json.get(FLOW_CLASSIFIER_ID), - FLOW_CLASSIFIER_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setFlowClassifierId(FlowClassifierId.of(flowClassifierId)); - - String tenantId = nullIsIllegal(json.get(TENANT_ID), TENANT_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setTenantId(TenantId.tenantId(tenantId)); - - String flowClassiferName = nullIsIllegal(json.get(NAME), NAME + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setName(flowClassiferName); - - String flowClassiferDescription = (json.get(DESCRIPTION)).asText(); - resultBuilder.setDescription(flowClassiferDescription); - - String etherType = nullIsIllegal(json.get(ETHER_TYPE), ETHER_TYPE + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setEtherType(etherType); - - if (json.get(PROTOCOL) != null && !"null".equals((json.get(PROTOCOL)).asText())) { - String protocol = (json.get(PROTOCOL)).asText(); - resultBuilder.setProtocol(protocol); - } - - if (json.get(PRIORITY) != null && !"null".equals((json.get(PRIORITY)).asText())) { - int priority = (json.get(PRIORITY)).asInt(); - resultBuilder.setPriority(priority); - } - - int minSrcPortRange = (json.get(MIN_SRC_PORT_RANGE)).asInt(); - resultBuilder.setMinSrcPortRange(minSrcPortRange); - - int maxSrcPortRange = (json.get(MAX_SRC_PORT_RANGE)).asInt(); - resultBuilder.setMaxSrcPortRange(maxSrcPortRange); - - int minDstPortRange = (json.get(MIN_DST_PORT_RANGE)).asInt(); - resultBuilder.setMinDstPortRange(minDstPortRange); - - int maxDstPortRange = (json.get(MAX_DST_PORT_RANGE)).asInt(); - resultBuilder.setMaxDstPortRange(maxDstPortRange); - - if (json.get(SRC_IP_PREFIX) != null && !"null".equals((json.get(SRC_IP_PREFIX)).asText())) { - String srcIpPrefix = (json.get(SRC_IP_PREFIX)).asText(); - resultBuilder.setSrcIpPrefix(IpPrefix.valueOf(srcIpPrefix)); - } - - if (json.get(DST_IP_PREFIX) != null && !"null".equals((json.get(DST_IP_PREFIX)).asText())) { - String dstIpPrefix = (json.get(DST_IP_PREFIX)).asText(); - resultBuilder.setDstIpPrefix(IpPrefix.valueOf(dstIpPrefix)); - } - - if (json.get(SRC_PORT) != null && !"null".equals((json.get(SRC_PORT)).asText())) { - String srcPort = (json.get(SRC_PORT)).asText(); - resultBuilder.setSrcPort(VirtualPortId.portId(srcPort)); - } - - if (json.get(DST_PORT) != null && !"null".equals((json.get(DST_PORT)).asText())) { - String dstPort = (json.get(DST_PORT)).asText(); - resultBuilder.setDstPort(VirtualPortId.portId(dstPort)); - } - return resultBuilder.build(); - } - - @Override - public ObjectNode encode(FlowClassifier flowClassifier, CodecContext context) { - checkNotNull(flowClassifier, "flowClassifier cannot be null"); - ObjectNode result = context.mapper().createObjectNode(); - result.put(FLOW_CLASSIFIER_ID, flowClassifier.flowClassifierId().toString()) - .put(TENANT_ID, flowClassifier.tenantId().toString()) - .put(NAME, flowClassifier.name()) - .put(DESCRIPTION, flowClassifier.description()) - .put(ETHER_TYPE, flowClassifier.etherType()) - .put(PROTOCOL, flowClassifier.protocol()) - .put(PRIORITY, flowClassifier.priority()) - .put(MIN_SRC_PORT_RANGE, flowClassifier.minSrcPortRange()) - .put(MAX_SRC_PORT_RANGE, flowClassifier.maxSrcPortRange()) - .put(MIN_DST_PORT_RANGE, flowClassifier.minDstPortRange()) - .put(MAX_DST_PORT_RANGE, flowClassifier.maxDstPortRange()); - - if (flowClassifier.srcIpPrefix() != null) { - result.put(SRC_IP_PREFIX, flowClassifier.srcIpPrefix().toString()); - } else { - result.put(SRC_IP_PREFIX, "null"); - } - if (flowClassifier.dstIpPrefix() != null) { - result.put(DST_IP_PREFIX, flowClassifier.dstIpPrefix().toString()); - } else { - result.put(DST_IP_PREFIX, "null"); - } - - if (flowClassifier.srcPort() != null) { - result.put(SRC_PORT, flowClassifier.srcPort().toString()); - } else { - result.put(SRC_PORT, "null"); - } - if (flowClassifier.dstPort() != null) { - result.put(DST_PORT, flowClassifier.dstPort().toString()); - } else { - result.put(DST_PORT, "null"); - } - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/HostRoutesCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/HostRoutesCodec.java deleted file mode 100644 index 8a0a9a1d79..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/HostRoutesCodec.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.HostRoute; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Subnet HostRoute codec. - */ -public final class HostRoutesCodec extends JsonCodec { - - @Override - public ObjectNode encode(HostRoute hostRoute, CodecContext context) { - checkNotNull(hostRoute, "HostRoute cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("nexthop", hostRoute.nexthop().toString()) - .put("destination", hostRoute.destination().toString()); - return result; - } - -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortChainCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortChainCodec.java deleted file mode 100644 index 8478a7646b..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortChainCodec.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.nullIsIllegal; - -import java.util.List; -import java.util.UUID; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.DefaultPortChain; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPairGroupId; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Lists; - -/** - * Port chain JSON codec. - */ -public final class PortChainCodec extends JsonCodec { - - private static final String ID = "id"; - private static final String TENANT_ID = "tenant_id"; - private static final String NAME = "name"; - private static final String DESCRIPTION = "description"; - private static final String PORT_PAIR_GROUPS = "port_pair_groups"; - private static final String FLOW_CLASSIFIERS = "flow_classifiers"; - private static final String MISSING_MEMBER_MESSAGE = - " member is required in PortChain"; - - @Override - public PortChain decode(ObjectNode json, CodecContext context) { - if (json == null || !json.isObject()) { - return null; - } - - PortChain.Builder resultBuilder = new DefaultPortChain.Builder(); - - String id = nullIsIllegal(json.get(ID), - ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setId(PortChainId.of(id)); - - String tenantId = nullIsIllegal(json.get(TENANT_ID), - TENANT_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setTenantId(TenantId.tenantId(tenantId)); - - String name = nullIsIllegal(json.get(NAME), - NAME + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setName(name); - - String description = nullIsIllegal(json.get(DESCRIPTION), - DESCRIPTION + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setDescription(description); - - ArrayNode arrayNode = (ArrayNode) json.path(PORT_PAIR_GROUPS); - if (arrayNode != null) { - List list = Lists.newArrayList(); - arrayNode.forEach(i -> list.add(PortPairGroupId.of(i.asText()))); - resultBuilder.setPortPairGroups(list); - } - - arrayNode = (ArrayNode) json.path(FLOW_CLASSIFIERS); - if (arrayNode != null) { - List list = Lists.newArrayList(); - arrayNode.forEach(i -> list.add(FlowClassifierId.of(UUID.fromString(i.asText())))); - resultBuilder.setFlowClassifiers(list); - } - - return resultBuilder.build(); - } - - @Override - public ObjectNode encode(PortChain portChain, CodecContext context) { - checkNotNull(portChain, "port pair cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put(ID, portChain.portChainId().toString()) - .put(TENANT_ID, portChain.tenantId().toString()) - .put(NAME, portChain.name()) - .put(DESCRIPTION, portChain.description()) - .put(PORT_PAIR_GROUPS, portChain.portPairGroups().toString()) - .put(FLOW_CLASSIFIERS, portChain.flowClassifiers().toString()); - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairCodec.java deleted file mode 100644 index 2b63bfe90f..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairCodec.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.nullIsIllegal; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.core.CoreService; -import org.onosproject.vtnrsc.DefaultPortPair; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Port Pair JSON codec. - */ -public final class PortPairCodec extends JsonCodec { - - private static final String ID = "id"; - private static final String TENANT_ID = "tenant_id"; - private static final String NAME = "name"; - private static final String DESCRIPTION = "description"; - private static final String INGRESS = "ingress"; - private static final String EGRESS = "egress"; - private static final String MISSING_MEMBER_MESSAGE = - " member is required in PortPair"; - - @Override - public PortPair decode(ObjectNode json, CodecContext context) { - if (json == null || !json.isObject()) { - return null; - } - - PortPair.Builder resultBuilder = new DefaultPortPair.Builder(); - - CoreService coreService = context.getService(CoreService.class); - - String id = nullIsIllegal(json.get(ID), - ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setId(PortPairId.of(id)); - - String tenantId = nullIsIllegal(json.get(TENANT_ID), - TENANT_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setTenantId(TenantId.tenantId(tenantId)); - - String name = nullIsIllegal(json.get(NAME), - NAME + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setName(name); - - String description = nullIsIllegal(json.get(DESCRIPTION), - DESCRIPTION + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setDescription(description); - - String ingressPort = nullIsIllegal(json.get(INGRESS), - INGRESS + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setIngress(ingressPort); - - String egressPort = nullIsIllegal(json.get(EGRESS), - EGRESS + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setEgress(egressPort); - - return resultBuilder.build(); - } - - @Override - public ObjectNode encode(PortPair portPair, CodecContext context) { - checkNotNull(portPair, "port pair cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put(ID, portPair.portPairId().toString()) - .put(TENANT_ID, portPair.tenantId().toString()) - .put(NAME, portPair.name()) - .put(DESCRIPTION, portPair.description()) - .put(INGRESS, portPair.ingress()) - .put(EGRESS, portPair.egress()); - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairGroupCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairGroupCodec.java deleted file mode 100644 index 76c5d43fa4..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairGroupCodec.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.nullIsIllegal; - -import java.util.List; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.core.CoreService; -import org.onosproject.vtnrsc.DefaultPortPairGroup; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Lists; - -/** - * Port Pair Group JSON codec. - */ -public final class PortPairGroupCodec extends JsonCodec { - - private static final String ID = "id"; - private static final String TENANT_ID = "tenant_id"; - private static final String NAME = "name"; - private static final String DESCRIPTION = "description"; - private static final String PORT_PAIRS = "port_pairs"; - private static final String MISSING_MEMBER_MESSAGE = - " member is required in PortPairGroup"; - - @Override - public PortPairGroup decode(ObjectNode json, CodecContext context) { - if (json == null || !json.isObject()) { - return null; - } - - PortPairGroup.Builder resultBuilder = new DefaultPortPairGroup.Builder(); - - CoreService coreService = context.getService(CoreService.class); - - String id = nullIsIllegal(json.get(ID), - ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setId(PortPairGroupId.of(id)); - - String tenantId = nullIsIllegal(json.get(TENANT_ID), - TENANT_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setTenantId(TenantId.tenantId(tenantId)); - - String name = nullIsIllegal(json.get(NAME), - NAME + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setName(name); - - String description = nullIsIllegal(json.get(DESCRIPTION), - DESCRIPTION + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setDescription(description); - - List list = Lists.newArrayList(); - ArrayNode arrayNode = (ArrayNode) json.path(PORT_PAIRS); - arrayNode.forEach(i -> list.add(PortPairId.of(i.asText()))); - resultBuilder.setPortPairs(list); - - return resultBuilder.build(); - } - - @Override - public ObjectNode encode(PortPairGroup portPairGroup, CodecContext context) { - checkNotNull(portPairGroup, "port pair group cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put(ID, portPairGroup.portPairGroupId().toString()) - .put(TENANT_ID, portPairGroup.tenantId().toString()) - .put(NAME, portPairGroup.name()) - .put(DESCRIPTION, portPairGroup.description()) - .put(PORT_PAIRS, portPairGroup.portPairs().toString()); - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterCodec.java deleted file mode 100644 index 1b650ade6a..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterCodec.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Iterator; -import java.util.List; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.Router; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Router JSON codec. - */ -public class RouterCodec extends JsonCodec { - @Override - public ObjectNode encode(Router router, CodecContext context) { - checkNotNull(router, "router cannot be null"); - ObjectNode result = context - .mapper() - .createObjectNode() - .put("id", router.id().routerId()) - .put("status", router.status().toString()) - .put("name", router.name().toString()) - .put("admin_state_up", router.adminStateUp()) - .put("tenant_id", router.tenantId().toString()) - .put("routes", - router.routes() == null ? null : router.routes() - .toString()); - result.set("external_gateway_info", - router.externalGatewayInfo() == null ? null - : new RouterGatewayInfoCodec() - .encode(router.externalGatewayInfo(), context)); - - return result; - } - - public ObjectNode extracFields(Router router, CodecContext context, - List fields) { - checkNotNull(router, "router cannot be null"); - ObjectNode result = context.mapper().createObjectNode(); - Iterator i = fields.iterator(); - while (i.hasNext()) { - String s = i.next(); - if ("id".equals(s)) { - result.put("id", router.id().routerId()); - } - if ("status".equals(s)) { - result.put("status", router.status().toString()); - } - if ("name".equals(s)) { - result.put("name", router.name().toString()); - } - if ("admin_state_up".equals(s)) { - result.put("admin_state_up", router.adminStateUp()); - } - if ("tenant_id".equals(s)) { - result.put("tenant_id", router.tenantId().toString()); - } - if ("routes".equals(s)) { - result.put("routes", router.routes() == null ? null : router - .routes().toString()); - } - if ("external_gateway_info".equals(s)) { - result.set("external_gateway_info", - router.externalGatewayInfo() == null ? null - : new RouterGatewayInfoCodec() - .encode(router.externalGatewayInfo(), - context)); - } - } - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterGatewayInfoCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterGatewayInfoCodec.java deleted file mode 100644 index 260c873d27..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterGatewayInfoCodec.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.RouterGateway; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Subnet Router Gateway Info codec. - */ -public class RouterGatewayInfoCodec extends JsonCodec { - @Override - public ObjectNode encode(RouterGateway routerGateway, CodecContext context) { - checkNotNull(routerGateway, "routerGateway cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("network_id", routerGateway.networkId().toString()); - result.set("external_fixed_ips", new FixedIpCodec() - .encode(routerGateway.externalFixedIps(), context)); - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SecurityGroupCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SecurityGroupCodec.java deleted file mode 100644 index 6089e3f3ab..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SecurityGroupCodec.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.SecurityGroup; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Virtualport SecurityGroup codec. - */ -public final class SecurityGroupCodec extends JsonCodec { - - @Override - public ObjectNode encode(SecurityGroup securGroup, CodecContext context) { - checkNotNull(securGroup, "SecurityGroup cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("security_group", securGroup.securityGroup()); - return result; - } - -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/ServiceFunctionCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/ServiceFunctionCodec.java deleted file mode 100644 index 394c6b41b7..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/ServiceFunctionCodec.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.ServiceFunctionGroup; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Service function JSON codec. - */ -public final class ServiceFunctionCodec extends JsonCodec { - - private static final String NAME = "name"; - private static final String DESCRIPTION = "description"; - private static final String PORT_PAIR_LOAD = "port_pair_load"; - @Override - public ObjectNode encode(ServiceFunctionGroup serviceFunction, CodecContext context) { - checkNotNull(serviceFunction, "service cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put(NAME, serviceFunction.name()) - .put(DESCRIPTION, serviceFunction.description()) - .put(PORT_PAIR_LOAD, serviceFunction.portPairLoadMap().toString()); - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SubnetCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SubnetCodec.java deleted file mode 100644 index a97ab8bb15..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SubnetCodec.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.Subnet; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Subnet JSON codec. - */ -public final class SubnetCodec extends JsonCodec { - @Override - public ObjectNode encode(Subnet subnet, CodecContext context) { - checkNotNull(subnet, "Subnet cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("id", subnet.id().toString()) - .put("gateway_ip", subnet.gatewayIp().toString()) - .put("network_id", subnet.networkId().toString()) - .put("name", subnet.subnetName()) - .put("ip_version", subnet.ipVersion().toString()) - .put("cidr", subnet.cidr().toString()) - .put("shared", subnet.shared()) - .put("enabled_dchp", subnet.dhcpEnabled()) - .put("tenant_id", subnet.tenantId().toString()) - .put("ipv6_address_mode", subnet.ipV6AddressMode() == null ? null - : subnet.ipV6AddressMode().toString()) - .put("ipv6_ra_mode", subnet.ipV6RaMode() == null ? null - : subnet.ipV6RaMode().toString()); - result.set("allocation_pools", new AllocationPoolsCodec().encode(subnet - .allocationPools(), context)); - result.set("host_routes", - new HostRoutesCodec().encode(subnet.hostRoutes(), context)); - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/TenantNetworkCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/TenantNetworkCodec.java deleted file mode 100644 index 7a23d4c571..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/TenantNetworkCodec.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.TenantNetwork; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * TenantNetwork JSON codec. - */ -public final class TenantNetworkCodec extends JsonCodec { - - @Override - public ObjectNode encode(TenantNetwork network, CodecContext context) { - checkNotNull(network, "Network cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("id", network.id().toString()) - .put("name", network.name()) - .put("admin_state_up", network.adminStateUp()) - .put("status", "" + network.state()) - .put("shared", network.shared()) - .put("tenant_id", network.tenantId().toString()) - .put("router:external", network.routerExternal()) - .put("provider:network_type", "" + network.type()) - .put("provider:physical_network", network.physicalNetwork().toString()) - .put("provider:segmentation_id", network.segmentationId().toString()); - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VirtualPortCodec.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VirtualPortCodec.java deleted file mode 100644 index 8cf7823005..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VirtualPortCodec.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.VirtualPort; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * VirtualPort JSON codec. - */ -public final class VirtualPortCodec extends JsonCodec { - @Override - public ObjectNode encode(VirtualPort vPort, CodecContext context) { - checkNotNull(vPort, "VPort cannot be null"); - ObjectNode result = context - .mapper() - .createObjectNode() - .put("id", vPort.portId().toString()) - .put("network_id", vPort.networkId().toString()) - .put("admin_state_up", vPort.adminStateUp()) - .put("name", vPort.name()) - .put("status", vPort.state().toString()) - .put("mac_address", vPort.macAddress().toString()) - .put("tenant_id", vPort.tenantId().toString()) - .put("device_id", vPort.deviceId().toString()) - .put("device_owner", vPort.deviceOwner()) - .put("binding:vnic_type", vPort.bindingVnicType()) - .put("binding:Vif_type", vPort.bindingVifType()) - .put("binding:host_id", vPort.bindingHostId().toString()) - .put("binding:vif_details", vPort.bindingVifDetails()); - result.set("allowed_address_pairs", new AllowedAddressPairCodec().encode( - vPort.allowedAddressPairs(), context)); - result.set("fixed_ips", new FixedIpCodec().encode( - vPort.fixedIps(), context)); - result.set("security_groups", new SecurityGroupCodec().encode( - vPort.securityGroups(), context)); - return result; - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java deleted file mode 100644 index 33581eb3e9..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.onosproject.codec.CodecService; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.ServiceFunctionGroup; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Implementation of the JSON codec brokering service for VTN app. - */ -@Component(immediate = true) -public class VtnCodecRegistrator { - - private static Logger log = LoggerFactory.getLogger(VtnCodecRegistrator.class); - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CodecService codecService; - - @Activate - public void activate() { - codecService.registerCodec(PortPair.class, new PortPairCodec()); - codecService.registerCodec(PortPairGroup.class, new PortPairGroupCodec()); - codecService.registerCodec(FlowClassifier.class, new FlowClassifierCodec()); - codecService.registerCodec(PortChain.class, new PortChainCodec()); - codecService.registerCodec(ServiceFunctionGroup.class, new ServiceFunctionCodec()); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); - } -} diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/package-info.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/package-info.java deleted file mode 100644 index 84cdaded29..0000000000 --- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Codecs for virtual tenant objects. - */ -package org.onosproject.vtnweb.web; diff --git a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.css b/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.css deleted file mode 100644 index 8db5b70260..0000000000 --- a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.css +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - ONOS GUI -- SFC View -- CSS file - */ - -#ov-sfc h2 { - display: inline-block; -} - -#ov-sfc div.ctrl-btns { - width: 45px; -} \ No newline at end of file diff --git a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.html b/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.html deleted file mode 100644 index adf9e3c3ca..0000000000 --- a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -
-
-

service function chains ({{tableData.length}} total)

-
-
-
-
- -
-
- - - - - - - - - -
PortChainName Sfs Type Source IP Prefix Destination IP Prefix
-
- -
- - - - - - - - - - - - - -
- No Service Function Chain found -
-
-
{{sfc.portChainName}}{{sfc.sfs}}{{sfc.type}}{{sfc.srcIp}}{{sfc.dstIp}}
-
- -
- -
diff --git a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.js b/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.js deleted file mode 100644 index 60a5cf055f..0000000000 --- a/apps/vtn/vtnweb/src/main/resources/app/view/sfc/sfc.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - ONOS GUI -- SFC View Module - */ - -(function () { - 'use strict'; - - angular.module('ovSfc', []) - .controller('OvSfcCtrl', - ['$log', '$scope', '$sce', 'FnService', 'TableBuilderService', - - function ($log, $scope, $sce, fs, tbs) { - tbs.buildTable({ - scope: $scope, - tag: 'sfc' - }); - - $log.log('OvSfcCtrl has been created'); - }]); -}()); diff --git a/apps/vtn/vtnweb/src/main/resources/gui/css.html b/apps/vtn/vtnweb/src/main/resources/gui/css.html deleted file mode 100644 index eced4a387e..0000000000 --- a/apps/vtn/vtnweb/src/main/resources/gui/css.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/vtn/vtnweb/src/main/resources/gui/js.html b/apps/vtn/vtnweb/src/main/resources/gui/js.html deleted file mode 100644 index b6dcf44f85..0000000000 --- a/apps/vtn/vtnweb/src/main/resources/gui/js.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/vtn/vtnweb/src/main/webapp/WEB-INF/web.xml b/apps/vtn/vtnweb/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 8c368d904e..0000000000 --- a/apps/vtn/vtnweb/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - VTNRSC REST API v1.0 - - - - Secured - /* - - - admin - viewer - - - - - admin - viewer - - - - BASIC - karaf - - - - JAX-RS Service - org.glassfish.jersey.servlet.ServletContainer - - javax.ws.rs.Application - org.onosproject.vtnweb.resources.VtnWebApplication - - 1 - - - - JAX-RS Service - /* - - diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/ClassifierResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/ClassifierResourceTest.java deleted file mode 100644 index 5fa977cdc4..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/ClassifierResourceTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.eclipsesource.json.Json; -import com.eclipsesource.json.JsonObject; -import com.google.common.collect.ImmutableList; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onosproject.codec.CodecService; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.classifier.ClassifierService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import javax.ws.rs.client.WebTarget; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.onosproject.net.NetTestTools.device; -import static org.onosproject.net.NetTestTools.did; - -/** - * Unit tests for classifier REST APIs. - */ -public class ClassifierResourceTest extends VtnResourceTest { - - final ClassifierService classifierService = createMock(ClassifierService.class); - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - - SfcCodecContext context = new SfcCodecContext(); - ServiceDirectory testDirectory = new TestServiceDirectory().add(ClassifierService.class, classifierService) - .add(CodecService.class, context.codecManager()); - setServiceDirectory(testDirectory); - - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of the rest api GET when there are no classifiers. - */ - @Test - public void testClassifiersEmpty() { - - expect(classifierService.getClassifiers()).andReturn(null).anyTimes(); - replay(classifierService); - final WebTarget wt = target(); - final String response = wt.path("classifiers").request().get(String.class); - assertThat(response, is("{\"classifiers\":[]}")); - } - - /** - * Tests the result of a rest api GET for classifiers. - */ - @Test - public void testClassifiers() { - - DeviceId devId1 = did("dev1"); - Device device1 = device("dev1"); - - expect(classifierService.getClassifiers()).andReturn(ImmutableList.of(devId1)).anyTimes(); - replay(classifierService); - - final WebTarget wt = target(); - final String response = wt.path("classifiers").request().get(String.class); - final JsonObject result = Json.parse(response).asObject(); - assertThat(result, notNullValue()); - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/FlowClassifierResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/FlowClassifierResourceTest.java deleted file mode 100644 index da9d6d884d..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/FlowClassifierResourceTest.java +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.eclipsesource.json.Json; -import com.eclipsesource.json.JsonObject; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onlab.packet.IpPrefix; -import org.onosproject.codec.CodecService; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import javax.ws.rs.NotFoundException; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.util.HashSet; -import java.util.Objects; -import java.util.Set; - -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; -/** - * Unit tests for flow classifier REST APIs. - */ -public class FlowClassifierResourceTest extends VtnResourceTest { - - final FlowClassifierService flowClassifierService = createMock(FlowClassifierService.class); - - FlowClassifierId flowClassifierId1 = FlowClassifierId.of("4a334cd4-fe9c-4fae-af4b-321c5e2eb051"); - TenantId tenantId1 = TenantId.tenantId("1814726e2d22407b8ca76db5e567dcf1"); - VirtualPortId srcPortId1 = VirtualPortId.portId("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - VirtualPortId dstPortId1 = VirtualPortId.portId("aef3478a-4a56-2a6e-cd3a-9dee4e2ec345"); - - final MockFlowClassifier flowClassifier1 = new MockFlowClassifier(flowClassifierId1, tenantId1, "flowClassifier1", - "Mock flow classifier", "IPv4", "IP", 10000, - 1001, 1500, 5001, 6000, - IpPrefix.valueOf("1.1.1.1/16"), - IpPrefix.valueOf("22.12.34.45/16"), - srcPortId1, dstPortId1); - - /** - * Mock class for a flow classifier. - */ - private static class MockFlowClassifier implements FlowClassifier { - - private final FlowClassifierId flowClassifierId; - private final TenantId tenantId; - private final String name; - private final String description; - private final String etherType; - private final String protocol; - private final int priority; - private final int minSrcPortRange; - private final int maxSrcPortRange; - private final int minDstPortRange; - private final int maxDstPortRange; - private final IpPrefix srcIpPrefix; - private final IpPrefix dstIpPrefix; - private final VirtualPortId srcPort; - private final VirtualPortId dstPort; - - public MockFlowClassifier(FlowClassifierId flowClassifierId, TenantId tenantId, String name, - String description, String etherType, String protocol, int priority, - int minSrcPortRange, int maxSrcPortRange, int minDstPortRange, int maxDstPortRange, - IpPrefix srcIpPrefix, IpPrefix dstIpPrefix, VirtualPortId srcPort, - VirtualPortId dstPort) { - this.flowClassifierId = flowClassifierId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.etherType = etherType; - this.protocol = protocol; - this.priority = priority; - this.minSrcPortRange = minSrcPortRange; - this.maxSrcPortRange = maxSrcPortRange; - this.minDstPortRange = minDstPortRange; - this.maxDstPortRange = maxDstPortRange; - this.srcIpPrefix = srcIpPrefix; - this.dstIpPrefix = dstIpPrefix; - this.srcPort = srcPort; - this.dstPort = dstPort; - } - - - @Override - public FlowClassifierId flowClassifierId() { - return flowClassifierId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public String etherType() { - return etherType; - } - - @Override - public String protocol() { - return protocol; - } - - @Override - public int priority() { - return priority; - } - - @Override - public int minSrcPortRange() { - return minSrcPortRange; - } - - @Override - public int maxSrcPortRange() { - return maxSrcPortRange; - } - - @Override - public int minDstPortRange() { - return minDstPortRange; - } - - @Override - public int maxDstPortRange() { - return maxDstPortRange; - } - - @Override - public IpPrefix srcIpPrefix() { - return srcIpPrefix; - } - - @Override - public IpPrefix dstIpPrefix() { - return dstIpPrefix; - } - - @Override - public VirtualPortId srcPort() { - return srcPort; - } - - @Override - public VirtualPortId dstPort() { - return dstPort; - } - - @Override - public boolean exactMatch(FlowClassifier flowClassifier) { - return this.equals(flowClassifier) && - Objects.equals(this.flowClassifierId, flowClassifier.flowClassifierId()) && - Objects.equals(this.tenantId, flowClassifier.tenantId()); - } - } - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - SfcCodecContext context = new SfcCodecContext(); - - ServiceDirectory testDirectory = new TestServiceDirectory() - .add(FlowClassifierService.class, flowClassifierService) - .add(CodecService.class, context.codecManager()); - setServiceDirectory(testDirectory); - - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of the rest api GET when there are no flow classifiers. - */ - @Test - public void testFlowClassifiersEmpty() { - - expect(flowClassifierService.getFlowClassifiers()).andReturn(null).anyTimes(); - replay(flowClassifierService); - final WebTarget wt = target(); - final String response = wt.path("flow_classifiers").request().get(String.class); - assertThat(response, is("{\"flow_classifiers\":[]}")); - } - - /** - * Tests the result of a rest api GET for flow classifier id. - */ - @Test - public void testGetFlowClassifierId() { - - final Set flowClassifiers = new HashSet<>(); - flowClassifiers.add(flowClassifier1); - - expect(flowClassifierService.exists(anyObject())).andReturn(true).anyTimes(); - expect(flowClassifierService.getFlowClassifier(anyObject())).andReturn(flowClassifier1).anyTimes(); - replay(flowClassifierService); - - final WebTarget wt = target(); - final String response = wt.path("flow_classifiers/4a334cd4-fe9c-4fae-af4b-321c5e2eb051") - .request().get(String.class); - final JsonObject result = Json.parse(response).asObject(); - assertThat(result, notNullValue()); - } - - /** - * Tests that a fetch of a non-existent flow classifier object throws an exception. - */ - @Test - public void testBadGet() { - expect(flowClassifierService.getFlowClassifier(anyObject())) - .andReturn(null).anyTimes(); - replay(flowClassifierService); - WebTarget wt = target(); - try { - wt.path("flow_classifiers/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae") - .request().get(String.class); - fail("Fetch of non-existent flow classifier did not throw an exception"); - } catch (NotFoundException ex) { - assertThat(ex.getMessage(), - containsString("HTTP 404 Not Found")); - } - } - - /** - * Tests creating a flow classifier with POST. - */ - @Test - public void testPost() { - - expect(flowClassifierService.createFlowClassifier(anyObject())) - .andReturn(true).anyTimes(); - replay(flowClassifierService); - - WebTarget wt = target(); - InputStream jsonStream = FlowClassifierResourceTest.class.getResourceAsStream("post-FlowClassifier.json"); - - Response response = wt.path("flow_classifiers") - .request(MediaType.APPLICATION_JSON_TYPE) - .post(Entity.json(jsonStream)); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); - } - - /** - * Tests deleting a flow classifier. - */ - @Test - public void testDelete() { - expect(flowClassifierService.removeFlowClassifier(anyObject())) - .andReturn(true).anyTimes(); - replay(flowClassifierService); - - WebTarget wt = target(); - - String location = "flow_classifiers/4a334cd4-fe9c-4fae-af4b-321c5e2eb051"; - - Response deleteResponse = wt.path(location) - .request(MediaType.APPLICATION_JSON_TYPE, MediaType.TEXT_PLAIN_TYPE) - .delete(); - assertThat(deleteResponse.getStatus(), - is(HttpURLConnection.HTTP_NO_CONTENT)); - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainDeviceMapResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainDeviceMapResourceTest.java deleted file mode 100644 index 15c21042a9..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainDeviceMapResourceTest.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.eclipsesource.json.Json; -import com.eclipsesource.json.JsonObject; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onosproject.codec.CodecService; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.FiveTuple; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.LoadBalanceId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import javax.ws.rs.client.WebTarget; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; - -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit tests for port chain device map REST APIs. - */ -public class PortChainDeviceMapResourceTest extends VtnResourceTest { - - final PortChainService portChainService = createMock(PortChainService.class); - - PortChainId portChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - private final List portPairGroupList1 = Lists.newArrayList(); - private final List flowClassifierList1 = Lists.newArrayList(); - - final MockPortChain portChain1 = new MockPortChain(portChainId1, tenantId1, "portChain1", - "Mock port chain", portPairGroupList1, - flowClassifierList1); - - /** - * Mock class for a port chain. - */ - private static class MockPortChain implements PortChain { - - private final PortChainId portChainId; - private final TenantId tenantId; - private final String name; - private final String description; - private final List portPairGroupList; - private final List flowClassifierList; - - public MockPortChain(PortChainId portChainId, TenantId tenantId, - String name, String description, - List portPairGroupList, - List flowClassifierList) { - - this.portChainId = portChainId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.portPairGroupList = portPairGroupList; - this.flowClassifierList = flowClassifierList; - } - - @Override - public PortChainId portChainId() { - return portChainId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public List portPairGroups() { - return ImmutableList.copyOf(portPairGroupList); - } - - @Override - public List flowClassifiers() { - return ImmutableList.copyOf(flowClassifierList); - } - - @Override - public boolean exactMatch(PortChain portChain) { - return this.equals(portChain) && - Objects.equals(this.portChainId, portChain.portChainId()) && - Objects.equals(this.tenantId, portChain.tenantId()); - } - - @Override - public void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id, List path) { - } - - @Override - public LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple) { - return null; - } - - @Override - public Set getLoadBalanceIdMapKeys() { - return null; - } - - @Override - public List getLoadBalancePath(LoadBalanceId id) { - return null; - } - - @Override - public List getLoadBalancePath(FiveTuple fiveTuple) { - return null; - } - - @Override - public LoadBalanceId matchPath(List path) { - return null; - } - - @Override - public int getLoadBalancePathSize() { - return 0; - } - - @Override - public void addSfcClassifiers(LoadBalanceId id, List classifierList) { - } - - @Override - public void addSfcForwarders(LoadBalanceId id, List forwarderList) { - } - - @Override - public void removeSfcClassifiers(LoadBalanceId id, List classifierList) { - } - - @Override - public void removeSfcForwarders(LoadBalanceId id, List forwarderList) { - } - - @Override - public List getSfcClassifiers(LoadBalanceId id) { - DeviceId deviceId1 = DeviceId.deviceId("of:000000000000001"); - List classifierList = Lists.newArrayList(); - classifierList.add(deviceId1); - return classifierList; - } - - @Override - public List getSfcForwarders(LoadBalanceId id) { - DeviceId deviceId1 = DeviceId.deviceId("of:000000000000002"); - DeviceId deviceId2 = DeviceId.deviceId("of:000000000000003"); - List forwarderList = Lists.newArrayList(); - forwarderList.add(deviceId1); - forwarderList.add(deviceId2); - return forwarderList; - } - - @Override - public Set getLoadBalancePathMapKeys() { - LoadBalanceId id = LoadBalanceId.of((byte) 1); - Set set = new HashSet(); - set.add(id); - return set; - } - - @Override - public PortChain oldPortChain() { - return null; - } - } - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - SfcCodecContext context = new SfcCodecContext(); - ServiceDirectory testDirectory = new TestServiceDirectory() - .add(PortChainService.class, portChainService) - .add(CodecService.class, context.codecManager()); - setServiceDirectory(testDirectory); - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of a rest api GET for port chain id. - */ - @Test - public void testGetPortChainDeviceMap() { - - expect(portChainService.getPortChain(anyObject())).andReturn(portChain1).anyTimes(); - replay(portChainService); - - final WebTarget wt = target(); - final String response = wt.path("portChainDeviceMap/1278dcd4-459f-62ed-754b-87fc5e4a6751").request() - .get(String.class); - final JsonObject result = Json.parse(response).asObject(); - assertThat(result, notNullValue()); - assertThat(result.names().get(0), is("portChainDeviceMap")); - - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainResourceTest.java deleted file mode 100644 index dd81814d52..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainResourceTest.java +++ /dev/null @@ -1,322 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.eclipsesource.json.Json; -import com.eclipsesource.json.JsonObject; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onosproject.codec.CodecService; -import org.onosproject.net.DeviceId; -import org.onosproject.vtnrsc.FiveTuple; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.LoadBalanceId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import javax.ws.rs.NotFoundException; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; - -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; - -/** - * Unit tests for port chain REST APIs. - */ -public class PortChainResourceTest extends VtnResourceTest { - - final PortChainService portChainService = createMock(PortChainService.class); - - PortChainId portChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - private final List portPairGroupList1 = Lists.newArrayList(); - private final List flowClassifierList1 = Lists.newArrayList(); - - - final MockPortChain portChain1 = new MockPortChain(portChainId1, tenantId1, "portChain1", - "Mock port chain", portPairGroupList1, - flowClassifierList1); - - /** - * Mock class for a port chain. - */ - private static class MockPortChain implements PortChain { - - private final PortChainId portChainId; - private final TenantId tenantId; - private final String name; - private final String description; - private final List portPairGroupList; - private final List flowClassifierList; - - public MockPortChain(PortChainId portChainId, TenantId tenantId, - String name, String description, - List portPairGroupList, - List flowClassifierList) { - - this.portChainId = portChainId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.portPairGroupList = portPairGroupList; - this.flowClassifierList = flowClassifierList; - } - - @Override - public PortChainId portChainId() { - return portChainId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public List portPairGroups() { - return ImmutableList.copyOf(portPairGroupList); - } - - @Override - public List flowClassifiers() { - return ImmutableList.copyOf(flowClassifierList); - } - - @Override - public boolean exactMatch(PortChain portChain) { - return this.equals(portChain) && - Objects.equals(this.portChainId, portChain.portChainId()) && - Objects.equals(this.tenantId, portChain.tenantId()); - } - - @Override - public void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id, List path) { - } - - @Override - public LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple) { - return null; - } - - @Override - public Set getLoadBalanceIdMapKeys() { - return null; - } - - @Override - public List getLoadBalancePath(LoadBalanceId id) { - return null; - } - - @Override - public List getLoadBalancePath(FiveTuple fiveTuple) { - return null; - } - - @Override - public LoadBalanceId matchPath(List path) { - return null; - } - - @Override - public int getLoadBalancePathSize() { - return 0; - } - - @Override - public void addSfcClassifiers(LoadBalanceId id, List classifierList) { - } - - @Override - public void addSfcForwarders(LoadBalanceId id, List forwarderList) { - } - - @Override - public void removeSfcClassifiers(LoadBalanceId id, List classifierList) { - } - - @Override - public void removeSfcForwarders(LoadBalanceId id, List forwarderList) { - } - - @Override - public List getSfcClassifiers(LoadBalanceId id) { - return null; - } - - @Override - public List getSfcForwarders(LoadBalanceId id) { - return null; - } - - @Override - public Set getLoadBalancePathMapKeys() { - return null; - } - - @Override - public PortChain oldPortChain() { - return null; - } - } - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - SfcCodecContext context = new SfcCodecContext(); - ServiceDirectory testDirectory = new TestServiceDirectory() - .add(PortChainService.class, portChainService) - .add(CodecService.class, context.codecManager()); - setServiceDirectory(testDirectory); - - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of the rest api GET when there are no port chains. - */ - @Test - public void testPortChainsEmpty() { - - expect(portChainService.getPortChains()).andReturn(null).anyTimes(); - replay(portChainService); - final WebTarget wt = target(); - final String response = wt.path("port_chains").request().get(String.class); - assertThat(response, is("{\"port_chains\":[]}")); - } - - /** - * Tests the result of a rest api GET for port chain id. - */ - @Test - public void testGetPortChainId() { - - final Set portChains = new HashSet<>(); - portChains.add(portChain1); - - expect(portChainService.exists(anyObject())).andReturn(true).anyTimes(); - expect(portChainService.getPortChain(anyObject())).andReturn(portChain1).anyTimes(); - replay(portChainService); - - final WebTarget wt = target(); - final String response = wt.path("port_chains/1278dcd4-459f-62ed-754b-87fc5e4a6751") - .request().get(String.class); - final JsonObject result = Json.parse(response).asObject(); - assertThat(result, notNullValue()); - } - - /** - * Tests that a fetch of a non-existent port chain object throws an exception. - */ - @Test - public void testBadGet() { - expect(portChainService.getPortChain(anyObject())) - .andReturn(null).anyTimes(); - replay(portChainService); - WebTarget wt = target(); - try { - wt.path("port_chains/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae") - .request().get(String.class); - fail("Fetch of non-existent port chain did not throw an exception"); - } catch (NotFoundException ex) { - assertThat(ex.getMessage(), - containsString("HTTP 404 Not Found")); - } - } - - /** - * Tests creating a port chain with POST. - */ - @Test - public void testPost() { - - expect(portChainService.createPortChain(anyObject())) - .andReturn(true).anyTimes(); - replay(portChainService); - - WebTarget wt = target(); - InputStream jsonStream = PortChainResourceTest.class.getResourceAsStream("post-PortChain.json"); - - Response response = wt.path("port_chains") - .request(MediaType.APPLICATION_JSON_TYPE) - .post(Entity.json(jsonStream)); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); - } - - /** - * Tests deleting a port chain. - */ - @Test - public void testDelete() { - expect(portChainService.removePortChain(anyObject())) - .andReturn(true).anyTimes(); - replay(portChainService); - - WebTarget wt = target(); - - String location = "port_chains/1278dcd4-459f-62ed-754b-87fc5e4a6751"; - - Response deleteResponse = wt.path(location) - .request(MediaType.APPLICATION_JSON_TYPE, MediaType.TEXT_PLAIN_TYPE) - .delete(); - assertThat(deleteResponse.getStatus(), - is(HttpURLConnection.HTTP_NO_CONTENT)); - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainSfMapResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainSfMapResourceTest.java deleted file mode 100644 index e3866ce04a..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainSfMapResourceTest.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.eclipsesource.json.Json; -import com.eclipsesource.json.JsonObject; -import com.google.common.collect.Lists; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onosproject.codec.CodecService; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.ServiceFunctionGroup; -import org.onosproject.vtnrsc.portchainsfmap.PortChainSfMapService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import javax.ws.rs.client.WebTarget; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit tests for port chain sf map REST APIs. - */ -public class PortChainSfMapResourceTest extends VtnResourceTest { - - final PortChainSfMapService portChainSfMapService = createMock(PortChainSfMapService.class); - - String name1 = "Firewall"; - String description1 = "Firewall service function"; - Map portPairLoadMap1 = new ConcurrentHashMap<>(); - - ServiceFunctionGroup serviceFunction1 = new ServiceFunctionGroup(name1, description1, - portPairLoadMap1); - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - SfcCodecContext context = new SfcCodecContext(); - ServiceDirectory testDirectory = new TestServiceDirectory() - .add(PortChainSfMapService.class, portChainSfMapService) - .add(CodecService.class, context.codecManager()); - setServiceDirectory(testDirectory); - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of a rest api GET for port chain id. - */ - @Test - public void testGetPortChainId() { - - final List serviceFunctions = Lists.newArrayList(); - serviceFunctions.add(serviceFunction1); - - expect(portChainSfMapService.getServiceFunctions(anyObject())).andReturn(serviceFunctions).anyTimes(); - replay(portChainSfMapService); - - final WebTarget wt = target(); - final String response = wt.path("portChainSfMap/1278dcd4-459f-62ed-754b-87fc5e4a6751").request() - .get(String.class); - final JsonObject result = Json.parse(response).asObject(); - assertThat(result, notNullValue()); - assertThat(result.names().get(0), is("portChainSfMap")); - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairGroupResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairGroupResourceTest.java deleted file mode 100644 index a5f2150c83..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairGroupResourceTest.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.eclipsesource.json.Json; -import com.eclipsesource.json.JsonObject; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onosproject.codec.CodecService; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import javax.ws.rs.NotFoundException; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; -/** - * Unit tests for port pair group REST APIs. - */ -public class PortPairGroupResourceTest extends VtnResourceTest { - - final PortPairGroupService portPairGroupService = createMock(PortPairGroupService.class); - - PortPairGroupId portPairGroupId1 = PortPairGroupId.of("4512d643-24fc-4fae-af4b-321c5e2eb3d1"); - TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - private final List portPairList1 = Lists.newArrayList(); - - final MockPortPairGroup portPairGroup1 = new MockPortPairGroup(portPairGroupId1, tenantId1, "portPairGroup1", - "Mock port pair group", portPairList1); - - /** - * Mock class for a port pair group. - */ - private static class MockPortPairGroup implements PortPairGroup { - - private final PortPairGroupId portPairGroupId; - private final TenantId tenantId; - private final String name; - private final String description; - private final List portPairList; - - public MockPortPairGroup(PortPairGroupId portPairGroupId, TenantId tenantId, - String name, String description, - List portPairList) { - - this.portPairGroupId = portPairGroupId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.portPairList = portPairList; - } - - @Override - public PortPairGroupId portPairGroupId() { - return portPairGroupId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public List portPairs() { - return ImmutableList.copyOf(portPairList); - } - - @Override - public void addLoad(PortPairId portPairId) { - } - - @Override - public int getLoad(PortPairId portPairId) { - return 0; - } - - @Override - public Map portPairLoadMap() { - return null; - } - - @Override - public boolean exactMatch(PortPairGroup portPairGroup) { - return this.equals(portPairGroup) && - Objects.equals(this.portPairGroupId, portPairGroup.portPairGroupId()) && - Objects.equals(this.tenantId, portPairGroup.tenantId()); - } - - @Override - public void resetLoad() { - } - } - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - SfcCodecContext context = new SfcCodecContext(); - ServiceDirectory testDirectory = new TestServiceDirectory() - .add(PortPairGroupService.class, portPairGroupService) - .add(CodecService.class, context.codecManager()); - setServiceDirectory(testDirectory); - - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of the rest api GET when there are no port pair groups. - */ - @Test - public void testPortPairGroupsEmpty() { - - expect(portPairGroupService.getPortPairGroups()).andReturn(null).anyTimes(); - replay(portPairGroupService); - final WebTarget wt = target(); - final String response = wt.path("port_pair_groups").request().get(String.class); - assertThat(response, is("{\"port_pair_groups\":[]}")); - } - - /** - * Tests the result of a rest api GET for port pair group id. - */ - @Test - public void testGetPortPairGroupId() { - - final Set portPairGroups = new HashSet<>(); - portPairGroups.add(portPairGroup1); - - expect(portPairGroupService.exists(anyObject())).andReturn(true).anyTimes(); - expect(portPairGroupService.getPortPairGroup(anyObject())).andReturn(portPairGroup1).anyTimes(); - replay(portPairGroupService); - - final WebTarget wt = target(); - final String response = wt.path("port_pair_groups/4512d643-24fc-4fae-af4b-321c5e2eb3d1") - .request().get(String.class); - final JsonObject result = Json.parse(response).asObject(); - assertThat(result, notNullValue()); - } - - /** - * Tests that a fetch of a non-existent port pair group object throws an exception. - */ - @Test - public void testBadGet() { - expect(portPairGroupService.getPortPairGroup(anyObject())) - .andReturn(null).anyTimes(); - replay(portPairGroupService); - WebTarget wt = target(); - try { - wt.path("port_pair_groups/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae") - .request().get(String.class); - fail("Fetch of non-existent port pair group did not throw an exception"); - } catch (NotFoundException ex) { - assertThat(ex.getMessage(), - containsString("HTTP 404 Not Found")); - } - } - - /** - * Tests creating a port pair group with POST. - */ - @Test - public void testPost() { - - expect(portPairGroupService.createPortPairGroup(anyObject())) - .andReturn(true).anyTimes(); - replay(portPairGroupService); - - WebTarget wt = target(); - InputStream jsonStream = PortPairGroupResourceTest.class.getResourceAsStream("post-PortPairGroup.json"); - - Response response = wt.path("port_pair_groups") - .request(MediaType.APPLICATION_JSON_TYPE) - .post(Entity.json(jsonStream)); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); - } - - /** - * Tests deleting a port pair group. - */ - @Test - public void testDelete() { - expect(portPairGroupService.removePortPairGroup(anyObject())) - .andReturn(true).anyTimes(); - replay(portPairGroupService); - - WebTarget wt = target(); - - String location = "port_pair_groups/4512d643-24fc-4fae-af4b-321c5e2eb3d1"; - - Response deleteResponse = wt.path(location) - .request(MediaType.APPLICATION_JSON_TYPE, MediaType.TEXT_PLAIN_TYPE) - .delete(); - assertThat(deleteResponse.getStatus(), - is(HttpURLConnection.HTTP_NO_CONTENT)); - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairResourceTest.java deleted file mode 100644 index 63e89b9cd1..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairResourceTest.java +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import com.eclipsesource.json.Json; -import com.eclipsesource.json.JsonObject; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onosproject.codec.CodecService; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import javax.ws.rs.NotFoundException; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.util.HashSet; -import java.util.Objects; -import java.util.Set; - -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; -/** - * Unit tests for port pair REST APIs. - */ -public class PortPairResourceTest extends VtnResourceTest { - - final PortPairService portPairService = createMock(PortPairService.class); - - PortPairId portPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - - final MockPortPair portPair1 = new MockPortPair(portPairId1, tenantId1, "portPair1", - "Mock port pair", "dace4513-24fc-4fae-af4b-321c5e2eb3d1", - "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345"); - - /** - * Mock class for a port pair. - */ - private static class MockPortPair implements PortPair { - - private final PortPairId portPairId; - private final TenantId tenantId; - private final String name; - private final String description; - private final String ingress; - private final String egress; - - public MockPortPair(PortPairId portPairId, TenantId tenantId, - String name, String description, - String ingress, String egress) { - - this.portPairId = portPairId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.ingress = ingress; - this.egress = egress; - } - - @Override - public PortPairId portPairId() { - return portPairId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public String ingress() { - return ingress; - } - - @Override - public String egress() { - return egress; - } - - @Override - public boolean exactMatch(PortPair portPair) { - return this.equals(portPair) && - Objects.equals(this.portPairId, portPair.portPairId()) && - Objects.equals(this.tenantId, portPair.tenantId()); - } - } - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - - SfcCodecContext context = new SfcCodecContext(); - ServiceDirectory testDirectory = new TestServiceDirectory().add(PortPairService.class, portPairService) - .add(CodecService.class, context.codecManager()); - setServiceDirectory(testDirectory); - - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of the rest api GET when there are no port pairs. - */ - @Test - public void testPortPairsEmpty() { - - expect(portPairService.getPortPairs()).andReturn(null).anyTimes(); - replay(portPairService); - final WebTarget wt = target(); - final String response = wt.path("port_pairs").request().get(String.class); - assertThat(response, is("{\"port_pairs\":[]}")); - } - - /** - * Tests the result of a rest api GET for port pair id. - */ - @Test - public void testGetPortPairId() { - - final Set portPairs = new HashSet<>(); - portPairs.add(portPair1); - - expect(portPairService.exists(anyObject())).andReturn(true).anyTimes(); - expect(portPairService.getPortPair(anyObject())).andReturn(portPair1).anyTimes(); - replay(portPairService); - - final WebTarget wt = target(); - final String response = wt.path("port_pairs/78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae") - .request().get(String.class); - final JsonObject result = Json.parse(response).asObject(); - assertThat(result, notNullValue()); - } - - /** - * Tests that a fetch of a non-existent port pair object throws an exception. - */ - @Test - public void testBadGet() { - expect(portPairService.getPortPair(anyObject())) - .andReturn(null).anyTimes(); - replay(portPairService); - WebTarget wt = target(); - try { - wt.path("port_pairs/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae") - .request().get(String.class); - fail("Fetch of non-existent port pair did not throw an exception"); - } catch (NotFoundException ex) { - assertThat(ex.getMessage(), - containsString("HTTP 404 Not Found")); - } - } - - /** - * Tests creating a port pair with POST. - */ - @Test - public void testPost() { - - expect(portPairService.createPortPair(anyObject())) - .andReturn(true).anyTimes(); - replay(portPairService); - - WebTarget wt = target(); - InputStream jsonStream = PortPairResourceTest.class.getResourceAsStream("post-PortPair.json"); - - Response response = wt.path("port_pairs") - .request(MediaType.APPLICATION_JSON_TYPE) - .post(Entity.json(jsonStream)); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); - } - - /** - * Tests deleting a port pair. - */ - @Test - public void testDelete() { - expect(portPairService.removePortPair(anyObject())) - .andReturn(true).anyTimes(); - replay(portPairService); - - WebTarget wt = target(); - - String location = "port_pairs/78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"; - - Response deleteResponse = wt.path(location) - .request(MediaType.APPLICATION_JSON_TYPE, MediaType.TEXT_PLAIN_TYPE) - .delete(); - assertThat(deleteResponse.getStatus(), - is(HttpURLConnection.HTTP_NO_CONTENT)); - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/VtnResourceTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/VtnResourceTest.java deleted file mode 100644 index 2f7d7593cc..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/VtnResourceTest.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.resources; - -import org.glassfish.jersey.server.ResourceConfig; -import org.onosproject.rest.resources.ResourceTest; - -/** - * Base class for VTN REST API tests. Performs common configuration operations. - */ -public class VtnResourceTest extends ResourceTest { - - /** - * Creates a new web-resource test. - */ - public VtnResourceTest() { - super(ResourceConfig.forApplicationClass(VtnWebApplication.class)); - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/FlowClassifierCodecTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/FlowClassifierCodecTest.java deleted file mode 100644 index 6b55fcf730..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/FlowClassifierCodecTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import java.io.IOException; -import java.io.InputStream; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Flow classifier codec unit tests. - */ -public class FlowClassifierCodecTest { - - SfcCodecContext context; - JsonCodec flowClassifierCodec; - /** - * Sets up for each test. Creates a context and fetches the flow classifier - * codec. - */ - @Before - public void setUp() { - context = new SfcCodecContext(); - flowClassifierCodec = context.codec(FlowClassifier.class); - assertThat(flowClassifierCodec, notNullValue()); - } - - /** - * Reads in a flow classifier from the given resource and decodes it. - * - * @param resourceName resource to use to read the JSON for the flow classifier - * @return decoded flow classifier - * @throws IOException if processing the resource fails - */ - private FlowClassifier getFlowClassifier(String resourceName) throws IOException { - InputStream jsonStream = FlowClassifierCodecTest.class - .getResourceAsStream(resourceName); - ObjectMapper mapper = new ObjectMapper(); - JsonNode json = mapper.readTree(jsonStream); - assertThat(json, notNullValue()); - FlowClassifier flowClassifier = flowClassifierCodec.decode((ObjectNode) json, context); - assertThat(flowClassifier, notNullValue()); - return flowClassifier; - } - - /** - * Checks that a simple flow classifier decodes properly. - * - * @throws IOException if the resource cannot be processed - */ - @Test - public void codecFlowClassifierTest() throws IOException { - - FlowClassifier flowClassifier = getFlowClassifier("flowClassifier.json"); - - assertThat(flowClassifier, notNullValue()); - - FlowClassifierId flowClassifierId = FlowClassifierId.of("4a334cd4-fe9c-4fae-af4b-321c5e2eb051"); - TenantId tenantId = TenantId.tenantId("1814726e2d22407b8ca76db5e567dcf1"); - - assertThat(flowClassifier.flowClassifierId().toString(), is(flowClassifierId.toString())); - assertThat(flowClassifier.name(), is("flow1")); - assertThat(flowClassifier.tenantId().toString(), is(tenantId.toString())); - assertThat(flowClassifier.description(), is("flow classifier")); - assertThat(flowClassifier.protocol(), is("tcp")); - assertThat(flowClassifier.priority(), is(65535)); - assertThat(flowClassifier.minSrcPortRange(), is(22)); - assertThat(flowClassifier.maxSrcPortRange(), is(4000)); - assertThat(flowClassifier.minDstPortRange(), is(80)); - assertThat(flowClassifier.maxDstPortRange(), is(80)); - - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortChainCodecTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortChainCodecTest.java deleted file mode 100644 index 36d036b87f..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortChainCodecTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import java.io.IOException; -import java.io.InputStream; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Flow rule codec unit tests. - */ -public class PortChainCodecTest { - - SfcCodecContext context; - JsonCodec portChainCodec; - /** - * Sets up for each test. Creates a context and fetches the flow rule - * codec. - */ - @Before - public void setUp() { - context = new SfcCodecContext(); - portChainCodec = context.codec(PortChain.class); - assertThat(portChainCodec, notNullValue()); - } - - /** - * Reads in a rule from the given resource and decodes it. - * - * @param resourceName resource to use to read the JSON for the rule - * @return decoded flow rule - * @throws IOException if processing the resource fails - */ - private PortChain getPortChain(String resourceName) throws IOException { - InputStream jsonStream = PortChainCodecTest.class - .getResourceAsStream(resourceName); - ObjectMapper mapper = new ObjectMapper(); - JsonNode json = mapper.readTree(jsonStream); - assertThat(json, notNullValue()); - PortChain portChain = portChainCodec.decode((ObjectNode) json, context); - assertThat(portChain, notNullValue()); - return portChain; - } - - /** - * Checks that a simple rule decodes properly. - * - * @throws IOException if the resource cannot be processed - */ - @Test - public void codecPortChainTest() throws IOException { - - PortChain portChain = getPortChain("portChain.json"); - - assertThat(portChain, notNullValue()); - - PortChainId portChainId = PortChainId.of("1278dcd4-459f-62ed-754b-87fc5e4a6751"); - TenantId tenantId = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - - assertThat(portChain.portChainId().toString(), is(portChainId.toString())); - assertThat(portChain.name(), is("PC2")); - assertThat(portChain.tenantId().toString(), is(tenantId.toString())); - assertThat(portChain.description(), is("Two flows and two port-pair-groups")); - - assertThat(portChain.flowClassifiers(), notNullValue()); - assertThat(portChain.portPairGroups(), notNullValue()); - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairCodecTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairCodecTest.java deleted file mode 100644 index 059df242f5..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairCodecTest.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import java.io.IOException; -import java.io.InputStream; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Port pair codec unit tests. - */ -public class PortPairCodecTest { - - SfcCodecContext context; - JsonCodec portPairCodec; - /** - * Sets up for each test. Creates a context and fetches the port pair - * codec. - */ - @Before - public void setUp() { - context = new SfcCodecContext(); - portPairCodec = context.codec(PortPair.class); - assertThat(portPairCodec, notNullValue()); - } - - /** - * Reads in a port pair from the given resource and decodes it. - * - * @param resourceName resource to use to read the JSON for the port pair - * @return decoded port pair - * @throws IOException if processing the resource fails - */ - private PortPair getPortPair(String resourceName) throws IOException { - InputStream jsonStream = PortPairCodecTest.class - .getResourceAsStream(resourceName); - ObjectMapper mapper = new ObjectMapper(); - JsonNode json = mapper.readTree(jsonStream); - assertThat(json, notNullValue()); - PortPair portPair = portPairCodec.decode((ObjectNode) json, context); - assertThat(portPair, notNullValue()); - return portPair; - } - - /** - * Checks that a simple port pair decodes properly. - * - * @throws IOException if the resource cannot be processed - */ - @Test - public void codecPortPairTest() throws IOException { - - PortPair portPair = getPortPair("portPair.json"); - - assertThat(portPair, notNullValue()); - - PortPairId portPairId = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - TenantId tenantId = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - - assertThat(portPair.portPairId().toString(), is(portPairId.toString())); - assertThat(portPair.name(), is("PP1")); - assertThat(portPair.tenantId().toString(), is(tenantId.toString())); - assertThat(portPair.description(), is("SF-A")); - assertThat(portPair.ingress().toString(), is("dace4513-24fc-4fae-af4b-321c5e2eb3d1")); - assertThat(portPair.egress().toString(), is("aef3478a-4a56-2a6e-cd3a-9dee4e2ec345")); - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairGroupCodecTest.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairGroupCodecTest.java deleted file mode 100644 index 5fdaf869e8..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairGroupCodecTest.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import java.io.IOException; -import java.io.InputStream; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Flow rule codec unit tests. - */ -public class PortPairGroupCodecTest { - - SfcCodecContext context; - JsonCodec portPairGroupCodec; - /** - * Sets up for each test. Creates a context and fetches the flow rule - * codec. - */ - @Before - public void setUp() { - context = new SfcCodecContext(); - portPairGroupCodec = context.codec(PortPairGroup.class); - assertThat(portPairGroupCodec, notNullValue()); - } - - /** - * Reads in a rule from the given resource and decodes it. - * - * @param resourceName resource to use to read the JSON for the rule - * @return decoded flow rule - * @throws IOException if processing the resource fails - */ - private PortPairGroup getPortPairGroup(String resourceName) throws IOException { - InputStream jsonStream = PortPairGroupCodecTest.class - .getResourceAsStream(resourceName); - ObjectMapper mapper = new ObjectMapper(); - JsonNode json = mapper.readTree(jsonStream); - assertThat(json, notNullValue()); - PortPairGroup portPairGroup = portPairGroupCodec.decode((ObjectNode) json, context); - assertThat(portPairGroup, notNullValue()); - return portPairGroup; - } - - /** - * Checks that a simple rule decodes properly. - * - * @throws IOException if the resource cannot be processed - */ - @Test - public void codecPortPairGroupTest() throws IOException { - - PortPairGroup portPairGroup = getPortPairGroup("portPairGroup.json"); - - assertThat(portPairGroup, notNullValue()); - - PortPairGroupId portPairGroupId = PortPairGroupId.of("4512d643-24fc-4fae-af4b-321c5e2eb3d1"); - TenantId tenantId = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - - assertThat(portPairGroup.portPairGroupId().toString(), is(portPairGroupId.toString())); - assertThat(portPairGroup.name(), is("PG1")); - assertThat(portPairGroup.tenantId().toString(), is(tenantId.toString())); - assertThat(portPairGroup.description(), is("Two port-pairs")); - assertThat(portPairGroup.portPairs(), notNullValue()); - } -} diff --git a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/SfcCodecContext.java b/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/SfcCodecContext.java deleted file mode 100644 index 1a4965b6c9..0000000000 --- a/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/SfcCodecContext.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.vtnweb.web; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.CodecService; -import org.onosproject.codec.JsonCodec; -import org.onosproject.codec.impl.CodecManager; - -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * Mock codec context for use in codec unit tests. - */ -public class SfcCodecContext implements CodecContext { - - private final ObjectMapper mapper = new ObjectMapper(); - private final CodecManager codecManager = new CodecManager(); - private final VtnCodecRegistrator manager = new VtnCodecRegistrator(); - - /** - * Constructs a new mock codec context. - */ - public SfcCodecContext() { - codecManager.activate(); - manager.codecService = codecManager; - manager.activate(); - } - - @Override - public ObjectMapper mapper() { - return mapper; - } - - @SuppressWarnings("unchecked") - @Override - public T getService(Class serviceClass) { - // TODO - return null; - } - - @Override - public JsonCodec codec(Class entityClass) { - return codecManager.getCodec(entityClass); - } - - /** - * Get the codec manager. - * - * @return instance of codec manager - */ - public CodecService codecManager() { - return codecManager; - } -} diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-FlowClassifier.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-FlowClassifier.json deleted file mode 100644 index 5ed095defe..0000000000 --- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-FlowClassifier.json +++ /dev/null @@ -1,15 +0,0 @@ -{"flow_classifier": { - "id": "4a334cd4-fe9c-4fae-af4b-321c5e2eb051", - "name": "flow1", - "tenant_id": "1814726e2d22407b8ca76db5e567dcf1", - "description": "flow classifier", - "ethertype": "IPv4", - "protocol": "tcp", - "priority": 10000, - "source_port_range_min": 22, "source_port_range_max": 4000, - "destination_port_range_min": 80, "destination_port_range_max": 80, - "source_ip_prefix": "1.1.1.1/16" , "destination_ip_prefix": "22.12.34.45/16", - "logical_destination_port": "dace4513-24fc-4fae-af4b-321c5e2eb3d1", - "logical_source_port": "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345" - } -} diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortChain.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortChain.json deleted file mode 100644 index 488e290f06..0000000000 --- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortChain.json +++ /dev/null @@ -1,15 +0,0 @@ -{"port_pair": { - "id": "1278dcd4-459f-62ed-754b-87fc5e4a6751", - "name": "PC2", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "Two flows and two port-pair-groups", - "flow_classifiers": [ - "456a4a34-2e9c-14ae-37fb-765feae2eb05", - "4a334cd4-fe9c-4fae-af4b-321c5e2eb051" - ], - "port_pair_groups": [ - "4512d643-24fc-4fae-af4b-321c5e2eb3d1", - "4a634d49-76dc-4fae-af4b-321c5e23d651" - ] - } -} diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPair.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPair.json deleted file mode 100644 index 2a774e314c..0000000000 --- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPair.json +++ /dev/null @@ -1,9 +0,0 @@ -{"port_pair": { - "id": "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae", - "name": "PP1", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "SF-A", - "ingress": "dace4513-24fc-4fae-af4b-321c5e2eb3d1", - "egress": "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345" - } -} diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPairGroup.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPairGroup.json deleted file mode 100644 index f6a888d98d..0000000000 --- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPairGroup.json +++ /dev/null @@ -1,11 +0,0 @@ -{"port_pair_group": { - "id": "4512d643-24fc-4fae-af4b-321c5e2eb3d1", - "name": "portPairGroup1", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "Mock port pair group", - "port_pairs": [ - "875dfeda-43ed-23fe-454b-764feab2c342", - "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae" - ] -} -} diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/flowClassifier.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/flowClassifier.json deleted file mode 100644 index 3fd5ac9545..0000000000 --- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/flowClassifier.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "id": "4a334cd4-fe9c-4fae-af4b-321c5e2eb051", - "name": "flow1", - "tenant_id": "1814726e2d22407b8ca76db5e567dcf1", - "description": "flow classifier", - "ethertype": "IPv4", - "protocol": "tcp", - "priority": 65535, - "source_port_range_min": 22, "source_port_range_max": 4000, - "destination_port_range_min": 80, "destination_port_range_max": 80, - "source_ip_prefix": "1.1.1.1/16" , "destination_ip_prefix": "22.12.34.45/16" - } diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portChain.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portChain.json deleted file mode 100644 index 07a1bc21b8..0000000000 --- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portChain.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "id": "1278dcd4-459f-62ed-754b-87fc5e4a6751", - "name": "PC2", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "Two flows and two port-pair-groups", - "flow_classifiers": [ - "456a4a34-2e9c-14ae-37fb-765feae2eb05", - "4a334cd4-fe9c-4fae-af4b-321c5e2eb051" - ], - "port_pair_groups": [ - "4512d643-24fc-4fae-af4b-321c5e2eb3d1", - "4a634d49-76dc-4fae-af4b-321c5e23d651" - ] -} diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPair.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPair.json deleted file mode 100644 index f858c88c5b..0000000000 --- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPair.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "id": "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae", - "name": "PP1", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "SF-A", - "ingress": "dace4513-24fc-4fae-af4b-321c5e2eb3d1", - "egress": "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345" -} - diff --git a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPairGroup.json b/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPairGroup.json deleted file mode 100644 index e19a66fc9a..0000000000 --- a/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPairGroup.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "id": "4512d643-24fc-4fae-af4b-321c5e2eb3d1", - "name": "PG1", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "Two port-pairs", - "port_pairs": [ - "875dfeda-43ed-23fe-454b-764feab2c342", - "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae" - ] -} diff --git a/apps/yms/BUCK.deprecated b/apps/yms/BUCK.deprecated deleted file mode 100644 index aae4279ebd..0000000000 --- a/apps/yms/BUCK.deprecated +++ /dev/null @@ -1,14 +0,0 @@ -BUNDLES = [ - '//apps/yms/api:onos-apps-yms-api', - '//apps/yms/app:onos-apps-yms-app', - '//lib:onos-yang-datamodel', - '//lib:onos-yang-utils-generator', - '//lib:org.apache.servicemix.bundles.dom4j', -] - -onos_app( - title = 'YANG Management System', - category = 'Utility', - url = 'http://onosproject.org', - included_bundles = BUNDLES, -) diff --git a/apps/yms/api/BUCK.deprecated b/apps/yms/api/BUCK.deprecated deleted file mode 100644 index b8b02d603c..0000000000 --- a/apps/yms/api/BUCK.deprecated +++ /dev/null @@ -1,8 +0,0 @@ -COMPILE_DEPS = [ - '//lib:CORE_DEPS', - '//lib:onos-yang-datamodel', -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/package-info.java deleted file mode 100644 index f22e1fa712..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/package-info.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides interfaces to YANG management system. YANG management system - * is a core of YANG in ONOS. - * - * In NBI, it acts as a broker in between the protocol and application, - * here there is a separate protocol implementation, which does the conversion - * of protocol representation to abstract data tree. The protocol - * implementation takes care of the protocol specific actions for - * e.g. RESTCONF handling the entity-tag / timestamp related operations. - * - * In SBI, driver or provider uses YANG codec handler as a utility to translate - * the request information in java(YANG utils generated) to protocol specific - * format and vice versa. - */ -package org.onosproject.yms; diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCodecHandler.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCodecHandler.java deleted file mode 100644 index 47e6c66976..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCodecHandler.java +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ych; - -import org.onosproject.yms.ydt.YmsOperationType; - -import java.util.List; -import java.util.Map; - -/** - * Abstraction of an entity which provides interfaces to YANG codec handler. - *

- * In SBI, the provider or driver uses YANG management system as a CODEC - * utility. Providers/drivers register the device schema with YANG management - * system. YANG utils is used to generate the java files corresponding to the - * device schema. Provider or driver use these classes to seamlessly manage - * the device as java objects. While sending the request to device, drivers - * use the utility to translate the objects to protocol specific data - * representation and then send to the device. Protocol or driver use the - * same instance of the codec utility across multiple translation request. - * Protocol or driver should not use the same instance of utility concurrently. - */ -public interface YangCodecHandler { - /** - * Provider / driver needs to register the device schema with code handler. - * Then the provider / driver can use the codec handler to perform the - * codec operation. When the codec operation is being performed, the - * codec utility finds the mapping registered device model and perform the - * translation against the device schema. - * - * @param yangModule YANG utils generated class corresponding to SBI - * device schema module - */ - void addDeviceSchema(Class yangModule); - - - /** - * When the drivers / providers need to encode a protocol operation - * requests, which is in a single block, this encode API is used. - * A single protocol operation can span across multiple application, then - * the driver / provider need to provide the list of application(s) module - * object. Each module object contains the request information - * corresponding to that application. - *

- * The protocols can have a logical root node which acts as a container - * of applications module node. For example in NETCONF, it could be - * data/filter/config, etc. Protocols needs to pass this parameter in the - * encode request, so that it is part of the encoded protocol packet. - * There is no validation done on the value of this parameter. It is up to - * the protocol to use it. It is a mandatory parameter and protocols must - * pass this parameter. In protocols like NETCONF, these logical root - * node may be in a specific name space, in such cases, it needs to be - * passed to encode it as part of the request. There could be additional - * tags that can be attached to the root node, for example in NETCONF, - * the tag type="subtree" can be specified. In such scenarios the - * required tags should be sent as a parameter. - *

- * The provider / driver would require to operate on multiple schema - * nodes in a single request, for example it may be require to configure - * a tunnel and associate a QOS to this tunnel, in this scenario, it - * needs to have the tunnel related information in the tunnel module's - * Java object and and QOS related information in QOS modules Java - * object. So in a single request, it can send the list of Java objects - * corresponding to the modules which need to participate in the operation. - * If the request to be generated needs to be a wild card for no - * application(s), then this parameter needs to be null. For example a - * "empty filter" request in NETCONF get request. - *

- * If the request to be generated needs to be a wild card for all - * application(s), then the driver / provider should not invoke this API, - * as there is no encoding of application related information for the - * operation, it is only limited to the protocol operation. For example a - * "no filter" request in NETCONF get request. - * - * @param rootName name of logical root node as required by - * the protocol - * @param rootNamespace namespace of logical root node as - * required by the protocol encoding. It is - * an optional parameter. - * @param tagAttributeLinkedMap Specifies the list of attributes that - * needs to be tagged with the logical root - * node. It is an optional parameter - * if not required for the protocol. - * @param yangModuleList list of YANG module's object(s) - * participating in the operation. - * @param dataFormat data format to which encoding to be done. - * @param protocolOperation protocol operation being performed - * @return string containing the requested applications object - * information encoded in protocol format. - */ - String encodeOperation(String rootName, String rootNamespace, - Map tagAttributeLinkedMap, - List yangModuleList, - YangProtocolEncodingFormat dataFormat, - YmsOperationType protocolOperation); - - /** - * When the drivers / providers need to encode protocol composite - * operation requests, which is split in a composite blocks, this encode - * composite operation API is used. The application module object - * containing the request information has both the resource identifier - * part and the resource information part. - *

- * The protocols can have a logical root node which acts as a container - * of applications module node. For example in RESTCONF, it could be - * RootResource/data, etc. There is no validation done on the value - * of this parameter. It is up to the protocol to use it. It is a - * mandatory parameter and protocols must pass this parameter. - *

- * The resource to be operated upon in the device is identified in a - * module's schema object. This modules object should contain the - * information about the resource on which the operation needs to be - * performed. The resource is identified by initial chain of objects for - * which operation type is none. Once the resource is reached using none - * operations, the actual information about the operation on the device - * is encoded. - * - * @param rootName name of logical root node as required by the - * protocol - * @param rootNamespace namespace of logical root node as required by - * the - * protocol encoding. It is optional, and there - * is no - * namespace set to the logical root node - * @param appModuleObject object containing the information about the - * resource on which the operation is being - * performed - * @param dataFormat data format to which request needs to - * be encoded - * @param protocolOperation protocol operation being performed - * @return the composite protocol operation request. - */ - YangCompositeEncoding encodeCompositeOperation(String rootName, - String rootNamespace, - Object appModuleObject, - YangProtocolEncodingFormat - dataFormat, - YmsOperationType - protocolOperation); - - /** - * When the driver or provider receive the data from the SBI protocol, It - * will be in the protocol specific data representation. Drivers / - * provider need to interact with the device using native JAVA objects. - * Drivers use this decode method to translate the received - * protocol specific simple data to YANG modeled Java objects. - * If the response received is not in line with the schema, for example, - * there is some error info, etc, then the decode operation will throw an - * exception and decode operation will fail. - * - * @param protocolData input string containing the resource information - * in protocol format - * @param dataFormat data format from which decoding has to be done - * @param protocolOperation protocol operation being performed - * @return list of applications module/notification objects corresponding - * to the protocol data input - */ - List decode(String protocolData, - YangProtocolEncodingFormat dataFormat, - YmsOperationType protocolOperation); - - /** - * When the driver or provider receive the composite data from the SBI - * protocol, It will be in the protocol specific data representation. - * Drivers / provider need to interact with the device - * using native JAVA objects. Drivers use this Decode method to translate - * the received protocol specific composite data to YANG modeled Java - * objects. - *

- * If the response received is not in line with the schema, for example, - * there is some error info, etc, then the decode operation will throw an - * exception and decode operation will fail. - * - * @param protocolData composite protocol data containing the resource - * information - * @param dataFormat data format from which decoding has to be done - * @param protocolOperation protocol operation being performed - * @return application module/notification object corresponding to the - * protocol data infput - */ - Object decode(YangCompositeEncoding protocolData, - YangProtocolEncodingFormat dataFormat, - YmsOperationType protocolOperation); - - /** - * Register the provider / driver specific overridden codec. This is can - * be used by provider to support any protocol specific extension or - * vendor specific implementation. This framework can also be used - * by providers / drivers to support any new protocol data format which - * is not supported by default in YANG codec utility. - * - * @param overriddenCodec provider / driver specific overridden instance - * of the codec - * @param dataFormat data format to which encoding to be done. - */ - void registerOverriddenCodec(YangDataTreeCodec overriddenCodec, - YangProtocolEncodingFormat dataFormat); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCompositeEncoding.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCompositeEncoding.java deleted file mode 100644 index 05694acd59..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangCompositeEncoding.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ych; - -/** - * Abstraction of an entity which has the composite protocol request. - *

- * Protocols like RESTCONF, have split the schema specific information across - * different components in the protocol encoding. - *

- * There is a resource identifier, which is part of the RESTCONF request URL. - * and there is the information about the resource being operated on in the - * request, this is part of the request body. - */ -public interface YangCompositeEncoding { - - /** - * Retrieves the resource identifier on which the operation is being - * performed. - * - * @return the string representation of the resource being identified - */ - String getResourceIdentifier(); - - /** - * Retrieves the representation format of the resource identifier. - * - * @return the type of the resource identifier - */ - YangResourceIdentifierType getResourceIdentifierType(); - - /** - * Retrieves the resource information in the protocol encoding format. - * - * @return the resource information in the protocol encoding format - */ - String getResourceInformation(); - - /** - * Sets resource identifier. - * - * @param resourceId resource identifier - */ - void setResourceIdentifier(String resourceId); - - /** - * Sets the resource information. - * - * @param resourceInfo resource information - */ - void setResourceInformation(String resourceInfo); - - /** - * Sets the resource identifier type. - * - * @param idType resource identifier - */ - void setResourceIdentifierType(YangResourceIdentifierType idType); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangDataTreeCodec.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangDataTreeCodec.java deleted file mode 100644 index bb52d967e1..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangDataTreeCodec.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ych; - -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YmsOperationType; - -/** - * Abstraction of an entity which overrides the default codec. - *

- * YANG has it extension framework which allows vendor / implementation - * specific operation or extensions. The default CODECs will fail to handle - * such protocol requests. In such scenarios, the providers can register - * their specific CODEC's with the YANG codec utility to translate the protocol - * specific data to abstract YANG data tree, from which it can be translate into - * the YANG modelled java objects for the provider / driver to operate on the - * device. - */ - -public interface YangDataTreeCodec { - /** - * When the YMS need to encode simple protocol operation request, - * it will translate the YANG objects into an abstract YANG data tree and - * invoke this registered encode method. Protocol CODEC implementation - * needs to ensure the overridden method can handle any specific - * extension or representation of protocol data. - * The operation type will be set in YANG data tree builder. - * - * @param ydtBuilder Abstract YANG data tree contains the operation - * request - * @return protocol specific string representation. - */ - String encodeYdtToProtocolFormat(YdtBuilder ydtBuilder); - - /** - * When the YMS need to encode composite protocol operation request, it - * will translate the YANG objects into an abstract YANG data - * tree and invoke this registered encode method. Protocol CODEC - * implementation needs to ensure the overridden method can handle any - * specific extension or representation of protocol data. - *

- * The Initial chain of node in the YDT will have the operation type set - * to NONE to specify it is a resource identifier. The Resource - * information is maintained as a subtree to the resource identifier node. - * - * @param ydtBuilder Abstract YANG data tree contains the operation - * request - * @return composite response containing the requested operation - * information - */ - YangCompositeEncoding encodeYdtToCompositeProtocolFormat( - YdtBuilder ydtBuilder); - - /** - * When YMS decode simple protocol operation request it uses the - * registered decode method to translate the protocol data into a - * abstract YANG data tree. Then translate the abstract YANG data - * tree into the YANG modeled Java objects. - *

- * The CODEC implementation are unaware of the schema against which they - * are performing the codec operation, so YMS will send the schema - * registry on which the YANG data tree needs to operate, so the code - * implementation needs to pass this schema registry to the get a YDT - * builder. - * - * @param protocolData input string containing the simple - * protocol data which needs to be decoded - * @param schemaRegistryForYdt Schema registry based on which the YANG - * data tree will be built - * @param protocolOperation protocol operation being performed - * @return decoded operation request in YANG data tree - */ - YdtBuilder decodeProtocolDataToYdt(String protocolData, - Object schemaRegistryForYdt, - YmsOperationType protocolOperation); - - /** - * When YMS decode composite protocol operation request it uses the - * registered decode method to translate the protocol data into a - * abstract YANG data tree. Then translate the abstract YANG data - * tree into the YANG modeled Java objects. - *

- * The CODEC implementation are unaware of the schema against which they - * are performing the codec operation, so YMS will send the schema - * registry on which the YANG data tree needs to operate, so the code - * implementation needs to pass this schema registry to the get a YDT - * builder. - * - * @param protocolData composite input string containing the - * protocol data which needs to be decoded - * @param schemaRegistryForYdt Schema registry based on which the YANG - * data tree will be built - * @param protocolOperation protocol operation being performed - * @return decoded operation request in YANG data tree - */ - YdtBuilder decodeCompositeProtocolDataToYdt( - YangCompositeEncoding protocolData, Object schemaRegistryForYdt, - YmsOperationType protocolOperation); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangProtocolEncodingFormat.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangProtocolEncodingFormat.java deleted file mode 100644 index 970a642368..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangProtocolEncodingFormat.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ych; - -/** - * Represents the protocol data representation. - */ -public enum YangProtocolEncodingFormat { - /** - * XML protocol encoding. - */ - XML, - - /** - * JSON protocol encoding. - */ - JSON -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangResourceIdentifierType.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangResourceIdentifierType.java deleted file mode 100644 index 6b99401ae2..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/YangResourceIdentifierType.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ych; - -/** - * Represents the protocol data representation. - */ -public enum YangResourceIdentifierType { - /** - * Uniform Resource Identifier. - */ - URI -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ych/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ych/package-info.java deleted file mode 100644 index 81fd788046..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ych/package-info.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * In SBI, the provider or driver uses YANG management system as a CODEC - * utility. These providers/drivers use the YANG codec utility to register - * the device schema. YANG utils is used to generate the java files - * corresponding to the device schema. Provider or driver use these classes - * to seamlessly manage the device as java objects. While sending the request - * to device, drivers use the utility to translate the objects to protocol - * specific data representation and then send to the device. - * Protocol or driver use the same instance of the codec utility across multiple - * translation request. - * Protocol or driver should not use the same instance of utility concurrently. - */ -package org.onosproject.yms.ych; diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/Ydt.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/Ydt.java deleted file mode 100644 index b18506603e..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/Ydt.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Abstraction of an entity which represent YANG data tree. This is used - * for exchanging information between YANG management system and NBI protocol. - */ -public interface Ydt { - - /** - * Returns the root context information available in YDT node. This root - * node is a logical container of a protocol which holds the complete data - * tree. After building YANG data tree, root node can be obtained from this. - * - * @return root YDT context which is logical container of a protocol which - * is holder of the complete tree - */ - YdtContext getRootNode(); - - /** - * Returns YANG management system operation type. It represents type of - * root level operation for the request. This is used by protocols to - * specify the root level operation associated with the request. - * - * @return YANG management system operation type - */ - YmsOperationType getYmsOperationType(); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtBuilder.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtBuilder.java deleted file mode 100644 index 9cfc695009..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtBuilder.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * Abstraction of an entity which provides interfaces to build and obtain YANG - * data tree which is data (sub)instance representation, abstract of protocol. - *

- * NBI protocols need to translate the protocol operation request, into a - * protocol independent abstract tree called the YANG data tree (YDT). In order - * to enable the protocol in building these abstract data tree, YANG - * management system provides a utility called the YANG data tree builder. - */ -public interface YdtBuilder extends Ydt { - - /** - * Sets root node tag attributes. This is used by protocol - * to specify tag attributes associated with root resource. - * - * @param attributeTag map of root tags attribute values indexed by root - * tag name - */ - void setRootTagAttributeMap(Map attributeTag); - - /** - * Returns map of tag attribute list associated with root resource. - * - * @return linked hash map of tag name with value - */ - Map getRootTagAttributeMap(); - - /** - * Adds a last child to YANG data tree; this method is to be used by - * protocols which are unaware of the nature (single/multiple) of node and - * also unaware of the operation type at every node (Example: RESTCONF). - *

- * Add child is used to add module/sub-module nodes also. Request may - * contain revision number corresponding to Module/sub-module in that - * case YMS expect revision number to be appended to module/sub-module - * name in the below mentioned format. - *

- * module-or-submodule-name ['@' date-arg] - * date-arg = 4DIGIT "-" 2DIGIT "-" 2DIGIT - * Example: testModule@2016-10-27. - *

- * If the revision date is not specified YMS first search for - * registered module/sub-module without revision date, if still can't obtain - * then uses registered module/sub-module with latest revision date. - * - * @param name name of child to be added - * @param namespace namespace of child to be added, if it's null, parent's - * namespace will be applied to child - * @throws IllegalArgumentException when method has been passed an illegal - * or inappropriate argument. - */ - void addChild(String name, String namespace) - throws IllegalArgumentException; - - /** - * Adds a last child to YANG data tree, this method is to be used by - * protocols which are aware of the nature (single/multiple) of node. - *

- * Add child is used to add module/sub-module nodes also. Request may - * contain revision number corresponding to Module/sub-module in that - * case YMS expect revision number to be appended to module/sub-module - * name in the below mentioned format. - *

- * module-or-submodule-name ['@' date-arg] - * date-arg = 4DIGIT "-" 2DIGIT "-" 2DIGIT - * Example: testModule@2016-10-27. - *

- * If the revision date is not specified YMS first search for - * registered module/sub-module without revision date, if still can't obtain - * then uses registered module/sub-module with latest revision date. - * - * @param name name of child to be added - * @param namespace namespace of child to be added, if it's null, parent's - * namespace will be applied to child - * @param ydtType type of YDT node to be added - * @throws IllegalArgumentException when method has been passed an illegal - * or inappropriate argument. - */ - void addChild(String name, String namespace, YdtType ydtType) - throws IllegalArgumentException; - - /** - * Adds a last child to YANG data tree; this method is to be used by - * protocols which are unaware of the nature (single/multiple) of node. - * This is an overloaded method with operation type. This method can - * optionally be used when protocol doesn't want to specify operation type - * by keeping it null. - *

- * Add child is used to add module/sub-module nodes also. Request may - * contain revision number corresponding to Module/sub-module in that - * case YMS expect revision number to be appended to module/sub-module - * name in the below mentioned format. - *

- * module-or-submodule-name ['@' date-arg] - * date-arg = 4DIGIT "-" 2DIGIT "-" 2DIGIT - * Example: testModule@2016-10-27. - *

- * If the revision date is not specified YMS first search for - * registered module/sub-module without revision date, if still can't obtain - * then uses registered module/sub-module with latest revision date. - * - * @param name name of child to be added - * @param namespace namespace of child to be added, if it's null, parent's - * namespace will be applied to child - * @param opType type of requested operation over a node - * @throws IllegalArgumentException when method has been passed an illegal - * or inappropriate argument. - */ - void addChild(String name, String namespace, YdtContextOperationType opType) - throws IllegalArgumentException; - - /** - * Adds a last child to YANG data tree; this method is to be used by - * protocols which are aware of the nature (single/multiple) of node. - * This is an overloaded method with operation type. This method can - * optionally be used when protocol doesn't want to specify operation type - * by keeping it null. - *

- * Add child is used to add module/sub-module nodes also. Request may - * contain revision number corresponding to Module/sub-module in that - * case YMS expect revision number to be appended to module/sub-module - * name in the below mentioned format. - *

- * module-or-submodule-name ['@' date-arg] - * date-arg = 4DIGIT "-" 2DIGIT "-" 2DIGIT - * Example: testModule@2016-10-27. - *

- * If the revision date is not specified YMS first search for - * registered module/sub-module without revision date, if still can't obtain - * then uses registered module/sub-module with latest revision date. - * - * @param name name of child to be added - * @param namespace namespace of child to be added, if it's null, parent's - * namespace will be applied to child - * @param ydtType type of YDT node to be added - * @param opType type of requested operation over a node - * @throws IllegalArgumentException when method has been passed an illegal - * or inappropriate argument. - */ - void addChild(String name, String namespace, YdtType ydtType, - YdtContextOperationType opType) - throws IllegalArgumentException; - - /** - * Adds a last leaf with value to YANG data tree. Protocols unaware of - * nature of leaf (single/multiple) will use it to add both single instance - * and multi instance node. Protocols aware of nature of node will use it - * for single instance value node addition. - * Value of leaf can be null which indicates selection node in get - * operation. - * - * @param name name of child to be added - * @param namespace namespace of child to be added, if it's null, parent's - * namespace will be applied to child - * @param value value of the child - * @throws IllegalArgumentException when method has been passed an illegal - * or inappropriate argument. - */ - void addLeaf(String name, String namespace, String value) - throws IllegalArgumentException; - - /** - * Adds a last leaf with list of values to YANG data tree. This method is - * used by protocols which knows the nature (single/multiple) of node for - * multi instance node addition. - * Value of leaf can be null which indicates selection node in get - * operation. - * - * @param name name of child to be added - * @param namespace namespace of child to be added, if it's null, parent's - * namespace will be applied to child - * @param valueSet list of value of the child - * @throws IllegalArgumentException when method has been passed an illegal - * or inappropriate argument. - */ - void addLeaf(String name, String namespace, Set valueSet) - throws IllegalArgumentException; - - /** - * Adds a child node or leaf node based on schema. - * - * @param name name of child/leaf to be added - * @param namespace namespace of child/leaf to be added, if it's null, parent's - * namespace will be applied to child - * @throws IllegalArgumentException when method has been passed an illegal - * or inappropriate argument. - */ - void addNode(String name, String namespace) - throws IllegalArgumentException; - - /** - * Adds an instance of a child list node, or adds a child leaf list with - * multiple instance. - * In case the name and namespace identifies the child list node, then - * the values for all the key leaves must be passed in the same order of - * schema. Then the effective YANG data tree will be like adding a list - * node, followed by adding the key leaves as the child to the list node. - * After this operation, the call to getCurNode will return the list node. - * In case the name and namespace identifies the child leaf-list, then - * the values identifies the instance of leaf list. - * After this operation, the call to getCurNode will return the leaf-list - * node. - * - * @param name name of child to be added - * @param namespace namespace of child to be added, if it's null, parent's - * namespace will be applied to child - * @param valueList values of the keys in URI in the same order - * as defined in YANG file - * @param opType type of requested operation over a node - * @throws IllegalArgumentException when method has been passed an illegal - * or inappropriate argument. - */ - void addMultiInstanceChild(String name, String namespace, - List valueList, - YdtContextOperationType opType) - throws IllegalArgumentException; - - /** - * Traverses up in YANG data tree to the parent node, it is to be used when - * protocol is using context type "current" and wanted to traverse up the - * tree. - * - * @throws IllegalStateException when application is not in an appropriate - * state for the requested operation. - */ - void traverseToParent() throws IllegalStateException; - - /** - * Returns the current context information available in YDT node. - * - * @return current YDT context - */ - YdtContext getCurNode(); - - /** - * Sets default operation type. This operation type is taken if operation - * type is not explicitly specified in request. If default operation type - * is not set, merge will be taken as default operation type. - * - * @param ydtContextOperationType default edit operation type - */ - void setDefaultEditOperationType( - YdtContextOperationType ydtContextOperationType); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContext.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContext.java deleted file mode 100644 index d2cdead558..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContext.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -import java.util.Set; - -/** - * Abstraction of an entity which represents YANG data tree context - * information. This context information will be used protocol to obtain - * the information associated with YDT node. This is used when protocol is - * walking the data tree in both visitor and listener mechanism. - */ -public interface YdtContext { - - /** - * Returns the node name. - * - * @return node name - */ - String getName(); - - /** - * Returns the node namespace. - * - * @return node namespace - */ - String getNamespace(); - - /** - * Returns module name as namespace. - * - * @return module name - */ - String getModuleNameAsNameSpace(); - - /** - * Returns the YDT node extended context information corresponding to YDT - * node. - * - * @param specifies YMS operation specific extended information - * associated with YDT context. It will be - * YdtContextOperationType in case extended information type - * is EDIT_REQUEST and will be YdtContextResponseInfo in case - * extended information type is RESPONSE. - * @return YdtContextOperationType YDT node operation type - */ - T getYdtContextExtendedInfo(); - - /** - * Returns YANG data tree extended information type. This is used to - * identify the type of extended information applicable for YDT node. - * - * @return type of extended information - */ - YdtExtendedInfoType getYdtExtendedInfoType(); - - /** - * Returns the type of YDT entity. This type will be used by protocols to - * identify the nature of node and can implement it accordingly. - * - * @return YDT entity type - */ - YdtType getYdtType(); - - /** - * Returns the context of parent node. - * - * @return context of parent node - */ - YdtContext getParent(); - - /** - * Returns the context of first child. - * - * @return context of first child - */ - YdtContext getFirstChild(); - - /** - * Returns the context of last child. - * - * @return context of last child - */ - YdtContext getLastChild(); - - /** - * Returns the context of next sibling. - * - * @return context of next sibling - */ - YdtContext getNextSibling(); - - /** - * Returns the context of previous sibling. - * - * @return context of previous sibling - */ - YdtContext getPreviousSibling(); - - /** - * Returns value of node, this is only valid for single instance leaf - * node, to obtain the nature of the node protocols need to use - * getYdtType(). - * - * @return value of node - */ - String getValue(); - - /** - * Returns set of values of a node, this is only valid for multi instance - * leaf node, to obtain the nature of the node protocols need to use - * getYdtType(). - * - * @return value of YDT leaf - */ - Set getValueSet(); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextOperationType.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextOperationType.java deleted file mode 100644 index 8445d3c2bc..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextOperationType.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Represents type of YANG data tree node operation. - * - * This is used by protocols to specify edit operation associate with the node. - * YMS data validation and data handling will vary based on the edit operation - * type, for an instance, default leafs if not present in data should be added - * if edit operation type is create and shouldn't be added if operation type is - * delete. - * Edit operation type is mapped to "operation type" of YANG utils generated - * classes by YMS. - * - * In case of SBI driver/provider creates JAVA object (of YANG utils generated - * classes) and specifies the edit operation type in "operation type" field. - * YMS map this operation type to "edit operation type" of YDT, which will be - * further encoded in corresponding data format. - * - * This is only applicable if YANG root level interaction type is EDIT_CONFIG. - * If edit operation type is not specified when root interaction type is - * EDIT_CONFIG then default operation type will be selected. - * By default "default operation type" is "merge" unless explicitly specified - * by protocol. - */ - -/* - * Edit operation type mapping with RESTCONF and NETCONF as example: - * +----------+----------------------------+------------+ - * | RESTCONF | NETCONF | EditOpType | - * +----------+----------------------------+------------+ - * | OPTIONS | none | NA | - * | HEAD | none | NA | - * | GET | , | NA | - * | POST | (operation="create") | CREATE | - * | PUT | (operation="replace") | REPLACE | - * | PATCH | (operation="merge") | MERGE | - * | DELETE | (operation="delete") | DELETE | - * | none | (operation="remove") | REMOVE | - * +----------+----------------------------+------------+ - * Note: Additionally RESTCONF must use API resource to figure out whether - * request contains data resource or it's for data model specific operation. - * +--rw restconf - * +--rw data - * +--rw operations - * Edit operation type is only applicable for data resource. - * - * Additionally protocols has to use operation type NONE to specify the URI - * path. - */ -public enum YdtContextOperationType { - - /** - * Type of YANG data tree action for below action: - * The configuration data identified by the element - * containing this attribute is added to the configuration if - * and only if the configuration data does not already exist in - * the configuration datastore. If the configuration data - * exists, an error is returned. - */ - CREATE, - - /** - * Type of YANG data tree action for below action: - * The configuration data identified by the element - * containing this attribute is deleted from the configuration - * if and only if the configuration data currently exists in - * the configuration datastore. If the configuration data does - * not exist, an error is returned". - */ - DELETE, - - /** - * Type of YANG data tree action for below action: - * The configuration data identified by the element - * containing this attribute is merged with the configuration - * at the corresponding level in the configuration datastore. - */ - MERGE, - - /** - * Type of YANG data tree action for below action: - * The configuration data identified by the element - * containing this attribute replaces any related configuration - * in the configuration datastore. If no such configuration - * data exists in the configuration datastore, it is created. - */ - REPLACE, - - /** - * Type of YANG data tree action for below action: - * The configuration data identified by the element - * containing this attribute is deleted from the configuration - * if the configuration data currently exists in the - * configuration datastore. If the configuration data does not - * exist, the "remove" operation is silently ignored by the - * server. - */ - REMOVE, - - /** - * The node is used as a containment node to reach the child node, - * There is no change in the data store for the values of this node in the - * edit request. - */ - NONE -} - diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextResponseInfo.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextResponseInfo.java deleted file mode 100644 index e90fe4327b..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtContextResponseInfo.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Represents YANG context response information. It contains YDT node specific - * information for operation response like error information, particular node - * operation result etc. - */ -public interface YdtContextResponseInfo { - - /** - * Retrieve the context specific error information. - * - * @return context specific error information - */ - YdtErrorInfo getYdtErrorInfo(); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtErrorInfo.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtErrorInfo.java deleted file mode 100644 index e814d8ef7b..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtErrorInfo.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Abstraction of an entity which contains context specific error info. - */ -public interface YdtErrorInfo { - /** - * Retrieves the application specific error tag corresponding to the - * error context in operation. - * - * @return application specific error tag corresponding to the error - * context in operation - */ - String getErrorAppTag(); - - /** - * Retrieves the error message corresponding to the error context in - * operation. - * - * @return the error message corresponding to the error context in operation - */ - String getErrorMessage(); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtExtendedInfoType.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtExtendedInfoType.java deleted file mode 100644 index ceb556c03f..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtExtendedInfoType.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Represents type of YANG data tree node operation. - */ -public enum YdtExtendedInfoType { - - /** - * It specifies operation type edit request for YDT node. It is used to - * identify the YMS operation specific extended information associated - * with YDT context. - */ - EDIT_REQUEST, - - /** - * It specifies operation type RESPONSE for YDT node. It is used to - * identify the YMS operation specific extended information associated - * with YDT context. - */ - RESPONSE -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtListener.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtListener.java deleted file mode 100644 index 33c1a52f0a..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtListener.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Abstraction of an entity which provide call back methods which are called - * by YDT walker while walking the YANG data tree. - *

- * In a response to execute operation YMS returns the YMS operation results - * with root YDT node. Now, protocols needs to walk through the YDT node and - * constructs the corresponding data format string. Protocol can opt to use - * listener or visitor based walking mechanism. - *

- * This interface needs to be implemented by protocol implementing listener's - * based call backs while YDT walk. - */ -public interface YdtListener { - - /** - * YANG data tree node's entry, it will be called during a node entry. - * All the related information about the node can be obtain from the YDT - * context. - * - * @param ydtContext YANG data tree context - */ - void enterYdtNode(YdtContext ydtContext); - - /** - * YANG data tree node's exit, it will be called during a node exit. - * All the related information about the node can be obtain from the YDT - * context. - * - * @param ydtContext YANG data tree context - */ - void exitYdtNode(YdtContext ydtContext); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtResponse.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtResponse.java deleted file mode 100644 index 308cdf32a8..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtResponse.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Represents YANG management system results. Protocols sends request to - * YANG management system for execution. YMS returns response in form of - * YANG data tree response - */ -public interface YdtResponse extends Ydt { - - /** - * Returns YANG management system operation result. This status of the - * operation execution is returned - * - * @return YMS operation result - */ - YmsOperationExecutionStatus getYmsOperationResult(); - - /* - * TODO: Applications layer error reporting to protocols. - */ -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtType.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtType.java deleted file mode 100644 index 5efd67f8e0..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtType.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Represents type of node in YANG data tree. Protocols based on input data - * format provide this information to YMS during YDT building. YMS use this - * information to carry out the validation against the schema information - * obtained as a part of application registration. Also as a part of response - * YMS encode this information in YDT node, protocol may use this information - * while construction the data format string. - * - * Protocols unaware of node type like NETCONF, may opt not to provide this - * information. - */ -public enum YdtType { - - /** - * Single instance node. - */ - SINGLE_INSTANCE_NODE, - - /** - * Multi instance node. - */ - MULTI_INSTANCE_NODE, - - /** - * Single instance leaf node. - */ - SINGLE_INSTANCE_LEAF_VALUE_NODE, - - /** - * Multi instance leaf node. - */ - MULTI_INSTANCE_LEAF_VALUE_NODE, - - /** - * Logical root node. - */ - LOGICAL_ROOT_NODE -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtWalker.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtWalker.java deleted file mode 100644 index e17d7907b1..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YdtWalker.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Abstraction of an entity which provides interfaces for YDT walk. - * - * When YANG management system gets data from application to be returned - * to protocol for any protocol operation or as a part of notification, YANG - * management system encodes this data in a YANG data tree and sends the same - * to protocol. - * Protocols can use the YANG data tree walker utility to have their - * callbacks to be invoked as per the YANG data tree walking. - * By this way protocols can encode the data from abstract YANG data tree - * into a protocol specific representation. - * - * YDT walker provides entry and exit callbacks for each node in YANG data - * tree. - */ -public interface YdtWalker { - - /** - * Walks the YANG data tree. Protocols implements YDT listener service - * and walks YDT tree with input as implemented object. YDT walker provides - * call backs to implemented methods. - * - * @param ydtListener YDT listener implemented by the protocol - * @param rootNode root node of YDT - */ - void walk(YdtListener ydtListener, YdtContext rootNode); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationExecutionStatus.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationExecutionStatus.java deleted file mode 100644 index 14f4ba477a..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationExecutionStatus.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Abstraction of an entity which represents YANG management system operation - * result. Once the protocol translates the request information into a abstract - * YANG data tree, it uses YANG management system as a broker to get the - * operation executed in ONOS. Protocols uses a request Yang management - * system to delegate the operation request. - * - * YANG management system is responsible to split the protocol operation - * across application(s) which needs to participate, and collate the - * response(s) from application(s) and return an effective result of the - * operation request. The status of the operation execution is returned. - */ -public enum YmsOperationExecutionStatus { - - /** - * Successful execution of the operation. - */ - EXECUTION_SUCCESS, - - /** - * Exception in execution of the operation. - */ - EXECUTION_EXCEPTION, - - /** - * Error in execution of the operation. - */ - ERROR_EXCEPTION -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationType.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationType.java deleted file mode 100644 index bfbee0c440..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/YmsOperationType.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ydt; - -/** - * Represents type of root level operation for the request. - * - * This is used by protocols to specify the root level operation associated - * with the request. YMS data validation and data handling will vary based - * on the edit operation type, for an instance YANG specified "mandatory" - * leafs needn't be present for QUERY_CONFIG and QUERY, but they may be - * mandatory to be present in request for EDIT_CONFIG type. The validation - * and handling is further dependent on edit operation type. - * - * In SBI, driver/provider must provide this information to YMS which needs - * to encode this information in corresponding data format. - * - * YmsOperationType MUST be specified by protocol. - */ - -/* - * Yang interaction type with RESTCONF and NETCONF as example: - * +--------------+-------------------+-------------+ - * | RESTCONF | NETCONF | EditOpType | - * +--------------+-------------------+-------------+ - * | OPTIONS | NA | NA | - * | HEAD | NA | NA | - * | GET | | QUERY | - * | none | | QUERY_CONFIG| - * | POST (data) | | EDIT_CONFIG | - * | PUT | | EDIT_CONFIG | - * | PATCH | | EDIT_CONFIG | - * | DELETE | | EDIT_CONFIG | - * | POST (op) | | RPC | - * +--------------+-------------------+-------------+ - * - * Note: Additionally RESTCONF must use API resource to figure out whether - * request contains data resource or it's for data model specific operation. - * +--rw restconf - * +--rw data - * +--rw operations - */ -public enum YmsOperationType { - /** - * The YANG based request is to edit a config node / subtree in the data - * store. - */ - EDIT_CONFIG_REQUEST, - - /** - * The YANG based request is to query a config node / subtree in the data - * store. - */ - QUERY_CONFIG_REQUEST, - - /** - * The YANG based request is to query a node / subtree in the data store. - */ - QUERY_REQUEST, - - /** - * The YANG based request is to execute an RPC defined in YANG. - */ - RPC_REQUEST, - - /** - * The YANG based response is for edit operation. - */ - EDIT_CONFIG_REPLY, - - /** - * The YANG based response is for query config operation. - */ - QUERY_CONFIG_REPLY, - - /** - * The YANG based response is for query operation. - */ - QUERY_REPLY, - - /** - * The YANG based response is for a RPC operation. - */ - RPC_REPLY, - - /** - * The YANG based request is to execute an RPC defined in YANG. - */ - NOTIFICATION -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ydt/package-info.java deleted file mode 100644 index 2c60fd869f..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ydt/package-info.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides interfaces to build and obtain YANG data tree which is data - * (sub)instance representation, abstract of protocol. - * - * NBI protocol implementation takes care of the protocol specific - * operations. They are abstracted from the intricacies of understanding - * the application identification or handling the interaction with - * applications. - * - * NBI protocols need to handle the encoding and decoding of data to the - * protocol specific format. They are unaware of the YANG of applications, - * i.e. protocols are unaware of the data structure / organization in - * applications. - * - * They need to translate the protocol operation request, into a protocol - * independent abstract tree called the YANG data tree (YDT). In order to - * enable the protocol in building these abstract data tree, YANG - * management system provides a utility called the YANG data tree builder. - * - * Using the YANG data tree utility API's protocols are expected to walk - * the data received in request and pass the information during the walk. - * YANG data tree builder, identifies the application which supports the - * request and validates it against the schema defined in YANG, and - * constructs the abstract YANG data tree. - */ -package org.onosproject.yms.ydt; diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/YmsService.java b/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/YmsService.java deleted file mode 100644 index 72eb8ff2b1..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/YmsService.java +++ /dev/null @@ -1,357 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ymsm; - -import java.util.List; - -import org.onosproject.yms.ych.YangCodecHandler; -import org.onosproject.yms.ych.YangDataTreeCodec; -import org.onosproject.yms.ych.YangProtocolEncodingFormat; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YdtResponse; -import org.onosproject.yms.ydt.YdtWalker; -import org.onosproject.yms.ydt.YmsOperationType; -import org.onosproject.yms.ynh.YangNotificationService; -import org.onosproject.yms.ysr.YangModuleIdentifier; -import org.onosproject.yms.ysr.YangModuleLibrary; - -/** - * Abstraction of an entity which provides interfaces to YANG management - * system. YMS is a core of YANG in ONOS. - * - * In NBI, it acts as a broker in between the protocol and application, - * here there is a separate protocol implementation, which does the conversion - * of protocol representation to abstract data tree. The protocol - * implementation takes care of the protocol specific actions for - * e.g. RESTCONF handling the entity-tag / timestamp related operations. - * - * In SBI, driver or provider uses YANG codec handler as a utility to translate - * the request information in java(YANG utils generated) to protocol specific - * format and vice versa. - */ -public interface YmsService { - - /** - * Returns YANG data tree builder. - * - * NBI protocol implementation takes care of the protocol specific - * operations. They are abstracted from the intricacies of understanding - * the application identification or handling the interaction with - * applications. - * - * NBI protocols need to handle the encoding and decoding of data to the - * protocol specific format. They are unaware of the YANG of applications, - * i.e. protocols are unaware of the data structure / organization in - * applications. - * - * They need to translate the protocol operation request, into a protocol - * independent abstract tree called the YANG data tree (YDT). In order to - * enable the protocol in building these abstract data tree, YANG - * management system provides a utility called the YANG data tree builder. - * - * Using the YANG data tree utility API's protocols are expected to walk - * the data received in request and pass the information during the walk. - * YANG data tree builder, identifies the application which supports the - * request and validates it against the schema defined in YANG, and - * constructs the abstract YANG data tree. - * - * Interaction type is a MANDATORY parameter which is used by YANG - * management system to perform the required operation in ONOS. - * - * NOTE: Same YDT builder instance cannot be reused across different - * operation request. A new instance needs to be used for every operation. - * - * Returns YANG data tree builder logical root container node. - * Protocol use this to logical root container to hold schema specific data - * that spans across different modules schema. - * - * @param logicalRootName name of a protocol specific logical container - * node to group data across multiple applications. - * This is only a logical container to group more - * than one application's root node. It is not - * validated against any YANG definition - * @param rootNamespace namespace of logical root container, if any, - * otherwise it can be sent as null - * @param operationType maps the request type to a corresponding - * operation request type to YANG management system - * @return YANG data tree builder, using which the abstract tree can be - * built corresponding to the data exchanged between protocol and YANG - * management system. - */ - YdtBuilder getYdtBuilder(String logicalRootName, String rootNamespace, - YmsOperationType operationType); - - /** - * Returns YANG data tree builder attached with a given schema registry. - * - * YMS provides a framework where-in protocols can register their protocol - * data format specific CODECS with YMS. These registered CODEC will be - * used by YMS to perform translations from data format to YDT and YDT to - * data format. YMS may intend to use these CODECS both for NBI and SBI. - * - * To perform decode i.e. generate YDT for given data format string, these - * CODECS implementation needs to call the API's of YDT. YDT referred the - * registered schema information while building tree. In case of NBI their - * is a single schema registry, but for SBI schema registry is per - * driver/provider. - * - * Now this schema registry information is provided to protocols - * CODECS while invoking "decodeProtocolDataToYdt" and - * "decodeCompositeProtocolDataToYdt", protocol CODECS needs to provide - * the schema registry while getting instance of YDT builder. - * The schemaRegistry may be null when the YMS is performing decode for NBI - * protocols. - * - * Validations for NBI and SBI will vary, schemaRegistry value will also - * indicate the usage scenario and will be used by YdtBuilder to carry out - * necessary validations. - * - * This is an overloaded method to YdtBuilder which MUST be used by the - * overridden protocols CODECS. - * - * @param logicalRootName name of a protocol specific logical container - * node to group data across multiple - * applications. - * This is only a logical container to group - * more - * than one application's root node. It is not - * validated against any YANG definition - * @param rootNamespace namespace of logical root container, if any, - * otherwise it can be sent as null - * @param operationType maps the request type to a corresponding - * operation request type to YANG management - * system - * @param schemaRegistryForYdt schema registry for Ydt, protocol CODECS get - * this value from YMS in - * "decodeProtocolDataToYdt" and - * "decodeCompositeProtocolDataToYdt" and - * provide it while obtaining YdtBuilder - * @return YANG data tree builder, using which the abstract tree can be - * built corresponding to the data exchanged between protocol and YANG - * management system. - */ - YdtBuilder getYdtBuilder(String logicalRootName, String rootNamespace, - YmsOperationType operationType, - Object schemaRegistryForYdt); - - /** - * Returns YANG data tree walker. - * - * YANG management system gets data from application to be returned - * in protocol operation or to notify to protocol(s) clients, YANG - * management system encodes the data in a YANG data tree and informs the - * protocol. - * Protocols can use the YANG data tree walker utility to have their - * callbacks to be invoked as per the YANG data tree walking. - * By this way protocols can encode the data from abstract YANG data tree - * into a protocol specific representation. - * - * @return YANG data tree walker utility - */ - YdtWalker getYdtWalker(); - - /** - * Once the NBI protocol translates the request information into an abstract - * YANG data tree, it uses YANG management system as a broker to get the - * operation executed in ONOS. - * - * YANG management system is responsible to split the protocol operation - * across application(s) which needs to participate, and collate the - * response(s) from application(s) and return an effective result of the - * operation request. - * - * YMS identifies the type of operation to be performed using the - * operation type in YANG builder data tree and process the corresponding - * operation request on the applicable application(s). - * The response information maintained in response YANG data tree and - * given to NBI protocol's to encode it using a YANG data tree walker. - * - * Depending on the operation type set in the YANG builder tree, the - * application(s) get / set / operation interface is invoked. - * These interface are part to the YANG modelled service interface. - * Depending on the operation type, the YANG response data tree can have - * the following information. - * - * In case of EDIT_CONFIG operation, it will have the status of the - * operation execution. If there is any applications schema specific - * error, then the schema error information will be encoded in the - * corresponding context node. In case the edit operation is successful - * there is no YANG response data tree created, hence getRootNode will - * return null. - * - * In case of query operation, it will have the status of the operation - * execution. If there is any application schema specific error, then - * schema error information will be encoded in the corresponding YANG - * context. In case the query operation is successful, YANG data tree - * contains the application data that matched the filter in the - * operation request. NBI protocol to use a Yang data tree walker to - * construct the protocol specific reply. - * - * In case of RPC operation, it will have the status of the operation - * execution. If there is any application schema specific error, then - * schema error information will be encoded in the corresponding YANG - * context. In case the RPC operation is successful, and the RPC - * does not have any RPC reply in YANG, then the YANG data tree will - * be null. - * In case the RPC has a RPC reply in YANG, then the YANG data tree - * will contain the application's RPC reply schema specific . - * NBI protocol to use a Yang data tree walker to construct the - * protocol specific reply. - * - * @param operationRequest operation request that was constructed - * by NBI protocol using YANG data tree - * builder. This operation request contains - * operation request that needs to be - * executed on the applicable application(s) - * @return returns the result of the operation execution. - */ - YdtResponse executeOperation(YdtBuilder operationRequest); - - /* TODO add execute operation which directly take data format string as - input.*/ - - /** - * Returns YANG notification service. - * - * NBI Protocols which can support notification delivery for application(s) - * needs to add themselves as a listeners with YANG notification service. - * Also protocols can use YANG notification service to check if a received - * notification should be filtered against any of their protocol specific - * filtering mechanism. - * - * @return YANG notification service instance - */ - YangNotificationService getYangNotificationService(); - - /** - * Registers service with YANG management system. - * - * Applications model their exposed interface in YANG, and register with - * YANG management system, so that it can be configured / managed by the - * set of protocols supported in ONOS. - * - * ONOS YANG tools generate the applications service interface - * corresponding to the application's interface designed in YANG. - * - * The Application which implements this service registers the generated - * service with YANG management system. The generated service interfaces - * have all the information modeled by applications in YANG. - * - * Registers application's YANG model with YANG management system. This - * is used by applications/core to register their service with YMS. - * - * @param appManager application manager instance which is - * implementing the service defined in YANG. - * @param yangService service interface generated by ONOS YANG - * tools corresponding to the interface modeled - * in YANG. - * @param supportedFeatureList mentions the list of YANG features supported - * by the application implementation. - * If it is null, then the application - * implementation supports all the features - * defined in the registered YANG module. - */ - void registerService(Object appManager, Class yangService, - List supportedFeatureList); - - /** - * Unregisters service which is registered in YANG management system. - * - * Applications model their exposed interface in YANG, and register with - * YANG management system, so that it can be configured / managed by the - * set of protocols supported in ONOS. - * - * ONOS YANG tools generate the applications service interface - * corresponding to the application's interface designed in YANG. - * - * The Application which implements this service registers the generated - * service with YANG management system. The generated service interfaces - * have all the information modeled by applications in YANG. - * - * Registers application's YANG model with YANG management system. This - * is used by applications/core to register their service with YMS. - * - * @param appManager application manager instance which is implementing - * the service defined in YANG. - * @param yangService service interface generated by ONOS YANG tools - * corresponding to the interface modeled in YANG. - */ - void unRegisterService(Object appManager, Class yangService); - - /** - * Protocols like RESTCONF, share the list of YANG modules it support. - * using ietf-yang-library - * - * Retrieves the YANG module library supported by the server. - * - * @return YANG module library supported by the server - */ - YangModuleLibrary getYangModuleLibrary(); - - /** - * Protocols like RESTCONF, use the definitions within the YANG modules - * advertised by the server are used to construct an RPC operation or - * data resource identifier. - * - * Schema Resource: - * The server can optionally support retrieval of the YANG modules it - * supports. - * - * - * @param moduleIdentifier module's identifier - * @return YANG file contents of the requested YANG module. - */ - String getYangFile(YangModuleIdentifier moduleIdentifier); - - /** - * Register protocol specific default CODEC. This is can be used by 1st - * protocol - * to support a protocol format CODEC. This CODEC will be used in both - * NBI and SBI. - * - * @param defaultCodec default codec to be used for a particular protocol - * data format - * @param dataFormat data format to which encoding to be done. - * Currently XML and - * JSON formats are supported. - */ - void registerDefaultCodec(YangDataTreeCodec defaultCodec, - YangProtocolEncodingFormat dataFormat); - - /** - * Returns YANG codec handler utility. - * - * In SBI, the provider or driver uses YANG management system as a CODEC - * utility. These providers/drivers use the YANG codec utility to register - * the device schema. YANG utils is used to generate the java files - * corresponding to the device schema. Provider or driver use these classes - * to seamlessly manage the device as java objects. While sending the - * request - * to device, drivers use the utility to translate the objects to protocol - * specific data representation and then send to the device. - * Protocol or driver use the same instance of the codec utility across - * multiple - * translation request. - * Protocol or driver should not use the same instance of utility - * concurrently. - * - * @return YANG codec utility - */ - YangCodecHandler getYangCodecHandler(); - - // TODO exceptions handling and sending. -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/package-info.java deleted file mode 100644 index 1639b3b738..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ymsm/package-info.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides interfaces to YANG application management system manager. YMSM is - * manager of the YANG Core. - * - * In NBI, it acts as a broker in between the protocol and application, - * here there is a separate protocol implementation, which does the conversion - * of protocol representation to abstract data tree. The protocol - * implementation takes care of the protocol specific actions for - * e.g. RESTCONF handling the entity-tag / timestamp related operations. - * - * In SBI, driver or provider uses YANG codec handler as a utility to translate - * the request information in java(YANG utils generated) to protocol specific - * format and vice versa. - */ -package org.onosproject.yms.ymsm; diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotification.java b/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotification.java deleted file mode 100644 index 3ae257171d..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotification.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ynh; - -import org.onosproject.yms.ydt.YdtContext; - -/** - * Represents YANG notification which is a subject of YANG based event. - * - * YMS add themselves as a listener to applications. Application sends - * their notification in YANG utils generated notification. YMS obtains - * the module/sub-module schema tree in which this notification is contained - * and then convert this data to an abstract tree notation (YDT) with root - * node as the logical node with name "yangnotification" it contains - * module/sub-module node in which notification is contained. - * It sends the same to all the protocol who has added them as a listener - * as a YANG notification. - * - * This class represents YANG notification which contains the - * notification context in abstract tree notation. - */ -public class YangNotification { - - /** - * YANG notification in form of abstract tree notation (YDT) - * Root node of notification root context will be logical node with - * name as "yangnotification", it contains module/sub-module node - * in which notification is contained. - */ - YdtContext notificationRootContext; - - /** - * Creates an instance of YANG notification subject. - * - * @param notificationContext logical root node with name as - * "yangnotification" - */ - public YangNotification(YdtContext notificationContext) { - this.notificationRootContext = notificationContext; - } - - /** - * Assign the YANG modeled notification data. - * - * @param notificationRootContext YANG data tree containing the data for - * the notification - */ - public void setNotificationRootContext(YdtContext notificationRootContext) { - this.notificationRootContext = notificationRootContext; - } - - /** - * Returns YANG notification data. - * - * @return YANG data tree containing the data for the notification - */ - public YdtContext getNotificationRootContext() { - return notificationRootContext; - } -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationEvent.java b/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationEvent.java deleted file mode 100644 index 6009fc9faf..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationEvent.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.yms.ynh; - -import org.onosproject.event.AbstractEvent; - -/** - * Represents YANG notification event. - * - * YANG notification handler listens for the notification from the application. - * It convert the received notification in YANG notification events. - * - * YangNotificationEvent represents event generated by YANG management system - * in response to the YANG defined application notification. The applications - * notification information is in abstract YANG data tree. - */ -public class YangNotificationEvent - extends AbstractEvent { - - /** - * Event type is the notification as defined in the YANG file. - */ - public enum Type { - /** - * Indicates a YANG notification. - */ - YANG_NOTIFICATION - } - - /** - * YANG notification information shared to NBI protocol in YANG data tree - * using the registered callback. - * - * @param subject notification information in YANG data tree. - */ - public YangNotificationEvent(YangNotification subject) { - super(Type.YANG_NOTIFICATION, subject); - } -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationListener.java b/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationListener.java deleted file mode 100644 index fa47eac22c..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationListener.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.yms.ynh; - -import org.onosproject.event.EventListener; - -/** - * Abstraction of listener for YANG notification handler events. - * NBI protocols/interfaces supporting YANG notification needs to implement - * YANG notification listener and add themselves as a listener to YANG - * notification event. - */ -public interface YangNotificationListener - extends EventListener { -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationService.java b/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationService.java deleted file mode 100644 index f1f68a5f4f..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/YangNotificationService.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ynh; - -import org.onosproject.event.ListenerService; - -/** - * Abstraction of an entity which provides interfaces to YANG notification - * service. YANG notification handler receives the event notifications from - * application/core and provide it to the protocols. - * - * NBI Protocols which can support notification delivery for application(s) - * needs to add themselves as a listeners with YANG notification service. - * Also based on registered schema YMS add themselves as a listener to - * applications. Application sends their notification in YANG utils generated - * notification. YMS obtains the module/sub-module schema tree in which this - * notification is contained and then convert this data to an abstract tree - * notation (YDT) with root node as the module/sub-module node in which - * notification is contained. It sends the same to all the protocol who has - * added them as a listener as a YANG notification. - * - * Also Protocols can use YANG notification service to check if a received - * notification should be filtered against any of their protocol specific - * filtering mechanism. - */ -public interface YangNotificationService - extends ListenerService { - - /* - * Example of a use case of notification filtering. - * The following example illustrates how to select fault events which - * have severities of critical, major, or minor. The filtering criteria - * evaluation is as follows: - * - * ((fault & severity=critical) | (fault & severity=major) | (fault & - * severity=minor)) - * - * - * - * - * - * fault - * critical - * - * - * fault - * major - * - * - * fault - * minor - * - * - * - * - */ - - /** - * Protocols have their own mechanism to support notification filtering - * or notification subscription. Depending on the protocol specification, - * the filtering is implemented in the protocol. - * The Protocol implementations are abstracted of the Schema, there are - * scenarios in which they need to check if the received notification - * is of interest as per the schema filtering / subscription. - * In such scenario, protocols can create a filtering / subscription YANG - * data tree and use the notification service to filter the notification - * subject against their filter. - * - * Filters the notification subject YANG data tree, with the specified - * filter of the NBI protocol. If the filter does not match for the - * passed notification subject, null will be returned. - * Otherwise, the part of the subject matching the filter will be returned. - * - * @param notificationSubject YANG notification subject reported by YANG - * notification service. - * @param notificationFilter Protocols data model specific notification - * filter represented in YANG data tree. - * @return filtered notification which passes the data model specific - * notification filter. - */ - YangNotification getFilteredSubject(YangNotification notificationSubject, - YangNotification notificationFilter); - -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ynh/package-info.java deleted file mode 100644 index a0620c3185..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ynh/package-info.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides interfaces to YANG notification handler. YNH handles notification - * from the application and provide it to the protocols. - * - * NBI Protocols which can support notification delivery for application(s) - * need to add themselves as a listeners with YANG notification service. - * - * Also protocols can use YANG notification service to check if a received - * notification should be filtered against any of their protocol specific - * filtering mechanism. - */ -package org.onosproject.yms.ynh; diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/DefaultYpmNode.java b/apps/yms/api/src/main/java/org/onosproject/yms/ypm/DefaultYpmNode.java deleted file mode 100644 index 846b443a8f..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/DefaultYpmNode.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ypm; - -/** - * Represents implementation of interfaces to build and obtain YANG protocol metadata tree node. - */ -public class DefaultYpmNode implements YpmContext { - - /** - * Name of the node. - */ - private String name; - - /** - * Parent reference. - */ - private DefaultYpmNode parent; - - /** - * First child reference. - */ - private DefaultYpmNode child; - - /** - * Next sibling reference. - */ - private DefaultYpmNode nextSibling; - - /** - * Previous sibling reference. - */ - private DefaultYpmNode previousSibling; - - /** - * Protocol metadata object. - */ - private Object metaData; - - /** - * Creates a specific type of node. - * - * @param name of ypm node - */ - public DefaultYpmNode(String name) { - setName(name); - } - - @Override - public String getName() { - return name; - } - - @Override - public void setName(String name) { - this.name = name; - } - - @Override - public DefaultYpmNode getParent() { - return parent; - } - - @Override - public void setParent(YpmContext parent) { - this.parent = (DefaultYpmNode) parent; - } - - @Override - public YpmContext getFirstChild() { - return child; - } - - @Override - public YpmContext getChild(String ypmName) { - if (ypmName == null) { - // Input is null. So, will not proceed. - return null; - } - - if (child == null) { - // No children - return null; - } - - // Check the first child - if (child.name.equals(ypmName)) { - return child; - } - - // Check its siblings - YpmContext currentChild = child; - while (currentChild.getNextSibling() != null) { - currentChild = currentChild.getNextSibling(); - if (currentChild.getName().equals(ypmName)) { - return currentChild; - } - } - - return null; - } - - @Override - public void addChild(String ypmName) { - if (ypmName == null) { - // Input is null. So, will not proceed. - return; - } - - if (getChild(ypmName) != null) { - // Already available with the same name. So, no need to add - return; - } - - // Create new ypm node and attach to its parent - DefaultYpmNode newNode = new DefaultYpmNode(ypmName); - newNode.setParent(this); - - // Check the first child - if (child == null) { - child = newNode; - return; - } - - // Add it to its siblings - YpmContext currentChild = child; - // Go to the last child - while (currentChild.getNextSibling() != null) { - currentChild = currentChild.getNextSibling(); - } - currentChild.setNextSibling(newNode); - newNode.setPreviousSibling((DefaultYpmNode) currentChild); - } - - @Override - public YpmContext getSibling(String ypmName) { - if (ypmName == null) { - // Input is null. So, will not proceed. - return null; - } - - YpmContext sibling = getNextSibling(); - while (sibling != null) { - if (sibling.getName().equals(ypmName)) { - return sibling; - } - sibling = sibling.getNextSibling(); - } - return null; - } - - @Override - public void addSibling(String ypmName) { - if (ypmName == null) { - // Input is null. So, will not proceed. - return; - } - - if (getSibling(ypmName) != null) { - // Already available with the same name. So, no need to add - return; - } - - // Create new ypm node and attach to its parent - DefaultYpmNode newSibling = new DefaultYpmNode(ypmName); - newSibling.setParent(this.getParent()); - - // Add it as its sibling - YpmContext sibling = getNextSibling(); - if (sibling == null) { - setNextSibling(newSibling); - newSibling.setPreviousSibling(this); - } else { - // Go to the last sibling - while (sibling.getNextSibling() != null) { - sibling = sibling.getNextSibling(); - } - sibling.setNextSibling(newSibling); - newSibling.setPreviousSibling((DefaultYpmNode) sibling); - } - } - - @Override - public DefaultYpmNode getNextSibling() { - return nextSibling; - } - - @Override - public void setNextSibling(DefaultYpmNode sibling) { - nextSibling = sibling; - } - - @Override - public DefaultYpmNode getPreviousSibling() { - return previousSibling; - } - - @Override - public void setPreviousSibling(DefaultYpmNode sibling) { - this.previousSibling = sibling; - } - - @Override - public Object getMetaData() { - return this.metaData; - } - - @Override - public void setMetaData(Object data) { - this.metaData = data; - } -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmContext.java b/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmContext.java deleted file mode 100644 index 18ac0e7fde..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmContext.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ypm; - -/** - * Abstraction of an entity which represents YANG protocol metadata context - * information. - */ -public interface YpmContext { - - /** - * Returns the node name. - * - * @return node name - */ - String getName(); - - /** - * Sets the nodes name. - * - * @param name nodes name - */ - void setName(String name); - - /** - * Returns the context of parent node. - * - * @return context of parent node - */ - YpmContext getParent(); - - /** - * Sets the context of parent node. - * - * @param parent node parent - */ - void setParent(YpmContext parent); - - /** - * Retrieves the first child of a node. - * - * @return first child of a node - */ - YpmContext getFirstChild(); - - /** - * Retrieves the child of a node for corresponding ydt node. - * - * @param name ypm node - * @return child of a node - */ - YpmContext getChild(String name); - - /** - * Adds child to a node by ydt name. - * - * @param name ypm name - */ - void addChild(String name); - - /** - * Retrieves sibling of a child by (ydt) name. - * - * @param name ypm name - * @return sibling of a child - */ - YpmContext getSibling(String name); - - /** - * Adds new sibling to a child. - * - * @param name ypm name - */ - void addSibling(String name); - - /** - * Returns the context of next sibling. - * - * @return context of next sibling - */ - YpmContext getNextSibling(); - - /** - * Sets the next sibling of node. - * - * @param sibling ypm node - */ - void setNextSibling(DefaultYpmNode sibling); - - /** - * Returns the previous sibling of a node. - * - * @return previous sibling of a node - */ - DefaultYpmNode getPreviousSibling(); - - /** - * Sets the previous sibling. - * - * @param previousSibling points to predecessor sibling - */ - void setPreviousSibling(DefaultYpmNode previousSibling); - - /** - * Retrieves protocol metadata. - * - * @return metadata - */ - Object getMetaData(); - - /** - * Sets the protocol metadata. - * - * @param data metadata - */ - void setMetaData(Object data); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmService.java b/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmService.java deleted file mode 100644 index f23e9c69f7..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/YpmService.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ypm; - -import org.onosproject.yms.ydt.YdtContext; - -/** - * Abstraction of an entity which provides interfaces to YANG Protocol Metadata Manager. - */ -public interface YpmService { - - /** - * Returns the protocol data stored in sepecific data model path. - * - * @param rootNode YANG data tree - * @return YANG protocol metadata - */ - YpmContext getProtocolData(YdtContext rootNode); - - /** - * Sets the YANG protocol metadata in specific ydt path in ypm tree. - * - * @param rootNode YANG data tree - * @param data YANG protocol metadata - */ - void setProtocolData(YdtContext rootNode, Object data); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ypm/package-info.java deleted file mode 100644 index 485707dfac..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ypm/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides interfaces to YANG protocol metadata manager. YPM maintains protocol specific information - * (like timestamp, entity tag, etc.) for YANG modeled data. - */ -package org.onosproject.yms.ypm; diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleIdentifier.java b/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleIdentifier.java deleted file mode 100644 index 74836e010d..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleIdentifier.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.ysr; - -/** - * Abstraction of an entity which provides YANG module identifiers. - * Reference RFC 7895 - * YANG library provides information about all the YANG modules - * used by a network management server - */ -public interface YangModuleIdentifier { - /** - * retrieves the name of the YANG module. - * - * @return the name of the YANG module - */ - String moduleName(); - - /** - * Retrieves revision of the YANG module. - *

- * Reference RFC 7895 - * Each YANG module and submodule within the library has a - * revision. This is derived from the most recent revision statement - * within the module or submodule. If no such revision statement - * exists, the module's or submodule's revision is the zero-length - * string. - * - * @return revision of the YANG module - */ - String revision(); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleInformation.java b/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleInformation.java deleted file mode 100644 index a64ea32ea4..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleInformation.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.yms.ysr; - -import org.onosproject.yangutils.datamodel.YangNamespace; - -import java.util.List; - -/** - * Abstraction of an entity which provides YANG module information. - * - * Reference RFC 7895 - * The following information is needed by a client application (for each - * YANG module in the library) to fully utilize the YANG data modeling - * language: - * - * o name: The name of the YANG module. - * - * o revision: Each YANG module and submodule within the library has a - * revision. This is derived from the most recent revision statement - * within the module or submodule. If no such revision statement - * exists, the module's or submodule's revision is the zero-length - * string. - * - * o submodule list: The name and revision of each submodule used by - * the module MUST be identified. - * - * o feature list: The name of each YANG feature supported by the - * server MUST be identified. - * - * o deviation list: The name of each YANG module used for deviation - * statements MUST be identified. - */ -public interface YangModuleInformation { - /** - * Retrieves the YANG modules identifier. - * - * @return YANG modules identifier - */ - YangModuleIdentifier moduleIdentifier(); - - /** - * Retrieves the YANG modules namespace. - * The XML namespace identifier for this module. - * - * @return YANG modules namespace - */ - YangNamespace namespace(); - - /** - * Reference RFC 7895 - * Retrieves the list of YANG feature names from this module that are - * supported by the server, regardless of whether they are - * defined in the module or any included submodule. - * - * @return list of YANG features - */ - List featureList(); - - /** - * Retrieves the list of submodules in the module. - * The name and revision of each submodule used by - * the module MUST be identified. - * - * Each entry represents one submodule within the - * parent module. - * - * @return list of submodules in the module - */ - List subModuleIdentifiers(); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleLibrary.java b/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleLibrary.java deleted file mode 100644 index b66f887f3d..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/YangModuleLibrary.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.yms.ysr; - -/*- - * Abstraction of an entity which provides the servers YANG library information. - * - * Reference RFC 7895 - * The "ietf-yang-library" module provides information about the YANG - * library used by a server. This module is defined using YANG version - * 1, but it supports the description of YANG modules written in any - * revision of YANG. - * - * Following is the YANG Tree Diagram for the "ietf-yang-library" - * module: - * - * +--ro modules-state - * +--ro module-set-id string - * +--ro module* [name revision] - * +--ro name yang:yang-identifier - * +--ro revision union - * +--ro schema? inet:uri - * +--ro namespace inet:uri - * +--ro feature* yang:yang-identifier - * +--ro deviation* [name revision] - * | +--ro name yang:yang-identifier - * | +--ro revision union - * +--ro conformance-type enumeration - * +--ro submodule* [name revision] - * +--ro name yang:yang-identifier - * +--ro revision union - * +--ro schema? inet:uri - */ - -import java.util.List; - -public interface YangModuleLibrary { - /** - * Retrieves the current module set id of the YANG library. - * - * Reference RFC7895. - * modules-state/module-set-id - * - * This mandatory leaf contains a unique implementation-specific - * identifier representing the current set of modules and submodules on - * a specific server. The value of this leaf MUST change whenever the - * set of modules and submodules in the YANG library changes. There is - * no requirement that the same set always results in the same "module- - * set-id" value. - * - * @return module set id of the YANG library - */ - String moduleSetId(); - - /** - * Retrieves the current list of YANG modules supported in the server. - * - * Reference RFC 7895. - * modules-state/module - * - * This mandatory list contains one entry for each YANG data model - * module supported by the server. There MUST be an entry in this list - * for each revision of each YANG module that is used by the server. It - * is possible for multiple revisions of the same module to be imported, - * in addition to an entry for the revision that is implemented by the - * server. - * - * @return the current list of YANG modules supported in the server - */ - List yangModuleList(); -} diff --git a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/package-info.java b/apps/yms/api/src/main/java/org/onosproject/yms/ysr/package-info.java deleted file mode 100644 index b36d6f2156..0000000000 --- a/apps/yms/api/src/main/java/org/onosproject/yms/ysr/package-info.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * YANG schema registry (YSR) is responsible to maintain all the applications - * schemas defined in YANG. The YANG data tree builder depends on the schema - * registry to validate the tree building according to schema. - * YANG codec handler using the schema registry to maintain device schema. - */ -package org.onosproject.yms.ysr; diff --git a/apps/yms/app/BUCK.deprecated b/apps/yms/app/BUCK.deprecated deleted file mode 100644 index be5b01bf0b..0000000000 --- a/apps/yms/app/BUCK.deprecated +++ /dev/null @@ -1,13 +0,0 @@ -COMPILE_DEPS = [ - '//lib:CORE_DEPS', - '//apps/yms/api:onos-apps-yms-api', - '//lib:onos-yang-datamodel', - '//lib:onos-yang-utils-generator', - '//lib:org.apache.servicemix.bundles.dom4j', -] - -osgi_jar_with_tests( - name = 'onos-apps-yms-app', - deps = COMPILE_DEPS, - #private_packages = 'org.onosproject.yangutils.datamodel.*,org.onosproject.yangutils.translator.*,org.onosproject.yangutils.linker.*,org.onosproject.yangutils.utils.*', -) diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/TraversalType.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/TraversalType.java deleted file mode 100644 index 83dc008973..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/TraversalType.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.utils; - -/** - * Represents traversal type of the YANG node tree. - */ -public enum TraversalType { - - /* - * Start of traversal at the tree root. - */ - ROOT, - - /* - * Child node traversal. - */ - CHILD, - - /* - * Sibling node traversal. - */ - SIBLING, - - /* - * Parent node traversal. - */ - PARENT -} - diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/package-info.java deleted file mode 100644 index f1f9af6c34..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/utils/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of build and obtain YANG data tree which is data - * (sub)instance representation, abstract of protocol. - */ -package org.onosproject.yms.app.utils; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/YangApplicationBroker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/YangApplicationBroker.java deleted file mode 100644 index 5d53331a79..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/YangApplicationBroker.java +++ /dev/null @@ -1,903 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yab; - -import org.onosproject.yangutils.datamodel.YangAugment; -import org.onosproject.yangutils.datamodel.YangAugmentableNode; -import org.onosproject.yangutils.datamodel.YangInput; -import org.onosproject.yangutils.datamodel.YangModule; -import org.onosproject.yangutils.datamodel.YangNode; -import org.onosproject.yangutils.datamodel.YangRpc; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.app.utils.TraversalType; -import org.onosproject.yms.app.yab.exceptions.YabException; -import org.onosproject.yms.app.ydt.DefaultYdtAppContext; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YangResponseWorkBench; -import org.onosproject.yms.app.ydt.YdtAppContext; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ydt.YdtMultiInstanceNode; -import org.onosproject.yms.app.ydt.YdtNode; -import org.onosproject.yms.app.yob.DefaultYobBuilder; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.app.ytb.DefaultYangTreeBuilder; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtResponse; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.yms.app.utils.TraversalType.CHILD; -import static org.onosproject.yms.app.utils.TraversalType.PARENT; -import static org.onosproject.yms.app.utils.TraversalType.ROOT; -import static org.onosproject.yms.app.utils.TraversalType.SIBLING; -import static org.onosproject.yms.app.ydt.AppNodeFactory.getAppContext; -import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.DELETE_ONLY; -import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT; -import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE; -import static org.onosproject.yms.ydt.YmsOperationExecutionStatus.EXECUTION_SUCCESS; - -/** - * Represents YANG application broker. It acts as a broker between Protocol and - * YANG based application. - */ -public class YangApplicationBroker { - - private static final String GET = "get"; - private static final String SET = "set"; - private static final String AUGMENTED = "Augmented"; - private static final String VOID = "void"; - private final YangSchemaRegistry schemaRegistry; - private Set augGenMethodSet; - - /** - * Creates a new YANG application broker. - * - * @param schemaRegistry YANG schema registry - */ - public YangApplicationBroker(YangSchemaRegistry schemaRegistry) { - this.schemaRegistry = schemaRegistry; - } - - /** - * Processes query request of a NBI protocol. - * - * @param ydtWorkBench YANG request work bench - * @return YANG response data tree node context - * @throws YabException violation in execution of YAB - */ - public YdtResponse processQuery(YdtBuilder ydtWorkBench) - throws YabException { - List responseObjects = new LinkedList<>(); - YangRequestWorkBench workBench = (YangRequestWorkBench) ydtWorkBench; - augGenMethodSet = ((YangRequestWorkBench) ydtWorkBench).getAugGenMethodSet(); - - for (YdtAppContext appContext = workBench.getAppRootNode().getFirstChild(); - appContext != null; appContext = appContext.getNextSibling()) { - Object responseObject = processQueryOfApplication(appContext); - if (responseObject != null) { - responseObjects.add(responseObject); - } - } - - YdtContext rootYdtContext = workBench.getRootNode(); - YdtBuilder responseYdt = buildResponseYdt(responseObjects, - rootYdtContext.getName(), - rootYdtContext.getNamespace()); - - return new YangResponseWorkBench(responseYdt.getRootNode(), - EXECUTION_SUCCESS, - ydtWorkBench.getYmsOperationType()); - } - - /** - * Processes edit request of a NBI protocol. - * - * @param ydtWorkBench YANG request work bench - * @return YANG response data tree node context - * @throws YabException violation in execution of YAB - * @throws CloneNotSupportedException clone is not supported - */ - public YdtResponse processEdit(YdtBuilder ydtWorkBench) - throws CloneNotSupportedException, YabException { - YangRequestWorkBench workBench = (YangRequestWorkBench) ydtWorkBench; - augGenMethodSet = ((YangRequestWorkBench) ydtWorkBench).getAugGenMethodSet(); - for (YdtAppContext appContext = workBench.getAppRootNode().getFirstChild(); - appContext != null; appContext = appContext.getNextSibling()) { - processEditOfApplication(appContext); - } - - /* - * Since for set operation return type is void, there will not be - * response ydt tree so returning null. - */ - return new YangResponseWorkBench(null, EXECUTION_SUCCESS, - workBench.getYmsOperationType()); - } - - /** - * Processes operation request of a NBI protocol. - * - * @param ydtWorkBench YANG request work bench - * @return YANG response data tree node context - * @throws YabException violation in execution of YAB - */ - public YdtResponse processOperation(YdtBuilder ydtWorkBench) - throws YabException { - YangRequestWorkBench workBench = (YangRequestWorkBench) ydtWorkBench; - YdtAppContext appContext = workBench.getAppRootNode().getFirstChild(); - YdtContext ydtNode = appContext.getModuleContext(); - while (ydtNode != null) { - YdtContext childYdtNode = ydtNode.getFirstChild(); - YangSchemaNode yangNode = ((YdtNode) childYdtNode).getYangSchemaNode(); - if (yangNode instanceof YangRpc) { - return processRpcOperationOfApplication(childYdtNode, - appContext, yangNode, - workBench); - } - ydtNode = ydtNode.getNextSibling(); - } - return new YangResponseWorkBench(null, EXECUTION_SUCCESS, - ydtWorkBench.getYmsOperationType()); - } - - /** - * Processes rpc request of an application. - * - * @param appContext application context - * @return response object from application - */ - private YdtResponse processRpcOperationOfApplication(YdtContext rpcYdt, - YdtAppContext appContext, - YangSchemaNode yangRpc, - YangRequestWorkBench workBench) - throws YabException { - Object inputObject = null; - YdtContext inputYdtNode = getInputYdtNode(rpcYdt); - if (inputYdtNode != null) { - inputObject = getYangObject(inputYdtNode); - } - - Object appObject = getApplicationObjectForRpc(appContext); - - String methodName = yangRpc.getJavaClassNameOrBuiltInType(); - Object outputObject = invokeRpcApplicationsMethod(appObject, - inputObject, - methodName); - - String returnType = getReturnTypeOfRpcResponse(appObject, - inputObject, yangRpc); - - if (!returnType.equals(VOID)) { - YdtBuilder responseYdt = buildRpcResponseYdt(outputObject, - workBench); - return new YangResponseWorkBench(responseYdt.getRootNode(), - EXECUTION_SUCCESS, - workBench.getYmsOperationType()); - } - - return new YangResponseWorkBench(null, EXECUTION_SUCCESS, - workBench.getYmsOperationType()); - } - - /** - * Processes query request of an application. - * - * @param appContext application context - * @return response object from application - */ - private Object processQueryOfApplication(YdtAppContext appContext) - throws YabException { - YdtContext ydtNode = appContext.getModuleContext(); - - // Update application context tree if any node is augmented - YangNode yangNode = (YangNode) appContext.getYangSchemaNode(); - if (yangNode.isDescendantNodeAugmented()) { - processAugmentForChildNode(appContext, yangNode); - } - - String appName = getCapitalCase(((YdtNode) appContext.getModuleContext()) - .getYangSchemaNode() - .getJavaClassNameOrBuiltInType()); - - // get YangObject of YdtContext from YOB - Object outputObject = getYangObject(ydtNode); - - TraversalType curTraversal = ROOT; - do { - if (curTraversal != PARENT) { - - // find application and get application's object using YSR - Object appManagerObject = getApplicationObject(appContext); - - // find which method to invoke - String methodName = getApplicationMethodName(appContext, - appName, GET); - - String moduleName = appContext.getAppData() - .getRootSchemaNode().getName(); - - // invoke application's getter method - outputObject = invokeApplicationsMethod(appManagerObject, - outputObject, - methodName, moduleName); - } - - /* - * AppContext may contain other nodes if it is augmented, so - * traverse the appContext tree - */ - if (curTraversal != PARENT && appContext.getFirstChild() != null) { - curTraversal = CHILD; - appContext = appContext.getFirstChild(); - } else if (appContext.getNextSibling() != null) { - curTraversal = SIBLING; - appContext = appContext.getNextSibling(); - } else { - curTraversal = PARENT; - if (appContext.getParent().getParent() != null) { - appContext = appContext.getParent(); - } - } - // no need to do any operation for logical root node - } while (appContext.getParent().getParent() != null); - return outputObject; - } - - /** - * Processes edit request of an application. - * - * @param appContext application context - * @throws YabException violation in execution of YAB - * @throws CloneNotSupportedException clone is not supported - */ - private void processEditOfApplication(YdtAppContext appContext) - throws CloneNotSupportedException, YabException { - - // process delete request if operation type is delete and both - if (appContext.getOperationType() != OTHER_EDIT) { - processDeleteRequestOfApplication(appContext); - } - - // process edit request if operation type is other edit and both - if (appContext.getOperationType() != DELETE_ONLY) { - YdtContext ydtNode = appContext.getModuleContext(); - - String appName = getCapitalCase(((YdtNode) appContext.getModuleContext()) - .getYangSchemaNode() - .getJavaClassNameOrBuiltInType()); - - // get YO from YOB - Object outputObject = getYangObject(ydtNode); - - TraversalType curTraversal = ROOT; - do { - if (curTraversal != PARENT) { - - // find application and get application's object using YSR - Object appManagerObject = getApplicationObject(appContext); - - // find which method to invoke - String methodName = getApplicationMethodName(appContext, - appName, SET); - - String moduleName = appContext.getAppData() - .getRootSchemaNode().getName(); - - // invoke application's setter method - invokeApplicationsMethod(appManagerObject, outputObject, - methodName, moduleName); - } - - /* - * AppContext may contain other nodes if it is augmented, - * so traverse the appContext tree - */ - if (curTraversal != PARENT && appContext.getFirstChild() != null) { - curTraversal = CHILD; - appContext = appContext.getFirstChild(); - } else if (appContext.getNextSibling() != null) { - curTraversal = SIBLING; - appContext = appContext.getNextSibling(); - } else { - curTraversal = PARENT; - if (appContext.getParent().getParent() != null) { - appContext = appContext.getParent(); - } - } - // no need to do any operation for logical root node - } while (appContext.getParent().getParent() != null); - } - } - - /** - * Processes delete request of an application. - * - * @param appContext application context - * @throws YabException violation in execution of YAB - * @throws CloneNotSupportedException clone is not supported - */ - private void processDeleteRequestOfApplication(YdtAppContext appContext) - throws CloneNotSupportedException, YabException { - TraversalType curTraversal = ROOT; - List deleteNodes = appContext.getDeleteNodes(); - - if (deleteNodes != null && !deleteNodes.isEmpty()) { - - /* - * Split the current Ydt tree into two trees. - * Delete Tree with all nodes with delete operation and other - * tree with other edit operation - */ - YdtContext deleteTree = buildDeleteTree(deleteNodes); - - /* - * If any of nodes in ydt delete tree is augmented then add - * augmented nodes to current ydt tree - */ - processAugmentedNodesForDelete(deleteTree.getFirstChild(), appContext); - - Object inputObject = getYangObject(deleteTree.getFirstChild()); - - String appName = getCapitalCase(((YdtNode) appContext.getModuleContext()) - .getYangSchemaNode() - .getJavaClassNameOrBuiltInType()); - - do { - if (curTraversal == ROOT || curTraversal == SIBLING) { - while (appContext.getLastChild() != null) { - appContext = appContext.getLastChild(); - } - } - - // getAugmentApplication manager object - Object appManagerObject = getApplicationObject(appContext); - - // find which method to invoke - String methodName = getApplicationMethodName(appContext, - appName, SET); - - String moduleName = appContext.getAppData().getRootSchemaNode() - .getName(); - - // invoke application's setter method - invokeApplicationsMethod(appManagerObject, inputObject, - methodName, moduleName); - - if (appContext.getPreviousSibling() != null) { - curTraversal = SIBLING; - appContext = appContext.getPreviousSibling(); - } else if (appContext.getParent() != null) { - curTraversal = PARENT; - appContext = appContext.getParent(); - } - } while (appContext.getParent() != null); - } - } - - /** - * Traverses data model tree and if any node is augmented, then - * adds child to current application context. - * - * @param curAppContext current application context - * @param schemaNode YANG data model node, either module or augment - */ - protected void processAugmentForChildNode(YdtAppContext curAppContext, - YangNode schemaNode) { - YangNode yangNode = schemaNode.getChild(); - if (yangNode == null) { - return; - } - - TraversalType curTraversal = CHILD; - while (!yangNode.equals(schemaNode)) { - if (curTraversal != PARENT && yangNode instanceof YangAugmentableNode - && !((YangAugmentableNode) yangNode).getAugmentedInfoList() - .isEmpty()) { - updateAppTreeWithAugmentNodes(yangNode, curAppContext); - } - - if (curTraversal != PARENT && yangNode.getChild() != null - && yangNode.isDescendantNodeAugmented()) { - curTraversal = CHILD; - yangNode = yangNode.getChild(); - } else if (yangNode.getNextSibling() != null) { - curTraversal = SIBLING; - yangNode = yangNode.getNextSibling(); - } else { - curTraversal = PARENT; - yangNode = yangNode.getParent(); - } - } - } - - /** - * Traverses YDT delete tree and if any YDT node is augmented then - * updates the YDT delete tree with augment nodes. - * - * @param deleteTree YDT delete tree - * @param appContext application context - */ - protected void processAugmentedNodesForDelete(YdtContext deleteTree, - YdtAppContext appContext) { - TraversalType curTraversal = ROOT; - YdtContext ydtContext = deleteTree.getFirstChild(); - - if (ydtContext == null) { - /* - * Delete request is for module, so check all the nodes under - * module whether it is augmented. - */ - YangNode yangNode = ((YangNode) ((YdtNode) deleteTree) - .getYangSchemaNode()); - if (yangNode.isDescendantNodeAugmented()) { - processAugmentForChildNode(appContext, yangNode); - } - return; - } - - while (!ydtContext.equals(deleteTree)) { - if (curTraversal != PARENT && ((YdtNode) ydtContext) - .getYdtContextOperationType() == DELETE) { - YangNode yangNode = ((YangNode) ((YdtNode) ydtContext) - .getYangSchemaNode()); - if (yangNode instanceof YangAugmentableNode) { - updateAppTreeWithAugmentNodes(yangNode, appContext); - } - if (yangNode.isDescendantNodeAugmented()) { - processAugmentForChildNode(appContext, yangNode); - } - } - - if (curTraversal != PARENT && ydtContext.getFirstChild() != null) { - curTraversal = CHILD; - ydtContext = ydtContext.getFirstChild(); - } else if (ydtContext.getNextSibling() != null) { - curTraversal = SIBLING; - ydtContext = ydtContext.getNextSibling(); - } else { - curTraversal = PARENT; - ydtContext = ydtContext.getParent(); - } - } - } - - /** - * Returns response YANG data tree using YTB. - * - * @param responseObjects list of application's response objects - * @param name application YANG name - * @param namespace application YANG namespace - * @return response YANG data tree - */ - private YdtBuilder buildResponseYdt(List responseObjects, - String name, String namespace) { - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - return treeBuilder.getYdtBuilderForYo(responseObjects, - name, namespace, null, schemaRegistry); - } - - private YdtBuilder buildRpcResponseYdt(Object responseObject, - YangRequestWorkBench requestWorkBench) { - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - return treeBuilder.getYdtForRpcResponse(responseObject, requestWorkBench); - } - - /** - * Builds delete tree for list of delete nodes. - * - * @param deleteNodes list of delete nodes - * @return deleteTree YANG data tree for delete operation - * @throws CloneNotSupportedException clone is not supported - */ - protected YdtContext buildDeleteTree(List deleteNodes) throws - CloneNotSupportedException { - Iterator iterator = deleteNodes.iterator(); - YdtContext deleteTree = null; - while (iterator.hasNext()) { - YdtContext deleteNode = iterator.next(); - if (((YdtExtendedContext) deleteNode.getParent()) - .getYdtContextOperationType() != DELETE) { - cloneAncestorsOfDeleteNode(deleteNode); - deleteTree = unlinkDeleteNodeFromCurrentTree((YdtNode) deleteNode); - } - } - - if (deleteTree != null) { - while (deleteTree.getParent() != null) { - deleteTree = deleteTree.getParent(); - } - } - return deleteTree; - } - - /** - * Clones ancestor nodes of delete node. - * - * @param deleteNode node to be deleted - * @throws CloneNotSupportedException clone not supported - */ - private void cloneAncestorsOfDeleteNode(YdtContext deleteNode) - throws CloneNotSupportedException { - YdtNode clonedNode; - YdtNode previousNode = null; - - // Clone the parents of delete node to form delete tree - YdtNode nodeToClone = (YdtNode) deleteNode.getParent(); - while (nodeToClone != null) { - // If node is not cloned yet - if (nodeToClone.getClonedNode() == null) { - clonedNode = nodeToClone.clone(); - unlinkCurrentYdtNode(clonedNode); - if (nodeToClone instanceof YdtMultiInstanceNode) { - addKeyLeavesToClonedNode(nodeToClone, clonedNode); - } - nodeToClone.setClonedNode(clonedNode); - } else { - // already node is cloned - clonedNode = (YdtNode) nodeToClone.getClonedNode(); - } - - if (previousNode != null) { - /* - * add previous cloned node as child of current cloned node - * so that tree will be formed from delete node parent to - * logical root node. - */ - clonedNode.addChild(previousNode, false); - } - previousNode = clonedNode; - nodeToClone = nodeToClone.getParent(); - } - } - - /** - * Unlinks delete node from current YANG data tree of application - * and links it to cloned delete tree. - * - * @param deleteNode node to be unlinked - * @return deleteNode delete node linked to cloned delete tree - */ - private YdtNode unlinkDeleteNodeFromCurrentTree(YdtNode deleteNode) { - YdtNode parentClonedNode = (YdtNode) deleteNode.getParent().getClonedNode(); - unlinkNodeFromParent(deleteNode); - unlinkNodeFromSibling(deleteNode); - - /* - * Set all the pointers of node to null before adding as child - * to parent's cloned node. - */ - deleteNode.setParent(null); - deleteNode.setPreviousSibling(null); - deleteNode.setNextSibling(null); - - parentClonedNode.addChild(deleteNode, false); - return deleteNode; - } - - /** - * Adds key leaf nodes to cloned YDT node from current Ydt node. - * - * @param curNode current YDT node - * @param clonedNode cloned YDT node - */ - private void addKeyLeavesToClonedNode(YdtNode curNode, YdtNode clonedNode) - throws CloneNotSupportedException { - YdtNode keyClonedLeaf; - List keyList = ((YdtMultiInstanceNode) curNode) - .getKeyNodeList(); - if (keyList != null && !keyList.isEmpty()) { - for (YdtContext keyLeaf : keyList) { - keyClonedLeaf = ((YdtNode) keyLeaf).clone(); - unlinkCurrentYdtNode(keyClonedLeaf); - clonedNode.addChild(keyClonedLeaf, true); - } - } - } - - /** - * Updates application context tree if any of the nodes in current - * application context tree is augmented. - * - * @param yangNode YANG schema node which is augmented - * @param curAppContext current application context tree - */ - private void updateAppTreeWithAugmentNodes(YangNode yangNode, - YdtAppContext curAppContext) { - YdtAppContext childAppContext; - for (YangAugment yangAugment : ((YangAugmentableNode) yangNode) - .getAugmentedInfoList()) { - Object appManagerObject = schemaRegistry - .getRegisteredApplication(yangAugment.getParent()); - if (appManagerObject != null - && augGenMethodSet.add(yangAugment.getSetterMethodName())) { - childAppContext = addChildToYdtAppTree(curAppContext, - yangAugment); - processAugmentForChildNode(childAppContext, yangAugment); - } - } - } - - /** - * Adds child node to current application context tree. - * - * @param curAppContext current application context - * @param augment augment data model node - * @return childAppContext child node added - */ - private YdtAppContext addChildToYdtAppTree(YdtAppContext curAppContext, - YangNode augment) { - DefaultYdtAppContext childAppContext = getAppContext(true); - childAppContext.setParent(curAppContext); - childAppContext.setOperationType(curAppContext.getOperationType()); - childAppContext.setAugmentingSchemaNode(augment); - curAppContext.addChild(childAppContext); - return childAppContext; - } - - /** - * Unlinks the current node from its parent. - * - * @param deleteNode node which should be unlinked from YDT tree - */ - private void unlinkNodeFromParent(YdtNode deleteNode) { - YdtNode parentNode = deleteNode.getParent(); - if (parentNode.getFirstChild().equals(deleteNode) - && parentNode.getLastChild().equals(deleteNode)) { - parentNode.setChild(null); - parentNode.setLastChild(null); - } else if (parentNode.getFirstChild().equals(deleteNode)) { - parentNode.setChild(deleteNode.getNextSibling()); - } else if (parentNode.getLastChild().equals(deleteNode)) { - parentNode.setLastChild(deleteNode.getPreviousSibling()); - } - } - - /** - * Unlinks the current node from its sibling. - * - * @param deleteNode node which should be unlinked from YDT tree - */ - private void unlinkNodeFromSibling(YdtNode deleteNode) { - YdtNode previousSibling = deleteNode.getPreviousSibling(); - YdtNode nextSibling = deleteNode.getNextSibling(); - if (nextSibling != null && previousSibling != null) { - previousSibling.setNextSibling(nextSibling); - nextSibling.setPreviousSibling(previousSibling); - } else if (nextSibling != null) { - nextSibling.setPreviousSibling(null); - } else if (previousSibling != null) { - previousSibling.setNextSibling(null); - } - } - - /** - * Unlinks current Ydt node from parent, sibling and child. - * - * @param ydtNode YANG data tree node - */ - private void unlinkCurrentYdtNode(YdtNode ydtNode) { - ydtNode.setParent(null); - ydtNode.setNextSibling(null); - ydtNode.setPreviousSibling(null); - ydtNode.setChild(null); - ydtNode.setLastChild(null); - } - - /** - * Returns YANG object for YDT node. - * - * @param ydtNode YANG data node - * @return YANG object for YDT node - */ - private Object getYangObject(YdtContext ydtNode) { - checkNotNull(ydtNode); - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - return yobBuilder.getYangObject((YdtExtendedContext) ydtNode, - schemaRegistry); - } - - /** - * Returns application manager object for YDT node. - * - * @param appContext YDT application context - * @return application manager object - */ - private Object getApplicationObjectForRpc(YdtAppContext appContext) { - checkNotNull(appContext); - while (appContext.getFirstChild() != null) { - appContext = appContext.getFirstChild(); - } - return schemaRegistry.getRegisteredApplication(appContext.getAppData() - .getRootSchemaNode()); - } - - /** - * Returns application manager object of application. - * - * @param appContext application context - * @return application manager object - */ - private Object getApplicationObject(YdtAppContext appContext) { - return schemaRegistry.getRegisteredApplication(appContext.getAppData() - .getRootSchemaNode()); - } - - /** - * Converts name to capital case. - * - * @param yangIdentifier identifier - * @return name to capital case - */ - private String getCapitalCase(String yangIdentifier) { - return yangIdentifier.substring(0, 1).toUpperCase() + - yangIdentifier.substring(1); - } - - /** - * Returns get/set method name for application's request. - * - * @param appContext application context - * @return get/set method name for application's query request - */ - private String getApplicationMethodName(YdtAppContext appContext, - String appName, - String operation) { - if (appContext.getYangSchemaNode() instanceof YangModule) { - return operation + appName; - } - - String augment = ((YangAugment) appContext - .getAugmentingSchemaNode()).getTargetNode().get(0) - .getResolvedNode().getJavaClassNameOrBuiltInType(); - return new StringBuilder().append(operation).append(AUGMENTED) - .append(appName).append(getCapitalCase(augment)).toString(); - } - - /** - * Returns rpc's input schema node. - * - * @param rpcNode rpc schema node - * @return rpc's input YDT node - */ - private YdtContext getInputYdtNode(YdtContext rpcNode) { - YdtContext inputNode = rpcNode.getFirstChild(); - while (inputNode != null) { - YangSchemaNode yangInputNode = ((YdtNode) inputNode) - .getYangSchemaNode(); - if (yangInputNode instanceof YangInput) { - return inputNode; - } - inputNode = rpcNode.getNextSibling(); - } - return null; - } - - /** - * Invokes application method for RPC request. - * - * @param appManagerObject application manager object - * @param inputObject input parameter object of method - * @param methodName method name which should be invoked - * @return response object from application - * @throws YabException violation in execution of YAB - */ - private Object invokeApplicationsMethod(Object appManagerObject, - Object inputObject, - String methodName, String appName) - throws YabException { - checkNotNull(appManagerObject); - Class appClass = appManagerObject.getClass(); - try { - Method methodObject = appClass.getDeclaredMethod(methodName, - inputObject.getClass()); - if (methodObject != null) { - return methodObject.invoke(appManagerObject, inputObject); - } - throw new YabException("No such method in application"); - } catch (IllegalAccessException | NoSuchMethodException e) { - throw new YabException(e); - } catch (InvocationTargetException e) { - throw new YabException("Invocation exception in service " + appName, - e.getCause()); - } - } - - /** - * Invokes application method for RPC request. - * - * @param appObject application manager object - * @param inputObject input parameter object of method - * @param yangNode method name which should be invoked - * @return response object from application - * @throws YabException violation in execution of YAB - */ - private String getReturnTypeOfRpcResponse(Object appObject, - Object inputObject, YangSchemaNode - yangNode) throws YabException { - Method methodObject = null; - try { - if (inputObject == null) { - methodObject = appObject.getClass() - .getDeclaredMethod(yangNode.getJavaClassNameOrBuiltInType(), - null); - } else { - methodObject = appObject.getClass() - .getDeclaredMethod(yangNode.getJavaClassNameOrBuiltInType(), - inputObject.getClass().getInterfaces()); - } - if (methodObject != null) { - return methodObject.getReturnType().getSimpleName(); - } - throw new YabException("No such method in application"); - } catch (NoSuchMethodException e) { - throw new YabException(e); - } - } - - /** - * Invokes application method for RPC request. - * - * @param appManagerObject application manager object - * @param inputParamObject input parameter object of method - * @param methodName method name which should be invoked - * @return response object from application - * @throws YabException violation in execution of YAB - */ - private Object invokeRpcApplicationsMethod(Object appManagerObject, - Object inputParamObject, - String methodName) throws YabException { - checkNotNull(appManagerObject); - Class appClass = appManagerObject.getClass(); - try { - Method methodObject; - if (inputParamObject == null) { - methodObject = appClass.getDeclaredMethod(methodName, null); - if (methodObject != null) { - return methodObject.invoke(appManagerObject); - } - } else { - methodObject = appClass.getDeclaredMethod(methodName, - inputParamObject - .getClass() - .getInterfaces()); - if (methodObject != null) { - return methodObject.invoke(appManagerObject, inputParamObject); - } - } - throw new YabException("No such method in application"); - } catch (IllegalAccessException | NoSuchMethodException | - InvocationTargetException e) { - throw new YabException(e); - } - } - - /** - * Sets the augment setter method name. - * - * @param augGenMethodSet augment setter method name - */ - public void setAugGenMethodSet(Set augGenMethodSet) { - this.augGenMethodSet = augGenMethodSet; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/YabException.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/YabException.java deleted file mode 100644 index 9057843f37..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/YabException.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yab.exceptions; - -/** - * Represents base class for exceptions in YDT operations. - */ -public class YabException extends RuntimeException { - - private static final long serialVersionUID = 20160211L; - - /** - * Creates a new YDT exception. - */ - public YabException() { - } - - /** - * Creates a new YDT exception with given message. - * - * @param message the detail of exception in string - */ - public YabException(String message) { - super(message); - } - - /** - * Creates a new YDT exception from given message and cause. - * - * @param message the detail of exception in string - * @param cause underlying cause of the error - */ - public YabException(final String message, final Throwable cause) { - super(message, cause); - } - - /** - * Creates a new YDT exception from cause. - * - * @param cause underlying cause of the error - */ - public YabException(final Throwable cause) { - super(cause); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/package-info.java deleted file mode 100644 index 5dcc22d78c..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/exceptions/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -/** - * YANG application broker exception. - */ -package org.onosproject.yms.app.yab.exceptions; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/package-info.java deleted file mode 100644 index c73f4adeae..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yab/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides interfaces to YANG request broker. YRB is responsible for - * interaction with applications in YANG modeled objects. - */ -package org.onosproject.yms.app.yab; \ No newline at end of file diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/DefaultYangCodecHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/DefaultYangCodecHandler.java deleted file mode 100644 index b2f197cbfe..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/DefaultYangCodecHandler.java +++ /dev/null @@ -1,334 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo; -import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier; -import org.onosproject.yangutils.datamodel.exceptions.DataModelException; -import org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry; -import org.onosproject.yms.app.ydt.YdtExtendedBuilder; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.yob.DefaultYobBuilder; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.app.ytb.DefaultYangTreeBuilder; -import org.onosproject.yms.app.ytb.YtbException; -import org.onosproject.yms.ych.YangCodecHandler; -import org.onosproject.yms.ych.YangCompositeEncoding; -import org.onosproject.yms.ych.YangDataTreeCodec; -import org.onosproject.yms.ych.YangProtocolEncodingFormat; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YmsOperationType; -import org.onosproject.yms.ysr.YangModuleLibrary; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.onosproject.yms.app.yob.YobUtils.createAndSetInEventInstance; -import static org.onosproject.yms.app.yob.YobUtils.createAndSetInEventSubjectInstance; - -/** - * Represents implementation of YANG SBI broker interfaces. - * YCH acts as a broker between YMS and driver/provider. - */ -public class DefaultYangCodecHandler implements YangCodecHandler { - - private static final String E_MODULE_LIST = "The input module or " + - "sub-module object list cannot be null."; - private static final String E_DATA_TREE_CODEC = "data tree codec handler" + - " is null."; - private static final String E_DATA_MODEL_CHILD = "Unable to find the " + - "child node"; - private static final String E_NOTIFICATION_NODE = "Notification node " + - "should be the first child of module in YDT"; - - /** - * Schema registry for driver. - */ - private final YangSchemaRegistry schemaRegistry; - private YangModuleLibrary library; - - /** - * Default codecs. - */ - private final Map - defaultCodecs = new HashMap<>(); - - /** - * Override codec handler. - */ - private final Map - overrideCodecs = new HashMap<>(); - - /** - * Creates a new YANG codec handler. - * - * @param registry YANG schema registry - */ - public DefaultYangCodecHandler(YangSchemaRegistry registry) { - schemaRegistry = registry; - - // update the default codecs from codec registry - Map recvCodec = - YangCodecRegistry.getDefaultCodecs(); - if (!recvCodec.isEmpty()) { - for (Map.Entry - codecEntry : recvCodec.entrySet()) { - defaultCodecs.put(codecEntry.getKey(), codecEntry.getValue()); - } - } - } - - private YangDataTreeCodec getAppropriateCodec( - YangProtocolEncodingFormat dataFormat) { - YangDataTreeCodec codec = defaultCodecs.get(dataFormat); - - int size = overrideCodecs.size(); - // Check over ridden codec handler is exist or not. - if (size != 0) { - YangDataTreeCodec overrideCodec = overrideCodecs.get(dataFormat); - if (overrideCodec != null) { - codec = overrideCodec; - } - } - return codec; - } - - @Override - public void addDeviceSchema(Class yangModule) { - schemaRegistry.registerApplication(null, yangModule); - schemaRegistry.processModuleLibrary(yangModule.getName(), library); - } - - @Override - public String encodeOperation(String rootName, - String rootNamespace, - Map tagAttrMap, - List moduleList, - YangProtocolEncodingFormat dataFormat, - YmsOperationType opType) { - - if (moduleList == null || moduleList.isEmpty()) { - throw new YchException(E_MODULE_LIST); - } - - // Get the default codec handler. - YangDataTreeCodec codec = getAppropriateCodec(dataFormat); - if (codec == null) { - throw new YchException(E_DATA_TREE_CODEC); - } - - // Get yang data tree from YTB for the received objects. - DefaultYangTreeBuilder builder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder encodedYdt = - builder.getYdtBuilderForYo(moduleList, rootName, - rootNamespace, opType, - schemaRegistry); - - encodedYdt.setRootTagAttributeMap(tagAttrMap); - - // Get the xml string form codec handler. - return codec.encodeYdtToProtocolFormat(encodedYdt); - } - - @Override - public YangCompositeEncoding encodeCompositeOperation( - String rootName, - String rootNamespace, - Object moduleObject, - YangProtocolEncodingFormat dataFormat, - YmsOperationType opType) { - - if (moduleObject == null) { - throw new YtbException(E_MODULE_LIST); - } - - // Get the default codec handler. - YangDataTreeCodec codec = getAppropriateCodec(dataFormat); - if (codec == null) { - throw new YchException(E_DATA_TREE_CODEC); - } - - List yangModuleList = new ArrayList<>(); - yangModuleList.add(moduleObject); - - // Get yang data tree from YTB for the received objects. - DefaultYangTreeBuilder builder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder extBuilder = - builder.getYdtBuilderForYo(yangModuleList, - rootName, - rootNamespace, - opType, - schemaRegistry); - - // Get the composite response from codec handler. - return codec.encodeYdtToCompositeProtocolFormat(extBuilder); - } - - @Override - public List decode(String inputString, - YangProtocolEncodingFormat dataFormat, - YmsOperationType opType) { - - YdtBuilder ydtBuilder; - YangDataTreeCodec codec = getAppropriateCodec(dataFormat); - if (codec == null) { - throw new YchException(E_DATA_TREE_CODEC); - } - - try { - // Get the YANG data tree - ydtBuilder = codec.decodeProtocolDataToYdt(inputString, - schemaRegistry, - opType); - } catch (Exception e) { - throw new YchException(e.getLocalizedMessage()); - } - - if (ydtBuilder != null) { - return getObjectList(ydtBuilder.getRootNode()); - } - return null; - } - - @Override - public Object decode(YangCompositeEncoding protoData, - YangProtocolEncodingFormat dataFormat, - YmsOperationType opType) { - - YangDataTreeCodec codec = getAppropriateCodec(dataFormat); - if (codec == null) { - throw new YchException(E_DATA_TREE_CODEC); - } - - YdtBuilder ydtBuilder = - codec.decodeCompositeProtocolDataToYdt(protoData, - schemaRegistry, - opType); - - if (ydtBuilder == null) { - return null; - } - - YdtExtendedContext rootNode = ((YdtExtendedContext) ydtBuilder - .getRootNode()); - - if (opType == YmsOperationType.NOTIFICATION) { - return getNotificationObject(((YdtExtendedContext) rootNode - .getFirstChild())); - } - - // Return the module object by using YANG data tree - return getObjectList(rootNode); - } - - //returns notification event object - private Object getNotificationObject(YdtExtendedContext rootNode) { - YangSchemaNode module = rootNode.getYangSchemaNode(); - YangSchemaNode childSchema = ((YdtExtendedContext) rootNode - .getFirstChild()).getYangSchemaNode(); - - YangSchemaNodeIdentifier id = new YangSchemaNodeIdentifier(); - id.setNameSpace(childSchema.getNameSpace()); - id.setName(childSchema.getName()); - - YangSchemaNodeContextInfo contextInfo; - try { - contextInfo = module.getChildSchema(id); - } catch (DataModelException e) { - throw new YchException(E_DATA_MODEL_CHILD); - } - - if (contextInfo == null) { - throw new YchException(E_NOTIFICATION_NODE); - } - - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object object = builder.getYangObject(((YdtExtendedContext) rootNode - .getFirstChild()), - schemaRegistry); - - Object eventSubObj = createAndSetInEventSubjectInstance(object, - rootNode, - schemaRegistry); - return createAndSetInEventInstance(eventSubObj, rootNode, - schemaRegistry); - } - - @Override - public void registerOverriddenCodec(YangDataTreeCodec overrideCodec, - YangProtocolEncodingFormat dataFormat) { - overrideCodecs.put(dataFormat, overrideCodec); - } - - /** - * Returns the list of objects from YDT data tree. - * - * @param rootNode YDT root node - * @return returns list of objects - */ - private List getObjectList(YdtContext rootNode) { - - if (rootNode == null) { - // TODO - return null; - } - - if (rootNode.getFirstChild() == null) { - // TODO - return null; - } - - YdtContext curNode = rootNode.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object object = builder.getYangObject((YdtExtendedContext) curNode, - schemaRegistry); - List objectList = new ArrayList<>(); - objectList.add(object); - - // Check next module is exit or not. If exist get the object for that. - while (curNode.getNextSibling() != null) { - curNode = curNode.getNextSibling(); - object = builder.getYangObject((YdtExtendedContext) curNode, - schemaRegistry); - objectList.add(object); - } - - return objectList; - } - - /** - * Returns module library for YSR. - * - * @return module library for YSR - */ - public YangModuleLibrary getLibrary() { - return library; - } - - /** - * Sets module library for YSR. - * - * @param library module library for YSR - */ - public void setLibrary(YangModuleLibrary library) { - this.library = library; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/YchException.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/YchException.java deleted file mode 100644 index fbc51e4679..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/YchException.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych; - -/** - * Represents base class for exceptions in YCH operations. - */ -public class YchException extends RuntimeException { - private static final long serialVersionUID = 20160211L; - - /** - * Creates a new YCH exception. - */ - public YchException() { - } - - /** - * Creates a new YCH exception with given message. - * - * @param message the detail of exception in string - */ - public YchException(String message) { - super(message); - } - - /** - * Creates a new YCH exception from given message and cause. - * - * @param message the detail of exception in string - * @param cause underlying cause of the error - */ - public YchException(String message, Throwable cause) { - super(message, cause); - } - - /** - * Creates a new YCH exception from cause. - * - * @param cause underlying cause of the error - */ - public YchException(Throwable cause) { - super(cause); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/CodecHandlerFactory.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/CodecHandlerFactory.java deleted file mode 100644 index c17d3fa510..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/CodecHandlerFactory.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs; - - -import org.onosproject.yms.app.ych.YchException; -import org.onosproject.yms.app.ych.defaultcodecs.xml.XmlCodecHandler; -import org.onosproject.yms.app.ych.defaultcodecs.xml.XmlCodecMultiInstanceHandler; -import org.onosproject.yms.app.ych.defaultcodecs.xml.XmlCodecMultiInstanceLeafHandler; -import org.onosproject.yms.app.ych.defaultcodecs.xml.XmlCodecSingleInstanceHandler; -import org.onosproject.yms.app.ych.defaultcodecs.xml.XmlCodecSingleInstanceLeafHandler; -import org.onosproject.yms.ych.YangProtocolEncodingFormat; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.Map; - -import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML; -import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_LEAF_VALUE_NODE; -import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_NODE; -import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_LEAF_VALUE_NODE; -import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE; - -/** - * Represents an YCH handle factory to create different types of YANG data tree - * node. - */ -public final class CodecHandlerFactory { - - private static final Logger log = - LoggerFactory.getLogger(CodecHandlerFactory.class); - private static final String YDT_TYPE_ERROR = "YDT type is not supported."; - - /** - * Map of xml codec handler. - */ - private final Map handlerMap; - - /** - * Creates a new codec handler factory. - */ - private CodecHandlerFactory() { - handlerMap = new HashMap<>(); - handlerMap.put(SINGLE_INSTANCE_NODE, - new XmlCodecSingleInstanceHandler()); - handlerMap.put(MULTI_INSTANCE_NODE, - new XmlCodecMultiInstanceHandler()); - handlerMap.put(SINGLE_INSTANCE_LEAF_VALUE_NODE, - new XmlCodecSingleInstanceLeafHandler()); - handlerMap.put(MULTI_INSTANCE_LEAF_VALUE_NODE, - new XmlCodecMultiInstanceLeafHandler()); - } - - /** - * Returns YCH instance handler node instance. - * - * @param node YDT context node - * @param format data format type expected from driver - * @return returns YCH handler node instance - */ - public XmlCodecHandler getCodecHandlerForContext( - YdtContext node, - YangProtocolEncodingFormat format) { - if (format == XML) { - XmlCodecHandler handler = handlerMap.get(node.getYdtType()); - if (handler == null) { - throw new YchException(YDT_TYPE_ERROR + node.getYdtType()); - } - return handler; - } - log.error("{} data format is not supported.", format); - return null; - } - - /* - * Bill Pugh Singleton pattern. INSTANCE won't be instantiated until the - * LazyHolder class is loaded via a call to the instance() method below. - */ - private static class LazyHolder { - private static final CodecHandlerFactory INSTANCE = - new CodecHandlerFactory(); - } - - /** - * Returns a reference to the Singleton Codec Handler factory. - * - * @return the singleton codec handler factory - */ - public static CodecHandlerFactory instance() { - return LazyHolder.INSTANCE; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/YangCodecRegistry.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/YangCodecRegistry.java deleted file mode 100644 index 8b7baddce7..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/YangCodecRegistry.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs; - -import org.onosproject.yms.app.ych.defaultcodecs.xml.DefaultXmlCodec; -import org.onosproject.yms.ych.YangDataTreeCodec; -import org.onosproject.yms.ych.YangProtocolEncodingFormat; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML; - -/** - * Default implementation of YANG codec registry. - */ -public final class YangCodecRegistry { - - // no instantiation - private YangCodecRegistry() { - } - - /** - * Default codec map. - */ - private static final Map - DEFAULT_CODECS = new HashMap<>(); - - /** - * Initialise the default codec map. - */ - public static void initializeDefaultCodec() { - DEFAULT_CODECS.put(XML, new DefaultXmlCodec()); - } - - /** - * Returns the default codec map. - * - * @return the default codec map - */ - public static Map getDefaultCodecs() { - return Collections.unmodifiableMap(DEFAULT_CODECS); - } - - /** - * Registers a default codec for the specified data format. - * - * @param defaultCodec registered data tree codec - * @param dataFormat protocol encoding data format - */ - public static void registerDefaultCodec( - YangDataTreeCodec defaultCodec, - YangProtocolEncodingFormat dataFormat) { - DEFAULT_CODECS.put(dataFormat, defaultCodec); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodec.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodec.java deleted file mode 100644 index a1138ce0d8..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodec.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.netconf; - -import com.google.common.collect.ImmutableSet; -import org.dom4j.Element; -import org.onosproject.yms.app.ych.YchException; -import org.onosproject.yms.ydt.YmsOperationType; - -import java.util.Iterator; -import java.util.Set; - -import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.CONFIG; -import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.DATA; -import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.EDIT_CONFIG; -import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.FILTER; -import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.GET; -import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.GET_CONFIG; -import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST; -import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REQUEST; -import static org.onosproject.yms.ydt.YmsOperationType.QUERY_REQUEST; - -/** - * Represents an YCH netconf codec to find the root element in the xml string. - */ -public class NetconfCodec { - - private static final String PROTO_OPER_ERROR = "Received protocol " + - "operation is not same as in the XML string: "; - private static final Set ALLOWABLE_NAMES = - ImmutableSet.of(CONFIG, DATA, FILTER); - - /** - * Validate the operation type. - * - * @param elementName tag name in the xml string - * @param opType operation type - */ - private void validateOpType(String elementName, YmsOperationType opType) { - switch (elementName) { - // edit-config tag name is found in xml then check the - // interaction type. - case EDIT_CONFIG: { - if (opType != EDIT_CONFIG_REQUEST) { - throw new YchException(PROTO_OPER_ERROR + opType); - } - break; - } - - // get-config tag name is found in xml then check the - // interaction type. - case GET_CONFIG: { - if (opType != QUERY_CONFIG_REQUEST) { - throw new YchException(PROTO_OPER_ERROR + opType); - } - break; - } - - // get tag name is found in xml then check the interaction type. - case GET: { - if (opType != QUERY_REQUEST) { - throw new YchException(PROTO_OPER_ERROR + opType); - } - break; - } - - default: { - //TODO - } - } - } - - /** - * Returns the data root element based on the NETCONF operation parameter. - * - * @param rootElement root element of document tree to find the root node - * @param opType protocol operation being performed - * @return the data root node element - */ - public Element getDataRootElement(Element rootElement, - YmsOperationType opType) { - - Element retElement = null; - String elementName = rootElement.getName(); - try { - validateOpType(elementName, opType); - // If config tag name is found then set the root element node. - if (DATA.equals(elementName) - || CONFIG.equals(elementName) - || FILTER.equals(elementName)) { - return rootElement; - } - - // If element has child node then traverse through the child node - // by recursively calling getDataRootElement method. - if (rootElement.hasContent() && !rootElement.isTextOnly()) { - for (Iterator i = rootElement.elementIterator(); - i.hasNext();) { - Element childElement = (Element) i.next(); - retElement = getDataRootElement(childElement, opType); - } - } - } catch (Exception e) { - // TODO - } - - return retElement; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodecConstants.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodecConstants.java deleted file mode 100644 index 2d0705b36e..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/NetconfCodecConstants.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.netconf; - -/** - * Represents utilities constants which are used while codec encoding - * and decoding. - */ -public final class NetconfCodecConstants { - - // no instantiation - private NetconfCodecConstants() { - } - - /** - * Static attribute for edit config string. - */ - static final String EDIT_CONFIG = "edit-config"; - - /** - * Static attribute for edit config string. - */ - static final String GET_CONFIG = "get-config"; - - /** - * Static attribute for edit config string. - */ - static final String GET = "get"; - - /** - * Static attribute for edit config string. - */ - static final String CONFIG = "config"; - - /** - * Static attribute for edit config string. - */ - static final String DATA = "data"; - - /** - * Static attribute for edit config string. - */ - static final String FILTER = "filter"; - - /** - * Static attribute for edit config string. - */ - public static final String OPERATION = "operation"; -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/package-info.java deleted file mode 100644 index ca782aeaa4..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/netconf/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of default codec handler for netconf related - * operation. - */ -package org.onosproject.yms.app.ych.defaultcodecs.netconf; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/package-info.java deleted file mode 100644 index e344394e7b..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Default codec to support protocol data format encoding and decoding of the YANG objects. - */ -package org.onosproject.yms.app.ych.defaultcodecs; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/DefaultCodecUtils.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/DefaultCodecUtils.java deleted file mode 100644 index c027dd1808..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/DefaultCodecUtils.java +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.utils; - -import com.google.common.base.Splitter; -import com.google.common.collect.Lists; -import org.onosproject.yms.app.ych.YchException; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YdtContextOperationType; - -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.util.ArrayList; -import java.util.List; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onosproject.yms.ydt.YdtContextOperationType.NONE; -import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE; - -/** - * Utils to complete the conversion between JSON and YDT(YANG DATA MODEL). - */ -public final class DefaultCodecUtils { - - private static final Splitter SLASH_SPLITTER = Splitter.on('/'); - private static final Splitter COMMA_SPLITTER = Splitter.on(','); - private static final String EQUAL = "="; - private static final String COMMA = ","; - private static final String COLON = ":"; - private static final String URI_ENCODING_CHAR_SET = "ISO-8859-1"; - private static final String URI_NULL_CHECK_ERROR = "uri identifier " + - "should not be null"; - private static final String URI_MODULE_FORMAT = "Illegal URI, First " + - "node should be in format \"moduleName:nodeName\""; - - private static final String URI_LEAF_FORMAT = "Illegal URI, List or " + - "Leaf-list node should be in format \"nodeName=key\"or " + - "\"nodeName=instance-value\""; - - // no instantiation - private DefaultCodecUtils() { - } - - /** - * Converts URI identifier to YDT builder. - * - * @param identifier the uri identifier from web request - * @param builder the base YDT builder - * @param ydtOpType the YDT context operation type - * @return the YDT builder with the tree info of identifier - */ - public static YdtBuilder convertUriToYdt( - String identifier, - YdtBuilder builder, - YdtContextOperationType ydtOpType) { - checkNotNull(identifier, URI_NULL_CHECK_ERROR); - List segmentPaths = - urlPathArgsDecode(SLASH_SPLITTER.split(identifier)); - if (segmentPaths.isEmpty()) { - return null; - } - processPathSegments(segmentPaths, builder, ydtOpType); - return builder; - } - - /** - * Converts a list of path segments to a YDT builder tree. - * - * @param paths the list of path segments split from URI - * @param builder the base YDT builder - * @param ydtOpType the YDT context operation type - * @return the YDT builder with the tree info of paths - */ - private static YdtBuilder processPathSegments( - List paths, - YdtBuilder builder, - YdtContextOperationType ydtOpType) { - if (paths.isEmpty()) { - return builder; - } - boolean isLastNode = paths.size() == 1; - YdtContextOperationType thisOpType = isLastNode ? ydtOpType : NONE; - - final String path = paths.iterator().next(); - if (path.contains(COLON)) { - addModule(builder, path); - addNode(path, builder, thisOpType); - } else if (path.contains(EQUAL)) { - addListOrLeafList(path, builder, thisOpType); - } else { - addLeaf(path, builder, thisOpType); - } - - if (isLastNode) { - return builder; - } - List remainPaths = paths.subList(1, paths.size()); - processPathSegments(remainPaths, builder, ydtOpType); - - return builder; - } - - /** - * Returns YDT builder after adding module node. - * - * @param builder YDT builder - * @param path path segment - * @return the YDT builder - */ - private static YdtBuilder addModule(YdtBuilder builder, String path) { - String moduleName = getPreSegment(path, COLON); - if (moduleName == null) { - throw new YchException(URI_MODULE_FORMAT); - } - builder.addChild(moduleName, null, SINGLE_INSTANCE_NODE); - return builder; - } - - /** - * Returns YDT builder after adding single instance node. - * - * @param path path segments - * @param builder YDT builder - * @param ydtOpType YDT context operation type - * @return the YDT builder - */ - private static YdtBuilder addNode(String path, YdtBuilder builder, - YdtContextOperationType ydtOpType) { - String nodeName = getPostSegment(path, COLON); - builder.addChild(nodeName, null, SINGLE_INSTANCE_NODE, ydtOpType); - return builder; - } - - /** - * Returns YDT builder after adding multi instance node. - * - * @param path path segments - * @param builder YDT builder - * @param opType the YDT context operation type - * @return the YDT builder - */ - private static YdtBuilder addListOrLeafList( - String path, - YdtBuilder builder, - YdtContextOperationType opType) { - String nodeName = getPreSegment(path, EQUAL); - String keyStr = getPostSegment(path, EQUAL); - if (keyStr == null) { - throw new YchException(URI_LEAF_FORMAT); - } - builder.setDefaultEditOperationType(opType); - if (keyStr.contains(COMMA)) { - List keys = Lists.newArrayList( - COMMA_SPLITTER.split(keyStr)); - builder.addMultiInstanceChild(nodeName, null, keys, null); - } else { - builder.addMultiInstanceChild(nodeName, null, - Lists.newArrayList(keyStr), null); - } - return builder; - } - - /** - * Returns YDT builder after adding leaf. - * - * @param path path segments - * @param builder YDT builder - * @param ydtOpType YDT context operation type - * @return the YDT builder - */ - private static YdtBuilder addLeaf(String path, YdtBuilder builder, - YdtContextOperationType ydtOpType) { - checkNotNull(path); - builder.addChild(path, null, ydtOpType); - return builder; - } - - /** - * Returns the node name before the specified character in the string. - * - * @param path path segment - * @param splitChar character in the string - * @return the node name string - */ - private static String getPreSegment(String path, String splitChar) { - int idx = path.indexOf(splitChar); - if (idx == -1) { - return null; - } - - if (path.indexOf(':', idx + 1) != -1) { - return null; - } - - return path.substring(0, idx); - } - - /** - * Returns the string after the specified character in the string. - * - * @param path path segment - * @param splitChar character in the string - * @return the substring after specified character - */ - private static String getPostSegment(String path, String splitChar) { - int idx = path.indexOf(splitChar); - if (idx == -1) { - return path; - } - - if (path.indexOf(splitChar, idx + 1) != -1) { - return null; - } - - return path.substring(idx + 1); - } - - /** - * Converts a list of path from the original format to ISO-8859-1 code. - * - * @param paths the original paths - * @return list of decoded paths - */ - private static List urlPathArgsDecode(Iterable paths) { - try { - List decodedPathArgs = new ArrayList<>(); - for (String pathArg : paths) { - String decode = URLDecoder.decode(pathArg, - URI_ENCODING_CHAR_SET); - decodedPathArgs.add(decode); - } - return decodedPathArgs; - } catch (UnsupportedEncodingException e) { - throw new YchException("Invalid URL path arg '" + paths + "': ", e); - } - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/package-info.java deleted file mode 100644 index dea920fa7d..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/utils/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of default codec utilities. - */ -package org.onosproject.yms.app.ych.defaultcodecs.utils; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodec.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodec.java deleted file mode 100644 index 4fd56131e2..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodec.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -import org.dom4j.Document; -import org.dom4j.DocumentException; -import org.dom4j.DocumentHelper; -import org.dom4j.Element; -import org.dom4j.Namespace; -import org.onosproject.yms.app.ych.YchException; -import org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodec; -import org.onosproject.yms.app.ych.defaultcodecs.utils.DefaultCodecUtils; -import org.onosproject.yms.app.ydt.DefaultYdtWalker; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedBuilder; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ydt.YdtExtendedWalker; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.ych.YangCompositeEncoding; -import org.onosproject.yms.ych.YangDataTreeCodec; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YmsOperationType; - -import java.util.Map; - -import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML; -import static org.onosproject.yms.ydt.YdtContextOperationType.CREATE; - -/** - * Represents an implementation of YCH data tree codec interface. - */ -public class DefaultXmlCodec implements YangDataTreeCodec { - - private static final String E_RESTCONF_ROOT = "/onos/restconf"; - private static final String E_YDT_ROOT_NODE = "YDT extended root node " + - "is null."; - private static final String E_ROOT_ELEMENT = "Root element in XML " + - "input string is not well-formed."; - private static final String E_ROOT_KEY_ELEMENT = "Root element " + - "(filter, config, data) in XML input string is not found."; - - - /** - * Creates a new YANG xml codec. - */ - public DefaultXmlCodec() { - } - - /** - * Returns the xml string from YDT. - * - * @param ydtBuilder YDT builder - * @return the xml string from YDT - */ - private String buildXmlForYdt(YdtBuilder ydtBuilder) { - - YdtExtendedBuilder extBuilder = (YdtExtendedBuilder) ydtBuilder; - YdtExtendedContext rootNode = extBuilder.getRootNode(); - - if (rootNode == null) { - throw new YchException(E_YDT_ROOT_NODE); - } - - // Creating the root element for xml. - Element rootElement = - DocumentHelper.createDocument().addElement(rootNode.getName()); - - // Adding the name space if exist for root name. - if (rootNode.getNamespace() != null) { - rootElement.add(Namespace.get(rootNode.getNamespace())); - } - - if ("config".equals(rootElement.getName())) { - rootElement.add(new Namespace("nc", "urn:ietf:params:xml:ns:netconf:base:1.0")); - } - - // Adding the attribute if exist - Map tagAttrMap = extBuilder.getRootTagAttributeMap(); - if (tagAttrMap != null && !tagAttrMap.isEmpty()) { - for (Map.Entry attr : tagAttrMap.entrySet()) { - rootElement.addAttribute(attr.getKey(), attr.getValue()); - } - } - - XmlCodecYdtListener listener = new XmlCodecYdtListener(XML, rootNode); - listener.getElementStack().push(rootElement); - - // Walk through YDT and build the xml. - YdtExtendedWalker extWalker = new DefaultYdtWalker(); - extWalker.walk(listener, rootNode); - - return rootElement.asXML(); - } - - @Override - public String encodeYdtToProtocolFormat(YdtBuilder ydtBuilder) { - return buildXmlForYdt(ydtBuilder); - } - - @Override - public YangCompositeEncoding encodeYdtToCompositeProtocolFormat( - YdtBuilder ydtBuilder) { - - YangCompositeEncodingImpl encoding = new YangCompositeEncodingImpl(); - encoding.setResourceIdentifier(null); - encoding.setResourceInformation(buildXmlForYdt(ydtBuilder)); - return encoding; - } - - @Override - public YdtBuilder decodeCompositeProtocolDataToYdt( - YangCompositeEncoding protoData, - Object schemaReg, - YmsOperationType opType) { - - YdtExtendedBuilder extBuilder = - new YangRequestWorkBench(E_RESTCONF_ROOT, null, - opType, - (YangSchemaRegistry) schemaReg, - false); - - DefaultCodecUtils.convertUriToYdt(protoData.getResourceIdentifier(), - extBuilder, - CREATE); - Document document; - - try { - document = DocumentHelper - .parseText(protoData.getResourceInformation()); - } catch (DocumentException e) { - throw new YchException(E_ROOT_ELEMENT); - } - - XmlCodecListener listener = new XmlCodecListener(); - listener.setYdtExtBuilder(extBuilder); - - // Walk through xml and build the yang data tree. - XmlWalker walker = new DefaultXmlCodecWalker(); - walker.walk(listener, document.getRootElement(), - document.getRootElement()); - return extBuilder; - } - - @Override - public YdtBuilder decodeProtocolDataToYdt(String protoData, - Object schemaReg, - YmsOperationType opType) { - Document document; - - try { - document = DocumentHelper.parseText(protoData); - } catch (DocumentException e) { - throw new YchException(E_ROOT_ELEMENT); - } - - NetconfCodec codec = new NetconfCodec(); - // Find the root element in xml string - Element rootElement = - codec.getDataRootElement(document.getRootElement(), opType); - - if (rootElement == null) { - throw new YchException(E_ROOT_KEY_ELEMENT); - } - - // Get the YDT builder for the logical root name. - YdtExtendedBuilder extBuilder = - new YangRequestWorkBench(rootElement.getName(), - rootElement.getNamespaceURI(), - opType, - (YangSchemaRegistry) schemaReg, - false); - - XmlCodecListener listener = new XmlCodecListener(); - listener.setYdtExtBuilder(extBuilder); - // Walk through xml and build the yang data tree. - XmlWalker walker = new DefaultXmlCodecWalker(); - walker.walk(listener, rootElement, rootElement); - return extBuilder; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java deleted file mode 100644 index 290d4c372a..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -import org.dom4j.Element; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Iterator; - -import static org.onosproject.yms.app.ych.defaultcodecs.xml.XmlNodeType.OBJECT_NODE; -import static org.onosproject.yms.app.ych.defaultcodecs.xml.XmlNodeType.TEXT_NODE; - -/** - * Represents implementation of codec xml walker. - */ -class DefaultXmlCodecWalker implements XmlWalker { - private final Logger log = LoggerFactory.getLogger(getClass()); - - @Override - public void walk(XmlListener listener, Element element, - Element rootElement) { - try { - Element newElement = element.createCopy(); - newElement.remove(element.getNamespace()); - - listener.enterXmlElement(element, getElementType(newElement), - rootElement); - - if (element.hasContent() && !element.isTextOnly()) { - for (Iterator i = element.elementIterator(); i.hasNext();) { - Element childElement = (Element) i.next(); - walk(listener, childElement, rootElement); - } - } - - listener.exitXmlElement(element, getElementType(element), - rootElement); - } catch (Exception e) { - log.error("Exception occurred when walk xml element: {}", element); - } - } - - /** - * Determine the type of an element. - * - * @param element to be analysed - * @return type of the element - */ - private XmlNodeType getElementType(Element element) { - return element.hasContent() && element.isTextOnly() ? - TEXT_NODE : OBJECT_NODE; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecHandler.java deleted file mode 100644 index cd9fc4f3a6..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecHandler.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -import org.dom4j.Element; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtContextOperationType; - -import java.util.Stack; - -import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.OPERATION; -import static org.onosproject.yms.ydt.YdtContextOperationType.NONE; - -/** - * Represents an codec handler to process the xml content and add - * element to the stack. - */ -public abstract class XmlCodecHandler { - - /** - * Sets the namespace and tag name in element tree maintained in stack. - * - * @param ydtContext YDT context - * @param elementStack element tree stack - */ - void processXmlContext(YdtContext ydtContext, - Stack elementStack) { - - Element newElement = updateNameAndNamespace(ydtContext, - elementStack.peek()); - elementStack.push(newElement); - } - - /** - * Returns the new element name by updating tag name and namespace. - * - * @param ydtContext YDT context node - * @param xmlElement element in the stack used for adding new element - * @return new element name by updating tag name and namespace - */ - Element updateNameAndNamespace(YdtContext ydtContext, - Element xmlElement) { - String nameSpace = null; - if (ydtContext.getNamespace() != null) { - nameSpace = ydtContext.getNamespace(); - } - - String parentNameSpace = null; - if (ydtContext.getParent() != null) { - parentNameSpace = ydtContext.getParent().getNamespace(); - } - - Element newElement; - if (nameSpace != null) { - newElement = xmlElement.addElement(ydtContext.getName(), - nameSpace); - } else { - if (parentNameSpace != null) { - newElement = xmlElement.addElement(ydtContext.getName(), - parentNameSpace); - } else { - newElement = xmlElement.addElement(ydtContext.getName()); - } - } - - YdtContextOperationType opType = ((YdtExtendedContext) ydtContext) - .getYdtContextOperationType(); - if (opType != null && opType != NONE) { - newElement.addAttribute("nc:" + OPERATION, - opType.toString().toLowerCase()); - } - - return newElement; - } - - /** - * Sets the leaf value in the current element maintained in stack. - * Default behaviour is to do nothing. - * - * @param ydtContext YDT context node - * @param domElementStack current element node in the stack - */ - public void setXmlValue(YdtContext ydtContext, - Stack domElementStack) { - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java deleted file mode 100644 index 513785a244..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -import org.dom4j.Attribute; -import org.dom4j.Element; -import org.onosproject.yms.app.ydt.YdtExtendedBuilder; -import org.onosproject.yms.ydt.YdtContextOperationType; - -import java.util.Iterator; - -import static org.onosproject.yms.app.ych.defaultcodecs.netconf.NetconfCodecConstants.OPERATION; -import static org.onosproject.yms.app.ych.defaultcodecs.xml.XmlNodeType.OBJECT_NODE; -import static org.onosproject.yms.app.ych.defaultcodecs.xml.XmlNodeType.TEXT_NODE; - -/** - * Default implementation of codec xml listener. - */ -class XmlCodecListener implements XmlListener { - - /** - * YANG data tree builder object. - */ - private YdtExtendedBuilder ydtExtBuilder; - - private String prevNodeNamespace; - - /** - * Sets the YANG data tree builder object. - * - * @param ydtBuilder YANG data tree builder object - */ - void setYdtExtBuilder(YdtExtendedBuilder ydtBuilder) { - ydtExtBuilder = ydtBuilder; - } - - @Override - public void enterXmlElement(Element element, XmlNodeType nodeType, - Element rootElement) { - if (element.equals(rootElement)) { - return; - } - - YdtContextOperationType opType = null; - - for (Iterator iter = element.attributeIterator(); iter.hasNext();) { - Attribute attr = (Attribute) iter.next(); - if (attr.getName().equals(OPERATION)) { - opType = - YdtContextOperationType.valueOf(attr.getValue() - .toUpperCase()); - } - } - - String nameSpace = null; - if (element.getNamespace() != null) { - nameSpace = element.getNamespace().getURI(); - } - - /* - * When new module has to be added, and if curnode has reference of - * previous module, then we need to traverse back to parent(logical - * root node). - */ - if (ydtExtBuilder.getRootNode() == ydtExtBuilder.getCurNode() - .getParent() && prevNodeNamespace != null && - !prevNodeNamespace.equals(nameSpace)) { - ydtExtBuilder.traverseToParent(); - } - - if (nodeType == OBJECT_NODE && - (element.content() == null || element.content().isEmpty())) { - if (ydtExtBuilder != null) { - if (ydtExtBuilder.getCurNode() == ydtExtBuilder.getRootNode()) { - ydtExtBuilder.addChild(null, nameSpace, opType); - } - ydtExtBuilder.addNode(element.getName(), nameSpace); - } - } else if (nodeType == OBJECT_NODE) { - if (ydtExtBuilder != null) { - if (ydtExtBuilder.getCurNode() == ydtExtBuilder.getRootNode()) { - ydtExtBuilder.addChild(null, nameSpace, opType); - } - ydtExtBuilder.addChild(element.getName(), nameSpace, opType); - } - } else if (nodeType == TEXT_NODE) { - if (ydtExtBuilder != null) { - if (ydtExtBuilder.getCurNode() == ydtExtBuilder.getRootNode()) { - ydtExtBuilder.addChild(null, nameSpace, opType); - } - ydtExtBuilder.addLeaf(element.getName(), nameSpace, - element.getText()); - } - } - - if (nameSpace != null) { - prevNodeNamespace = nameSpace; - } - } - - @Override - public void exitXmlElement(Element element, XmlNodeType nodeType, - Element rootElement) { - if (element.equals(rootElement)) { - return; - } - - if (ydtExtBuilder != null) { - ydtExtBuilder.traverseToParent(); - } - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceHandler.java deleted file mode 100644 index a12393203a..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceHandler.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -/** - * Represents a multi instance node handler in YCH. - */ -public class XmlCodecMultiInstanceHandler extends XmlCodecHandler { -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceLeafHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceLeafHandler.java deleted file mode 100644 index 53f8230903..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecMultiInstanceLeafHandler.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -import org.dom4j.Element; -import org.onosproject.yms.ydt.YdtContext; - -import java.util.Iterator; -import java.util.Stack; - -/** - * Represents a multi instance leaf node handler in YCH. - */ -public class XmlCodecMultiInstanceLeafHandler extends XmlCodecHandler { - - @Override - public void setXmlValue(YdtContext ydtContext, - Stack elementStack) { - - if (ydtContext.getValueSet().isEmpty()) { - return; - } - - Iterator iterator = ydtContext.getValueSet().iterator(); - elementStack.peek().setText(iterator.next()); - Element topOfStack = elementStack.pop(); - Element parent = elementStack.peek(); - - while (iterator.hasNext()) { - Element newElement = updateNameAndNamespace(ydtContext, parent); - newElement.setText(iterator.next()); - } - elementStack.push(topOfStack); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceHandler.java deleted file mode 100644 index 252fbd00ed..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceHandler.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -/** - * Represents a single instance node handler in YCH. - */ -public class XmlCodecSingleInstanceHandler extends XmlCodecHandler { -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceLeafHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceLeafHandler.java deleted file mode 100644 index 8217cda36d..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecSingleInstanceLeafHandler.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -import org.dom4j.Element; -import org.onosproject.yms.ydt.YdtContext; - -import java.util.Stack; - -/** - * Represents a single instance leaf node handler in YCH. - */ -public class XmlCodecSingleInstanceLeafHandler extends XmlCodecHandler { - - @Override - public void setXmlValue(YdtContext ydtContext, - Stack elementStack) { - - if (ydtContext.getValue() != null) { - elementStack.peek().setText(ydtContext.getValue()); - } - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecYdtListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecYdtListener.java deleted file mode 100644 index 6a26a6ec45..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecYdtListener.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -import org.dom4j.Element; -import org.onosproject.yms.app.ych.defaultcodecs.CodecHandlerFactory; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ydt.YdtExtendedListener; -import org.onosproject.yms.ych.YangProtocolEncodingFormat; -import org.onosproject.yms.ydt.YdtContext; - -import java.util.Objects; -import java.util.Stack; - -import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML; - -/** - * Represents implementation of codec YANG data object listener. - */ -class XmlCodecYdtListener implements YdtExtendedListener { - - /** - * Data format type requested from driver. - */ - private YangProtocolEncodingFormat dataFormat; - - /** - * Stack for element is maintained for hierarchical references, this is - * used during YDT walker and preparation of xml/json. - */ - private final Stack elementStack = new Stack<>(); - - /** - * Root name received from driver. - */ - private YdtExtendedContext rootYdtNode; - - /** - * Module YDT node. - */ - private YdtExtendedContext currentModule; - - /** - * Creates a new codec listener. - * - * @param format protocol data format - * @param rootNode extended YDT root node - */ - XmlCodecYdtListener(YangProtocolEncodingFormat format, - YdtExtendedContext rootNode) { - dataFormat = format; - rootYdtNode = rootNode; - currentModule = ((YdtExtendedContext) rootNode.getFirstChild()); - } - - /** - * Returns the stack for the element. - * - * @return the stack for the element - */ - Stack getElementStack() { - return elementStack; - } - - /** - * Returns true, if YDT node is module node; false otherwise. - * - * @param ydtContext YDT node - * @return true if YDT node is module; false otherwise - */ - private boolean isModuleNode(YdtExtendedContext ydtContext, - boolean isExit) { - if (Objects.equals(currentModule, ydtContext)) { - if (isExit) { - currentModule = (YdtExtendedContext) currentModule - .getNextSibling(); - } - return true; - } - return false; - } - - @Override - public void enterYdtNode(YdtExtendedContext ydtContext) { - - if (!Objects.equals(rootYdtNode, ydtContext) && - !isModuleNode(ydtContext, false)) { - - CodecHandlerFactory factory = CodecHandlerFactory.instance(); - XmlCodecHandler handler = - factory.getCodecHandlerForContext(ydtContext, dataFormat); - try { - if (dataFormat == XML && handler != null) { - handler.processXmlContext(ydtContext, elementStack); - } - } catch (Exception e) { - // TODO - } - - if (dataFormat == XML && handler != null) { - handler.setXmlValue(ydtContext, elementStack); - } - } - } - - @Override - public void exitYdtNode(YdtExtendedContext ydtExtendedContext) { - if (!Objects.equals(rootYdtNode, ydtExtendedContext) && - !isModuleNode(ydtExtendedContext, true)) { - elementStack.pop(); - } - } - - @Override - public void enterYdtNode(YdtContext ydtContext) { - } - - @Override - public void exitYdtNode(YdtContext ydtContext) { - } - -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlListener.java deleted file mode 100644 index db64deaf4c..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlListener.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -import org.dom4j.Element; - -/** - * Abstraction of an entity which provide call back methods which are called - * by xml walker while walking the xml data tree. This interface needs to be - * implemented by protocol implementing listener's based call backs while - * xml walk. - */ -interface XmlListener { - - /** - * Callback invoked during a node entry. All the related information - * about the node can be obtained from the element. - * - * @param element current xml node(element) - * @param nodeType xml node type - * @param rootElement root element - */ - void enterXmlElement(Element element, XmlNodeType nodeType, - Element rootElement); - - /** - * Callback invoked during a node exit. All the related information - * about the node can be obtained from the element. - * - * @param element current xml node(element) - * @param nodeType xml node type - * @param rootElement root element - */ - void exitXmlElement(Element element, XmlNodeType nodeType, - Element rootElement); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlNodeType.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlNodeType.java deleted file mode 100644 index 9d92b0b3d0..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlNodeType.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -/** - * Represents type of node in xml data tree. - */ -enum XmlNodeType { - /** - * An object node has at least one child node. - */ - OBJECT_NODE, - - /** - * A text node has no child node, and has a text value. - */ - TEXT_NODE -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlWalker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlWalker.java deleted file mode 100644 index 1a3078dec6..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlWalker.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -import org.dom4j.Element; - -/** - * Abstraction of an entity which provides interfaces for xml walk. - * This interface serve as common tools for anyone who needs to parse the xml - * node with depth-first algorithm. - */ -interface XmlWalker { - /** - * Walks the xml data tree. Protocols implements xml listener service - * and walks xml tree with input as implemented object. xml walker provides - * call backs to implemented methods. - * - * @param listener xml listener implemented by the protocol - * @param walkElement root node(element) of the xml data tree - * @param rootElement logical root node(element) of the xml data tree - */ - void walk(XmlListener listener, Element walkElement, Element rootElement); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/YangCompositeEncodingImpl.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/YangCompositeEncodingImpl.java deleted file mode 100644 index 7ffc91eeb5..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/YangCompositeEncodingImpl.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych.defaultcodecs.xml; - -import org.onosproject.yms.ych.YangCompositeEncoding; -import org.onosproject.yms.ych.YangResourceIdentifierType; - -/** - * Represents implementation of YangCompositeEncoding interfaces. - */ -class YangCompositeEncodingImpl implements YangCompositeEncoding { - - /** - * Resource identifier for composite encoding. - */ - private String resourceIdentifier; - - /** - * Resource information for composite encoding. - */ - private String resourceInformation; - - /** - * Resource identifier type. - */ - private YangResourceIdentifierType resourceIdentifierType; - - @Override - public void setResourceIdentifier(String resourceId) { - resourceIdentifier = resourceId; - } - - @Override - public void setResourceInformation(String resourceInfo) { - resourceInformation = resourceInfo; - } - - @Override - public void setResourceIdentifierType(YangResourceIdentifierType idType) { - resourceIdentifierType = idType; - } - - @Override - public String getResourceIdentifier() { - return resourceIdentifier; - } - - @Override - public YangResourceIdentifierType getResourceIdentifierType() { - return resourceIdentifierType; - } - - @Override - public String getResourceInformation() { - return resourceInformation; - } -} - diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/package-info.java deleted file mode 100644 index b9fbb7c1d3..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of default codec handler for xml related - * operation. - */ -package org.onosproject.yms.app.ych.defaultcodecs.xml; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/package-info.java deleted file mode 100644 index 97bd542c74..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides interfaces to YANG codec utility. - * YANG codec utility provides interfaces which can be used by the driver / provider to - * translate protocol specific data representation to YANG modeled objects. - */ -package org.onosproject.yms.app.ych; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppData.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppData.java deleted file mode 100644 index bc1021aef8..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppData.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; - -/** - * Maintains application data, which will be used by Application broker to - * interact with applications. - */ -public interface AppData { - - /** - * Returns the schema node current context. - * - * @return schema node - */ - YangSchemaNode getSchemaNode(); - - /** - * Returns the root/module schema node current application. - * - * @return schema node - */ - YangSchemaNode getRootSchemaNode(); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppNodeFactory.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppNodeFactory.java deleted file mode 100644 index 8917b52071..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppNodeFactory.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -/** - * Represents an application tree node factory to create different types of - * application tree node. - */ -public final class AppNodeFactory { - - // No instantiation - private AppNodeFactory() { - } - - /** - * Returns the appropriate application context on the basis of provided - * isAugmented flag for given request. - * - * @param flag true for augmented context; false for module context - * @return appContext application context - */ - public static DefaultYdtAppContext getAppContext(boolean flag) { - return flag ? new DefaultYdtAppContext(new AugmentedSchemaData()) : - new DefaultYdtAppContext(new ModuleSchemaData()); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppType.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppType.java deleted file mode 100644 index 3b49ec299f..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AppType.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -/** - * Represents type of application, which is intended to maintain additional - * information in YDT node. - */ -public enum AppType { - - /** - * YANG tree builder application. - */ - YTB, - - /** - * YANG object builder application. - */ - YOB -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentAppData.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentAppData.java deleted file mode 100644 index 88d1bb3187..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentAppData.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; - -/** - * Represents an augmented node in application tree. - */ -interface AugmentAppData extends AppData { - - /** - * Returns the YangSchemaNode of augmenting application. - * - * @return YangSchemaNode of augmenting application - */ - YangSchemaNode getAugmentingSchemaNode(); - - /** - * Sets the YangSchemaNode of augmenting application root node. - * - * @param schemaNode YangSchemaNode of augmenting application module - */ - void setAugmentingSchemaNode(YangSchemaNode schemaNode); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentedSchemaData.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentedSchemaData.java deleted file mode 100644 index 221e56480b..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/AugmentedSchemaData.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangNode; -import org.onosproject.yangutils.datamodel.YangSchemaNode; - -/** - * Manages the application information required for schema nodes defined in - * the module (sub-module). - */ -public class AugmentedSchemaData implements AugmentAppData { - - /* - * Reference for schema node of augmenting application. - */ - private YangSchemaNode augModSchema; - - @Override - public YangSchemaNode getAugmentingSchemaNode() { - return augModSchema; - } - - @Override - public void setAugmentingSchemaNode(YangSchemaNode schemaNode) { - augModSchema = schemaNode; - } - - @Override - public YangSchemaNode getSchemaNode() { - return augModSchema; - } - - @Override - public YangSchemaNode getRootSchemaNode() { - return ((YangNode) getSchemaNode()).getParent(); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtAppContext.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtAppContext.java deleted file mode 100644 index 6f9dbebe73..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtAppContext.java +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtContextOperationType; - -import java.util.List; - -import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.BOTH; -import static org.onosproject.yms.app.ydt.YdtUtils.getAppOpTypeFromYdtOpType; - -/** - * Abstraction of an entity which represents YDT application context - * information. This context information will be used by protocol to obtain - * the information associated with YDT application tree node. - */ -public final class DefaultYdtAppContext - implements YdtAppContext { - - /* - * Parent reference. - */ - private YdtAppContext parent; - - /* - * First child reference. - */ - private YdtAppContext child; - - /* - * Next sibling reference. - */ - private YdtAppContext nextSibling; - - /* - * Previous sibling reference. - */ - private YdtAppContext previousSibling; - - /* - * Last child reference. - */ - private YdtAppContext lastChild; - - /* - * YDT application tree extended information. - */ - private final T appData; - - /* - * Reference for operation type for application root node. - */ - private YdtAppNodeOperationType operationType; - - /** - * Creates an instance of YANG application tree which is used by all node - * needs delete list. - * - * @param data application data - */ - DefaultYdtAppContext(T data) { - appData = data; - } - - @Override - public void updateAppOperationType(YdtContextOperationType ydtOpType) { - if (parent == null) { - return; - } - YdtAppNodeOperationType opType = getAppOpTypeFromYdtOpType(ydtOpType); - YdtAppContext curNode = this; - YdtAppNodeOperationType parentOpType = operationType; - if (opType != parentOpType) { - if (parentOpType != null) { - while (curNode.getOperationType() != BOTH && - curNode.getParent() != null) { - curNode.setOperationType(BOTH); - curNode = curNode.getParent(); - } - } else { - // If operation type for ydt node is "NONE" then in that - // case operation type for module node in app tree set as null. - // Once the target node operation type received by ydt then - // operation type for module node will be updated with the - // same target node operation type in app tree. - while (curNode.getParent() != null && curNode - .getOperationType() == null) { - curNode.setOperationType(opType); - curNode = curNode.getParent(); - } - } - } - } - - @Override - public void setAppData(YdtNode moduleNode, YangSchemaNode augmentNode) { - if (augmentNode != null) { - ((AugmentAppData) appData).setAugmentingSchemaNode(augmentNode); - } else { - ((ModuleAppData) appData).setModuleContext(moduleNode); - } - } - - @Override - public AppData getAppData() { - return appData; - } - - @Override - public YdtAppContext getParent() { - return parent; - } - - @Override - public void setParent(YdtAppContext parent) { - this.parent = parent; - } - - @Override - public YdtAppContext getFirstChild() { - return child; - } - - /** - * Sets the context of first child. - * - * @param child node - */ - private void setChild(YdtAppContext child) { - this.child = child; - } - - @Override - public YdtAppContext getNextSibling() { - return nextSibling; - } - - @Override - public void setNextSibling(YdtAppContext context) { - this.nextSibling = context; - } - - @Override - public YdtAppContext getPreviousSibling() { - return previousSibling; - } - - @Override - public void setPreviousSibling(YdtAppContext context) { - this.previousSibling = context; - } - - @Override - public YdtAppNodeOperationType getOperationType() { - return operationType; - } - - @Override - public void setOperationType(YdtAppNodeOperationType opType) { - operationType = opType; - } - - @Override - public List getDeleteNodes() { - return ((ModuleAppData) appData).getDeleteNodes(); - } - - @Override - public void addDeleteNode(YdtNode node) { - DefaultYdtAppContext curNode = this; - while (curNode.getParent().getParent() != null) { - curNode = (DefaultYdtAppContext) curNode.getParent(); - } - ((ModuleAppData) curNode.appData).addDeleteNodes(node); - } - - @Override - public YdtContext getModuleContext() { - return ((ModuleAppData) appData).getModuleContext(); - } - - @Override - public YangSchemaNode getAugmentingSchemaNode() { - return ((AugmentAppData) appData).getAugmentingSchemaNode(); - } - - @Override - public void setAugmentingSchemaNode(YangSchemaNode schemaNode) { - ((AugmentAppData) appData).setAugmentingSchemaNode(schemaNode); - } - - @Override - public YdtAppContext getLastChild() { - return lastChild; - } - - /** - * Sets the context of last child. - * - * @param child node - */ - private void setLastChild(YdtAppContext child) { - lastChild = child; - } - - @Override - public void addChild(YdtAppContext newChild) { - - if (newChild.getParent() == null) { - newChild.setParent(this); - } - - // First child to be added. - if (getFirstChild() == null) { - setChild(newChild); - // Update last child. - setLastChild(newChild); - return; - } - - // If the new node needs to be add as last child. - YdtAppContext curNode = getLastChild(); - curNode.setNextSibling(newChild); - newChild.setPreviousSibling(curNode); - setLastChild(newChild); - } - - @Override - public YangSchemaNode getYangSchemaNode() { - return appData.getSchemaNode(); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtWalker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtWalker.java deleted file mode 100644 index ab67d281ac..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/DefaultYdtWalker.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - - -import org.onosproject.yms.app.utils.TraversalType; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtListener; - -import static org.onosproject.yms.app.utils.TraversalType.CHILD; -import static org.onosproject.yms.app.utils.TraversalType.PARENT; -import static org.onosproject.yms.app.utils.TraversalType.ROOT; -import static org.onosproject.yms.app.utils.TraversalType.SIBLING; - -/** - * Represents implementation of YDT walker, which walks the YDT. - */ -public class DefaultYdtWalker implements YdtExtendedWalker { - - @Override - public void walk(YdtListener ydtListener, YdtContext rootNode) { - walkTree(ydtListener, rootNode, false); - } - - /** - * Walks the YANG data tree till the node provided by the user. - * Protocols implements YDT listener and YDT Extended Listener and - * walks YDT tree with input as implemented object. - * YDT walker provides call backs to implemented methods. - * - * @param ydtListener YDT listener implemented by the protocol - * @param rootNode root node of YDT - * @param isExtended flag denotes the call type - */ - private void walkTree(YdtListener ydtListener, YdtContext rootNode, - boolean isExtended) { - YdtContext curNode = rootNode; - TraversalType curTraversal = ROOT; - - while (curNode != null) { - if (curTraversal != PARENT) { - - // Visit (curNode) for entry callback - if (isExtended) { - ((YdtExtendedListener) ydtListener) - .enterYdtNode((YdtExtendedContext) curNode); - } else { - ydtListener.enterYdtNode(curNode); - } - } - if (curTraversal != PARENT && - curNode.getFirstChild() != null) { - curTraversal = CHILD; - curNode = curNode.getFirstChild(); - } else if (curNode.getNextSibling() != null) { - // Revisit (curNode) for exit callback - exitCallBack(ydtListener, curNode, isExtended); - - /* - *Stop traversing the tree , tree need to be traversed - * till user requested node - */ - if (curNode.equals(rootNode)) { - return; - } - curTraversal = SIBLING; - curNode = curNode.getNextSibling(); - } else { - // Revisit (curNode) for exit callback - exitCallBack(ydtListener, curNode, isExtended); - - /* - *Stop traversing the tree , tree need to be traversed - * till user requested node - */ - if (curNode.equals(rootNode)) { - return; - } - - curTraversal = PARENT; - curNode = curNode.getParent(); - } - } - } - - /** - * Provides exit call back per node on the basis of extended flag, - * If isExtended set then YdtExtendedListener exit node call back will - * be provided else YdtListener with respective type of context - * (YdtContext/YdtExtendedContext). - * - * @param ydtListener YDT listener implemented by the protocol - * @param curNode current node of YDT - * @param isExtended flag denotes the call type - */ - private void exitCallBack(YdtListener ydtListener, YdtContext curNode, - boolean isExtended) { - if (isExtended) { - ((YdtExtendedListener) ydtListener) - .exitYdtNode((YdtExtendedContext) curNode); - } else { - ydtListener.exitYdtNode(curNode); - } - } - - @Override - public void walk(YdtExtendedListener ydtExtendedListener, - YdtExtendedContext rootNode) { - walkTree(ydtExtendedListener, rootNode, true); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleAppData.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleAppData.java deleted file mode 100644 index ff680ab5c6..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleAppData.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.yms.app.ydt; - -import org.onosproject.yms.ydt.YdtContext; - -import java.util.List; - -/** - * Represents a module/sub-module node in application tree. - */ -interface ModuleAppData extends AppData { - - /** - * Returns the list of nodes with operation type delete. - * - * @return list of nodes with operation type delete - */ - List getDeleteNodes(); - - /** - * Adds the ydt node with operation type delete in module delete node list. - * - * @param node ydt node with operation type delete/remove - */ - void addDeleteNodes(YdtContext node); - - /** - * Returns application's root ydtContext. - * - * @return YdtContext of application root node - */ - YdtContext getModuleContext(); - - /** - * Sets the application's ydtContext. - * - * @param moduleNode application's ydtContext - */ - void setModuleContext(YdtExtendedContext moduleNode); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleSchemaData.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleSchemaData.java deleted file mode 100644 index f980bfda6c..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/ModuleSchemaData.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.ydt.YdtContext; - -import java.util.ArrayList; -import java.util.List; - -/** - * Manages the application information required for schema nodes defined in - * the module (sub-module). - */ -public class ModuleSchemaData implements ModuleAppData { - - /* - * Reference for application's root ydtContext. - */ - private YdtExtendedContext moduleContext; - - /* - * Reference for list of nodes with operation type delete. - */ - private final List deleteNodes = new ArrayList<>(); - - @Override - public List getDeleteNodes() { - // This suppose to be mutable for YAB - return deleteNodes; - } - - @Override - public void addDeleteNodes(YdtContext deletedNode) { - deleteNodes.add(deletedNode); - } - - @Override - public YdtContext getModuleContext() { - return moduleContext; - } - - @Override - public void setModuleContext(YdtExtendedContext moduleContext) { - this.moduleContext = moduleContext; - } - - @Override - public YangSchemaNode getSchemaNode() { - return moduleContext.getYangSchemaNode(); - } - - @Override - public YangSchemaNode getRootSchemaNode() { - return moduleContext.getYangSchemaNode(); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/NameSpace.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/NameSpace.java deleted file mode 100644 index 3ae9686c48..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/NameSpace.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangNamespace; - -class NameSpace implements YangNamespace { - - /* - * Reference for namespace. - */ - private final String nameSpace; - - /** - * Creates an instance of namespace which is used to initialize the - * nameSpace for requested YDT node. - * - * @param nameSpace namespace of the requested node - */ - public NameSpace(String nameSpace) { - this.nameSpace = nameSpace; - } - - @Override - public String getModuleNamespace() { - return nameSpace; - } - - @Override - public String getModuleName() { - return nameSpace; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCallType.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCallType.java deleted file mode 100644 index a54d946e19..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCallType.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -/** - * Represents type of YANG data tree creation method caller type. - */ -enum RequestedCallType { - - /** - * Requested Node is of type single/multi instance leaf. - */ - LEAF, - - /** - * Requested Node is of type single/multi instance non leaf node. - */ - NON_LEAF, - - /** - * Requested Node is of type multi instance leaf/node. - */ - MULTI_INSTANCE, - - /** - * Requested Node is of type container but is empty. - */ - EMPTY_CONTAINER, -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCardinality.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCardinality.java deleted file mode 100644 index 4e4f6370ea..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/RequestedCardinality.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -/** - * Represents type of YANG data tree node operation. - */ -enum RequestedCardinality { - - /** - * Single instance of requested node. - */ - SINGLE_INSTANCE, - - /** - * Multi instance of requested node. - */ - MULTI_INSTANCE, - - /** - * Instance of requested node/leaf is unknown. - */ - UNKNOWN, - - /** - * Single instance of requested leaf. - */ - SINGLE_INSTANCE_LEAF, - - /** - * Multi instance of requested leaf. - */ - MULTI_INSTANCE_LEAF -} - diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangRequestWorkBench.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangRequestWorkBench.java deleted file mode 100644 index 2159de569a..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangRequestWorkBench.java +++ /dev/null @@ -1,785 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import com.google.common.collect.ImmutableMap; -import org.onosproject.yangutils.datamodel.YangAugment; -import org.onosproject.yangutils.datamodel.YangLeaf; -import org.onosproject.yangutils.datamodel.YangList; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo; -import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier; -import org.onosproject.yms.app.ydt.exceptions.YdtException; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtContextOperationType; -import org.onosproject.yms.ydt.YdtType; -import org.onosproject.yms.ydt.YmsOperationType; - -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.onosproject.yms.app.ydt.AppNodeFactory.getAppContext; -import static org.onosproject.yms.app.ydt.RequestedCallType.LEAF; -import static org.onosproject.yms.app.ydt.RequestedCallType.NON_LEAF; -import static org.onosproject.yms.app.ydt.RequestedCardinality.MULTI_INSTANCE; -import static org.onosproject.yms.app.ydt.RequestedCardinality.MULTI_INSTANCE_LEAF; -import static org.onosproject.yms.app.ydt.RequestedCardinality.SINGLE_INSTANCE; -import static org.onosproject.yms.app.ydt.RequestedCardinality.UNKNOWN; -import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg; -import static org.onosproject.yms.app.ydt.YdtNodeFactory.getNode; -import static org.onosproject.yms.app.ydt.YdtNodeFactory.getYangSchemaNodeTypeSpecificContext; -import static org.onosproject.yms.app.ydt.YdtUtils.checkElementCount; -import static org.onosproject.yms.app.ydt.YdtUtils.freeRestResources; -import static org.onosproject.yms.app.ydt.YdtUtils.getAppOpTypeFromYdtOpType; -import static org.onosproject.yms.app.ydt.YdtUtils.getAugmentingSchemaNode; -import static org.onosproject.yms.app.ydt.YdtUtils.getNodeIdentifier; -import static org.onosproject.yms.app.ydt.YdtUtils.getValidOpType; -import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE; -import static org.onosproject.yms.ydt.YdtContextOperationType.REMOVE; -import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_LEAF_VALUE_NODE; -import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_NODE; - -/** - * Represents YANG request work bench which contains all parameters for - * request handling and methods to build and obtain YANG data tree - * which is data (sub)instance representation, abstract of protocol. - */ -public class YangRequestWorkBench implements YdtExtendedBuilder { - - // Ydt formatted error string - private static final String FMT_NOT_EXIST = - "Application with name \"%s\" doesn't exist."; - - // Ydt error strings. - private static final String E_USE_ADD_LEAF = - "Requested Node should be created using addLeaf interface."; - - private static final String E_INVOKE_PARENT = - "Can't invoke get parent at logical root node."; - - /* - * Reference for the current context node in YANG data tree. - */ - private YdtNode curNode; - - /* - * Reference for the logical root node in YANG data tree. - */ - private YdtNode rootNode; - - /* - * Reference for the current context in ydt application tree. - */ - private YdtAppContext appCurNode; - - /* - * Reference for the logical root node context in ydt application tree. - */ - private YdtAppContext appRootNode; - - /** - * Root Node Tag attribute in YANG data tree, kept to maintain the root - * tag attributes in YDT. - *

- * First key param of map represent tagName name of tag attribute. - * Second param of map represent tagValue value of tag attribute - */ - private Map rootTagAttributeMap; - - /* - * YANG schema registry reference. - */ - private YangSchemaRegistry registry = null; - - /* - * YMS operation type. - */ - private final YmsOperationType ymsOperationType; - - /* - * YDT default operation type. - */ - private YdtContextOperationType ydtDefaultOpType; - - /* - * Flag to identify data validation need to be done by YDT or not. - */ - private boolean validate = false; - // TODO validate need to be handle later with interaction type basis in - // future when it will be supported - - /* - * Reference for application tree node set. - * This set contains the method name's generated for an augmented - * target node to avoid the duplicate entries in YDT application tree for - * multiple augmented nodes under a single XPATH. - */ - private Set augGenMethodSet; - - /** - * Creates an instance of YANG request work bench which is use to initialize - * logical rootNode and and schema registry. - * - * @param name name of logical container of a protocol - * which is a holder of the complete tree - * @param namespace namespace of logical container - * @param opType type of operation done by using YANG - * interface - * @param reg Yang schema registry - * @param isValidate Flag to identify data validation need to be - * done by YDT or not - */ - public YangRequestWorkBench(String name, String namespace, - YmsOperationType opType, - YangSchemaRegistry reg, - boolean isValidate) { - - setRootNode(new YdtLogicalNode(name, namespace)); - registry = reg; - ymsOperationType = opType; - validate = isValidate; - - setAppRootNode(getAppContext(true)); - } - - /** - * Sets the logical root node for ydt. - * - * @param node ydt logical root node - */ - private void setRootNode(YdtNode node) { - rootNode = node; - curNode = node; - } - - /** - * Sets the logical root node for ydt application tree. - * - * @param node ydt application context logical root node - */ - private void setAppRootNode(YdtAppContext node) { - appRootNode = node; - appCurNode = node; - } - - /** - * Returns the YANG schema registry of Ydt. - * This method will be used by ytb. - * - * @return YANG schema registry - */ - public YangSchemaRegistry getYangSchemaRegistry() { - return registry; - } - - /** - * Returns the ydt app context tree logical root node. - * This method will be used by yab and ytb. - * - * @return YdtAppContext app tree logical root node - */ - public YdtAppContext getAppRootNode() { - return appRootNode; - } - - /** - * Returns the ydt module node with requested node identifier. - * - * @param id module/application node identifier - * @return YANG data tree node - * @throws YdtException when user requested node schema doesn't exist or - * requested node is already part of the tree - */ - private YdtNode moduleHandler(YangSchemaNodeIdentifier id) - throws YdtException { - - YangSchemaNode node = - registry.getYangSchemaNodeUsingSchemaName(id.getName()); - - String namespace = id.getNameSpace().getModuleNamespace(); - - /* - * Checking received schema node is having same namespace as - * requested by user or not. - */ - if (node == null || namespace != null && - !namespace.equals(node.getYangSchemaNodeIdentifier() - .getNameSpace() - .getModuleNamespace())) { - throw new YdtException(errorMsg(FMT_NOT_EXIST, id.getName())); - } - - /* - * If yms operation is for query then no validation need to be - * performed. - */ - if (ymsOperationType != YmsOperationType.QUERY_REQUEST) { - // Checking whether module node is already exits in YDT or not. - try { - curNode.getCollidingChild(id); - } catch (YdtException e) { - throw new YdtException(e.getLocalizedMessage()); - } - } - - YdtNode newNode = new YdtSingleInstanceNode(node); - newNode.setYangSchemaNode(node); - return newNode; - } - - @Override - public void setRootTagAttributeMap(Map attributeTag) { - rootTagAttributeMap = attributeTag; - } - - @Override - public Map getRootTagAttributeMap() { - if (rootTagAttributeMap != null) { - return ImmutableMap.copyOf(rootTagAttributeMap); - } - return null; - } - - @Override - public void addChild(String name, String namespace) - throws IllegalArgumentException { - addChild(name, namespace, UNKNOWN, null, NON_LEAF); - } - - @Override - public void addChild(String name, String namespace, YdtType ydtType) - throws IllegalArgumentException { - addChild(name, namespace, ydtType, null); - } - - @Override - public void addChild(String name, String namespace, - YdtContextOperationType opType) - throws IllegalArgumentException { - addChild(name, namespace, UNKNOWN, opType, NON_LEAF); - } - - @Override - public void addChild(String name, String namespace, YdtType ydtType, - YdtContextOperationType opType) - throws IllegalArgumentException { - RequestedCardinality cardinality; - switch (ydtType) { - case MULTI_INSTANCE_NODE: - cardinality = MULTI_INSTANCE; - break; - case SINGLE_INSTANCE_NODE: - cardinality = SINGLE_INSTANCE; - break; - default: - throw new IllegalArgumentException(E_USE_ADD_LEAF); - } - addChild(name, namespace, cardinality, opType, NON_LEAF); - } - - /** - * Adds a last child to YANG data tree; this method is to be used by all - * protocols internally which are aware or unaware of the nature - * (single/multiple) of node. - * - * @param name name of child to be added - * @param namespace namespace of child to be added - * @param cardinality type of YANG data tree node operation - * @param opType type of requested operation over a node - * @param callType to identify the whether its a leaf or other node - * @throws IllegalArgumentException when method has been passed an illegal - * or inappropriate argument. - */ - private void addChild(String name, String namespace, - RequestedCardinality cardinality, - YdtContextOperationType opType, - RequestedCallType callType) - throws IllegalArgumentException { - - YdtNode newNode; - boolean contextSwitch = false; - YangSchemaNode augmentingSchema = null; - YangSchemaNodeIdentifier id = getNodeIdentifier(name, namespace); - if (name == null) { - if (!curNode.equals(rootNode)) { - throw new YdtException("Name is null for node other than module"); - } - - /* - * Since XML will not have module name, id.name will be null. In - * that case get schema node by using namespace. In NBI flow, - * name will never be null. - */ - YangSchemaNode node = registry - .getSchemaWrtNameSpace(id.getNameSpace().getModuleNamespace()); - id.setName(node.getName()); - } - - try { - // Module/sub-module node handler. - if (curNode.equals(rootNode)) { - newNode = moduleHandler(id); - } else { - - YangSchemaNode schemaNode; - YangSchemaNodeContextInfo contextInfo; - - // If namespace given by user null, then take namespace from parent. - if (namespace == null) { - id.setNameSpace(curNode.getYangSchemaNode().getNameSpace()); - } - - /* - * Get the already exiting YDT node in YDT tree with same - * nodeIdentifier - */ - newNode = curNode.getCollidingChild(id); - - /* - * If colliding child doesn't exist , - * then query yang data model for schema of given node. - */ - if (newNode == null) { - /* - * Get Yang Schema node context info which is having - * YangSchemaNode and ContextSwitchedNode. - */ - contextInfo = curNode.getSchemaNodeContextInfo(id); - - if (contextInfo.getContextSwitchedNode() != null) { - augmentingSchema = getAugmentingSchemaNode( - id, contextInfo); - if (augmentingSchema != null) { - /* - * As two tree(YDT and YDT Application Tree) are getting - * prepared in parallel, So setting context switch - * flag it will help ydt to keep the track whether - * ydtApp tree also need to be traversed back to parent - * or not with YDT tree traverse to parent call. - */ - contextSwitch = true; - } - } - schemaNode = contextInfo.getSchemaNode(); - } else { - /* - * If colliding child exist , then it will be leaf-list or list. - * If its leaf-list then return and add new requested - * value/valueSet in same node else take yang data model - * information from colliding child. - */ - if (newNode.getYdtType() == MULTI_INSTANCE_LEAF_VALUE_NODE) { - curNode = newNode; - return; - } - schemaNode = newNode.getYangSchemaNode(); - } - - /* - * For yms query request node specific validation are not - * required as rest-conf can call addChild api for leaf/leaf-list - * node addition also in ydt. - */ - if (ymsOperationType == YmsOperationType.QUERY_REQUEST) { - newNode = getYangSchemaNodeTypeSpecificContext(schemaNode); - } else { - newNode = getNode(schemaNode, cardinality, callType); - } - } - - opType = getValidOpType(opType, ydtDefaultOpType, newNode, curNode); - - newNode.setYdtContextOperationType(opType); - - curNode.addChild(newNode, true); - } catch (YdtException e) { - freeRestResources(rootNode); - throw new IllegalArgumentException(e.getLocalizedMessage()); - } - - // Update parent ydt node map. - curNode.updateYdtMap(newNode); - - processAppTree(opType, newNode, augmentingSchema, contextSwitch); - - curNode = newNode; - } - - /** - * Processes application tree on the bases of requested ydt node. - * - * @param opType user requested operation type - * @param childNode requested ydt node - * @param augmentingSchema schema of last augmenting node - * @param contextSwitch true, for module node call; false for modules - * sub-node calls - */ - private void processAppTree( - YdtContextOperationType opType, YdtNode childNode, - YangSchemaNode augmentingSchema, boolean contextSwitch) { - - if (curNode == rootNode) { - augGenMethodSet = new HashSet<>(); - } - - if (opType == null) { - opType = curNode.getYdtContextOperationType(); - } else { - // Updating operation type for parent nodes - appCurNode.updateAppOperationType(opType); - } - - /* - * This is to avoid multiple entries of single augmented target. - */ - if (augmentingSchema != null) { - if (!augGenMethodSet.add(((YangAugment) augmentingSchema) - .getSetterMethodName())) { - return; - } - } - - /* - * Create entry of module node in ydt app tree. - * Or if context switch happened then also add entry for same - * augmented ydt node in the ydt application tree. - */ - if (curNode.equals(rootNode) || contextSwitch) { - addChildInAppTree(childNode, augmentingSchema, opType, - contextSwitch); - - // Setting app tree node operation. - appCurNode.setOperationType(getAppOpTypeFromYdtOpType(opType)); - } - - // Updating the delete operation list in app tree. - if (opType == DELETE || opType == REMOVE) { - appCurNode.addDeleteNode(childNode); - } - } - - - /** - * Adds a last child to YANG app data tree.this method is to be used - * internally by other ydt interfaces. - * - * @param childNode node to be added in tree - * @param schemaNode last augmenting module node - * @param childOpType operation type of node - * @param isContextSwitch true, for module node call; false for modules - * sub-node calls - */ - private void addChildInAppTree(YdtNode childNode, - YangSchemaNode schemaNode, - YdtContextOperationType childOpType, - boolean isContextSwitch) { - - YdtAppNodeOperationType opType; - - DefaultYdtAppContext appContext = getAppContext(isContextSwitch); - - // Add context switched child in ydt App tree. - appCurNode.addChild(appContext); - - appCurNode = appContext; - - opType = getAppOpTypeFromYdtOpType(childOpType); - - appCurNode.setAppData(childNode, schemaNode); - - appCurNode.setOperationType(opType); - - childNode.setAppContextSwitch(); - } - - @Override - public void addLeaf(String name, String namespace, String value) - throws IllegalArgumentException { - addLeaf(name, namespace, value, null, UNKNOWN); - } - - @Override - public void addLeaf(String name, String namespace, Set valueSet) - throws IllegalArgumentException { - addLeaf(name, namespace, null, valueSet, MULTI_INSTANCE_LEAF); - } - - @Override - public void addNode(String name, String namespace) - throws IllegalArgumentException { - addChild(name, namespace, RequestedCardinality.UNKNOWN, - null, RequestedCallType.EMPTY_CONTAINER); - } - - - /** - * Adds a last leaf with list of values/single value to YANG data tree. - * This method is used by all protocols which knows the nature - * (single/multiple) or not. - * Value of leaf can be null which indicates selection node in get - * operation. - * - * @param name name of child to be added - * @param namespace namespace of child to be added, if it's - * null, parent's - * namespace will be applied to child - * @param value value of the child - * @param valueSet list of value of the child - * @param cardinality type of YANG data tree node operation - * @throws IllegalArgumentException when method has been passed an illegal - * or inappropriate argument. - */ - private void addLeaf(String name, String namespace, String value, - Set valueSet, - RequestedCardinality cardinality) - throws IllegalArgumentException { - try { - addChild(name, namespace, cardinality, null, LEAF); - - // After successful addition of child node updating the values in same. - if (value != null) { - curNode.addValue(value); - } else if (valueSet != null) { - curNode.addValueSet(valueSet); - } - } catch (YdtException e) { - freeRestResources(rootNode); - throw new IllegalArgumentException(e.getLocalizedMessage()); - } - } - - @Override - public void traverseToParent() throws IllegalStateException { - // If traverse back to parent for logical root node comes - if (curNode.equals(rootNode)) { - freeRestResources(rootNode); - throw new IllegalStateException(E_INVOKE_PARENT); - } - - try { - - // If node is of multiInstanceNode type then check key uniqueness. - if (curNode.getYdtType() == MULTI_INSTANCE_NODE) { - List keyList = ((YdtMultiInstanceNode) curNode).getKeyNodeList(); - if (keyList == null || keyList.isEmpty()) { - curNode.createKeyNodeList(); - } - } - - /* - * Check application switch for curNode if set, - * then traverseToParent in YDT application tree. - */ - if (curNode.getParent().equals(rootNode) || - curNode.getAppContextSwitch()) { - traverseToAppTreeParent(); - } - - /* - * Validate all multi Instance inside current context, - * This is not valid for leaf and leaf-list node. - */ - if (curNode instanceof YdtMultiInstanceNode || - curNode instanceof YdtSingleInstanceNode) { - curNode.validateMultiInstanceNode(); - } - - curNode = curNode.getParent(); - } catch (YdtException e) { - freeRestResources(rootNode); - throw new IllegalStateException(e.getLocalizedMessage()); - } - } - - /** - * Traverses up in YANG application tree to the parent node, - * This will be used when Ydt current context switch flag is set. - */ - private void traverseToAppTreeParent() { - appCurNode = appCurNode.getParent(); - } - - @Override - public YdtExtendedContext getCurNode() { - return curNode; - } - - @Override - public void setDefaultEditOperationType( - YdtContextOperationType opType) { - ydtDefaultOpType = opType; - } - - @Override - public YdtExtendedContext getRootNode() { - return rootNode; - } - - @Override - public YmsOperationType getYmsOperationType() { - return ymsOperationType; - } - - @Override - public void addMultiInstanceChild(String name, String namespace, - List keysValueList, - YdtContextOperationType opType) - throws IllegalArgumentException { - - addChild(name, namespace, UNKNOWN, opType, - RequestedCallType.MULTI_INSTANCE); - int inputCount = keysValueList.size(); - - try { - if (curNode.getYdtType() == MULTI_INSTANCE_LEAF_VALUE_NODE) { - - /* - * Calculating the current leaf-list node array size by adding - * existing elements count and new supplied elements by user for - * the same. - */ - // TODO instance count for leaf list need to be handled. -// if (curNode.getValueSet().size() + inputCount > expectedCount) { -// curNode.errorHandler( -// errorMsg(FMT_MANY_INS, name, expectedCount), rootNode); -// } - - /* - * After successful addition of child node updating - * the values in same. - */ - for (String value : keysValueList) { - curNode.addValue(value); - } - } else if (curNode.getYdtType() == MULTI_INSTANCE_NODE) { - - YangList yangListHolder = (YangList) curNode.getYangSchemaNode(); - List schemaKeyList = yangListHolder.getKeyList(); - int expectedCount = schemaKeyList.size(); - checkElementCount(name, expectedCount, inputCount); - - //After validation adding the key nodes under the list node. - Iterator sklIter = schemaKeyList.iterator(); - Iterator kvlIter = keysValueList.iterator(); - String keyEleName; - - while (kvlIter.hasNext()) { - String value = kvlIter.next(); - keyEleName = sklIter.next(); - addLeaf(keyEleName, namespace, value); - if (kvlIter.hasNext()) { - traverseToParentWithoutValidation(); - } - } - - curNode = curNode.getParent(); - curNode.createKeyNodeList(); - } - } catch (YdtException e) { - freeRestResources(rootNode); - throw new IllegalArgumentException(e.getLocalizedMessage()); - } - } - - /** - * Adds a last child to YANG data tree, this method is to be used by - * YANG object builder sub-calls internally. - * - * @param opType type of requested operation over a node - * @return returns added ydt node in YDT tree - */ - private YdtNode addExtendedChildNode(YdtContextOperationType opType, - YangSchemaNode schemaNode) { - - YdtNode childNode = getYangSchemaNodeTypeSpecificContext(schemaNode); - - childNode.setYangSchemaNode(schemaNode); - - childNode.setYdtContextOperationType(opType); - - curNode.addChild(childNode, true); - - curNode = childNode; - - return childNode; - } - - @Override - public YdtExtendedContext addChild(YdtContextOperationType opType, - YangSchemaNode schemaNode) { - return addExtendedChildNode(opType, schemaNode); - } - - @Override - public YdtExtendedContext addLeafList(Set valueSet, - YangSchemaNode schemaNode) { - YdtNode childNode = addExtendedChildNode(null, schemaNode); - - /* - * After successful addition of child node updating the values in - * valueSet. - */ - childNode.addValueSetWithoutValidation(valueSet); - return childNode; - } - - @Override - public YdtExtendedContext addLeaf(String value, YangSchemaNode schemaNode) { - - YdtNode childNode = addExtendedChildNode(null, schemaNode); - - // After successful addition of child node updating the values in same. - childNode.addValueWithoutValidation(value, ((YangLeaf) schemaNode) - .isKeyLeaf()); - return childNode; - } - - @Override - public void traverseToParentWithoutValidation() - throws IllegalStateException { - // If traverse back to parent for logical root node comes. - if (curNode.equals(rootNode)) { - freeRestResources(rootNode); - throw new IllegalStateException(E_INVOKE_PARENT); - } - curNode = curNode.getParent(); - } - - /** - * Returns the method name's set for an augmented target node in an - * application tree. - * - * @return augGenMethodSet set of method name's - */ - public Set getAugGenMethodSet() { - return augGenMethodSet; - } - - /** - * Sets the method name's set for an augmented target node in an - * application tree. - * - * @param augGenMethodSet set of method name's - */ - public void setAugGenMethodSet(Set augGenMethodSet) { - this.augGenMethodSet = augGenMethodSet; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangResponseWorkBench.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangResponseWorkBench.java deleted file mode 100644 index 062fe776fd..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YangResponseWorkBench.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtResponse; -import org.onosproject.yms.ydt.YmsOperationExecutionStatus; -import org.onosproject.yms.ydt.YmsOperationType; - -public class YangResponseWorkBench implements YdtResponse { - - /* - * YDT root node context. - */ - private YdtContext rootNode; - - /* - * YMS operation execution status. - */ - private YmsOperationExecutionStatus status; - - /* - * YMS operation type. - */ - private YmsOperationType ymsOperationType; - - /** - * Creates an instance of YangResponseWorkBench which is use to - * initialize rootNode and childNode. - * - * @param ydtContext root node context - * @param exeStatus YMS operation execution status - * @param opType YMS operation type - */ - public YangResponseWorkBench(YdtContext ydtContext, - YmsOperationExecutionStatus exeStatus, - YmsOperationType opType) { - rootNode = ydtContext; - status = exeStatus; - ymsOperationType = opType; - } - - @Override - public YmsOperationExecutionStatus getYmsOperationResult() { - return status; - } - - @Override - public YdtContext getRootNode() { - return rootNode; - } - - @Override - public YmsOperationType getYmsOperationType() { - return ymsOperationType; - } - - /** - * Sets root node. - * - * @param rootNode root node - */ - public void setRootNode(YdtContext rootNode) { - this.rootNode = rootNode; - } - - /** - * Sets YMS operation execution status. - * - * @param status YMS operation execution status - */ - public void setStatus(YmsOperationExecutionStatus status) { - this.status = status; - } - - /** - * Sets YMS operation type. - * - * @param ymsOperationType YMS operation type - */ - public void setYmsOperationType(YmsOperationType ymsOperationType) { - this.ymsOperationType = ymsOperationType; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppContext.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppContext.java deleted file mode 100644 index fa0d8824ed..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppContext.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtContextOperationType; - -import java.util.List; - -/** - * Abstraction of an entity which represents YANG application data tree context - * information. This context information will be used by protocol to obtain - * the information associated with YDT application node. This is used when - * protocol is walking the application data tree in both visitor and listener - * mechanism. - */ -public interface YdtAppContext { - - /** - * Returns the context of parent node. - * - * @return context of parent node - */ - YdtAppContext getParent(); - - /** - * Sets the context of parent node. - * - * @param parent node - */ - void setParent(YdtAppContext parent); - - /** - * Returns the context of first child. - * - * @return context of first child - */ - YdtAppContext getFirstChild(); - - /** - * Returns the context of last child. - * - * @return context of last child - */ - YdtAppContext getLastChild(); - - /** - * Returns the context of next sibling. - * - * @return context of next sibling - */ - YdtAppContext getNextSibling(); - - /** - * Sets the context of next sibling. - * - * @param nextSibling node - */ - void setNextSibling(YdtAppContext nextSibling); - - /** - * Returns the context of previous sibling. - * - * @return context of previous sibling - */ - YdtAppContext getPreviousSibling(); - - /** - * Sets the context of previous sibling. - * - * @param preSibling node - */ - void setPreviousSibling(YdtAppContext preSibling); - - /** - * Returns the app tree operation type. - * - * @return app tree operation type - */ - YdtAppNodeOperationType getOperationType(); - - /** - * Set the app tree operation type. - * - * @param opType app tree operation type - */ - void setOperationType(YdtAppNodeOperationType opType); - - /** - * Returns the list of nodes with operation type delete. - * - * @return list of nodes with operation type delete - */ - List getDeleteNodes(); - - /** - * Adds the ydt node with operation type delete in module delete node list. - * - * @param node ydt node with operation type delete/remove - */ - void addDeleteNode(YdtNode node); - - /** - * Returns application's root ydtContext. - * - * @return YdtContext of application root node - */ - YdtContext getModuleContext(); - - /** - * Returns the YangSchemaNode of augmenting application. - * - * @return YangSchemaNode of augmenting application - */ - YangSchemaNode getAugmentingSchemaNode(); - - /** - * Sets the YangSchemaNode of augmenting application root node. - * - * @param schemaNode YangSchemaNode of augmenting application module - */ - void setAugmentingSchemaNode(YangSchemaNode schemaNode); - - /** - * Adds a last child to ydt application data tree. - * - * @param newChild name of child to be added - */ - void addChild(YdtAppContext newChild); - - /** - * Updates the app tree operation type. - *

- * If earlier operation type was OTHER_EDIT and now operation type came as - * DELETE_ONLY or vice-versa, then update operation type to BOTH. - * - * @param opType ydt current context operation type - */ - void updateAppOperationType(YdtContextOperationType opType); - - /** - * Sets the application data for given request. If in requested parameters - * schemaNode is not null then appData will be set with - * augmentedSchemaData else with moduleSchemaData object. - * - * @param moduleNode module node of requested app - * @param schemaNode augmented schema node of requested context - */ - void setAppData(YdtNode moduleNode, YangSchemaNode schemaNode); - - /** - * Returns the app data for current context. - * - * @return app data - */ - AppData getAppData(); - - /** - * Returns the yang schema for requested node. - * - * @return schema node - */ - YangSchemaNode getYangSchemaNode(); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppNodeOperationType.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppNodeOperationType.java deleted file mode 100644 index 15b80e25d9..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtAppNodeOperationType.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -/** - * Represents type of YANG data tree node operation. - */ -public enum YdtAppNodeOperationType { - - /** - * Type of YANG application node operation for below action: - * The application containing this attribute has edit operation - * type as delete/remove in its complete ydtTree. - */ - DELETE_ONLY, - - /** - * Type of YANG application node operation for below action: - * The application containing this attribute has edit operation - * type other than delete/remove in its complete ydtTree. - */ - OTHER_EDIT, - - /** - * Type of YANG application node operation for below action: - * The application containing this attribute has edit operation - * type of combination of any edit operation type in its complete ydtTree. - */ - BOTH -} - diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtConstants.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtConstants.java deleted file mode 100644 index 8fcded11fe..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtConstants.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -/** - * Represents common constant utility for YANG data tree. - */ -final class YdtConstants { - - //No instantiation. - private YdtConstants() { - } - - /** - * Error formatting string for duplicate entries found in ydt. - */ - public static final String FMT_DUP_ENTRY = "Duplicate entry with name %s."; - - /** - * Returns the error string by filling the parameters in the given - * formatted error string. - * - * @param fmt error format string - * @param params parameters to be filled in formatted string - * @return error string - */ - public static String errorMsg(String fmt, Object... params) { - return String.format(fmt, params); - } -} \ No newline at end of file diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedBuilder.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedBuilder.java deleted file mode 100644 index 0844858dad..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedBuilder.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YdtContextOperationType; - -import java.util.Set; - -/** - * Abstraction of an entity which represents extension of YDT builder - * required by internal sub modules. - */ -public interface YdtExtendedBuilder extends YdtBuilder { - - /** - * Adds a last child to YANG data tree; this method is to be used by - * YANG object builder. - * - * @param yangSchemaNode schema node from YANG metadata - * @param opType type of requested operation over a node - * @return YDT context - */ - YdtExtendedContext addChild(YdtContextOperationType opType, - YangSchemaNode yangSchemaNode); - - /** - * Adds a last leaf list to YANG data tree; this method is to be used by - * YANG object builder. - * - * @param valueSet list of value of the child - * @param yangSchemaNode schema node from YANG metadata - * @return YDT context - */ - YdtExtendedContext addLeafList(Set valueSet, - YangSchemaNode yangSchemaNode); - - /** - * Adds a last leaf to YANG data tree; this method is to be used by - * YANG object builder. - * - * @param value value of the child - * @param yangSchemaNode schema node from YANG metadata - * @return YDT context - */ - YdtExtendedContext addLeaf(String value, YangSchemaNode yangSchemaNode); - - /** - * Traverses up in YANG data tree to the parent node, it is to be used when - * protocol is using extended context type and wanted to traverse - * up the tree without doing any validation. - * - * @throws IllegalStateException when user request for traverse to logical - * root node parent - */ - void traverseToParentWithoutValidation() throws IllegalStateException; - - @Override - YdtExtendedContext getRootNode(); - - @Override - YdtExtendedContext getCurNode(); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedContext.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedContext.java deleted file mode 100644 index 3462d40374..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedContext.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtContextOperationType; - -/** - * Abstraction of an entity which represents application related information - * maintained in YDT. - */ -public interface YdtExtendedContext extends YdtContext { - - /** - * Returns the application stored information. Application type is used to - * identify application. - * - * @param appType application type - * @return application information - */ - Object getAppInfo(AppType appType); - - /** - * Sets application stored information. Application type is used to - * identify application. - * - * @param appType application type - * @param object application information object - */ - void addAppInfo(AppType appType, Object object); - - /** - * Returns schema node from data model for curNode. - * - * @return yang schema node - */ - YangSchemaNode getYangSchemaNode(); - - /** - * Returns YDT current extended context operation type. - * - * @return operation type - */ - YdtContextOperationType getYdtContextOperationType(); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedListener.java deleted file mode 100644 index 4c55aa39ae..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedListener.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - - -import org.onosproject.yms.ydt.YdtListener; - -/** - * Abstraction of an entity which provide call back methods which are called - * by YDT extended walker while walking the YANG data tree. - *

- * This interface needs to be implemented by protocol implementing listener's - * based call backs while YDT walk, and update application specific information - * in data node. - */ -public interface YdtExtendedListener extends YdtListener { - - /** - * YANG data tree node's entry, it will be called during a node entry. - *

- * All the related information about the node can be obtain from the YDT - * context. Also it can be used to maintain / query application specific - * information. - * - * @param ydtExtendedContext YANG data tree context - */ - void enterYdtNode(YdtExtendedContext ydtExtendedContext); - - /** - * YANG data tree node's exit, it will be called during a node exit. - *

- * All the related information about the node can be obtain from the YDT - * context. Also it can be used to maintain / query application specific - * information. - * - * @param ydtExtendedContext YANG data tree context - */ - void exitYdtNode(YdtExtendedContext ydtExtendedContext); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedWalker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedWalker.java deleted file mode 100644 index 386b579e58..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtExtendedWalker.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yms.ydt.YdtWalker; - -/** - * Abstraction of an entity which provides interfaces for YDT extended walker. - */ -public interface YdtExtendedWalker extends YdtWalker { - - /** - * Walks the YANG data tree. Protocols implements YDT listener service and - * walks YDT tree with input as implemented object. - * YDT walker provides call backs to implemented methods. - * - * @param ydtListener YDT listener implemented by the protocol - * @param rootNode root node of YDT - */ - void walk(YdtExtendedListener ydtListener, YdtExtendedContext rootNode); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtLogicalNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtLogicalNode.java deleted file mode 100644 index 1456887035..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtLogicalNode.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yms.app.ydt.YdtConstants.FMT_DUP_ENTRY; -import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg; -import static org.onosproject.yms.ydt.YdtType.LOGICAL_ROOT_NODE; - -/** - * Represents a logical YANG data tree node. - */ -class YdtLogicalNode extends YdtNode { - - private final String name; - private final String namespace; - - /** - * Creates an instance of YANG logical node object. - * - * @param name logical root name - * @param namespace YANG namespace - */ - public YdtLogicalNode(String name, String namespace) { - super(LOGICAL_ROOT_NODE); - this.name = name; - this.namespace = namespace; - } - - @Override - public String getName() { - return name; - } - - @Override - public String getNamespace() { - return namespace; - } - - @Override - public String getModuleNameAsNameSpace() { - return namespace; - } - - @Override - public void validDuplicateEntryProcessing() throws YdtException { - throw new YdtException(errorMsg(FMT_DUP_ENTRY, getName())); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceLeafNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceLeafNode.java deleted file mode 100644 index 39db56abd5..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceLeafNode.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import com.google.common.collect.ImmutableSet; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import java.util.LinkedHashSet; -import java.util.Set; - -import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg; -import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_LEAF_VALUE_NODE; - -/** - * Represents YDT multi instance leaf node which can hold multiple values, it - * is atomic element and doesn't have any child. - */ -class YdtMultiInstanceLeafNode extends YdtNode { - - // ydt formatted error string - private static final String FMT_DUP_ENTRY = - "Duplicate entry found under %s leaf-list node."; - - /** - * Set of values. - */ - private final Set valueSet = new LinkedHashSet<>(); - - /** - * Creates a YANG multi instance leaf node. - * - * @param node schema of YDT multi instance node - */ - YdtMultiInstanceLeafNode(YangSchemaNode node) { - super(MULTI_INSTANCE_LEAF_VALUE_NODE, node); - } - - @Override - public Set getValueSet() { - return ImmutableSet.copyOf(valueSet); - } - - @Override - public void addValue(String value) throws YdtException { - // check the value against corresponding data-type. - //TODO validation need to be decided -// try { -// getYangSchemaNode().isValueValid(value); -// } catch (Exception e) { -// throw new YdtException(e.getLocalizedMessage()); -// } - addValueToValueSet(value); - } - - /** - * Adds value in the current node valueSet, after successful validation of - * the value. - * - * @param value value to be added - * @throws YdtException when the duplicate entry found in leaf-list node - */ - private void addValueToValueSet(String value) throws YdtException { - if (!valueSet.add(value)) { - throw new YdtException(errorMsg(FMT_DUP_ENTRY, getName())); - } - } - - @Override - public void addValueSet(Set valueSet) throws YdtException { - String value; - // Check the value against corresponding data-type. - for (Object aValueSet : valueSet) { - value = String.valueOf(aValueSet); - //TODO validation need to be decided -// try { -// value = String.valueOf(aValueSet); -// getYangSchemaNode().isValueValid(value); -// } catch (DataModelException e) { -// throw new YdtException(e.getLocalizedMessage()); -// } - addValueToValueSet(value); - } - } - - @Override - public void addValueWithoutValidation(String value, boolean isKeyLeaf) { - valueSet.add(value); - } - - @Override - public void addValueSetWithoutValidation(Set valueSet) { - this.valueSet.clear(); - this.valueSet.addAll(valueSet); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceNode.java deleted file mode 100644 index 1691d2a306..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtMultiInstanceNode.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import com.google.common.collect.ImmutableList; -import org.onosproject.yangutils.datamodel.YangList; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier; -import org.onosproject.yms.app.ydt.exceptions.YdtException; -import org.onosproject.yms.ydt.YdtContext; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg; -import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_NODE; - - -/** - * Represents a multi instance node in YANG data tree. - */ -public class YdtMultiInstanceNode extends YdtNode { - - // YDT formatted error string - private static final String FMT_MISSING_KEY = - "%s is missing some of the keys of %s."; - private static final String FMT_UNI_KEY = - "Some of the key elements are not unique in %s."; - private static final String FMT_MANY_INS = - "Too many instances of %s. Expected maximum instances %d."; - private static final String FMT_FEW_INS = - "Too few instances of %s. Expected minimum instances %d."; - - /* - * Reference for list of key element's ydtContext. - */ - private List keyNodeList = new ArrayList<>(); - - /* - * Reference for composite key string for multi Instance Node.. - */ - private String compositeKey; - - /** - * Creates a YANG multi instance node object. - * - * @param node schema of YDT multi instance node . - */ - YdtMultiInstanceNode(YangSchemaNode node) { - super(MULTI_INSTANCE_NODE, node); - } - - /** - * Returns the composite key string for current multi instance node. - * - * @return composite key string - */ - private String getCompositeKey() { - return compositeKey; - } - - /** - * Returns the list of key element's ydtContext. - * - * @return list of key element's ydtContext - */ - public List getKeyNodeList() { - return ImmutableList.copyOf(keyNodeList); - } - - @Override - public void createKeyNodeList() throws YdtException { - YangList yangListHolder = (YangList) getYangSchemaNode(); - List schemaKeyList = yangListHolder.getKeyList(); - - /* - * If key element not defined in schema or config is false then - * return no need to do create key list. - */ - if (schemaKeyList == null || !yangListHolder.isConfig()) { - return; - } - - StringBuilder ksb = new StringBuilder(); - - // Iterator for schema key name list. - Iterator sklItr = schemaKeyList.iterator(); - - List nodeList = new ArrayList<>(); - - YangSchemaNodeIdentifier id = new YangSchemaNodeIdentifier(); - id.setNameSpace(new NameSpace(getNamespace())); - // This loop should run while schema key list is not finished - while (sklItr.hasNext()) { - String name = sklItr.next(); - id.setName(name); - YdtNode collidingChild = - (YdtNode) ydtNodeMap.get(id); - - if (collidingChild == null) { - throw new YdtException( - errorMsg(FMT_MISSING_KEY, yangListHolder.getParent() - .getName(), yangListHolder.getName())); - } - - /* - * Preparing composite key string by concatenating values of - * all the key leaf. - */ - ksb.append(collidingChild.getValue()); - nodeList.add(collidingChild); - } - //Setting te key object in List. - keyNodeList = nodeList; - compositeKey = ksb.toString(); - } - - /** - * Validates the given list of instances by verifying the allowed - * instance count and key element uniqueness. - * - * @param keyStringSet set to validate the key element uniqueness - * @param list list of instance's of same list - * @throws YdtException when user requested multi instance node instance's - * count doesn't fit into the allowed instance's limit - * or doesn't have unique key's - */ - public void validateInstances(Set keyStringSet, List list) - throws YdtException { - - // Clearing the set. - keyStringSet.clear(); - - /* - * Storing the number of multiInstance node for number - * if instance validation. - */ - int instanceCount = list.size(); - - YangList listSchema = (YangList) ((YdtMultiInstanceNode) list.get(0)) - .getYangSchemaNode(); - validateInstanceCount(instanceCount, listSchema); - if (listSchema.isConfig() && instanceCount > 1) { - - /* - * Iterating over values in ydtNodeList of - * multiInstanceNode and compare the key string. - */ - for (YdtNode ydtNode : (List>) list) { - if (!keyStringSet.add(((YdtMultiInstanceNode) ydtNode) - .getCompositeKey())) { - throw new YdtException( - errorMsg(FMT_UNI_KEY, ydtNode.getName())); - } - } - } - } - - /** - * Validates the instance count for given list entry. - * - * @param instanceCount actual count - * @param list list entry for which instance count need - * to be validated - * @throws YdtException when user requested multi instance node instance's - * count doesn't fit into the allowed instance's limit - */ - private void validateInstanceCount(int instanceCount, YangList list) - throws YdtException { - - if (list.getMinElements() != null) { - int minElement = list.getMinElements().getMinElement(); - if (instanceCount < minElement) { - throw new YdtException(errorMsg(FMT_FEW_INS, list.getName(), - minElement)); - } - } - - if (list.getMaxElements() != null) { - int maxElement = list.getMaxElements().getMaxElement(); - if (instanceCount > maxElement) { - throw new YdtException(errorMsg(FMT_MANY_INS, list.getName(), - maxElement)); - } - } - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNode.java deleted file mode 100644 index 41d86e8ee1..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNode.java +++ /dev/null @@ -1,639 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo; -import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier; -import org.onosproject.yangutils.datamodel.exceptions.DataModelException; -import org.onosproject.yms.app.ydt.exceptions.YdtException; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtContextOperationType; -import org.onosproject.yms.ydt.YdtExtendedInfoType; -import org.onosproject.yms.ydt.YdtType; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg; - -/** - * Represents implementation of interfaces to build and obtain YANG data tree - * which is data (sub)instance representation, abstract of protocol. - */ -public abstract class YdtNode implements YdtExtendedContext, Cloneable { - - // YDT formatted error string - private static final String FMT_NON_LIST_STR = - "List of key cannot be created for leaf and leaf-list %s node."; - private static final String FMT_VAL_N = - "Value cannot be set in non leaf %s node."; - private static final String FMT_VAL_NS = - "ValueSet cannot be set in non leaf-list %s node."; - private static final String FMT_VAL_IN = - "Value cannot be invoke from non leaf %s node."; - private static final String FMT_VAL_INS = - "ValueSet cannot be invoke from non leaf-list %s node"; - - // YDT error string - private static final String E_EXIST = "Node is already part of a tree"; - private static final String E_ATOMIC = - "Child to be added is not atomic, it already has a child"; - private static final String E_SIB = - "Child to be added is not atomic, it already has a next sibling"; - private static final String E_PRE = - "Child to be added is not atomic, it already has a previous " + - "sibling"; - private static final String E_SUPPORT = "Requested node type not supported"; - - /* - * Parent reference. - */ - private YdtNode parent; - - /* - * First child reference. - */ - private YdtNode child; - - /* - * Next sibling reference. - */ - private YdtNode nextSibling; - - /* - * Previous sibling reference. - */ - private YdtNode previousSibling; - - /* - * Last child reference. - */ - private YdtNode lastChild; - - /* - * Type of node. - */ - private final YdtType ydtType; - - /* - * Flag to keep the track of context switch, - * if set then traverse back to parent in YDT app tree else no need. - */ - private boolean isContextSwitch; - - /* - * YDT extended information. - */ - private T ydtExtendedInfo; - - /* - * YDT extended information type. - */ - private YdtExtendedInfoType ydtExtendedInfoType; - - /* - * Ydt map to keep the track of node added under current parent node. - */ - final Map> ydtNodeMap = - new HashMap<>(); - - /* - * Ydt map to keep the track of multi instance node added under current - * parent node. - */ - private final Map>> ydtMultiInsMap = - new HashMap<>(); - - /* - * Reference for data-model schema node. - */ - private YangSchemaNode yangSchemaNode; - - /* - * Reference for ydt node operation type. - */ - private YdtContextOperationType ydtContextOperationType; - - /* - * Ydt map to keep the track of application information object - * with respective type. - */ - private final Map ydtAppInfoMap = new HashMap<>(); - - private YdtContext clonedNode; - - /** - * Creates a specific type of node. - * - * @param type of YDT node - * @param node schema node - */ - YdtNode(YdtType type, YangSchemaNode node) { - ydtType = type; - yangSchemaNode = node; - } - - /** - * Creates a specific type of node. - * - * @param type of YDT node - */ - YdtNode(YdtType type) { - ydtType = type; - } - - /** - * Returns the cloned ydt node. - * - * @return clonedNode cloned ydt node - */ - public YdtContext getClonedNode() { - return clonedNode; - } - - /** - * Sets the cloned node. - * - * @param clonedNode cloned ydt node - */ - public void setClonedNode(YdtContext clonedNode) { - this.clonedNode = clonedNode; - } - - @Override - public String getName() { - return yangSchemaNode.getName(); - } - - @Override - public String getNamespace() { - return yangSchemaNode.getNameSpace().getModuleNamespace(); - } - - @Override - public String getModuleNameAsNameSpace() { - return yangSchemaNode.getNameSpace().getModuleName(); - } - - @Override - public T getYdtContextExtendedInfo() { - return (T) ydtExtendedInfo; - } - - @Override - public YdtExtendedInfoType getYdtExtendedInfoType() { - return ydtExtendedInfoType; - } - - @Override - public YdtType getYdtType() { - return ydtType; - } - - @Override - public YdtNode getParent() { - return parent; - } - - @Override - public YdtNode getFirstChild() { - return child; - } - - @Override - public YdtNode getNextSibling() { - return nextSibling; - } - - public YangSchemaNode getYangSchemaNode() { - return yangSchemaNode; - } - - @Override - public YdtNode getLastChild() { - return lastChild; - } - - @Override - public Object getAppInfo(AppType appType) { - return ydtAppInfoMap.get(appType); - } - - @Override - public void addAppInfo(AppType appType, Object object) { - ydtAppInfoMap.put(appType, object); - } - - /** - * Returns child schema node context information. It is used by YMS to - * obtain the child schema corresponding to data node identifier. - * - * @param id represents a identifier of YANG data tree node - * @return YANG data node context information - * @throws YdtException when user requested node schema doesn't exist - */ - public YangSchemaNodeContextInfo getSchemaNodeContextInfo( - YangSchemaNodeIdentifier id) throws YdtException { - try { - return getYangSchemaNode().getChildSchema(id); - } catch (DataModelException e) { - throw new YdtException(e.getLocalizedMessage()); - } - } - - /** - * Adds the given value to the non single instance leaf node. - *

- * This default implementation throws an exception stating that - * the value cannot be added. Subclasses may override this method - * to provide the correct behavior for their specific implementation. - * - * @param value value in a single instance node - * @throws YdtException when fails to add value for non single instance - * leaf node - */ - public void addValue(String value) throws YdtException { - throw new YdtException(errorMsg(FMT_VAL_N, getName())); - } - - /** - * Creates the list of key element's of multi instance node. - * This will not be applicable on leaf and leaf-list node. - * - * @throws YdtException when user requested multi instance node is missing - * any of the key element in request or requested - * node is of type other then multi instance node - */ - public void createKeyNodeList() throws YdtException { - throw new YdtException(errorMsg(FMT_NON_LIST_STR, getName())); - } - - /** - * Adds the given value to the non single instance leaf node. - *

- * This default implementation throws an exception stating that - * the value cannot be added. Subclasses may override this method - * to provide the correct behavior for their specific implementation. - * This will be applicable in case of call from SBI so no need - * to validate the value. - * - * @param value value in a single instance leaf node - * @param isKeyLeaf true, for key leaf; false non key leaf - * @throws YdtException when fails to add value for non single instance - * leaf node - */ - public void addValueWithoutValidation(String value, boolean isKeyLeaf) - throws YdtException { - throw new YdtException(errorMsg(FMT_VAL_N, getName())); - } - - /** - * Adds the given valueSet to the non multi instance leaf node. - *

- * This default implementation throws an exception stating that - * the value cannot be added. Subclasses may override this method - * to provide the correct behavior for their specific implementation. - * - * @param valueSet valueSet in a multi instance leaf node - * @throws YdtException when fails to add value set for non multi instance - * leaf node - */ - public void addValueSet(Set valueSet) throws YdtException { - throw new YdtException(errorMsg(FMT_VAL_NS, getName())); - } - - /** - * Adds the given valueSet to the non multi instance leaf node. - *

- * This default implementation throws an exception stating that - * the value cannot be added. Subclasses may override this method - * to provide the correct behavior for their specific implementation. - * This will be applicable in case of call from SBI so no need - * to validate the value. - * - * @param valueSet valueSet in a multi instance leaf node - * @throws YdtException when fails to add value set for non multi instance - * leaf node - */ - public void addValueSetWithoutValidation(Set valueSet) - throws YdtException { - throw new YdtException(errorMsg(FMT_VAL_NS, getName())); - } - - /** - * Validates requested node allowed to have duplicate entry or not. - *

- * This default implementation throws an exception stating that - * the duplicate entry found. Subclasses may override this method - * to provide the correct behavior for their specific implementation. - * - * @throws YdtException when fails to process valid duplicate entry in YDT - */ - void validDuplicateEntryProcessing() throws YdtException { - } - - /** - * Returns already existing YdtNode in Ydt tree with same nodeIdentifier. - * - * @param id represents a identifier of YANG data tree node - * @return YDT node - * @throws YdtException when user requested node already part of YDT tree. - */ - public YdtNode getCollidingChild(YangSchemaNodeIdentifier id) - throws YdtException { - - // Find the key in YDT map for getting the colliding node. - YdtNode collidingChild = ydtNodeMap.get(id); - - /* - * If colliding child exist then process colliding node in respective - * YDT node type. - */ - if (collidingChild != null) { - collidingChild.validDuplicateEntryProcessing(); - return collidingChild; - } - - return null; - } - - /** - * Sets the parent of node. - * - * @param parent node - */ - public void setParent(YdtNode parent) { - this.parent = parent; - } - - /** - * Sets the first instance of a child node. - * - * @param child is only child to be set - */ - public void setChild(YdtNode child) { - this.child = child; - } - - /** - * Sets the next sibling of node. - * - * @param sibling YANG node - */ - public void setNextSibling(YdtNode sibling) { - nextSibling = sibling; - } - - /** - * Returns the previous sibling of a node. - * - * @return previous sibling of a node - */ - public YdtNode getPreviousSibling() { - return previousSibling; - } - - /** - * Sets the previous sibling. - * - * @param previousSibling points to predecessor sibling - */ - public void setPreviousSibling(YdtNode previousSibling) { - this.previousSibling = previousSibling; - } - - @Override - public String getValue() throws YdtException { - throw new YdtException(errorMsg(FMT_VAL_IN, getName())); - } - - @Override - public Set getValueSet() throws YdtException { - throw new YdtException(errorMsg(FMT_VAL_INS, getName())); - } - - /** - * Sets the data-model node reference for of a given node. - * - * @param yangSchemaNode YANG data node - */ - public void setYangSchemaNode(YangSchemaNode yangSchemaNode) { - this.yangSchemaNode = yangSchemaNode; - } - - /** - * Sets the last instance of a child node. - * - * @param child is last child to be set - */ - public void setLastChild(YdtNode child) { - lastChild = child; - } - - - /** - * Adds a child node. - * The children sibling list will be sorted based on node - * type. This will add single child or sub-tree based on isAtomic flag. - * - * @param newChild refers to a new child to be added - * @param isAtomic boolean flag to maintain atomicity of the current node - * @throws YdtException in case of violation of any YDT rule - */ - public void addChild(YdtContext newChild, boolean isAtomic) - throws YdtException { - - if (!(newChild instanceof YdtNode)) { - throw new YdtException(errorMsg(E_SUPPORT)); - } - - YdtNode node = (YdtNode) newChild; - - if (node.getParent() == null) { - node.setParent(this); - } else if (!node.getParent().equals(this)) { - throw new YdtException(E_EXIST); - } - - if (node.getFirstChild() != null && isAtomic) { - throw new YdtException(E_ATOMIC); - } - - if (node.getNextSibling() != null) { - throw new YdtException(E_SIB); - } - - if (node.getPreviousSibling() != null) { - throw new YdtException(E_PRE); - } - - // If new node needs to be added as first child. - if (getFirstChild() == null) { - setChild(node); - setLastChild(node); - return; - } - - // If new node needs to be added as last child. - YdtNode curNode = getLastChild(); - curNode.setNextSibling(node); - node.setPreviousSibling(curNode); - setLastChild(node); - } - - @Override - public YdtContextOperationType getYdtContextOperationType() { - return ydtContextOperationType; - } - - /** - * Sets type of yang data tree node operation. - * - * @param opType type of yang data tree node operation - */ - public void setYdtContextOperationType(YdtContextOperationType opType) { - ydtContextOperationType = opType; - } - - /** - * Updates ydt maps of current context parent node. - * - * @param node ydt node for which map need to be updated - */ - void updateYdtMap(YdtNode node) { - - YangSchemaNodeIdentifier id = node.getYangSchemaNode() - .getYangSchemaNodeIdentifier(); - /* - * If node to be added is of type multi instance node(list) then multi - * instance node to be updated - */ - if (node.getYdtType() == YdtType.MULTI_INSTANCE_NODE) { - updateMultiInsMap(id, node); - } - - /* - * If entry for multi instance node is already there with same id then - * existing entry will be overwritten by the new entry. - */ - ydtNodeMap.put(id, node); - } - - /** - * Updates ydt multi instance map of current context parent node. - * - * @param id object node identifier - * @param node ydt node for which map need to be updated - */ - private void updateMultiInsMap(YangSchemaNodeIdentifier id, YdtNode node) { - - List> list = ydtMultiInsMap.get(id); - if (list == null) { - list = new ArrayList<>(); - ydtMultiInsMap.put(id, list); - } - list.add(node); - } - - /** - * Returns the flag for node if context switch. - * - * @return isContextSwitch flag of a node - */ - public boolean getAppContextSwitch() { - return isContextSwitch; - } - - /** - * Sets the flag to keep the track of context switch. - * If it is set then when YDT get traverToParent then - * traverse back to parent in YDT application tree. - */ - public void setAppContextSwitch() { - isContextSwitch = true; - } - - /** - * Validates all multi Instance nodes inside current context. - * - * @throws YdtException when fails to validate multi instance node - */ - public void validateMultiInstanceNode() throws YdtException { - - // Set for checking whether input string is unique or not. - Set keyStringSet = new HashSet<>(); - - if (ydtMultiInsMap.size() != 0) { - /* - * Iterating over values in map and find multi instance node list - * only. - */ - for (List> ydtNodeList : - ydtMultiInsMap.values()) { - try { - ydtNodeList.get(0).validateInstances(keyStringSet, - ydtNodeList); - } catch (YdtException e) { - throw new YdtException(e.getLocalizedMessage()); - } - } - } - } - - /** - * Validates the given list of instances by verifying the allowed - * instance count and key element uniqueness. - *

- * This default implementation do nothing if requested node is of type - * other then multiInstanceNode. Subclasses may override this method - * to provide the correct behavior for their specific implementation. - * - * @param keyStringSet set to validate the key element uniqueness - * @param ydtNodeList list of instance's of same list - * @throws YdtException when user requested multi instance node instance's - * count doesn't fit into the allowed instance's limit - * or doesn't have unique key's - */ - void validateInstances(Set keyStringSet, - List> - ydtNodeList) throws YdtException { - - } - - /** - * Clones the current node contents and create a new node. - * - * @return cloned node - * @throws CloneNotSupportedException clone is not supported - * by the referred node - */ - public YdtNode clone() throws CloneNotSupportedException { - YdtNode clonedNode = (YdtNode) super.clone(); - clonedNode.setPreviousSibling(null); - clonedNode.setNextSibling(null); - clonedNode.setParent(null); - clonedNode.setChild(null); - clonedNode.setLastChild(null); - return clonedNode; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNodeFactory.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNodeFactory.java deleted file mode 100644 index 9101c97fb9..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtNodeFactory.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSchemaNodeType; -import org.onosproject.yangutils.datamodel.exceptions.DataModelException; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_MULTI_INSTANCE_LEAF_NODE; -import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_MULTI_INSTANCE_NODE; -import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_SINGLE_INSTANCE_LEAF_NODE; -import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_SINGLE_INSTANCE_NODE; -import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg; - -/** - * Represents an YANG node factory to create different types of YANG data tree - * node. - */ -final class YdtNodeFactory { - - // YDT formatted error string - private static final String FMT_NOT_EXIST = - "Schema node with name %s doesn't exist."; - //TODO need to handle later - private static final String E_MULTI_INS = - "Requested interface adds an instance of type list or " + - "leaf-list node only."; - - // No instantiation - private YdtNodeFactory() { - } - - /** - * Returns a YANG data tree node for a given name, set of values and - * instance type. - * - * @param node data node as per YANG schema metadata - * @param cardinality requested cardinality of node - * @param callType identify the call type - * @return YANG data tree node - * @throws YdtException when user requested node type doesn't exist - */ - static YdtNode getNode( - YangSchemaNode node, RequestedCardinality cardinality, - RequestedCallType callType) throws YdtException { - - YdtNode newNode; - YangSchemaNodeType type = node.getYangSchemaNodeType(); - - try { - switch (cardinality) { - - case UNKNOWN: - /* - * if requested node type is UNKNOWN, check corresponding - * yang data node type and create respective type node. - */ - newNode = getYangSchemaNodeTypeSpecificContext(node, type, - callType); - break; - - /* - * if requested node type is specified and it exist as node of - * some other type in data model then throw exception - */ - case SINGLE_INSTANCE: - validateNodeType(node, type, YANG_SINGLE_INSTANCE_NODE); - newNode = new YdtSingleInstanceNode(node); - break; - - case MULTI_INSTANCE: - - validateNodeType(node, type, YANG_MULTI_INSTANCE_NODE); - newNode = new YdtMultiInstanceNode(node); - break; - - case SINGLE_INSTANCE_LEAF: - - validateNodeType(node, type, YANG_SINGLE_INSTANCE_LEAF_NODE); - newNode = new YdtSingleInstanceLeafNode(node); - break; - - case MULTI_INSTANCE_LEAF: - - validateNodeType(node, type, YANG_MULTI_INSTANCE_LEAF_NODE); - newNode = new YdtMultiInstanceLeafNode(node); - break; - - default: - newNode = null; - } - } catch (DataModelException | YdtException e) { - throw new YdtException(e.getLocalizedMessage()); - } - - if (newNode == null) { - throw new YdtException(errorMsg(FMT_NOT_EXIST, node.getName())); - } - - return newNode; - } - - /** - * Validates the requested ydt node type against the schema node type, - * if it is not equal then it will throw warning. - * - * @param node schema node - * @param nodeType actual node type - * @param requestedType user requested node type - * @throws YdtException when user requested node type doesn't exist - */ - private static void validateNodeType( - YangSchemaNode node, YangSchemaNodeType nodeType, - YangSchemaNodeType requestedType) throws YdtException { - - if (nodeType != requestedType) { - throw new YdtException(errorMsg(FMT_NOT_EXIST, node.getName())); - } - } - - /** - * Creates Yang data tree node of YangSchemaNode type specific for - * requestedCardinality of type UNKNOWN and returns the same. - * - * @param node schema node - * @param nodeType schema node type as per YANG schema metadata - * @param callType identify the call type - * @return YANG data tree node - * @throws YdtException when user requested node type doesn't exist - */ - private static YdtNode getYangSchemaNodeTypeSpecificContext( - YangSchemaNode node, YangSchemaNodeType nodeType, - RequestedCallType callType) throws YdtException, DataModelException { - switch (callType) { - case LEAF: - switch (nodeType) { - - case YANG_SINGLE_INSTANCE_LEAF_NODE: - return new YdtSingleInstanceLeafNode(node); - - case YANG_MULTI_INSTANCE_LEAF_NODE: - return new YdtMultiInstanceLeafNode(node); - - default: - return null; - } - - case NON_LEAF: - switch (nodeType) { - - case YANG_SINGLE_INSTANCE_NODE: - return new YdtSingleInstanceNode(node); - - case YANG_MULTI_INSTANCE_NODE: - return new YdtMultiInstanceNode(node); - - default: - return null; - } - - case MULTI_INSTANCE: - switch (nodeType) { - - case YANG_MULTI_INSTANCE_LEAF_NODE: - return new YdtMultiInstanceLeafNode(node); - - case YANG_MULTI_INSTANCE_NODE: - return new YdtMultiInstanceNode(node); - - default: - throw new YdtException(E_MULTI_INS); - } - - case EMPTY_CONTAINER: - switch (nodeType) { - - case YANG_SINGLE_INSTANCE_NODE: - return new YdtSingleInstanceNode(node); - - case YANG_SINGLE_INSTANCE_LEAF_NODE: - return new YdtSingleInstanceLeafNode(node); - - default: - return null; - } - - default: - return null; - } - } - - /** - * Create Yang data tree node of YangSchemaNode type specific and - * returns the same. - * - * @param node schema node - * @return YANG data tree node - * @throws YdtException when user requested node type doesn't exist - */ - static YdtNode getYangSchemaNodeTypeSpecificContext(YangSchemaNode node) - throws YdtException { - - switch (node.getYangSchemaNodeType()) { - - case YANG_SINGLE_INSTANCE_LEAF_NODE: - return new YdtSingleInstanceLeafNode(node); - - case YANG_MULTI_INSTANCE_LEAF_NODE: - return new YdtMultiInstanceLeafNode(node); - - case YANG_SINGLE_INSTANCE_NODE: - return new YdtSingleInstanceNode(node); - - case YANG_MULTI_INSTANCE_NODE: - return new YdtMultiInstanceNode(node); - - default: - throw new YdtException(errorMsg(FMT_NOT_EXIST, node.getName())); - } - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceLeafNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceLeafNode.java deleted file mode 100644 index cc2a223b98..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceLeafNode.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yms.app.ydt.YdtConstants.FMT_DUP_ENTRY; -import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg; -import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_LEAF_VALUE_NODE; - -/** - * Represents YDT single instance leaf node which is an atomic element - * and doesn't have any child. - */ -public class YdtSingleInstanceLeafNode extends YdtNode { - - /* - * Value of the leaf. - */ - private String value; - - /* - * Value of the leaf. - */ - private Boolean isKeyLeaf = false; - - /** - * Creates a YANG single instance leaf node. - * - * @param node schema of YDT single instance leaf node - */ - YdtSingleInstanceLeafNode(YangSchemaNode node) { - super(SINGLE_INSTANCE_LEAF_VALUE_NODE, node); - } - - /** - * Returns the flag indicating that requested leaf is key-leaf or not. - * - * @return isKeyLeaf true, for key leaf; false non key leaf - */ - public Boolean isKeyLeaf() { - return isKeyLeaf; - } - - @Override - public String getValue() { - return value; - } - - @Override - public void addValue(String value) throws YdtException { - // Check the value against corresponding data-type. - //TODO validation need to be decided -// try { -// getYangSchemaNode().isValueValid(value); -// } catch (Exception e) { -// throw new YdtException(e.getLocalizedMessage()); -// } - - // After validation is successful then add value to node. - this.value = value; - } - - - @Override - public void addValueWithoutValidation(String value, boolean isKeyLeaf) { - this.value = value; - this.isKeyLeaf = isKeyLeaf; - } - - @Override - public void validDuplicateEntryProcessing() throws YdtException { - throw new YdtException(errorMsg(FMT_DUP_ENTRY, getName())); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceNode.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceNode.java deleted file mode 100644 index 83d1d81112..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtSingleInstanceNode.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yms.app.ydt.YdtConstants.FMT_DUP_ENTRY; -import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg; -import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE; - -/** - * Represents a single instance YANG data tree node. - */ -class YdtSingleInstanceNode extends YdtNode { - - /** - * Creates a YANG single instance node object. - * - * @param node schema of YDT single instance node - */ - YdtSingleInstanceNode(YangSchemaNode node) { - super(SINGLE_INSTANCE_NODE, node); - } - - @Override - public void validDuplicateEntryProcessing() throws YdtException { - throw new YdtException(errorMsg(FMT_DUP_ENTRY, getName())); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtUtils.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtUtils.java deleted file mode 100644 index 9846ab3140..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/YdtUtils.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -package org.onosproject.yms.app.ydt; - -import org.onosproject.yangutils.datamodel.YangAugment; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo; -import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier; -import org.onosproject.yangutils.datamodel.exceptions.DataModelException; -import org.onosproject.yms.app.ydt.exceptions.YdtException; -import org.onosproject.yms.ydt.YdtContextOperationType; - -import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.DELETE_ONLY; -import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT; -import static org.onosproject.yms.app.ydt.YdtConstants.errorMsg; -import static org.onosproject.yms.ydt.YdtContextOperationType.CREATE; -import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -/** - * Utils to support yang data tree node creation. - */ -final class YdtUtils { - - // YDT formatted error string - private static final String E_CREATE_OP = - "Create request is not allowed under delete operation."; - private static final String E_DELETE_OP = - "Delete request is not allowed under create operation."; - private static final String FMT_TOO_FEW = - "Too few key parameters in %s. Expected %d; actual %d."; - private static final String FMT_TOO_MANY = - "Too many key parameters in %s. Expected %d; actual %d."; - - //No instantiation. - private YdtUtils() { - } - - /** - * Returns the app tree operation type with the help of YdtOperation type. - * - * @param opType ydt operation type - * @return app tree operation type - */ - static YdtAppNodeOperationType getAppOpTypeFromYdtOpType( - YdtContextOperationType opType) { - // Get the app tree operation type. - switch (opType) { - case CREATE: - case MERGE: - case REPLACE: - return OTHER_EDIT; - - case DELETE: - case REMOVE: - return DELETE_ONLY; - - default: - return null; - //TODO handle the default data type. - } - } - - /** - * Validates the various combination of operation type. - * - * @param parentOpType Reference for parent node operation type - * @param childOpType type of YANG data tree node operation - * @throws YdtException when user requested node operation type is - * not valid as per parent node operation type - */ - private static void validateOperationType(YdtContextOperationType parentOpType, - YdtContextOperationType childOpType) - throws YdtException { - - switch (parentOpType) { - case CREATE: - // Inside the create operation delete operation should not come. - if (childOpType == DELETE) { - throw new YdtException(E_CREATE_OP); - } - break; - case DELETE: - // Inside the delete operation create operation should not come. - if (childOpType == CREATE) { - throw new YdtException(E_DELETE_OP); - } - break; - default: - //TODO check all possible scenario. - } - } - - /** - * Returns the operation type for non leaf node. - * When "operation" attribute for current node is not specified or null, - * then the operation applied to the parent data node of the - * configuration is used. If no parent data node is available, - * then the default-operation'value is used. - * If default operation type is not set, merge will be taken as default - * operation type. - * - * @param type operation type of parent node - * @param defType YDT default operation type - * @return operation type for current non leaf node - */ - private static YdtContextOperationType getOperationType( - YdtContextOperationType type, YdtContextOperationType defType) { - return type != null ? type : (defType != null ? defType : MERGE); - } - - /** - * Returns the yang node identifier with requested name and namespace. - * - * @param name name of the node - * @param namespace namespace of the node - * @return yang node identifier - */ - static YangSchemaNodeIdentifier getNodeIdentifier(String name, - String namespace) { - YangSchemaNodeIdentifier id = new YangSchemaNodeIdentifier(); - id.setName(name); - id.setNameSpace(new NameSpace(namespace)); - return id; - } - - /** - * Checks the user supplied list of argument match's the expected value - * or not. - * - * @param name name of the parent list/leaf-list node - * @param expected count suppose to be - * @param actual user supplied values count - * @throws YdtException when user requested multi instance node instance's - * count doesn't fit into the allowed instance limit - */ - static void checkElementCount(String name, int expected, - int actual) throws YdtException { - if (expected < actual) { - throw new YdtException( - errorMsg(FMT_TOO_MANY, name, expected, actual)); - } else if (expected > actual) { - throw new YdtException( - errorMsg(FMT_TOO_FEW, name, expected, actual)); - } - } - - /** - * Returns the valid operation type for requested ydt node after performing - * validation. - * - * @param opType user requested operation type - * @param newNode new requested ydt node - * @param parentNode parent node under which new node to be added - * @param defOpType YDT context operation type - * @return operation type - * @throws YdtException when user requested node operation type is - * not valid as per parent node operation type - */ - static YdtContextOperationType getValidOpType( - YdtContextOperationType opType, YdtContextOperationType defOpType, - YdtNode newNode, YdtNode parentNode) - throws YdtException { - - switch (newNode.getYdtType()) { - - case SINGLE_INSTANCE_NODE: - case MULTI_INSTANCE_NODE: - - // Reference for parent node operation type. - YdtContextOperationType parentOpType = - parentNode.getYdtContextOperationType(); - - if (opType == null) { - opType = getOperationType(parentOpType, defOpType); - } else if (parentOpType != null) { - validateOperationType(parentOpType, opType); - } - - return opType; - - /* - * Nodes other then single/multi instance node does not support - * operation type so no need of validation for those. - */ - default: - return null; - } - } - - /** - * Returns augmenting node module yang schema node. - * - * @param id schema node identifier - * @param contextInfo Yang Schema node context info - * which is having YangSchemaNode and - * ContextSwitchedNode - * @return augmenting node module yang schema node - * @throws YdtException when user requested node schema doesn't exist - */ - public static YangSchemaNode getAugmentingSchemaNode( - YangSchemaNodeIdentifier id, - YangSchemaNodeContextInfo contextInfo) throws YdtException { - YangSchemaNode lastAugMod = null; - YangSchemaNode switchedNode = - contextInfo.getContextSwitchedNode(); - - // Finding the last augmenting schema for case/choice scenario. - while (switchedNode != null) { - if (switchedNode instanceof YangAugment) { - lastAugMod = switchedNode; - } - try { - switchedNode = switchedNode.getChildSchema(id) - .getContextSwitchedNode(); - } catch (DataModelException e) { - throw new YdtException(e.getMessage()); - } - } - return lastAugMod; - } - - /** - * De-reference all the tree node by walking the whole YDT from logical - * root node. - * This will be called only when any exception occurs while processing - * the node in Ydt tree. - * - * @param rootNode ydt logical root node - */ - public static void freeRestResources(YdtNode rootNode) { - - YdtNode currentNode = rootNode; - while (currentNode != null) { - - // Move down to first child - YdtNode nextNode = currentNode.getFirstChild(); - if (nextNode != null) { - currentNode = nextNode; - continue; - } - - // No child nodes, so walk tree - while (currentNode != null) { - // To keep the track of last sibling. - YdtNode lastSibling = currentNode; - - // Move to sibling if possible. - nextNode = currentNode.getNextSibling(); - - // free currentNode resources - free(lastSibling); - - lastSibling.getNamespace(); - if (nextNode != null) { - currentNode = nextNode; - break; - } - - // Move up - if (currentNode.equals(rootNode)) { - currentNode = null; - } else { - currentNode = currentNode.getParent(); - lastSibling.setParent(null); - } - } - } - } - - /** - * Free the give YDT node by de-referencing it to null. - * - * @param node node to be freed - */ - private static void free(YdtNode node) { - if (node.getParent() != null) { - YdtNode parent = node.getParent(); - parent.setChild(null); - parent.setLastChild(null); - if (node.getNextSibling() != null) { - parent.setChild(node.getNextSibling()); - } - } - YdtNode parentRef = node.getParent(); - node = new YdtLogicalNode(null, null); - node.setParent(parentRef); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/YdtException.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/YdtException.java deleted file mode 100644 index 15243e81ed..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/YdtException.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt.exceptions; - -/** - * Represents base class for exceptions in YDT operations. - */ -public class YdtException extends RuntimeException { - - private static final long serialVersionUID = 20160211L; - - /** - * Creates a new YDT exception with given message. - * - * @param message the detail of exception in string - */ - public YdtException(String message) { - super(message); - } - - /** - * Creates a new YDT exception from given message and cause. - * - * @param message the detail of exception in string - * @param cause underlying cause of the error - */ - public YdtException(String message, Throwable cause) { - super(message, cause); - } - - /** - * Creates a new YDT exception from cause. - * - * @param cause underlying cause of the error - */ - public YdtException(Throwable cause) { - super(cause); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/package-info.java deleted file mode 100644 index b9e32c671e..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/exceptions/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -/** - * YANG data tree exceptions. - */ -package org.onosproject.yms.app.ydt.exceptions; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/package-info.java deleted file mode 100644 index 6ba98a646e..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ydt/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of build and obtain YANG data tree which is data - * (sub)instance representation, abstract of protocol. - */ -package org.onosproject.yms.app.ydt; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/YmsManager.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/YmsManager.java deleted file mode 100644 index b3e37c1023..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/YmsManager.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ymsm; - -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.core.IdGenerator; -import org.onosproject.event.ListenerService; -import org.onosproject.yms.app.yab.YangApplicationBroker; -import org.onosproject.yms.app.ych.DefaultYangCodecHandler; -import org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry; -import org.onosproject.yms.app.ydt.DefaultYdtWalker; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ynh.YangNotificationExtendedService; -import org.onosproject.yms.app.ynh.YangNotificationManager; -import org.onosproject.yms.app.ysr.DefaultYangModuleLibrary; -import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.ych.YangCodecHandler; -import org.onosproject.yms.ych.YangDataTreeCodec; -import org.onosproject.yms.ych.YangProtocolEncodingFormat; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YdtResponse; -import org.onosproject.yms.ydt.YdtWalker; -import org.onosproject.yms.ydt.YmsOperationType; -import org.onosproject.yms.ymsm.YmsService; -import org.onosproject.yms.ynh.YangNotificationService; -import org.onosproject.yms.ysr.YangModuleIdentifier; -import org.onosproject.yms.ysr.YangModuleLibrary; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; -import java.util.concurrent.ExecutorService; - -import static java.lang.String.valueOf; -import static java.util.concurrent.Executors.newSingleThreadExecutor; -import static org.onlab.util.Tools.groupedThreads; -import static org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry.initializeDefaultCodec; - -/** - * Represents implementation of YANG management system manager. - */ -@Component(immediate = true, service = YmsService.class) -public class YmsManager - implements YmsService { - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private static final String APP_ID = "org.onosproject.app.yms"; - private static final String MODULE_ID = "module-id"; - private ApplicationId appId; - private YangSchemaRegistry schemaRegistry; - //module id generator should be used to generate a new module id for - //each YSR instance. So YCH also should generate it. - private IdGenerator moduleIdGenerator; - private ExecutorService executor; - private YangNotificationExtendedService ynhExtendedService; - private YangModuleLibrary library; - - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected CoreService coreService; - - @Activate - public void activate() { - appId = coreService.registerApplication(APP_ID); - moduleIdGenerator = coreService.getIdGenerator(MODULE_ID); - schemaRegistry = new DefaultYangSchemaRegistry(); - library = new DefaultYangModuleLibrary(getNewModuleId()); - executor = newSingleThreadExecutor(groupedThreads( - "onos/apps/yang-management-system/schema-registry", - "schema-registry-handler", log)); - ynhExtendedService = new YangNotificationManager(schemaRegistry); - //Initialize the default codec - initializeDefaultCodec(); - - log.info("Started"); - } - - @Deactivate - public void deactivate() { - schemaRegistry.flushYsrData(); - executor.shutdown(); - - // TODO implementation for other components. - log.info("Stopped"); - } - - @Override - public YdtBuilder getYdtBuilder(String logicalRootName, - String rootNamespace, - YmsOperationType opType) { - return new YangRequestWorkBench(logicalRootName, rootNamespace, - opType, schemaRegistry, true); - } - - @Override - public YdtBuilder getYdtBuilder(String logicalRootName, - String rootNamespace, - YmsOperationType opType, - Object schemaRegistryForYdt) { - if (schemaRegistryForYdt != null) { - return new YangRequestWorkBench( - logicalRootName, rootNamespace, opType, - (YangSchemaRegistry) schemaRegistryForYdt, false); - } - return new YangRequestWorkBench(logicalRootName, rootNamespace, - opType, schemaRegistry, true); - } - - @Override - public YdtWalker getYdtWalker() { - return new DefaultYdtWalker(); - } - - @Override - public YdtResponse executeOperation(YdtBuilder operationRequest) { - YangApplicationBroker requestBroker = - new YangApplicationBroker(schemaRegistry); - switch (operationRequest.getYmsOperationType()) { - case EDIT_CONFIG_REQUEST: - try { - return requestBroker.processEdit(operationRequest); - } catch (CloneNotSupportedException e) { - log.error("YAB: failed to process edit request."); - } - case QUERY_CONFIG_REQUEST: - // TODO : to be implemented - case QUERY_REQUEST: - return requestBroker.processQuery(operationRequest); - case RPC_REQUEST: - return requestBroker.processOperation(operationRequest); - default: - // TODO : throw exception - } - return null; - } - - @Override - public YangNotificationService getYangNotificationService() { - return ynhExtendedService; - } - - @Override - public YangModuleLibrary getYangModuleLibrary() { - //TODO: get for YCH should be handled. - return library; - } - - @Override - public String getYangFile(YangModuleIdentifier moduleIdentifier) { - return schemaRegistry.getYangFile(moduleIdentifier); - } - - @Override - public void registerDefaultCodec(YangDataTreeCodec defaultCodec, - YangProtocolEncodingFormat dataFormat) { - YangCodecRegistry.registerDefaultCodec(defaultCodec, dataFormat); - } - - @Override - public void registerService(Object manager, Class service, - List features) { - //perform registration of service - executor.execute(() -> { - - schemaRegistry.registerApplication(manager, service); - //process notification registration. - processNotificationRegistration(manager, service); - - schemaRegistry.processModuleLibrary(service.getName(), library); - }); - // TODO implementation based on supported features. - } - - /** - * Process notification registration for manager class object. - * - * @param manager yang manager - * @param service service class - */ - private void processNotificationRegistration(Object manager, Class service) { - synchronized (service) { - if (manager != null && manager instanceof ListenerService) { - if (schemaRegistry.verifyNotificationObject(manager, service)) { - ynhExtendedService.registerAsListener((ListenerService) manager); - } - } - } - } - - @Override - public void unRegisterService(Object appManager, Class yangService) { - schemaRegistry.unRegisterApplication(appManager, yangService); - } - - @Override - public YangCodecHandler getYangCodecHandler() { - YangSchemaRegistry registry = new DefaultYangSchemaRegistry(); - DefaultYangCodecHandler handler = new DefaultYangCodecHandler(registry); - handler.setLibrary(new DefaultYangModuleLibrary(getNewModuleId())); - return handler; - } - - /** - * Returns schema registry. - * - * @return schema registry - */ - public YangSchemaRegistry getSchemaRegistry() { - return schemaRegistry; - } - - /** - * Returns new generated module id. - * - * @return new module id - */ - private String getNewModuleId() { - return valueOf(moduleIdGenerator.getNewId()); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/package-info.java deleted file mode 100644 index 19734da161..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ymsm/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of YANG application management system manager. YMSM is manager - * of the YANG Core, it manages interaction between application and protocols. - */ -package org.onosproject.yms.app.ymsm; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationExtendedService.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationExtendedService.java deleted file mode 100644 index bb012c0c7c..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationExtendedService.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ynh; - -import org.onosproject.event.ListenerService; -import org.onosproject.yms.ynh.YangNotificationService; - -/** - * Abstraction of an entity which provides interfaces to YANG extended notification - * service. It provides extended interfaces required by YMS internal modules. - * Application registers their schema with YMSM, YMSM delegates the registration - * request to YSR. YSR then looks for the presence of notification in application - * schema, presence of notification will trigger YSR to ask YANG extended notification - * service to register it as a listener to that application events. - */ -public interface YangNotificationExtendedService extends YangNotificationService { - - /** - * Registers as listener with application. This is called by YSR when it - * detects notification presence in application YANG file at the time when - * application registers it's schema with YMS. - * - * @param appObject application object - */ - void registerAsListener(ListenerService appObject); - - // TODO handle scenario when multiple services are implemented by single manager. -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationManager.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationManager.java deleted file mode 100644 index 131dcb8718..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/YangNotificationManager.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ynh; - -import org.onosproject.event.Event; -import org.onosproject.event.EventListener; -import org.onosproject.event.ListenerRegistry; -import org.onosproject.event.ListenerService; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.app.ytb.DefaultYangTreeBuilder; -import org.onosproject.yms.app.ytb.YangTreeBuilder; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ynh.YangNotification; -import org.onosproject.yms.ynh.YangNotificationEvent; -import org.onosproject.yms.ynh.YangNotificationListener; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import static org.onlab.util.Tools.groupedThreads; - -/** - * Representation of YANG notification manager. - */ -public class YangNotificationManager - extends ListenerRegistry - implements YangNotificationExtendedService { - - private static final String YANG_NOTIFICATION = "yangnotification"; - - private final Logger log = LoggerFactory.getLogger(getClass()); - - private ExecutorService executor; - - /** - * YANG notification abstract listener. This listener will listens - * abstractly to all the notification from the application to which it - * has subscribed. - */ - private YnhAbstractListener listener; - - /** - * Maintains schema registry. - */ - private YangSchemaRegistry schemaRegistry; - - /** - * Creates an instance of YANG notification manager. - * - * @param registry YANG schema registry - */ - public YangNotificationManager(YangSchemaRegistry registry) { - listener = new YnhAbstractListener(); - executor = Executors.newSingleThreadExecutor(groupedThreads( - "onos/yms", "event-handler-%d", log)); - schemaRegistry = registry; - } - - @Override - public void registerAsListener(ListenerService manager) { - manager.addListener(listener); - } - - @Override - public YangNotification getFilteredSubject(YangNotification subject, - YangNotification filter) { - return null; - // TODO - } - - /** - * Representation of YANG notification handler's abstract listener. It - * listens for events from application(s). - */ - private class YnhAbstractListener implements - EventListener { - - @Override - public void event(Event event) { - executor.execute(() -> { - try { - log.info("Event received in ynh " + event.type()); - /* - * Obtain YANG data tree corresponding to notification with - * logical root node as yangnotification, followed by - * module/sub-module, followed by notification. - */ - YangTreeBuilder builder = new DefaultYangTreeBuilder(); - YdtContext context = builder.getYdtForNotification( - event, YANG_NOTIFICATION, schemaRegistry); - /* - * Create YANG notification from obtained data tree and - * send it to registered protocols. - */ - YangNotification notification = - new YangNotification(context); - process(new YangNotificationEvent(notification)); - } catch (Exception e) { - log.warn("Failed to process {}", event, e); - } - }); - } - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/package-info.java deleted file mode 100644 index 56e65d2b00..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ynh/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of YANG notification handler. YNH handles notification - * from the application and provide it to the protocols. - */ -package org.onosproject.yms.app.ynh; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/DefaultYobBuilder.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/DefaultYobBuilder.java deleted file mode 100644 index a90137aab0..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/DefaultYobBuilder.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.onosproject.yms.app.ydt.DefaultYdtWalker; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ydt.YdtExtendedListener; -import org.onosproject.yms.app.ydt.YdtExtendedWalker; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; - -import static org.onosproject.yms.app.ydt.AppType.YOB; - -/** - * Represents implementation of interfaces to build and obtain YANG objects - * from YDT. - */ -public class DefaultYobBuilder implements YobBuilder { - - /** - * Creates an instance of DefaultYobBuilder. - */ - public DefaultYobBuilder() { - } - - @Override - public Object getYangObject(YdtExtendedContext ydtRootNode, - YangSchemaRegistry schemaRegistry) { - YdtExtendedWalker ydtExtendedWalker = new DefaultYdtWalker(); - YdtExtendedListener yobListener = - new YobListener(ydtRootNode, schemaRegistry); - if (ydtRootNode != null) { - ydtExtendedWalker.walk(yobListener, ydtRootNode); - YobWorkBench yobWorkBench = - (YobWorkBench) ydtRootNode.getAppInfo(YOB); - return yobWorkBench.getBuilderOrBuiltObject().getBuiltObject(); - } - return null; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilder.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilder.java deleted file mode 100644 index fc8af30a14..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilder.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; - -/** - * Abstraction of an entity which provides interfaces to YANG object - * builder. - */ -interface YobBuilder { - - /** - * Returns the YANG object. This will be called by NBI broker. - * - * @param ydtExtendedContext ydtExtendedContext is used to get application - * related information maintained in YDT - * @param schemaRegistry schema registry - * @return YANG builder object - */ - Object getYangObject(YdtExtendedContext ydtExtendedContext, - YangSchemaRegistry schemaRegistry); -} - diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilderOrBuiltObject.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilderOrBuiltObject.java deleted file mode 100644 index 71900c232c..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobBuilderOrBuiltObject.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.onosproject.yms.app.yob.exception.YobException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static org.onosproject.yms.app.yob.YobConstants.E_BUILDER_IS_NOT_ALREADY_SET; -import static org.onosproject.yms.app.yob.YobConstants.E_BUILDER_IS_NOT_SET; -import static org.onosproject.yms.app.yob.YobConstants.E_BUILT_OBJ_IS_NOT_SET; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_CREATE_OBJ; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_LOAD_CLASS; -import static org.onosproject.yms.app.yob.YobConstants.E_OBJ_BUILDING_WITHOUT_BUILDER; -import static org.onosproject.yms.app.yob.YobConstants.E_OBJ_IS_ALREADY_BUILT_NOT_BUILD; -import static org.onosproject.yms.app.yob.YobConstants.E_OBJ_IS_ALREADY_BUILT_NOT_FETCH; -import static org.onosproject.yms.app.yob.YobConstants.E_OBJ_IS_ALREADY_BUILT_NOT_SET; -import static org.onosproject.yms.app.yob.YobConstants.E_OBJ_IS_NOT_SET_NOT_FETCH; -import static org.onosproject.yms.app.yob.YobConstants.E_REFLECTION_FAIL_TO_CREATE_OBJ; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_CREATE_OBJ; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_LOAD_CLASS; -import static org.onosproject.yms.app.yob.YobConstants.L_REFLECTION_FAIL_TO_CREATE_OBJ; - -/** - * Represents the container of YANG object being built or the builder. - */ -class YobBuilderOrBuiltObject { - private static final Logger log = - LoggerFactory.getLogger(YobWorkBench.class); - - /** - * Is the contained object a built object. - */ - private boolean isBuilt; - - /** - * Builder or built object. - */ - private Object builderOrBuiltObject; - - /** - * Default / op param builder class. - */ - Class yangBuilderClass; - - /** - * Default Class. - */ - Class yangDefaultClass; - - /** - * Create Node Object holder. - * - * @param qualifiedClassName name of the class - * @param registeredAppClassLoader class loader to be used - * @throws YobException if failed to create the node object - */ - YobBuilderOrBuiltObject(String qualifiedClassName, - ClassLoader registeredAppClassLoader) { - try { - yangDefaultClass = - registeredAppClassLoader.loadClass(qualifiedClassName); - yangBuilderClass = yangDefaultClass.getDeclaredClasses()[0]; - setBuilderObject(yangBuilderClass.newInstance()); - } catch (ClassNotFoundException e) { - log.error(L_FAIL_TO_LOAD_CLASS, qualifiedClassName); - throw new YobException(E_FAIL_TO_LOAD_CLASS + qualifiedClassName); - } catch (InstantiationException | IllegalAccessException e) { - log.error(L_FAIL_TO_CREATE_OBJ, qualifiedClassName); - throw new YobException(E_FAIL_TO_CREATE_OBJ + qualifiedClassName); - } catch (NullPointerException e) { - log.error(L_REFLECTION_FAIL_TO_CREATE_OBJ, qualifiedClassName); - throw new YobException(E_REFLECTION_FAIL_TO_CREATE_OBJ + - qualifiedClassName); - } - } - - /** - * Returns the builder object if it is set. - * - * @return builder object - * @throws YobException if builder is not available - */ - Object getBuilderObject() { - if (isBuilt) { - throw new YobException(E_OBJ_IS_ALREADY_BUILT_NOT_FETCH); - } - - if (builderOrBuiltObject == null) { - throw new YobException(E_BUILDER_IS_NOT_SET); - } - - return builderOrBuiltObject; - } - - /** - * Check if the builder object is being initialized for the first time and - * set it. - * - * @param builderObject new builder object - * @throws YobException if built object is not available - */ - private void setBuilderObject(Object builderObject) { - if (isBuilt) { - throw new YobException(E_OBJ_IS_ALREADY_BUILT_NOT_SET); - } - - if (builderOrBuiltObject != null) { - throw new YobException(E_BUILDER_IS_NOT_ALREADY_SET); - } - - builderOrBuiltObject = builderObject; - } - - /** - * Returns the built object. - * - * @return built object - * @throws YobException if built object is not available or if it is not - * built - */ - Object getBuiltObject() { - if (!isBuilt) { - throw new YobException(E_OBJ_IS_NOT_SET_NOT_FETCH); - } - - if (builderOrBuiltObject == null) { - throw new YobException(E_BUILT_OBJ_IS_NOT_SET); - } - - return builderOrBuiltObject; - } - - /** - * Check if the built object is being initialized for the 1st time and - * set it. - * - * @param builtObject new built object - * @throws YobException if builder object is not available or if it is - * already built - */ - void setBuiltObject(Object builtObject) { - if (isBuilt) { - throw new YobException(E_OBJ_IS_ALREADY_BUILT_NOT_BUILD); - } - - if (builderOrBuiltObject == null) { - throw new YobException(E_OBJ_BUILDING_WITHOUT_BUILDER); - } - - isBuilt = true; - builderOrBuiltObject = builtObject; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobConstants.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobConstants.java deleted file mode 100644 index 84ccf388ec..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobConstants.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -/** - * Represents common constant utility for YANG object builder. - */ -final class YobConstants { - - private YobConstants() { - } - - static final String FROM_STRING = "fromString"; - static final String BUILD = "build"; - static final String OP_PARAM = "OpParam"; - static final String DEFAULT = "Default"; - static final String ADD_TO = "addTo"; - static final String VALUE_OF = "valueOf"; - static final String OP_TYPE = "OpType"; - static final String ONOS_YANG_OP_TYPE = "OnosYangOpType"; - static final String OF = "of"; - static final String PERIOD = "."; - static final String SPACE = " "; - static final String ADD_AUGMENT_METHOD = "addYangAugmentedInfo"; - static final String YANG = "yang"; - static final String JAVA_LANG = "java.lang"; - static final String LEAF_IDENTIFIER = "LeafIdentifier"; - static final String SELECT_LEAF = "selectLeaf"; - static final String EVENT_SUBJECT = "EventSubject"; - static final String EVENT = "Event"; - static final String TYPE = "Type"; - - //Error strings - static final String E_NO_HANDLE_FOR_YDT = "No handler for YDT node"; - static final String E_HAS_NO_CHILD = " does not have child "; - static final String E_SET_OP_TYPE_FAIL = "Failed to set Operation Type"; - static final String E_FAIL_TO_BUILD = "Failed to build the object: "; - static final String L_FAIL_TO_BUILD = "Failed to build the object: {}"; - static final String E_FAIL_TO_GET_FIELD = "Failed to get field for class: "; - static final String L_FAIL_TO_GET_FIELD = - "Failed to get field for class: {}"; - static final String E_FAIL_TO_GET_METHOD = - "Failed to get method for class: "; - static final String L_FAIL_TO_GET_METHOD = - "Failed to get method for class: {}"; - static final String E_FAIL_TO_LOAD_CLASS = - "Failed to load class for class: "; - static final String L_FAIL_TO_LOAD_CLASS = - "Failed to load class for class: {}"; - static final String E_YDT_TYPE_IS_NOT_SUPPORT = - "Given YDT type is not supported."; - static final String E_FAIL_TO_CREATE_OBJ = - "Failed to create an object for class: "; - static final String L_FAIL_TO_CREATE_OBJ = - "Failed to create an object for class: {}"; - static final String E_REFLECTION_FAIL_TO_CREATE_OBJ = - "Reflection failed to create an object for class: "; - static final String L_REFLECTION_FAIL_TO_CREATE_OBJ = - "Reflection failed to create an object for class: {}"; - static final String E_FAIL_TO_LOAD_CONSTRUCTOR = - "Failed to load constructor for class: {}"; - static final String E_FAIL_TO_INVOKE_METHOD = - "Failed to invoke method for class: "; - static final String L_FAIL_TO_INVOKE_METHOD = - "Failed to invoke method for class: {}"; - static final String E_DATA_TYPE_NOT_SUPPORT = - "Given data type is not supported."; - static final String E_OBJ_IS_ALREADY_BUILT_NOT_FETCH = - "Object is already built, cannot fetch builder"; - static final String E_BUILDER_IS_NOT_SET = - "Builder is not yet set, cannot fetch it"; - static final String E_BUILT_OBJ_IS_NOT_SET = - "Built object is not set"; - static final String E_OBJ_IS_ALREADY_BUILT_NOT_SET = - "Object is already built, cannot set builder"; - static final String E_BUILDER_IS_NOT_ALREADY_SET = - "Builder is not already set"; - static final String E_OBJ_IS_NOT_SET_NOT_FETCH = - "Builder is not yet set, cannot fetch it"; - static final String E_OBJ_IS_ALREADY_BUILT_NOT_BUILD = - "Object is already built, cannot build again"; - static final String E_OBJ_BUILDING_WITHOUT_BUILDER = - "Object building without builder"; - static final String E_MISSING_DATA_IN_NODE = - "YANG data tree is missing the data required for YOB"; - static final String E_INVALID_DATA_TREE = - "YANG tree does not have a application root"; - static final String E_INVALID_EMPTY_DATA = - "Value for empty data type is invalid"; -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandler.java deleted file mode 100644 index 1f5fc08993..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandler.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static org.onosproject.yms.app.ydt.AppType.YOB; -import static org.onosproject.yms.app.yob.YobUtils.getQualifiedDefaultClass; - -/** - * Represents a YANG object builder handler to process the ydt content and - * build yang object. - */ -abstract class YobHandler { - - private static final Logger log = LoggerFactory.getLogger(YobHandler.class); - - /** - * Creates a YANG builder object. - * - * @param curNode ydtExtendedContext is used to get - * application related information maintained - * in YDT - * @param rootNode ydtRootNode is refers to module node - * @param registry registry - */ - public void createBuilder(YdtExtendedContext curNode, - YdtExtendedContext rootNode, - YangSchemaRegistry registry) { - String setterName = null; - YangSchemaNode node = curNode.getYangSchemaNode(); - while (node.getReferredSchema() != null) { - node = node.getReferredSchema(); - } - - String qualName = getQualifiedDefaultClass(node); - ClassLoader classLoader = YobUtils.getClassLoader(registry, qualName, - curNode, rootNode); - - if (curNode != rootNode) { - setterName = node.getJavaAttributeName(); - } - - Object workBench = new YobWorkBench(curNode.getYangSchemaNode(), classLoader, qualName, - setterName); - - curNode.addAppInfo(YOB, workBench); - } - - /** - * Sets the YANG built object in corresponding parent class method. - * - * @param ydtNode ydtExtendedContext is used to get application - * related information maintained in YDT - * @param schemaRegistry YANG schema registry - */ - public void setInParent(YdtExtendedContext ydtNode, - YangSchemaRegistry schemaRegistry) { - YdtExtendedContext parentNode = (YdtExtendedContext) ydtNode.getParent(); - YobWorkBench parentWorkbench = (YobWorkBench) parentNode.getAppInfo(YOB); - parentWorkbench.setObject(ydtNode, schemaRegistry); - } - - /** - * Builds the object. - * - * @param ydtNode ydtExtendedContext is used to get - * application related - * information maintained in YDT - * @param ydtRootNode ydtRootNode - * @param schemaRegistry YANG schema registry - */ - public void buildObject(YdtExtendedContext ydtNode, - YdtExtendedContext ydtRootNode, - YangSchemaRegistry schemaRegistry) { - YobWorkBench yobWorkBench = (YobWorkBench) ydtNode.getAppInfo(YOB); - yobWorkBench.buildObject(ydtNode.getYdtContextOperationType(), schemaRegistry); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandlerFactory.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandlerFactory.java deleted file mode 100644 index e91d0cf269..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobHandlerFactory.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.yob.exception.YobException; -import org.onosproject.yms.ydt.YdtType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.Map; - -import static org.onosproject.yms.app.yob.YobConstants.E_YDT_TYPE_IS_NOT_SUPPORT; -import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_LEAF_VALUE_NODE; -import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_NODE; -import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_LEAF_VALUE_NODE; -import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE; - -/** - * Represents an YANG object builder factory to create different types - * of YANG data tree node. - */ -final class YobHandlerFactory { - - private static final Logger log = - LoggerFactory.getLogger(YobHandlerFactory.class); - - /** - * Map of YANG object builder handler. - */ - private static final Map HANDLER_MAP = new HashMap<>(); - - /** - * Create instance of YobHandlerFactory. - */ - private YobHandlerFactory() { - HANDLER_MAP.put(SINGLE_INSTANCE_NODE, new YobSingleInstanceHandler()); - HANDLER_MAP.put(MULTI_INSTANCE_NODE, new YobMultiInstanceHandler()); - HANDLER_MAP.put(SINGLE_INSTANCE_LEAF_VALUE_NODE, - new YobSingleInstanceLeafHandler()); - HANDLER_MAP.put(MULTI_INSTANCE_LEAF_VALUE_NODE, - new YobMultiInstanceLeafHandler()); - } - - /** - * Returns the corresponding YOB handler for current context. - * - * @param currentNode current YDT node for which object needs to be created - * @return handler to create the object - * @throws YobException if the YDT node type is not supported in YOB - */ - YobHandler getYobHandlerForContext(YdtExtendedContext currentNode) { - YobHandler yobHandler = HANDLER_MAP.get(currentNode.getYdtType()); - if (yobHandler == null) { - log.error(E_YDT_TYPE_IS_NOT_SUPPORT); - throw new YobException(E_YDT_TYPE_IS_NOT_SUPPORT); - } - return yobHandler; - } - - /** - * Returns the YANG object builder factory instance. - * - * @return YANG object builder factory instance - */ - public static YobHandlerFactory instance() { - return LazyHolder.INSTANCE; - } - - /* - * Bill Pugh Singleton pattern. INSTANCE won't be instantiated until the - * LazyHolder class is loaded via a call to the instance() method below. - */ - private static class LazyHolder { - private static final YobHandlerFactory INSTANCE = - new YobHandlerFactory(); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobListener.java deleted file mode 100644 index f0411cc2dc..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobListener.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ydt.YdtExtendedListener; -import org.onosproject.yms.app.yob.exception.YobException; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.ydt.YdtContext; - -import static org.onosproject.yms.app.yob.YobConstants.E_MISSING_DATA_IN_NODE; -import static org.onosproject.yms.app.yob.YobHandlerFactory.instance; - -/** - * Represents implementation of YANG object builder listener. - */ -class YobListener implements YdtExtendedListener { - - /** - * Reference to the ydt root node. - */ - private YdtExtendedContext rootNode; - - /** - * Reference to YANG schema registry. - */ - private YangSchemaRegistry schemaRegistry; - - /** - * Reference to YOB handler. - */ - private YobHandlerFactory handlerFactory; - - /** - * Creates an instance of YANG object builder listener. - * - * @param rootNode refers to YDT context - * @param schemaRegistry refers to YANG schema registry - */ - YobListener(YdtExtendedContext rootNode, - YangSchemaRegistry schemaRegistry) { - this.rootNode = rootNode; - this.schemaRegistry = schemaRegistry; - this.handlerFactory = instance(); - } - - @Override - public void enterYdtNode(YdtExtendedContext node) { - - YobHandler nodeHandler = - handlerFactory.getYobHandlerForContext(node); - - nodeHandler.createBuilder(node, rootNode, schemaRegistry); - - } - - @Override - public void exitYdtNode(YdtExtendedContext node) { - YobHandler nodeHandler = - handlerFactory.getYobHandlerForContext(node); - - nodeHandler.buildObject(node, rootNode, schemaRegistry); - - // The current ydt context node and root node are same then built - // object needs to be returned. - if (!node.equals(rootNode)) { - nodeHandler.setInParent(node, schemaRegistry); - } - - } - - /** - * Does not support walking of non extended context YDT. - * - * @param ydtContext YANG data tree context - * @throws YobException if YDT walker is not using extended context walker - */ - @Override - public void enterYdtNode(YdtContext ydtContext) { - throw new YobException(E_MISSING_DATA_IN_NODE); - } - - /** - * Does not support walking of non extended context YDT. - * - * @param ydtContext YANG data tree context - * @throws YobException if YDT walker is not using extended context walker - */ - @Override - public void exitYdtNode(YdtContext ydtContext) { - throw new YobException(E_MISSING_DATA_IN_NODE); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceHandler.java deleted file mode 100644 index 4e9e3e54ac..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceHandler.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -/** - * Represents a multi instance node handler in YANG object builder. - */ -class YobMultiInstanceHandler extends YobHandler { -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceLeafHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceLeafHandler.java deleted file mode 100644 index 19c39d7770..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobMultiInstanceLeafHandler.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - - -import org.onosproject.yangutils.datamodel.YangLeafList; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangType; -import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfoContainer; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.yob.exception.YobException; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.util.Set; - -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.IDENTITYREF; -import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase; -import static org.onosproject.yms.app.ydt.AppType.YOB; -import static org.onosproject.yms.app.yob.YobConstants.ADD_TO; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_INVOKE_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_INVOKE_METHOD; - -/** - * Represents a multi instance leaf node handler in YANG object builder. - */ -class YobMultiInstanceLeafHandler - extends YobHandler { - - private static final Logger log = - LoggerFactory.getLogger(YobMultiInstanceLeafHandler.class); - - @Override - public void createBuilder(YdtExtendedContext curNode, - YdtExtendedContext rootNode, - YangSchemaRegistry registry) { - // For multi instance leaf no need to create an object. - } - - @Override - public void buildObject(YdtExtendedContext ydtNode, - YdtExtendedContext ydtRootNode, - YangSchemaRegistry schemaRegistry) { - // For multi instance leaf no need to build object. - } - - /** - * Set the leaf list values in the YANG object. - * - * @param leafListNode leaf list YDT node - * @param schemaRegistry YANG schema registry - * @throws YobException if failed to invoke the leaf list's setter - */ - @Override - public void setInParent(YdtExtendedContext leafListNode, - YangSchemaRegistry schemaRegistry) { - Class parentBuilderClass = null; - YangSchemaNode yangSchemaNode = leafListNode.getYangSchemaNode(); - while (yangSchemaNode.getReferredSchema() != null) { - yangSchemaNode = yangSchemaNode.getReferredSchema(); - } - - YdtExtendedContext parentYdtNode = - (YdtExtendedContext) leafListNode.getParent(); - YobWorkBench parentYobWorkBench = - (YobWorkBench) parentYdtNode.getAppInfo(YOB); - Set valueSet = leafListNode.getValueSet(); - - for (String value : valueSet) { - try { - String setterInParent = yangSchemaNode.getJavaAttributeName(); - Object builderObject = parentYobWorkBench - .getParentBuilder(leafListNode, schemaRegistry); - parentBuilderClass = builderObject.getClass(); - Field leafName = parentBuilderClass - .getDeclaredField(setterInParent); - ParameterizedType genericListType = - (ParameterizedType) leafName.getGenericType(); - Class genericListClass; - if (((YangLeafList) leafListNode.getYangSchemaNode()) - .getDataType().getDataType() == IDENTITYREF) { - ParameterizedType type = (ParameterizedType) - genericListType.getActualTypeArguments()[0]; - genericListClass = type.getClass().getClass(); - } else { - genericListClass = (Class) genericListType.getActualTypeArguments()[0]; - } - - Method setterMethod = parentBuilderClass.getDeclaredMethod( - ADD_TO + getCapitalCase(setterInParent), genericListClass); - - JavaQualifiedTypeInfoContainer javaQualifiedType = - (JavaQualifiedTypeInfoContainer) yangSchemaNode; - YangType yangType = - ((YangLeafList) javaQualifiedType).getDataType(); - YobUtils.setDataFromStringValue(yangType.getDataType(), value, - setterMethod, - builderObject, leafListNode); - } catch (NoSuchMethodException | InvocationTargetException - | IllegalAccessException | NoSuchFieldException e) { - log.error(L_FAIL_TO_INVOKE_METHOD, - parentBuilderClass.getName()); - throw new YobException(E_FAIL_TO_INVOKE_METHOD + - parentBuilderClass.getName()); - } - } - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceHandler.java deleted file mode 100644 index eaa098d090..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceHandler.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -/** - * Represents a single instance node handler in YANG object builder. - */ -class YobSingleInstanceHandler extends YobHandler { -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceLeafHandler.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceLeafHandler.java deleted file mode 100644 index bf323bab3f..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobSingleInstanceLeafHandler.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.onosproject.yangutils.datamodel.YangLeaf; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangType; -import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.yob.exception.YobException; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import static org.onosproject.yms.app.ydt.AppType.YOB; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_INVOKE_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_INVOKE_METHOD; - -/** - * Represents a single instance leaf node handler in YANG object builder. - */ -class YobSingleInstanceLeafHandler extends YobHandler { - - private static final Logger log = - LoggerFactory.getLogger(YobSingleInstanceLeafHandler.class); - - @Override - public void createBuilder(YdtExtendedContext curNode, - YdtExtendedContext rootNode, - YangSchemaRegistry registry) { - // For single instance leaf no need to create an object. - } - - @Override - public void buildObject(YdtExtendedContext ydtNode, - YdtExtendedContext ydtRootNode, - YangSchemaRegistry schemaRegistry) { - // For single instance leaf no need to build an object. - } - - /** - * Set the leaf's value in the YANG object. - * - * @param leafNode leaf YDT node - * @param schemaRegistry YANG schema registry - * @throws YobException if failed to invoke the leaf's setter - */ - @Override - public void setInParent(YdtExtendedContext leafNode, - YangSchemaRegistry schemaRegistry) { - Class builderClass = null; - - try { - YangSchemaNode schemaNode = leafNode.getYangSchemaNode(); - while (schemaNode.getReferredSchema() != null) { - schemaNode = schemaNode.getReferredSchema(); - } - - String setterInParent = schemaNode.getJavaAttributeName(); - YdtExtendedContext parentNode = - (YdtExtendedContext) leafNode.getParent(); - YobWorkBench workBench = (YobWorkBench) parentNode.getAppInfo(YOB); - Object builderObject = workBench - .getParentBuilder(leafNode, schemaRegistry); - builderClass = builderObject.getClass(); - if (leafNode.getValue() != null || ((YangLeaf) schemaNode) - .getDataType().getDataType() == YangDataTypes.EMPTY) { - Field leafName = builderClass.getDeclaredField(setterInParent); - Method setterMethod = builderClass - .getDeclaredMethod(setterInParent, leafName.getType()); - YangType yangType = ((YangLeaf) schemaNode).getDataType(); - YobUtils.setDataFromStringValue(yangType.getDataType(), leafNode - .getValue(), - setterMethod, builderObject, - leafNode); - } else { - YobUtils.setSelectLeaf(builderClass, leafNode, - schemaRegistry, builderObject); - } - } catch (NoSuchMethodException | InvocationTargetException | - IllegalAccessException | NoSuchFieldException e) { - log.error(L_FAIL_TO_INVOKE_METHOD, builderClass.getName()); - throw new YobException(E_FAIL_TO_INVOKE_METHOD + - builderClass.getName()); - } - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobUtils.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobUtils.java deleted file mode 100644 index eff2f28a3e..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobUtils.java +++ /dev/null @@ -1,785 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.onosproject.yangutils.datamodel.RpcNotificationContainer; -import org.onosproject.yangutils.datamodel.YangDerivedInfo; -import org.onosproject.yangutils.datamodel.YangIdentity; -import org.onosproject.yangutils.datamodel.YangIdentityRef; -import org.onosproject.yangutils.datamodel.YangLeaf; -import org.onosproject.yangutils.datamodel.YangLeafList; -import org.onosproject.yangutils.datamodel.YangLeafRef; -import org.onosproject.yangutils.datamodel.YangNode; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo; -import org.onosproject.yangutils.datamodel.YangType; -import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.yob.exception.YobException; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.Base64; - -import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_AUGMENT_NODE; -import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute; -import static org.onosproject.yms.app.ydt.AppType.YOB; -import static org.onosproject.yms.app.yob.YobConstants.DEFAULT; -import static org.onosproject.yms.app.yob.YobConstants.EVENT; -import static org.onosproject.yms.app.yob.YobConstants.EVENT_SUBJECT; -import static org.onosproject.yms.app.yob.YobConstants.E_DATA_TYPE_NOT_SUPPORT; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_CREATE_OBJ; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_GET_FIELD; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_GET_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_INVOKE_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_LOAD_CLASS; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_LOAD_CONSTRUCTOR; -import static org.onosproject.yms.app.yob.YobConstants.E_INVALID_DATA_TREE; -import static org.onosproject.yms.app.yob.YobConstants.E_INVALID_EMPTY_DATA; -import static org.onosproject.yms.app.yob.YobConstants.FROM_STRING; -import static org.onosproject.yms.app.yob.YobConstants.LEAF_IDENTIFIER; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_GET_FIELD; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_GET_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_INVOKE_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_LOAD_CLASS; -import static org.onosproject.yms.app.yob.YobConstants.OF; -import static org.onosproject.yms.app.yob.YobConstants.OP_PARAM; -import static org.onosproject.yms.app.yob.YobConstants.PERIOD; -import static org.onosproject.yms.app.yob.YobConstants.SELECT_LEAF; -import static org.onosproject.yms.app.yob.YobConstants.TYPE; -import static org.onosproject.yms.app.yob.YobConstants.VALUE_OF; - -/** - * Utils to support object creation. - */ -public final class YobUtils { - - private static final Logger log = LoggerFactory.getLogger(YobUtils.class); - - // no instantiation - private YobUtils() { - } - - /** - * Sets data from string value in parent method. - * - * @param type refers to YANG type - * @param leafValue leafValue argument is used to set the value - * in method - * @param parentSetterMethod Invokes the underlying method represented - * by this parentSetterMethod - * @param parentBuilderObject the parentBuilderObject is to invoke the - * underlying method - * @param ydtExtendedContext ydtExtendedContext is used to get - * application related - * information maintained in YDT - * @throws InvocationTargetException if failed to invoke method - * @throws IllegalAccessException if member cannot be accessed - * @throws NoSuchMethodException if method is not found - */ - static void setDataFromStringValue(YangDataTypes type, String leafValue, - Method parentSetterMethod, - Object parentBuilderObject, - YdtExtendedContext ydtExtendedContext) - throws InvocationTargetException, IllegalAccessException, - NoSuchMethodException { - switch (type) { - case INT8: - parentSetterMethod.invoke(parentBuilderObject, - Byte.parseByte(leafValue)); - break; - - case UINT8: - case INT16: - parentSetterMethod.invoke(parentBuilderObject, - Short.parseShort(leafValue)); - break; - - case UINT16: - case INT32: - parentSetterMethod.invoke(parentBuilderObject, - Integer.parseInt(leafValue)); - break; - - case UINT32: - case INT64: - parentSetterMethod.invoke(parentBuilderObject, - Long.parseLong(leafValue)); - break; - - case UINT64: - parentSetterMethod.invoke(parentBuilderObject, - new BigInteger(leafValue)); - break; - - case EMPTY: - if (leafValue == null || "".equals(leafValue)) { - parentSetterMethod.invoke(parentBuilderObject, true); - } else { - log.info(E_INVALID_EMPTY_DATA); - } - break; - - case BOOLEAN: - parentSetterMethod.invoke(parentBuilderObject, - Boolean.parseBoolean(leafValue)); - break; - - case STRING: - parentSetterMethod.invoke(parentBuilderObject, leafValue); - break; - - case BINARY: - byte[] value = Base64.getDecoder().decode(leafValue); - parentSetterMethod.invoke(parentBuilderObject, value); - break; - - case BITS: - parseBitSetTypeInfo(ydtExtendedContext, parentSetterMethod, - parentBuilderObject, leafValue); - break; - - case DECIMAL64: - parentSetterMethod.invoke(parentBuilderObject, - new BigDecimal(leafValue)); - break; - - case DERIVED: - parseDerivedTypeInfo(ydtExtendedContext, parentSetterMethod, - parentBuilderObject, leafValue, false); - break; - - case IDENTITYREF: - parseIdentityRefInfo(ydtExtendedContext, parentSetterMethod, - parentBuilderObject, leafValue); - break; - - case UNION: - parseDerivedTypeInfo(ydtExtendedContext, parentSetterMethod, - parentBuilderObject, leafValue, false); - break; - - case LEAFREF: - parseLeafRefTypeInfo(ydtExtendedContext, parentSetterMethod, - parentBuilderObject, leafValue); - break; - - case ENUMERATION: - parseDerivedTypeInfo(ydtExtendedContext, parentSetterMethod, - parentBuilderObject, leafValue, true); - break; - - default: - log.error(E_DATA_TYPE_NOT_SUPPORT); - } - } - - /** - * Sets the select leaf flag for leaf. - * - * @param builderClass builder in which the select leaf flag needs to be - * set - * @param leafNode YANG data tree leaf node - * @param schemaRegistry YANG schema registry - * @param builderObject the parent build object on which to invoke - * the method - * @throws InvocationTargetException if method could not be invoked - * @throws IllegalAccessException if method could not be accessed - * @throws NoSuchMethodException if method does not exist - */ - static void setSelectLeaf(Class builderClass, - YdtExtendedContext leafNode, - YangSchemaRegistry schemaRegistry, - Object builderObject) throws NoSuchMethodException, - InvocationTargetException, IllegalAccessException { - - YangSchemaNode parentSchema = ((YdtExtendedContext) leafNode - .getParent()).getYangSchemaNode(); - while (parentSchema.getReferredSchema() != null) { - parentSchema = parentSchema.getReferredSchema(); - } - - while (((YangNode) parentSchema).getParent() != null) { - parentSchema = ((YangNode) parentSchema).getParent(); - } - - String qualName = getQualifiedinterface(parentSchema); - Class regClass = schemaRegistry.getRegisteredClass(parentSchema); - if (regClass == null) { - throw new YobException(E_FAIL_TO_LOAD_CLASS + qualName); - } - - Class interfaceClass = null; - try { - interfaceClass = regClass.getClassLoader().loadClass(qualName); - } catch (ClassNotFoundException e) { - log.info(E_FAIL_TO_LOAD_CLASS, qualName); - return; - } - - Class[] innerClasses = interfaceClass.getClasses(); - for (Class innerEnumClass : innerClasses) { - if (innerEnumClass.getSimpleName().equals(LEAF_IDENTIFIER)) { - Method valueOfMethod = innerEnumClass - .getDeclaredMethod(VALUE_OF, String.class); - String leafName = leafNode.getYangSchemaNode() - .getJavaAttributeName().toUpperCase(); - Object obj = valueOfMethod.invoke(null, leafName); - Method selectLeafMethod = builderClass - .getDeclaredMethod(SELECT_LEAF, innerEnumClass); - selectLeafMethod.invoke(builderObject, obj); - break; - } - } - } - - /** - * To set data into parent setter method from string value for derived type. - * - * @param leafValue value to be set in method - * @param parentSetterMethod the parent setter method to be invoked - * @param parentBuilderObject the parent build object on which to invoke the - * method - * @param ydtExtendedContext application context - * @param isEnum flag to check whether type is enum or derived - * @throws InvocationTargetException if failed to invoke method - * @throws IllegalAccessException if member cannot be accessed - * @throws NoSuchMethodException if the required method is not found - */ - private static void parseDerivedTypeInfo(YdtExtendedContext ydtExtendedContext, - Method parentSetterMethod, - Object parentBuilderObject, - String leafValue, boolean isEnum) - throws InvocationTargetException, IllegalAccessException, - NoSuchMethodException { - Class childSetClass = null; - Constructor childConstructor = null; - Object childValue = null; - Object childObject = null; - Method childMethod = null; - - YangSchemaNode yangJavaModule = ydtExtendedContext.getYangSchemaNode(); - while (yangJavaModule.getReferredSchema() != null) { - yangJavaModule = yangJavaModule.getReferredSchema(); - } - - String qualifiedClassName = yangJavaModule.getJavaPackage() + PERIOD + - getCapitalCase(yangJavaModule.getJavaClassNameOrBuiltInType()); - ClassLoader classLoader = getClassLoader(null, qualifiedClassName, - ydtExtendedContext, null); - try { - childSetClass = classLoader.loadClass(qualifiedClassName); - } catch (ClassNotFoundException e) { - log.error(L_FAIL_TO_LOAD_CLASS, qualifiedClassName); - } - - if (!isEnum) { - if (childSetClass != null) { - childConstructor = childSetClass.getDeclaredConstructor(); - } - - if (childConstructor != null) { - childConstructor.setAccessible(true); - } - - try { - if (childConstructor != null) { - childObject = childConstructor.newInstance(); - } - } catch (InstantiationException e) { - log.error(E_FAIL_TO_LOAD_CONSTRUCTOR, qualifiedClassName); - } - if (childSetClass != null) { - childMethod = childSetClass - .getDeclaredMethod(FROM_STRING, String.class); - } - } else { - if (childSetClass != null) { - childMethod = childSetClass.getDeclaredMethod(OF, String.class); - } - } - if (childMethod != null) { - childValue = childMethod.invoke(childObject, leafValue); - } - - parentSetterMethod.invoke(parentBuilderObject, childValue); - } - - /** - * To set data into parent setter method from string value for bits type. - * - * @param leafValue value to be set in method - * @param parentSetterMethod the parent setter method to be invoked - * @param parentBuilderObject the parent build object on which to invoke the - * method - * @param ydtExtendedContext application context - * @throws InvocationTargetException if failed to invoke method - * @throws IllegalAccessException if member cannot be accessed - * @throws NoSuchMethodException if the required method is not found - */ - private static void parseBitSetTypeInfo(YdtExtendedContext ydtExtendedContext, - Method parentSetterMethod, - Object parentBuilderObject, - String leafValue) - throws InvocationTargetException, IllegalAccessException, - NoSuchMethodException { - Class childSetClass = null; - Object childValue = null; - Object childObject = null; - Method childMethod = null; - - YangSchemaNode schemaNode = ydtExtendedContext.getYangSchemaNode(); - while (schemaNode.getReferredSchema() != null) { - schemaNode = schemaNode.getReferredSchema(); - } - - YangSchemaNode parentSchema = ((YdtExtendedContext) ydtExtendedContext - .getParent()).getYangSchemaNode(); - String qualifiedClassName = parentSchema.getJavaPackage() + PERIOD + - parentSchema.getJavaAttributeName().toLowerCase() + - PERIOD + getCapitalCase(schemaNode.getJavaAttributeName()); - - ClassLoader classLoader = getClassLoader(null, qualifiedClassName, - ydtExtendedContext, null); - - try { - childSetClass = classLoader.loadClass(qualifiedClassName); - } catch (ClassNotFoundException e) { - log.error(L_FAIL_TO_LOAD_CLASS, qualifiedClassName); - } - - if (childSetClass != null) { - childMethod = childSetClass.getDeclaredMethod(FROM_STRING, String.class); - } - if (childMethod != null) { - childValue = childMethod.invoke(childObject, leafValue); - } - - parentSetterMethod.invoke(parentBuilderObject, childValue); - } - - /** - * To set data into parent setter method from string value for leafref type. - * - * @param leafValue leaf value to be set - * @param parentSetterMethod the parent setter method to be invoked - * @param parentBuilderObject the parent build object on which to invoke - * the method - * @param ydtExtendedContext application context - * @throws InvocationTargetException if method could not be invoked - * @throws IllegalAccessException if method could not be accessed - * @throws NoSuchMethodException if method does not exist - */ - private static void parseLeafRefTypeInfo(YdtExtendedContext ydtExtendedContext, - Method parentSetterMethod, - Object parentBuilderObject, - String leafValue) - throws InvocationTargetException, IllegalAccessException, - NoSuchMethodException { - - YangSchemaNode schemaNode = ydtExtendedContext.getYangSchemaNode(); - while (schemaNode.getReferredSchema() != null) { - schemaNode = schemaNode.getReferredSchema(); - } - - YangLeafRef leafRef; - if (schemaNode instanceof YangLeaf) { - leafRef = (YangLeafRef) ((YangLeaf) schemaNode) - .getDataType().getDataTypeExtendedInfo(); - } else { - leafRef = (YangLeafRef) ((YangLeafList) schemaNode) - .getDataType().getDataTypeExtendedInfo(); - } - - YangType type = leafRef.getEffectiveDataType(); - if (type.getDataType() == YangDataTypes.DERIVED && - schemaNode.getJavaPackage().equals(YobConstants.JAVA_LANG)) { - /* - * If leaf is inside grouping, then its return type will be of type - * Object and if its actual type is derived type then get the - * effective built-in type and set the value. - */ - YangDerivedInfo derivedInfo = (YangDerivedInfo) leafRef - .getEffectiveDataType() - .getDataTypeExtendedInfo(); - YobUtils.setDataFromStringValue(derivedInfo.getEffectiveBuiltInType(), - leafValue, parentSetterMethod, - parentBuilderObject, - ydtExtendedContext); - } else { - YobUtils.setDataFromStringValue(type.getDataType(), - leafValue, parentSetterMethod, - parentBuilderObject, - ydtExtendedContext); - } - } - - /** - * Updates class loader for all the classes. - * - * @param registry YANG schema registry - * @param qualifiedClassName qualified class name - * @param curNode YDT context - * @param rootNode application root node - * @return current class loader - */ - static ClassLoader getClassLoader(YangSchemaRegistry registry, - String qualifiedClassName, - YdtExtendedContext curNode, - YdtExtendedContext rootNode) { - - if (rootNode != null && curNode == rootNode) { - YangSchemaNode curSchemaNode = curNode.getYangSchemaNode(); - while (!(curSchemaNode instanceof RpcNotificationContainer)) { - curNode = (YdtExtendedContext) curNode.getParent(); - if (curNode == null) { - throw new YobException(E_INVALID_DATA_TREE); - } - curSchemaNode = curNode.getYangSchemaNode(); - } - - Class regClass = registry.getRegisteredClass(curSchemaNode); - return regClass.getClassLoader(); - } - - YdtExtendedContext parent = (YdtExtendedContext) curNode.getParent(); - YobWorkBench parentBuilderContainer = (YobWorkBench) parent.getAppInfo(YOB); - Object parentObj = parentBuilderContainer.getParentBuilder(curNode, - registry); - return parentObj.getClass().getClassLoader(); - } - - /** - * Returns the class loader to be used for the switched context schema node. - * - * @param curLoader current context class loader - * @param context switched context - * @param registry schema registry - * @return class loader to be used for the switched context schema node - */ - static ClassLoader getTargetClassLoader(ClassLoader curLoader, - YangSchemaNodeContextInfo context, - YangSchemaRegistry registry) { - YangSchemaNode augmentSchemaNode = context.getContextSwitchedNode(); - if (augmentSchemaNode.getYangSchemaNodeType() == YANG_AUGMENT_NODE) { - YangSchemaNode moduleNode = ((YangNode) augmentSchemaNode).getParent(); - - Class moduleClass = registry.getRegisteredClass(moduleNode); - if (moduleClass == null) { - throw new YobException(E_FAIL_TO_LOAD_CLASS + moduleNode - .getJavaClassNameOrBuiltInType()); - } - return moduleClass.getClassLoader(); - } - return curLoader; - } - - /** - * Returns the schema node's module interface. - * - * @param schemaNode YANG schema node - * @param schemaRegistry YANG schema registry - * @return schema node's module interface - */ - public static Class getModuleInterface(YangSchemaNode schemaNode, - YangSchemaRegistry schemaRegistry) { - - YangNode yangNode = (YangNode) schemaNode; - while (yangNode.getReferredSchema() != null) { - yangNode = (YangNode) yangNode.getReferredSchema(); - } - - while (yangNode.getParent() != null) { - yangNode = yangNode.getParent(); - } - - String qualName = getQualifiedinterface(yangNode); - Class regClass = schemaRegistry.getRegisteredClass(yangNode); - if (regClass == null) { - throw new YobException(E_FAIL_TO_LOAD_CLASS + qualName); - } - - try { - return regClass.getClassLoader().loadClass(qualName); - } catch (ClassNotFoundException e) { - log.error(L_FAIL_TO_LOAD_CLASS, qualName); - } - - return null; - } - - /** - * Returns the qualified default / op param class. - * - * @param schemaNode schema node of the required class - * @return qualified default / op param class name - */ - static String getQualifiedDefaultClass(YangSchemaNode schemaNode) { - String packageName = schemaNode.getJavaPackage(); - String className = getCapitalCase( - schemaNode.getJavaClassNameOrBuiltInType()); - - if (schemaNode instanceof RpcNotificationContainer) { - return packageName + PERIOD + className + OP_PARAM; - } - - return packageName + PERIOD + DEFAULT + className; - } - - /** - * Returns the qualified interface name. - * - * @param schemaNode schema node of the required class - * @return qualified interface name - */ - static String getQualifiedinterface(YangSchemaNode schemaNode) { - String packageName = schemaNode.getJavaPackage(); - String className = getCapitalCase( - schemaNode.getJavaClassNameOrBuiltInType()); - - return packageName + PERIOD + className; - } - - /** - * Returns the capital cased first letter of the given string. - * - * @param name string to be capital cased - * @return capital cased string - */ - public static String getCapitalCase(String name) { - // TODO: It will be removed if common util is committed. - return name.substring(0, 1).toUpperCase() + - name.substring(1); - } - - /** - * To set data into parent setter method from string value for identity ref. - * - * @param leafValue leaf value to be set - * @param parentSetterMethod the parent setter method to be invoked - * @param parentBuilderObject the parent build object on which to invoke - * the method - * @param ydtExtendedContext application context - * @throws InvocationTargetException if method could not be invoked - * @throws IllegalAccessException if method could not be accessed - * @throws NoSuchMethodException if method does not exist - */ - private static void parseIdentityRefInfo(YdtExtendedContext - ydtExtendedContext, - Method parentSetterMethod, - Object parentBuilderObject, - String leafValue) - throws InvocationTargetException, IllegalAccessException, - NoSuchMethodException { - Class childSetClass = null; - Object childValue = null; - Method childMethod = null; - - YangSchemaNode yangJavaModule = ydtExtendedContext.getYangSchemaNode(); - while (yangJavaModule.getReferredSchema() != null) { - yangJavaModule = yangJavaModule.getReferredSchema(); - } - - String qualifiedClassName = null; - YangType type; - if (yangJavaModule instanceof YangLeaf) { - type = ((YangLeaf) yangJavaModule).getDataType(); - } else { - type = ((YangLeafList) yangJavaModule).getDataType(); - } - - if (type.getDataType() == YangDataTypes.LEAFREF && yangJavaModule - .getJavaPackage().equals(YobConstants.JAVA_LANG)) { - YangLeafRef leafref = ((YangLeafRef) type.getDataTypeExtendedInfo()); - YangType effectiveType = leafref.getEffectiveDataType(); - if (effectiveType.getDataType() == YangDataTypes.IDENTITYREF) { - YangIdentityRef identityref = ((YangIdentityRef) effectiveType - .getDataTypeExtendedInfo()); - YangIdentity identity = identityref.getReferredIdentity(); - qualifiedClassName = identity.getJavaPackage() + PERIOD + - getCapitalCase(identity.getJavaClassNameOrBuiltInType()); - } - } else { - qualifiedClassName = yangJavaModule.getJavaPackage() + PERIOD + - getCapitalCase(yangJavaModule.getJavaClassNameOrBuiltInType()); - } - - ClassLoader classLoader = getClassLoader(null, qualifiedClassName, - ydtExtendedContext, null); - try { - childSetClass = classLoader.loadClass(qualifiedClassName); - } catch (ClassNotFoundException e) { - log.error(L_FAIL_TO_LOAD_CLASS, qualifiedClassName); - } - - if (childSetClass != null) { - childMethod = childSetClass - .getDeclaredMethod(FROM_STRING, String.class); - } - - if (childMethod != null) { - childValue = childMethod.invoke(null, leafValue); - } - - parentSetterMethod.invoke(parentBuilderObject, childValue); - } - - /** - * Creates and sets default notification object in event subject object. - * - * @param defaultObj default notification object - * @param curNode application context - * @param registry YANG schema registry - * @return notification event subject object - */ - public static Object createAndSetInEventSubjectInstance(Object defaultObj, - YdtExtendedContext curNode, - YangSchemaRegistry registry) { - YangSchemaNode childSchema = ((YdtExtendedContext) curNode - .getFirstChild()).getYangSchemaNode(); - String packageName = childSchema.getJavaPackage(); - String className = getCapitalCase(curNode.getYangSchemaNode() - .getJavaClassNameOrBuiltInType()); - String qualName = packageName + PERIOD + className + EVENT_SUBJECT; - - ClassLoader classLoader = YobUtils.getClassLoader(registry, qualName, - curNode, curNode); - - Object eventSubObj; - Class eventSubjectClass = null; - try { - eventSubjectClass = classLoader.loadClass(qualName); - eventSubObj = eventSubjectClass.newInstance(); - } catch (ClassNotFoundException e) { - log.error(E_FAIL_TO_LOAD_CLASS, className); - throw new YobException(E_FAIL_TO_LOAD_CLASS + - qualName); - } catch (InstantiationException e) { - log.error(E_FAIL_TO_CREATE_OBJ, className); - throw new YobException(E_FAIL_TO_CREATE_OBJ + - eventSubjectClass.getName()); - } catch (IllegalAccessException e) { - log.error(L_FAIL_TO_INVOKE_METHOD, className); - throw new YobException(E_FAIL_TO_INVOKE_METHOD + - eventSubjectClass.getName()); - } - - setInEventSubject(((YdtExtendedContext) curNode.getFirstChild()), - eventSubObj, defaultObj); - return eventSubObj; - } - - /** - * Sets the default notification object in event subject class. - * - * @param ydtNode application context - * @param eventSubObj notification event subject instance - * @param defaultObj default notification instance - */ - public static void setInEventSubject(YdtExtendedContext ydtNode, - Object eventSubObj, - Object defaultObj) { - - Class eventSubjectClass = eventSubObj.getClass(); - String className = eventSubjectClass.getName(); - String setter = ydtNode.getYangSchemaNode().getJavaAttributeName(); - - try { - Class type = null; - Field fieldName = eventSubjectClass.getDeclaredField(setter); - if (fieldName != null) { - type = fieldName.getType(); - } - - Method method; - method = eventSubjectClass.getDeclaredMethod(setter, type); - method.invoke(eventSubObj, defaultObj); - } catch (NoSuchFieldException e) { - log.error(L_FAIL_TO_GET_FIELD, className); - throw new YobException(E_FAIL_TO_GET_FIELD + className); - } catch (NoSuchMethodException e) { - log.error(L_FAIL_TO_GET_METHOD, className); - throw new YobException(E_FAIL_TO_GET_METHOD + className); - } catch (InvocationTargetException | IllegalAccessException e) { - log.error(L_FAIL_TO_INVOKE_METHOD, className); - throw new YobException(E_FAIL_TO_INVOKE_METHOD + className); - } - } - - /** - * Creates an object of notification event class and sets event subject - * in event class. - * - * @param eventSubObj instance of event subject class - * @param curNode current YDT node - * @param registry YANG schema registry - * @return notification event object - */ - public static Object createAndSetInEventInstance(Object eventSubObj, - YdtExtendedContext curNode, - YangSchemaRegistry registry) { - YangSchemaNode childSchema = ((YdtExtendedContext) curNode - .getFirstChild()).getYangSchemaNode(); - String packageName = childSchema.getJavaPackage(); - String className = getCapitalCase(curNode.getYangSchemaNode() - .getJavaClassNameOrBuiltInType()); - String qualName = packageName + PERIOD + className + EVENT; - - try { - ClassLoader classLoader = YobUtils.getClassLoader(registry, qualName, - curNode, curNode); - Class eventClass = classLoader.loadClass(qualName); - Class[] innerClasses = eventClass.getClasses(); - Object typeObj = null; - for (Class innerEnumClass : innerClasses) { - if (innerEnumClass.getSimpleName().equals(TYPE)) { - Method valueOfMethod = innerEnumClass - .getDeclaredMethod(VALUE_OF, String.class); - String eventType = getEnumJavaAttribute(childSchema.getName()) - .toUpperCase(); - typeObj = valueOfMethod.invoke(null, eventType); - break; - } - } - - Constructor constructor = eventClass - .getDeclaredConstructor(typeObj.getClass(), - eventSubObj.getClass()); - constructor.setAccessible(true); - return constructor.newInstance(typeObj, eventSubObj); - } catch (ClassNotFoundException e) { - log.error(L_FAIL_TO_INVOKE_METHOD, className); - throw new YobException(E_FAIL_TO_INVOKE_METHOD + className); - } catch (InstantiationException e) { - log.error(E_FAIL_TO_CREATE_OBJ, className); - throw new YobException(E_FAIL_TO_CREATE_OBJ + className); - } catch (NoSuchMethodException e) { - log.error(L_FAIL_TO_GET_METHOD, className); - throw new YobException(E_FAIL_TO_GET_METHOD + className); - } catch (InvocationTargetException | IllegalAccessException e) { - log.error(L_FAIL_TO_INVOKE_METHOD, className); - throw new YobException(E_FAIL_TO_INVOKE_METHOD + className); - } - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobWorkBench.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobWorkBench.java deleted file mode 100644 index 36ce736c8e..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobWorkBench.java +++ /dev/null @@ -1,463 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSchemaNodeContextInfo; -import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier; -import org.onosproject.yangutils.datamodel.exceptions.DataModelException; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.yob.exception.YobException; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.ydt.YdtContextOperationType; -import org.onosproject.yms.ydt.YdtType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.util.HashMap; -import java.util.Map; - -import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_AUGMENT_NODE; -import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_CHOICE_NODE; -import static org.onosproject.yms.app.ydt.AppType.YOB; -import static org.onosproject.yms.app.yob.YobConstants.ADD_AUGMENT_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.ADD_TO; -import static org.onosproject.yms.app.yob.YobConstants.BUILD; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_BUILD; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_GET_FIELD; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_GET_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_INVOKE_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.E_FAIL_TO_LOAD_CLASS; -import static org.onosproject.yms.app.yob.YobConstants.E_HAS_NO_CHILD; -import static org.onosproject.yms.app.yob.YobConstants.E_SET_OP_TYPE_FAIL; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_BUILD; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_GET_FIELD; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_GET_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.L_FAIL_TO_INVOKE_METHOD; -import static org.onosproject.yms.app.yob.YobConstants.ONOS_YANG_OP_TYPE; -import static org.onosproject.yms.app.yob.YobConstants.OP_TYPE; -import static org.onosproject.yms.app.yob.YobConstants.VALUE_OF; -import static org.onosproject.yms.app.yob.YobConstants.YANG; -import static org.onosproject.yms.app.yob.YobUtils.getCapitalCase; -import static org.onosproject.yms.app.yob.YobUtils.getModuleInterface; -import static org.onosproject.yms.app.yob.YobUtils.getQualifiedDefaultClass; -import static org.onosproject.yms.ydt.YdtType.MULTI_INSTANCE_NODE; -import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE; - -/** - * Represents the YANG object builder's work bench corresponding to a YANG data - * tree node. - */ -class YobWorkBench { - - private static final Logger log = - LoggerFactory.getLogger(YobWorkBench.class); - - /** - * Class loader to be used to load the class. - */ - private ClassLoader classLoader; - - /** - * Map of the non schema descendant objects. - */ - private Map attributeMap = - new HashMap<>(); - - /** - * Reference for data-model schema node. - */ - private YangSchemaNode yangSchemaNode; - - /** - * builder object or the built object corresponding to the current schema - * node. - */ - private YobBuilderOrBuiltObject builderOrBuiltObject; - - /** - * Setter method to be used in parent builder. - */ - private String setterInParent; - - /** - * Returns the builder container with the mapping schema being initialized. - * - * @param yangSchemaNode mapping schema node - * @param classLoader class loader - * @param qualifiedClassName qualified class name - * @param setterInParent setter method in parent - */ - YobWorkBench(YangSchemaNode yangSchemaNode, ClassLoader classLoader, - String qualifiedClassName, String setterInParent) { - this.yangSchemaNode = yangSchemaNode; - this.classLoader = classLoader; - this.setterInParent = setterInParent; - this.builderOrBuiltObject = - new YobBuilderOrBuiltObject(qualifiedClassName, classLoader); - } - - /** - * Set the attribute in a builder object. - * - * @param builder builder object in which the attribute needs to be set - * @param setter setter method in parent - * @param nodeType type of node to set - * @param attribute attribute to set in the builder - */ - private static void setObjectInBuilder(Object builder, String setter, - YdtType nodeType, Object attribute) { - Class builderClass = builder.getClass(); - String builderClassName = builderClass.getName(); - try { - Class type = null; - Field fieldName = builderClass.getDeclaredField(setter); - if (fieldName != null) { - type = fieldName.getType(); - } - - Method method; - if (nodeType == MULTI_INSTANCE_NODE) { - if (fieldName != null) { - ParameterizedType genericTypes = - (ParameterizedType) fieldName.getGenericType(); - type = (Class) genericTypes.getActualTypeArguments()[0]; - } - method = builderClass.getDeclaredMethod( - ADD_TO + getCapitalCase(setter), type); - } else { - method = builderClass.getDeclaredMethod(setter, type); - } - - method.invoke(builder, attribute); - } catch (NoSuchFieldException e) { - log.error(L_FAIL_TO_GET_FIELD, builderClassName); - throw new YobException(E_FAIL_TO_GET_FIELD + builderClassName); - } catch (NoSuchMethodException e) { - log.error(L_FAIL_TO_GET_METHOD, builderClassName); - throw new YobException(E_FAIL_TO_GET_METHOD + builderClassName); - } catch (InvocationTargetException | IllegalAccessException e) { - log.error(L_FAIL_TO_INVOKE_METHOD, builderClassName); - throw new YobException(E_FAIL_TO_INVOKE_METHOD + builderClassName); - } - } - - private static void addInAugmentation(Object builder, String className, - Object instance) { - Class[] interfaces = instance.getClass().getInterfaces(); - if (interfaces == null) { - throw new YobException(E_FAIL_TO_LOAD_CLASS + className); - } - - int i; - for (i = 0; i < interfaces.length; i++) { - if (interfaces[i].getName().equals(className)) { - break; - } - } - if (i == interfaces.length) { - throw new YobException(E_FAIL_TO_LOAD_CLASS + className); - } - - Class builderClass = builder.getClass(); - String builderClassName = builderClass.getName(); - try { - - Method method = builderClass.getDeclaredMethod(ADD_AUGMENT_METHOD, - Object.class, - Class.class); - method.invoke(builder, instance, interfaces[i]); - } catch (NoSuchMethodException e) { - log.error(L_FAIL_TO_GET_METHOD, builderClassName); - throw new YobException(E_FAIL_TO_GET_METHOD + builderClassName); - } catch (InvocationTargetException | IllegalAccessException e) { - log.error(L_FAIL_TO_INVOKE_METHOD, builderClassName); - throw new YobException(E_FAIL_TO_INVOKE_METHOD + builderClassName); - } - - } - - /** - * Creates a new builder container object corresponding to a context - * switch schema node. - * - * @param childContext schema context of immediate child - * @param targetNode final node whose parent builder is - * required - * @param curWorkBench current context builder container - * @param registry schema registry - * @return new builder container object corresponding to a context - * switch schema node - */ - private static YobWorkBench getNewChildWorkBench( - YangSchemaNodeContextInfo childContext, - YangSchemaNodeIdentifier targetNode, YobWorkBench curWorkBench, - YangSchemaRegistry registry) { - - YangSchemaNode ctxSwitchedNode = childContext.getContextSwitchedNode(); - String name; - - /* This is the first child trying to set its object in the - current context. */ - String setterInParent = ctxSwitchedNode.getJavaAttributeName(); - - /* If current switched context is choice, then case class needs to be - used. */ - if (ctxSwitchedNode.getYangSchemaNodeType() == YANG_CHOICE_NODE) { - try { - childContext = ctxSwitchedNode.getChildSchema(targetNode); - ctxSwitchedNode = childContext.getContextSwitchedNode(); - name = getQualifiedDefaultClass( - childContext.getContextSwitchedNode()); - - } catch (DataModelException e) { - throw new YobException(ctxSwitchedNode.getName() + - E_HAS_NO_CHILD + - targetNode.getName()); - } - } else if (ctxSwitchedNode.getYangSchemaNodeType() == - YANG_AUGMENT_NODE) { - name = getQualifiedDefaultClass(ctxSwitchedNode); - setterInParent = YobUtils.getQualifiedinterface(ctxSwitchedNode); - } else { - name = getQualifiedDefaultClass(childContext.getSchemaNode()); - } - - ClassLoader newClassesLoader = YobUtils.getTargetClassLoader( - curWorkBench.classLoader, childContext, registry); - - return new YobWorkBench(ctxSwitchedNode, newClassesLoader, name, - setterInParent); - } - - /** - * Returns the builder object or the built object corresponding to the - * current schema node. - * - * @return builder or built object - */ - YobBuilderOrBuiltObject getBuilderOrBuiltObject() { - return builderOrBuiltObject; - } - - /** - * Returns the parent builder object in which the child object can be set. - * - * @param node child YDT node - * @param registry schema registry - * @return parent builder object - */ - Object getParentBuilder(YdtExtendedContext node, - YangSchemaRegistry registry) { - - // Descendant schema node for whom the builder is required. - YangSchemaNodeIdentifier targetNode = - node.getYangSchemaNode().getYangSchemaNodeIdentifier(); - - //Current builder container - YobWorkBench curWorkBench = this; - - YangSchemaNode nonSchemaHolder; - do { - - //Current Schema node context - YangSchemaNodeContextInfo schemaContext; - try { - //Find the new schema context node. - schemaContext = curWorkBench.yangSchemaNode - .getChildSchema(targetNode); - - } catch (DataModelException e) { - throw new YobException(yangSchemaNode.getName() + - E_HAS_NO_CHILD + - targetNode.getName()); - } - - nonSchemaHolder = schemaContext.getContextSwitchedNode(); - - //If the descendant schema node is in switched context - if (nonSchemaHolder != null) { - - YangSchemaNodeIdentifier nonSchemaIdentifier = - nonSchemaHolder.getYangSchemaNodeIdentifier(); - - //check if the descendant builder container is already available - YobWorkBench childWorkBench = - curWorkBench.attributeMap.get(nonSchemaIdentifier); - - if (childWorkBench == null) { - YobWorkBench newWorkBench = getNewChildWorkBench( - schemaContext, targetNode, curWorkBench, registry); - - curWorkBench.attributeMap.put(nonSchemaIdentifier, - newWorkBench); - curWorkBench = newWorkBench; - } else { - curWorkBench = childWorkBench; - } - } - - } while (nonSchemaHolder != null); - - return curWorkBench.builderOrBuiltObject.getBuilderObject(); - } - - /** - * Set the operation type attribute and build the object from the builder - * object, by invoking the build method. - * - * @param operationType data tree node - * @param schemaRegistry YANG schema registry - */ - void buildObject(YdtContextOperationType operationType, - YangSchemaRegistry schemaRegistry) { - - buildNonSchemaAttributes(operationType, schemaRegistry); - - Object builderObject = builderOrBuiltObject.getBuilderObject(); - Class defaultBuilderClass = builderOrBuiltObject.yangBuilderClass; - - //set the operation type - setOperationType(operationType, schemaRegistry); - - // Invoking the build method to get built object from build method. - try { - Method method = defaultBuilderClass.getDeclaredMethod(BUILD); - if (method == null) { - log.error(L_FAIL_TO_GET_METHOD, defaultBuilderClass.getName()); - throw new YobException(E_FAIL_TO_GET_METHOD + - defaultBuilderClass.getName()); - } - Object builtObject = method.invoke(builderObject); - // The built object will be maintained in ydt context and same will - // be used while setting into parent method. - builderOrBuiltObject.setBuiltObject(builtObject); - - } catch (NoSuchMethodException | InvocationTargetException | - IllegalAccessException e) { - log.error(L_FAIL_TO_BUILD, defaultBuilderClass.getName()); - throw new YobException(E_FAIL_TO_BUILD + - defaultBuilderClass.getName()); - } - } - - /** - * Set the operation type in the built object from the YDT node. - *

- * It needs to be invoked only for the workbench corresponding to the - * schema YDT nodes, non schema node without the YDT node should not - * invoke this, as it is not applicable to it. - * - * @param ydtoperation schema data tree node - * @param schemaRegistry YANG schema registry - */ - private void setOperationType(YdtContextOperationType ydtoperation, - YangSchemaRegistry schemaRegistry) { - - if (ydtoperation == null) { - return; - } - - Object builderObject = builderOrBuiltObject.getBuilderObject(); - Class defaultBuilderClass = builderOrBuiltObject.yangBuilderClass; - Class[] intfClass = builderOrBuiltObject.yangDefaultClass - .getInterfaces(); - String setterName = YANG + intfClass[0].getSimpleName() + OP_TYPE; - - // Setting the value into YANG node operation type from ydtContext - // operation type. - try { - Class interfaceClass; - interfaceClass = getModuleInterface(yangSchemaNode, - schemaRegistry); - Object operationType; - Class[] innerClasses = interfaceClass.getClasses(); - for (Class innerEnumClass : innerClasses) { - if (innerEnumClass.getSimpleName().equals(ONOS_YANG_OP_TYPE)) { - Method valueOfMethod = innerEnumClass - .getDeclaredMethod(VALUE_OF, String.class); - operationType = valueOfMethod.invoke(null, ydtoperation. - toString()); - Field operationTypeField = defaultBuilderClass - .getDeclaredField(setterName); - operationTypeField.setAccessible(true); - operationTypeField.set(builderObject, operationType); - break; - } - } - } catch (NoSuchMethodException | - InvocationTargetException | IllegalAccessException | - IllegalArgumentException e) { - log.error(E_SET_OP_TYPE_FAIL); - throw new YobException(E_SET_OP_TYPE_FAIL); - } catch (NoSuchFieldException e) { - log.error(E_SET_OP_TYPE_FAIL); - } - } - - /** - * build the non schema objects and maintain it in the contained schema - * node. - * - * @param operationType contained schema node - * @param schemaRegistry YANG schema registry - */ - private void buildNonSchemaAttributes(YdtContextOperationType operationType, - YangSchemaRegistry schemaRegistry) { - for (Map.Entry entry : - attributeMap.entrySet()) { - YobWorkBench childWorkBench = entry.getValue(); - childWorkBench.buildObject(operationType, schemaRegistry); - - if (childWorkBench.yangSchemaNode.getYangSchemaNodeType() == - YANG_AUGMENT_NODE) { - addInAugmentation(builderOrBuiltObject.getBuilderObject(), - childWorkBench.setterInParent, - childWorkBench.getBuilderOrBuiltObject() - .getBuiltObject()); - continue; - } - - setObjectInBuilder( - builderOrBuiltObject.getBuilderObject(), - childWorkBench.setterInParent, - SINGLE_INSTANCE_NODE, - childWorkBench.getBuilderOrBuiltObject().getBuiltObject()); - } - } - - /** - * Sets the YANG built object in corresponding parent class method. - * - * @param childnode ydtExtendedContext is used to get application - * related information maintained in YDT - * @param schemaRegistry YANG schema registry - */ - public void setObject(YdtExtendedContext childnode, - YangSchemaRegistry schemaRegistry) { - Object builder = getParentBuilder(childnode, schemaRegistry); - YobWorkBench childWorkBench = (YobWorkBench) childnode.getAppInfo(YOB); - - setObjectInBuilder(builder, childWorkBench.setterInParent, - childnode.getYdtType(), childWorkBench - .builderOrBuiltObject.getBuiltObject()); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/YobException.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/YobException.java deleted file mode 100644 index 8da4ff1f68..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/YobException.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob.exception; - -/** - * Represents base class for exceptions in YOB operations. - */ -public class YobException - extends RuntimeException { - - private static final long serialVersionUID = 20160211L; - - /** - * Creates a new YOB exception with given message. - * - * @param message the detail of exception in string - */ - public YobException(String message) { - super(message); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/package-info.java deleted file mode 100644 index 1f6c7fba07..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/exception/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -/** - * YANG object builder exceptions. - */ -package org.onosproject.yms.app.yob.exception; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/package-info.java deleted file mode 100644 index 1cd3508043..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of YANG object builder. YOB handles creation of YANG - * modeled objects from YDT. - */ -package org.onosproject.yms.app.yob; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/YpmManager.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/YpmManager.java deleted file mode 100644 index 8e6238f528..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/YpmManager.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ypm; - -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ypm.DefaultYpmNode; -import org.onosproject.yms.ypm.YpmContext; -import org.onosproject.yms.ypm.YpmService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Represents implementation of YANG protocol metadata manager. - */ -@Component(immediate = true, service = YpmService.class) -public class YpmManager implements YpmService { - - private final Logger log = LoggerFactory.getLogger(getClass()); - private YpmContext rootYpmNode; - - @Activate - public void activate() { - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); - } - - @Override - public YpmContext getProtocolData(YdtContext rootYdtNode) { - if (rootYdtNode == null) { - log.debug("Input data is null. So, will not proceed."); - return null; - } - - // Iterate through YDT and search the path in YPM tree and create new YPM tree equivalent to given YDT - // and return it. - if (rootYpmNode == null) { - log.debug("YPM tree has no data."); - return null; - } - - YdtContext currentYdtNode = rootYdtNode; - YpmContext currentYpmNode = rootYpmNode; - YpmContext rootRetYpmNode = new DefaultYpmNode(currentYdtNode.getName()); - YpmContext currRetYpmNode = rootRetYpmNode; - while (currentYdtNode != null) { - // Each ypm node can have children. So, create new corresponding ypm child - // and add it to new returning ypm tree, otherwise return new ypm tree. - YdtContext nextNode = currentYdtNode.getFirstChild(); - if (nextNode != null) { - YpmContext ypmChild = currentYpmNode.getChild(nextNode.getName()); - if (ypmChild != null) { - currRetYpmNode.addChild(ypmChild.getName()); - } else { - return rootRetYpmNode; - } - currentYdtNode = nextNode; - currentYpmNode = currentYpmNode.getChild(nextNode.getName()); - currRetYpmNode = currRetYpmNode.getChild(nextNode.getName()); - currRetYpmNode.setMetaData(currentYpmNode.getMetaData()); - continue; - } - - // No child nodes, so walk tree - while (currentYdtNode != null) { - // Each ypm node can have sibling. So, create new corresponding ypm sibling node - // and add it to new returning ypm tree, otherwise return new ypm tree. - nextNode = currentYdtNode.getNextSibling(); - if (nextNode != null) { - YpmContext ypmSibling = currentYpmNode.getSibling(nextNode.getName()); - if (ypmSibling != null) { - currRetYpmNode.addSibling(ypmSibling.getName()); - } else { - return rootRetYpmNode; - } - currentYdtNode = nextNode; - currentYpmNode = currentYpmNode.getSibling(nextNode.getName()); - currRetYpmNode = currRetYpmNode.getSibling(nextNode.getName()); - currRetYpmNode.setMetaData(currentYpmNode.getMetaData()); - break; - } - - // Move up - if (currentYdtNode == rootYdtNode) { - currentYdtNode = null; - } else { - currentYdtNode = currentYdtNode.getParent(); - currentYpmNode = currentYpmNode.getParent(); - currRetYpmNode = currRetYpmNode.getParent(); - } - } - } - - return rootRetYpmNode; - } - - @Override - public void setProtocolData(YdtContext rootYdtNode, Object data) { - if (rootYdtNode == null || data == null) { - log.debug("Input data is null. So, will not proceed."); - return; - } - - // Iterate through YDT and add each node of this path to ypm tree if it is not exists - YdtContext currentYdtNode = rootYdtNode; - YpmContext currentYpmNode = rootYpmNode; - while (currentYdtNode != null) { - // Check the ypm root node first - if (rootYpmNode == null) { - rootYpmNode = new DefaultYpmNode(currentYdtNode.getName()); - currentYpmNode = rootYpmNode; - // In logical node, should not set protocol metadata - } - - // Move down to first child - YdtContext nextNode = currentYdtNode.getFirstChild(); - if (nextNode != null) { - // Each ypm node can have sibling. So, get corresponding sibling node, otherwise create it. - if (currentYpmNode.getChild(nextNode.getName()) == null) { - currentYpmNode.addChild(nextNode.getName()); - } - currentYpmNode = currentYpmNode.getChild(nextNode.getName()); - // Set/update protocol metadata - currentYpmNode.setMetaData(data); - currentYdtNode = nextNode; - continue; - } - - // No child nodes, so walk tree - while (currentYdtNode != null) { - // Move to sibling if possible. - nextNode = currentYdtNode.getNextSibling(); - if (nextNode != null) { - // Each ypm node can have children (sibling). So, get corresponding ypm child, otherwise create it. - if (currentYpmNode.getSibling(nextNode.getName()) == null) { - currentYpmNode.addSibling(nextNode.getName()); - } - currentYpmNode = currentYpmNode.getSibling(nextNode.getName()); - // Set/update protocol metadata - currentYpmNode.setMetaData(data); - currentYdtNode = nextNode; - break; - } - - // Move up - if (currentYdtNode == rootYdtNode) { - currentYdtNode = null; - } else { - currentYdtNode = currentYdtNode.getParent(); - currentYpmNode = currentYpmNode.getParent(); - } - } - } - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/package-info.java deleted file mode 100644 index 1faafe0bbb..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ypm/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of YANG protocol metadata. YPM maintains protocol - * specific information for YANG modeled data. - */ -package org.onosproject.yms.app.ypm; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleIdentifier.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleIdentifier.java deleted file mode 100644 index 94295b2056..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleIdentifier.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ysr; - -import org.onosproject.yms.ysr.YangModuleIdentifier; - -import java.util.Comparator; -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Representation of default YANG module identifier. - */ -public class DefaultYangModuleIdentifier implements YangModuleIdentifier, - Comparator { - - private final String moduleName; - private final String revision; - - /** - * Creates an instance of YANG module identifier. - * - * @param moduleName module's name - * @param revision module's revision - */ - DefaultYangModuleIdentifier(String moduleName, String revision) { - this.moduleName = moduleName; - this.revision = revision; - } - - @Override - public String moduleName() { - return moduleName; - } - - @Override - public String revision() { - return revision; - } - - @Override - public int hashCode() { - return Objects.hash(moduleName, revision); - } - - @Override - public int compare(YangModuleIdentifier id1, YangModuleIdentifier id2) { - int compare = id1.moduleName().compareTo(id2.moduleName()); - if (compare != 0) { - return compare; - } - return id1.revision().compareTo(id2.revision()); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultYangModuleIdentifier) { - DefaultYangModuleIdentifier that = (DefaultYangModuleIdentifier) obj; - return Objects.equals(moduleName, that.moduleName) && - Objects.equals(revision, that.revision); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("moduleName", moduleName) - .add("revision", revision) - .toString(); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleInformation.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleInformation.java deleted file mode 100644 index f2213a8975..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleInformation.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ysr; - -import com.google.common.collect.ImmutableList; -import org.onosproject.yangutils.datamodel.YangNamespace; -import org.onosproject.yms.ysr.YangModuleIdentifier; -import org.onosproject.yms.ysr.YangModuleInformation; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Representation of default YANG module information. - */ -class DefaultYangModuleInformation implements YangModuleInformation { - - private final YangModuleIdentifier moduleIdentifier; - private final YangNamespace nameSpace; - private final List features; - private final List subModuleIdentifiers; - - /** - * Creates an instance of YANG module information. - * - * @param moduleIdentifier module identifier - * @param nameSpace name space of module - */ - DefaultYangModuleInformation(YangModuleIdentifier moduleIdentifier, - YangNamespace nameSpace) { - this.moduleIdentifier = moduleIdentifier; - this.nameSpace = nameSpace; - subModuleIdentifiers = new ArrayList<>(); - features = new ArrayList<>(); - } - - @Override - public YangModuleIdentifier moduleIdentifier() { - return moduleIdentifier; - } - - public YangNamespace namespace() { - return nameSpace; - } - - @Override - public List featureList() { - return ImmutableList.copyOf(features); - } - - @Override - public List subModuleIdentifiers() { - return ImmutableList.copyOf(subModuleIdentifiers); - } - - /** - * Adds to YANG sub module identifier list. - * - * @param subModuleIdentifier YANG sub module identifier - */ - void addSubModuleIdentifiers(YangModuleIdentifier subModuleIdentifier) { - subModuleIdentifiers.add(subModuleIdentifier); - } - - @Override - public int hashCode() { - return Objects.hash(moduleIdentifier, subModuleIdentifiers, nameSpace, features); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultYangModuleInformation) { - DefaultYangModuleInformation that = (DefaultYangModuleInformation) obj; - return Objects.equals(moduleIdentifier, that.moduleIdentifier) && - Objects.equals(nameSpace, that.nameSpace) && - Objects.equals(features, that.features) && - Objects.equals(subModuleIdentifiers, that.subModuleIdentifiers); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("yangModuleIdentifier", moduleIdentifier) - .add("nameSpace", nameSpace) - .add("features", features) - .add("yangModuleIdentifiers", subModuleIdentifiers) - .toString(); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleLibrary.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleLibrary.java deleted file mode 100644 index 35d860658e..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangModuleLibrary.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ysr; - -import com.google.common.collect.ImmutableList; -import org.onosproject.yms.ysr.YangModuleInformation; -import org.onosproject.yms.ysr.YangModuleLibrary; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import static com.google.common.base.MoreObjects.toStringHelper; - -/** - * Representation of default YANG module library. - */ -public class DefaultYangModuleLibrary implements YangModuleLibrary { - - private final String moduleSetId; - private final List moduleInformation; - - /** - * Creates an instance of YANG module library. - * - * @param moduleSetId module id - */ - public DefaultYangModuleLibrary(String moduleSetId) { - this.moduleSetId = moduleSetId; - moduleInformation = new ArrayList<>(); - } - - @Override - public String moduleSetId() { - return moduleSetId; - } - - @Override - public List yangModuleList() { - return ImmutableList.copyOf(moduleInformation); - } - - /** - * Adds module information. - * - * @param information module information - */ - void addModuleInformation(YangModuleInformation information) { - moduleInformation.add(information); - } - - @Override - public int hashCode() { - return Objects.hash(moduleInformation, moduleSetId); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof DefaultYangModuleLibrary) { - DefaultYangModuleLibrary that = (DefaultYangModuleLibrary) obj; - return Objects.equals(moduleInformation, that.moduleInformation) && - Objects.equals(moduleSetId, that.moduleSetId); - } - return false; - } - - @Override - public String toString() { - return toStringHelper(this) - .add("moduleInformation", moduleInformation) - .add("moduleId", moduleSetId) - .toString(); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistry.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistry.java deleted file mode 100644 index fbd6c8692a..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistry.java +++ /dev/null @@ -1,761 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ysr; - -import org.onosproject.yangutils.datamodel.YangInclude; -import org.onosproject.yangutils.datamodel.YangModule; -import org.onosproject.yangutils.datamodel.YangNode; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSubModule; -import org.onosproject.yangutils.datamodel.exceptions.DataModelException; -import org.onosproject.yms.ysr.YangModuleIdentifier; -import org.onosproject.yms.ysr.YangModuleInformation; -import org.onosproject.yms.ysr.YangModuleLibrary; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.slf4j.Logger; - -import java.io.File; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.regex.Pattern; - -import static java.util.Collections.sort; -import static org.apache.commons.io.FileUtils.deleteDirectory; -import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.parseJarFile; -import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING; -import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN; -import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM; -import static org.onosproject.yangutils.utils.UtilConstants.PERIOD; -import static org.onosproject.yangutils.utils.UtilConstants.SERVICE; -import static org.onosproject.yangutils.utils.UtilConstants.SLASH; -import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase; -import static org.osgi.framework.FrameworkUtil.getBundle; -import static org.slf4j.LoggerFactory.getLogger; - - -/** - * Representation of default YANG schema registry. Yang schema registry - * provides interface to an application to register its YANG schema - * with YMS. It provides YANG schema nodes to YDT, YNB and YSB. - */ -public class DefaultYangSchemaRegistry implements YangSchemaRegistry { - - private static final String SYSTEM = SLASH + "system" + SLASH; - private static final String MAVEN = "mvn:"; - private static final String JAR = ".jar"; - private static final String USER_DIRECTORY = "user.dir"; - private static final String AT = "@"; - private static final String DATE_FORMAT = "yyyy-mm-dd"; - private static final String ONOS = "org.onosproject"; - private static final Logger log = getLogger(DefaultYangSchemaRegistry.class); - - /* - * Map for storing app objects. - */ - private final ConcurrentMap appObjectStore; - - /* - * Map for storing YANG schema nodes. - */ - private final ConcurrentMap> - yangSchemaStore; - - /* - * Map for storing YANG schema nodes with respect to root's generated - * interface file name. - */ - private final ConcurrentMap interfaceNameKeyStore; - - /* - * Map for storing YANG schema nodes root's generated op param file name. - */ - private final ConcurrentMap opParamNameKeyStore; - - /* - * Map for storing YANG schema nodes with respect to notifications. - */ - private final ConcurrentMap eventNameKeyStore; - - /* - * Map for storing YANG schema nodes with respect to app name. - */ - private final ConcurrentMap appNameKeyStore; - - /* - * Map for storing registered classes. - */ - private final ConcurrentMap> registerClassStore; - - /* - * Map for storing YANG file details. - */ - private final ConcurrentMap yangFileStore; - - /** - * Map for storing schema nodes with respect to namespace. - */ - private final ConcurrentMap nameSpaceSchemaStore; - - private final ConcurrentMap ynhRegistrationStore; - private final ConcurrentMap jarPathStore; - - /** - * Creates an instance of default YANG schema registry. - */ - public DefaultYangSchemaRegistry() { - appObjectStore = new ConcurrentHashMap<>(); - yangSchemaStore = new ConcurrentHashMap<>(); - interfaceNameKeyStore = new ConcurrentHashMap<>(); - opParamNameKeyStore = new ConcurrentHashMap<>(); - eventNameKeyStore = new ConcurrentHashMap<>(); - registerClassStore = new ConcurrentHashMap<>(); - yangFileStore = new ConcurrentHashMap<>(); - appNameKeyStore = new ConcurrentHashMap<>(); - ynhRegistrationStore = new ConcurrentHashMap<>(); - jarPathStore = new ConcurrentHashMap<>(); - nameSpaceSchemaStore = new ConcurrentHashMap<>(); - } - - - @Override - public void registerApplication(Object appObject, Class serviceClass) { - synchronized (DefaultYangSchemaRegistry.class) { - doPreProcessing(serviceClass, appObject); - if (!verifyIfApplicationAlreadyRegistered(serviceClass)) { - BundleContext context = getBundle(serviceClass).getBundleContext(); - if (context != null) { - Bundle[] bundles = context.getBundles(); - Bundle bundle; - int len = bundles.length; - List curNodes; - String jarPath; - for (int i = len - 1; i >= 0; i--) { - bundle = bundles[i]; - if (bundle.getSymbolicName().contains(ONOS)) { - jarPath = getJarPathFromBundleLocation( - bundle.getLocation(), context.getProperty(USER_DIRECTORY)); - curNodes = processJarParsingOperations(jarPath); - // process application registration. - if (curNodes != null && !curNodes.isEmpty()) { - jarPathStore.put(serviceClass.getName(), jarPath); - processRegistration(serviceClass, jarPath, - curNodes, appObject, false); - } - } - } - } - } - } - } - - @Override - public void unRegisterApplication(Object managerObject, - Class serviceClass) { - synchronized (DefaultYangSchemaRegistry.class) { - YangSchemaNode curNode; - String serviceName = serviceClass.getName(); - - //Check if service should be unregistered? - if (managerObject != null) { - verifyApplicationRegistration(managerObject, serviceClass); - } - //Remove registered class from store. - registerClassStore.remove(serviceName); - //check if service is in app store. - curNode = appNameKeyStore.get(serviceName); - if (curNode == null) { - curNode = interfaceNameKeyStore.get(serviceName); - } - - if (curNode != null) { - removeSchemaNode(curNode); - eventNameKeyStore.remove(getEventClassName(curNode)); - appObjectStore.remove(serviceName); - interfaceNameKeyStore.remove(getInterfaceClassName(curNode)); - opParamNameKeyStore.remove(getOpParamClassName(curNode)); - yangFileStore.remove(getModuleIdentifier(curNode)); - appNameKeyStore.remove(serviceName); - nameSpaceSchemaStore.remove(curNode.getNameSpace() - .getModuleNamespace()); - removeYsrGeneratedTemporaryResources(jarPathStore.get(serviceName), - serviceName); - log.info(" service {} is unregistered.", - serviceClass.getSimpleName()); - } else { - throw new RuntimeException(serviceClass.getSimpleName() + - " service was not registered."); - } - } - } - - @Override - public Object getRegisteredApplication(YangSchemaNode schemaNode) { - Object obj = null; - if (schemaNode != null) { - String name = getServiceName(schemaNode); - obj = appObjectStore.get(name); - if (obj == null) { - log.error("{} not found.", name); - } - } - return obj; - } - - @Override - public YangSchemaNode getYangSchemaNodeUsingSchemaName(String schemaName) { - return getSchemaNodeUsingSchemaNameWithRev(schemaName); - } - - @Override - public YangSchemaNode getYangSchemaNodeUsingAppName(String appName) { - YangSchemaNode node = appNameKeyStore.get(appName); - if (node == null) { - log.error("{} not found.", appName); - } - return node; - } - - @Override - public YangSchemaNode - getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(String name) { - YangSchemaNode node = interfaceNameKeyStore.get(name); - if (node == null) { - log.error("{} not found.", name); - } - return node; - } - - @Override - public YangSchemaNode getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - String name) { - YangSchemaNode node = opParamNameKeyStore.get(name); - if (node == null) { - log.error("{} not found.", name); - } - return node; - } - - @Override - public YangSchemaNode getRootYangSchemaNodeForNotification(String name) { - YangSchemaNode node = eventNameKeyStore.get(name); - if (node == null) { - log.error("{} not found.", name); - } - return node; - } - - @Override - public Class getRegisteredClass(YangSchemaNode schemaNode) { - String interfaceName = getInterfaceClassName(schemaNode); - String serviceName = getServiceName(schemaNode); - Class regClass = registerClassStore.get(serviceName); - if (regClass == null) { - regClass = registerClassStore.get(interfaceName); - } - return regClass; - } - - @Override - public YangSchemaNode getSchemaWrtNameSpace(String nameSpace) { - - YangSchemaNode node = nameSpaceSchemaStore.get(nameSpace); - if (node == null) { - log.error("node with {} namespace not found.", nameSpace); - } - return node; - } - - @Override - public String getYangFile(YangModuleIdentifier moduleIdentifier) { - String file = yangFileStore.get(moduleIdentifier); - if (file == null) { - log.error("YANG files for corresponding module identifier {} not " + - "found", moduleIdentifier); - } - return file; - } - - @Override - public boolean verifyNotificationObject(Object appObj, Class service) { - synchronized (DefaultYangSchemaRegistry.class) { - YangSchemaNode node = appNameKeyStore.get(service.getName()); - if (node == null) { - log.error("application is not registered with YMS {}", - service.getName()); - return false; - } - try { - if (node.isNotificationPresent()) { - if (appObj != null) { - Boolean ifPresent = ynhRegistrationStore.get(appObj); - if (ifPresent == null) { - ynhRegistrationStore.put(appObj, true); - return true; - } - } - } - } catch (DataModelException e) { - log.error("notification registration error: {} {}", e - .getLocalizedMessage(), e); - } - return false; - } - } - - @Override - public void flushYsrData() { - appObjectStore.clear(); - yangSchemaStore.clear(); - eventNameKeyStore.clear(); - opParamNameKeyStore.clear(); - interfaceNameKeyStore.clear(); - registerClassStore.clear(); - yangFileStore.clear(); - nameSpaceSchemaStore.clear(); - } - - @Override - public void processModuleLibrary(String serviceName, - YangModuleLibrary library) { - synchronized (DefaultYangSchemaRegistry.class) { - YangSchemaNode node = appNameKeyStore.get(serviceName); - if (node != null) { - YangModuleInformation moduleInformation = - new DefaultYangModuleInformation(getModuleIdentifier(node), - node.getNameSpace()); - addSubModuleIdentifier(node, ( - DefaultYangModuleInformation) moduleInformation); - //TODO: add feature list to module information. - ((DefaultYangModuleLibrary) library) - .addModuleInformation(moduleInformation); - } - } - } - - /** - * Process service class. - * - * @param serviceClass service class - * @param appObject application object - */ - - void doPreProcessing(Class serviceClass, Object appObject) { - - //Check if service should be registered? - if (appObject != null) { - verifyApplicationRegistration(appObject, serviceClass); - } - String name = serviceClass.getName(); - //Add app class to registered service store. - if (!registerClassStore.containsKey(name)) { - registerClassStore.put(name, serviceClass); - } - } - - void updateServiceClass(Class service) { - registerClassStore.put(service.getName(), service); - } - - /** - * Process application registration. - * - * @param service service class - * @param jarPath jar path - * @param nodes YANG nodes - * @param appObj application object - * @param isFromUt if registration is being called form unit test - */ - void processRegistration(Class service, String jarPath, - List nodes, - Object appObj, boolean isFromUt) { - - // process storing operations. - YangNode schemaNode = findNodeWhichShouldBeReg(service.getName(), nodes); - if (schemaNode != null) { - if (appObj != null) { - appObjectStore.put(service.getName(), appObj); - } - //Process application context for registrations. - processApplicationContext(schemaNode, service.getName(), isFromUt); - //Update YANG file store. - updateYangFileStore(schemaNode, jarPath); - } - } - - /** - * Returns the node for which corresponding class is generated. - * - * @param name generated class name - * @param nodes list of yang nodes - * @return node for which corresponding class is generated - */ - private YangNode findNodeWhichShouldBeReg(String name, List nodes) { - for (YangNode node : nodes) { - if (name.equals(getServiceName(node)) || - name.equals(getInterfaceClassName(node))) { - return node; - } - } - return null; - } - - /** - * Verifies if service class should be registered or not. - * - * @param appObject application object - * @param appClass application class - */ - private void verifyApplicationRegistration(Object appObject, - Class appClass) { - Class managerClass = appObject.getClass(); - Class[] services = managerClass.getInterfaces(); - List> classes = new ArrayList<>(); - Collections.addAll(classes, services); - if (!classes.contains(appClass)) { - throw new RuntimeException("service class " + appClass.getName() + - "is not being implemented by " + - managerClass.getName()); - } - } - - /** - * Verifies if application is already registered with YMS. - * - * @param appClass application class - * @return true if application already registered - */ - private boolean verifyIfApplicationAlreadyRegistered(Class appClass) { - String appName = appClass.getName(); - return appObjectStore.containsKey(appName) || - interfaceNameKeyStore.containsKey(appName); - } - - /** - * Updates yang file store for YANG node. - * - * @param node YANG node - * @param jarPath jar file path - */ - private void updateYangFileStore(YangNode node, String jarPath) { - yangFileStore.put(getModuleIdentifier(node), - getYangFilePath(jarPath, node.getFileName())); - } - - /** - * Returns yang file path. - * - * @param jarPath jar path - * @param metaDataFileName name of yang file from metadata - * @return yang file path - */ - private String getYangFilePath(String jarPath, String metaDataFileName) { - String[] metaData = metaDataFileName.split(SLASH); - return jarPath + SLASH + metaData[metaData.length - 1]; - } - - /** - * Process jar file for fetching YANG nodes. - * - * @param path jar file path - * @return YANG schema nodes - */ - private List processJarParsingOperations(String path) { - //Deserialize data model and get the YANG node set. - String jar = path + JAR; - try { - File file = new File(jar); - if (file.exists()) { - return parseJarFile(path + JAR, path); - } - } catch (IOException e) { - log.error(" failed to parse the jar file in path {} : {} ", path, - e.getMessage()); - } - return null; - } - - /** - * Process an application an updates the maps for YANG schema registry. - * - * @param appNode application YANG schema nodes - * @param name class name - * @param isFormUt if method is being called from unit tests - */ - private void processApplicationContext(YangSchemaNode appNode, String name, - boolean isFormUt) { - - //Update map for which registrations is being called. - appNameKeyStore.put(name, appNode); - - // Updates schema store. - addToSchemaStore(appNode); - // update interface store. - interfaceNameKeyStore.put(getInterfaceClassName(appNode), appNode); - - //update op param store. - opParamNameKeyStore.put(getOpParamClassName(appNode), appNode); - - //update namespaceSchema store. - nameSpaceSchemaStore.put(appNode.getNameSpace().getModuleNamespace(), appNode); - - //Checks if notification is present then update notification store map. - String eventSubject = null; - try { - if (appNode.isNotificationPresent()) { - eventSubject = getEventClassName(appNode); - } - } catch (DataModelException e) { - log.error("failed to search notification from schema map : {}", - e.getLocalizedMessage()); - } - if (eventSubject != null) { - eventNameKeyStore.put(eventSubject, appNode); - } - if (!isFormUt) { - log.info("successfully registered this application {}", name); - } - } - - /** - * Returns jar path from bundle mvnLocationPath. - * - * @param mvnLocationPath mvnLocationPath of bundle - * @return path of jar - */ - private String getJarPathFromBundleLocation(String mvnLocationPath, - String currentDirectory) { - String path = currentDirectory + SYSTEM; - if (mvnLocationPath.contains(MAVEN)) { - String[] strArray = mvnLocationPath.split(MAVEN); - if (strArray[1].contains(File.separator)) { - String[] split = strArray[1].split(File.separator); - if (split[0].contains(PERIOD)) { - String[] groupId = split[0].split(Pattern.quote(PERIOD)); - return path + groupId[0] + SLASH + groupId[1] + SLASH + split[1] + - SLASH + split[2] + SLASH + split[1] + HYPHEN + split[2]; - } - } - } - return null; - } - - /** - * Returns schema node based on the revision. - * - * @param name name of the schema node - * @return schema node based on the revision - */ - private YangSchemaNode getSchemaNodeUsingSchemaNameWithRev(String name) { - ConcurrentMap revMap; - YangSchemaNode schemaNode; - if (name.contains(AT)) { - String[] revArray = name.split(AT); - revMap = yangSchemaStore.get(revArray[0]); - schemaNode = revMap.get(name); - if (schemaNode == null) { - log.error("{} not found.", name); - } - return schemaNode; - } - if (yangSchemaStore.containsKey(name)) { - revMap = yangSchemaStore.get(name); - if (revMap != null && !revMap.isEmpty()) { - YangSchemaNode node = revMap.get(name); - if (node != null) { - return node; - } - String revName = getLatestVersion(revMap); - return revMap.get(revName); - } - } - log.error("{} not found.", name); - return null; - } - - private String getLatestVersion(ConcurrentMap revMap) { - List keys = new ArrayList<>(); - for (Map.Entry entry : revMap.entrySet()) { - keys.add(entry.getKey()); - } - sort(keys); - return keys.get(keys.size() - 1); - } - - /** - * Adds schema node when different revision of node has received. - * - * @param schemaNode schema node - */ - private void addToSchemaStore(YangSchemaNode schemaNode) { - - String date = getDateInStringFormat(schemaNode); - String name = schemaNode.getName(); - String revName = name; - if (date != null) { - revName = name + AT + date; - } - //check if already present. - if (!yangSchemaStore.containsKey(name)) { - ConcurrentMap revStore = - new ConcurrentHashMap<>(); - revStore.put(revName, schemaNode); - yangSchemaStore.put(name, revStore); - } else { - yangSchemaStore.get(name).put(revName, schemaNode); - } - } - - /** - * Returns date in string format. - * - * @param schemaNode schema node - * @return date in string format - */ - String getDateInStringFormat(YangSchemaNode schemaNode) { - if (schemaNode != null) { - if (((YangNode) schemaNode).getRevision() != null) { - return new SimpleDateFormat(DATE_FORMAT) - .format(((YangNode) schemaNode).getRevision() - .getRevDate()); - } - } - return null; - } - - /** - * Removes schema node from schema map. - * - * @param removableNode schema node which needs to be removed - */ - private void removeSchemaNode(YangSchemaNode removableNode) { - String name = removableNode.getName(); - String revName = name; - String date = getDateInStringFormat(removableNode); - if (date != null) { - revName = name + AT + date; - } - ConcurrentMap revMap = yangSchemaStore.get(name); - if (revMap != null && !revMap.isEmpty() && revMap.size() != 1) { - revMap.remove(revName); - } else { - yangSchemaStore.remove(removableNode.getName()); - } - } - - /** - * Adds sub module identifier. - * - * @param node schema node - * @param information module information - */ - private void addSubModuleIdentifier( - YangSchemaNode node, DefaultYangModuleInformation information) { - List includeList = new ArrayList<>(); - if (node instanceof YangModule) { - includeList = ((YangModule) node).getIncludeList(); - } else if (node instanceof YangSubModule) { - includeList = ((YangSubModule) node).getIncludeList(); - } - for (YangInclude include : includeList) { - information.addSubModuleIdentifiers(getModuleIdentifier( - include.getIncludedNode())); - } - } - - /** - * Returns module identifier for schema node. - * - * @param schemaNode schema node - * @return module identifier for schema node - */ - private YangModuleIdentifier getModuleIdentifier( - YangSchemaNode schemaNode) { - return new DefaultYangModuleIdentifier( - schemaNode.getName(), getDateInStringFormat(schemaNode)); - } - - /** - * Returns schema node's generated interface class name. - * - * @param schemaNode schema node - * @return schema node's generated interface class name - */ - String getInterfaceClassName(YangSchemaNode schemaNode) { - return schemaNode.getJavaPackage() + PERIOD + - getCapitalCase(schemaNode.getJavaClassNameOrBuiltInType()); - } - - /** - * Returns schema node's generated op param class name. - * - * @param schemaNode schema node - * @return schema node's generated op param class name - */ - private String getOpParamClassName(YangSchemaNode schemaNode) { - return getInterfaceClassName(schemaNode) + OP_PARAM; - } - - /** - * Returns schema node's generated event class name. - * - * @param schemaNode schema node - * @return schema node's generated event class name - */ - private String getEventClassName(YangSchemaNode schemaNode) { - return getInterfaceClassName(schemaNode).toLowerCase() + PERIOD + - getCapitalCase(schemaNode.getJavaClassNameOrBuiltInType()) + - EVENT_STRING; - } - - /** - * Returns schema node's generated service class name. - * - * @param schemaNode schema node - * @return schema node's generated service class name - */ - String getServiceName(YangSchemaNode schemaNode) { - return getInterfaceClassName(schemaNode) + SERVICE; - } - - /** - * Removes YSR generated temporary resources. - * - * @param rscPath resource path - * @param appName application name - */ - private void removeYsrGeneratedTemporaryResources(String rscPath, - String appName) { - if (rscPath != null) { - File jarPath = new File(rscPath); - if (jarPath.exists()) { - try { - deleteDirectory(jarPath); - } catch (IOException e) { - log.error("failed to delete ysr resources for {} : {}", - appName, e.getLocalizedMessage()); - } - } - } - } -} \ No newline at end of file diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/YangSchemaRegistry.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/YangSchemaRegistry.java deleted file mode 100644 index 3b9eb1e2ee..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/YangSchemaRegistry.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ysr; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.ysr.YangModuleIdentifier; -import org.onosproject.yms.ysr.YangModuleLibrary; - -/** - * Abstraction of entity which provides interfaces to YANG schema registry. - */ -public interface YangSchemaRegistry { - - /** - * Registers applications to YMS. - * - * @param managerObject application's object - * @param serviceClass service class which needs to be - * registered - */ - void registerApplication(Object managerObject, Class serviceClass); - - /** - * Unregisters applications to YMS. - * - * @param managerObject application's object - * @param serviceClass service class which needs to be unregistered - */ - void unRegisterApplication(Object managerObject, Class serviceClass); - - /** - * Returns application's implementation's class object. - * - * @param yangSchemaNode application's schema node - * @return application's implementation's class object - */ - Object getRegisteredApplication(YangSchemaNode yangSchemaNode); - - /** - * Returns YANG schema node using schema name. - * - * @param schemaName module name. - * @return YANG schema node using schema name - */ - YangSchemaNode getYangSchemaNodeUsingSchemaName(String schemaName); - - /** - * Returns YANG schema nodes using application name. - * - * @param appName application's service name - * @return YANG schema nodes using application name - */ - YangSchemaNode getYangSchemaNodeUsingAppName(String appName); - - /** - * Returns YANG schema nodes using root interface file name. - * - * @param rootInterfaceFileName name of generated interface file - * for root node - * @return YANG schema nodes using root interface file name - */ - YangSchemaNode - getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - String rootInterfaceFileName); - - /** - * Returns YANG schema nodes using root op param file name. - * - * @param rootOpParamFileName name of generated op param file for root node - * @return YANG schema nodes using root op param file name - */ - YangSchemaNode - getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - String rootOpParamFileName); - - /** - * Returns YANG schema node of root for notifications. - * - * @param eventSubject event subject - * @return YANG schema node of root for notifications - */ - YangSchemaNode getRootYangSchemaNodeForNotification(String eventSubject); - - /** - * Returns registered service class. - * - * @param schemaNode YANG schema node - * @return registered service class - */ - Class getRegisteredClass(YangSchemaNode schemaNode); - - /** - * Verifies if the manager object is already registered with notification - * handler. - * - * @param appObj application object - * @param service service class - * @return true if the manager object is already registered with - * notification handler - */ - boolean verifyNotificationObject(Object appObj, Class service); - - /** - * Clears database for YSR. - */ - void flushYsrData(); - - /** - * Protocols like RESTCONF, use the definitions within the YANG modules - * advertised by the server are used to construct an RPC operation or - * data resource identifier. - *

- * Schema Resource: - * The server can optionally support retrieval of the YANG modules it - * supports. - * - * @param moduleIdentifier module's identifier - * @return YANG file contents of the requested YANG module. - */ - String getYangFile(YangModuleIdentifier moduleIdentifier); - - /** - * Process module library for a registered service. - * - * @param serviceName service class name - * @param library YANG module library - */ - void processModuleLibrary(String serviceName, YangModuleLibrary library); - - /** - * Returns YANG schema node for a given namespace while xml decoding. - *

- * According to rfc 6020 Xml should not have module name in it but when - * decoder wants to convert xml to YANG object it will need module schema - * which it can get only by using module name from YSR. So if YCH sends - * namespace of a module we can given it the schema node of module. In - * this case namespace should be unique. - *

- * - * @param nameSpace name space of module - * @return module schema node - */ - YangSchemaNode getSchemaWrtNameSpace(String nameSpace); - -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/package-info.java deleted file mode 100644 index 1a15e1f805..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ysr/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of YANG Schema Registry. YSR maintains the schema - * information registry corresponding to registered app. - */ -package org.onosproject.yms.app.ysr; diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilder.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilder.java deleted file mode 100644 index 9ea03f0594..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilder.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedBuilder; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.ydt.YmsOperationType; - -import java.util.List; - -import static org.onosproject.yms.app.ytb.YtbUtil.emptyObjErrMsg; -import static org.onosproject.yms.ydt.YmsOperationType.NOTIFICATION; -import static org.onosproject.yms.ydt.YmsOperationType.RPC_REPLY; - -/** - * Representation of YANG tree builder which generates YANG data tree from the - * class objects which are provided from the applications and return it to the - * protocol(s). - */ -public class DefaultYangTreeBuilder implements YangTreeBuilder { - - private static final String OBJ_LIST = "object list"; - private static final String EVENT_OBJ = "event object"; - private static final String OUTPUT_OBJ = "output object"; - - /** - * Creates the YANG tree builder. - */ - public DefaultYangTreeBuilder() { - } - - @Override - public YdtExtendedBuilder getYdtBuilderForYo(List moduleObj, String rootName, - String rootNameSpace, YmsOperationType opType, - YangSchemaRegistry registry) { - - if (moduleObj == null) { - throw new YtbException(emptyObjErrMsg(OBJ_LIST)); - } - - YdtExtendedBuilder ydtBuilder = new YangRequestWorkBench( - rootName, rootNameSpace, opType, registry, false); - - for (Object yangObj : moduleObj) { - YdtBuilderFromYo moduleBuilder = new YdtBuilderFromYo( - ydtBuilder, yangObj, registry); - - moduleBuilder.getModuleNodeFromYsr(yangObj); - moduleBuilder.createYdtFromRootObject(); - } - return ydtBuilder; - } - - @Override - public YdtExtendedContext getYdtForNotification(Object object, String rootName, - YangSchemaRegistry registry) { - - if (object == null) { - throw new YtbException(emptyObjErrMsg(EVENT_OBJ)); - } - - YdtExtendedBuilder extBuilder = new YangRequestWorkBench( - rootName, null, NOTIFICATION, registry, false); - YdtBuilderFromYo moduleBuilder = new YdtBuilderFromYo( - extBuilder, object, registry); - - moduleBuilder.getRootNodeWithNotificationFromYsr(object); - /* - * Adds module to YDT, so that notification can further enhance the - * tree. - */ - moduleBuilder.createModuleInYdt(); - moduleBuilder.createYdtFromRootObject(); - return extBuilder.getRootNode(); - } - - @Override - public YdtExtendedBuilder getYdtForRpcResponse(Object outputObj, - YdtExtendedBuilder reqBuilder) { - - if (outputObj == null) { - throw new YtbException(emptyObjErrMsg(OUTPUT_OBJ)); - } - - YangRequestWorkBench workBench = (YangRequestWorkBench) reqBuilder; - - // Gets the logical root node from RPC request work bench. - YdtExtendedContext rootNode = workBench.getRootNode(); - - /* - * Creates a new work bench for RPC reply from the contents of the - * request work bench - */ - YdtExtendedBuilder ydtBuilder = - new YangRequestWorkBench(null, null, RPC_REPLY, - workBench.getYangSchemaRegistry(), - false); - YdtBuilderFromYo moduleBuilder = - new YdtBuilderFromYo(ydtBuilder, outputObj, - workBench.getYangSchemaRegistry()); - - // Forms YDT till RPC, so that output can further enhance the tree. - moduleBuilder.createModuleAndRpcInYdt(rootNode); - moduleBuilder.createYdtFromRootObject(); - return ydtBuilder; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YangTreeBuilder.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YangTreeBuilder.java deleted file mode 100644 index 8df19c7a50..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YangTreeBuilder.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -import org.onosproject.yms.app.ydt.YdtExtendedBuilder; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.ydt.YmsOperationType; - -import java.util.List; - -/** - * Abstraction of an entity which provides interfaces to build YANG data tree - * from the object received from YNH, YAB or YCH. - */ -public interface YangTreeBuilder { - - /** - * Returns the YDT builder after building the tree corresponding to the - * response YANG object received from any of the protocol such as YAB or - * YCH. - * - * @param moduleObj application module object - * @param rootName logical root node name - * @param rootNameSpace logical root node namespace - * @param opType root node operation type - * @param registry application schema registry - * @return YDT builder from the tree - */ - YdtExtendedBuilder getYdtBuilderForYo(List moduleObj, - String rootName, - String rootNameSpace, - YmsOperationType opType, - YangSchemaRegistry registry); - - /** - * Returns the YDT context after building the tree received from the - * protocol YNH. - * - * @param object application notification object - * @param rootName logical root node name - * @param registry application schema registry - * @return YDT context from the tree - */ - YdtExtendedContext getYdtForNotification(Object object, String rootName, - YangSchemaRegistry registry); - - /** - * Returns the YDT context after building the RPC response tree. The input - * for building the tree is RPC request builder, RPC output java object. - * These are received from the YSB protocol. - * - * @param outputObj application output object - * @param reqBuilder RPC request builder from YDT - * @return YDT builder where RPC response tree is created - */ - YdtExtendedBuilder getYdtForRpcResponse(Object outputObj, - YdtExtendedBuilder reqBuilder); -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java deleted file mode 100644 index 96d3950458..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java +++ /dev/null @@ -1,1034 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -import org.onosproject.yangutils.datamodel.YangAugment; -import org.onosproject.yangutils.datamodel.YangAugmentableNode; -import org.onosproject.yangutils.datamodel.YangCase; -import org.onosproject.yangutils.datamodel.YangChoice; -import org.onosproject.yangutils.datamodel.YangDerivedInfo; -import org.onosproject.yangutils.datamodel.YangLeaf; -import org.onosproject.yangutils.datamodel.YangLeafList; -import org.onosproject.yangutils.datamodel.YangLeafRef; -import org.onosproject.yangutils.datamodel.YangLeavesHolder; -import org.onosproject.yangutils.datamodel.YangNode; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier; -import org.onosproject.yangutils.datamodel.YangType; -import org.onosproject.yangutils.datamodel.exceptions.DataModelException; -import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes; -import org.onosproject.yms.app.utils.TraversalType; -import org.onosproject.yms.app.ydt.YdtExtendedBuilder; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.ydt.YdtContextOperationType; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY; -import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase; -import static org.onosproject.yms.app.utils.TraversalType.CHILD; -import static org.onosproject.yms.app.utils.TraversalType.PARENT; -import static org.onosproject.yms.app.utils.TraversalType.ROOT; -import static org.onosproject.yms.app.utils.TraversalType.SIBLING; -import static org.onosproject.yms.app.ydt.AppType.YTB; -import static org.onosproject.yms.app.ytb.YtbUtil.PERIOD; -import static org.onosproject.yms.app.ytb.YtbUtil.STR_NULL; -import static org.onosproject.yms.app.ytb.YtbUtil.getAttributeFromInheritance; -import static org.onosproject.yms.app.ytb.YtbUtil.getAttributeOfObject; -import static org.onosproject.yms.app.ytb.YtbUtil.getClassLoaderForAugment; -import static org.onosproject.yms.app.ytb.YtbUtil.getInterfaceClassFromImplClass; -import static org.onosproject.yms.app.ytb.YtbUtil.getJavaName; -import static org.onosproject.yms.app.ytb.YtbUtil.getNodeOpType; -import static org.onosproject.yms.app.ytb.YtbUtil.getOpTypeName; -import static org.onosproject.yms.app.ytb.YtbUtil.getParentObjectOfNode; -import static org.onosproject.yms.app.ytb.YtbUtil.getStringFromType; -import static org.onosproject.yms.app.ytb.YtbUtil.isAugmentNode; -import static org.onosproject.yms.app.ytb.YtbUtil.isMultiInstanceNode; -import static org.onosproject.yms.app.ytb.YtbUtil.isNodeProcessCompleted; -import static org.onosproject.yms.app.ytb.YtbUtil.isNonProcessableNode; -import static org.onosproject.yms.app.ytb.YtbUtil.isTypePrimitive; -import static org.onosproject.yms.app.ytb.YtbUtil.isValueOrSelectLeafSet; -import static org.onosproject.yms.app.ytb.YtbUtil.nonEmpty; -import static org.onosproject.yms.ydt.YdtContextOperationType.NONE; - -/** - * Implements traversal of YANG node and its corresponding object, resulting - * in building of the YDT tree. - */ -public class YdtBuilderFromYo { - - private static final String STR_TYPE = "type"; - private static final String STR_SUBJECT = "subject"; - private static final String TRUE = "true"; - private static final String IS_LEAF_VALUE_SET_METHOD = "isLeafValueSet"; - private static final String IS_SELECT_LEAF_SET_METHOD = "isSelectLeaf"; - private static final String OUTPUT = "output"; - private static final String YANG_AUGMENTED_INFO_MAP = - "yangAugmentedInfoMap"; - private static final String FALSE = "false"; - - /** - * Application YANG schema registry. - */ - private final YangSchemaRegistry registry; - - /** - * Current instance of the YDT builder where the tree is built. - */ - private final YdtExtendedBuilder extBuilder; - - /** - * YANG root object that is required for walking along with the YANG node. - */ - private Object rootObj; - - /** - * YANG root node that is required for walking along with the YANG object. - */ - private YangSchemaNode rootSchema; - - /** - * Creates YDT builder from YANG object by assigning the mandatory values. - * - * @param rootBuilder root node builder - * @param rootObj root node object - * @param registry application schema registry - */ - public YdtBuilderFromYo(YdtExtendedBuilder rootBuilder, Object rootObj, - YangSchemaRegistry registry) { - extBuilder = rootBuilder; - this.rootObj = rootObj; - this.registry = registry; - } - - /** - * Returns schema root node, received from YSR, which searches based on - * the object received from YAB or YCH. - * - * @param object root node object - */ - public void getModuleNodeFromYsr(Object object) { - Class interfaceClass = getInterfaceClassFromImplClass(object); - rootSchema = registry - .getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - interfaceClass.getName()); - } - - /** - * Returns schema root node, received from YSR, which searches based on - * the object received from YNH. - * - * @param object notification event object - */ - public void getRootNodeWithNotificationFromYsr(Object object) { - rootSchema = registry.getRootYangSchemaNodeForNotification( - object.getClass().getName()); - } - - /** - * Creates the module node for in YDT before beginning with notification - * root node traversal. Collects sufficient information to fill YDT with - * notification root node in the traversal. - */ - public void createModuleInYdt() { - extBuilder.addChild(NONE, rootSchema); - rootSchema = getSchemaNodeOfNotification(); - rootObj = getObjOfNotification(); - } - - /** - * Creates the module and RPC node, in YDT tree, from the logical root - * node received from request workbench. The output schema node is taken - * from the child schema of RPC YANG node. - * - * @param rootNode logical root node - */ - public void createModuleAndRpcInYdt(YdtExtendedContext rootNode) { - - YdtExtendedContext moduleNode = - (YdtExtendedContext) rootNode.getFirstChild(); - extBuilder.addChild(NONE, moduleNode.getYangSchemaNode()); - - YdtExtendedContext rpcNode = - (YdtExtendedContext) moduleNode.getFirstChild(); - YangSchemaNode rpcSchemaNode = rpcNode.getYangSchemaNode(); - extBuilder.addChild(NONE, rpcSchemaNode); - - // Defines a schema identifier for output node. - YangSchemaNodeIdentifier schemaId = new YangSchemaNodeIdentifier(); - schemaId.setName(OUTPUT); - schemaId.setNameSpace(rpcSchemaNode.getNameSpace()); - try { - // Gets the output schema node from RPC child schema. - rootSchema = rpcSchemaNode.getChildSchema(schemaId).getSchemaNode(); - } catch (DataModelException e) { - throw new YtbException(e); - } - } - - /** - * Creates YDT tree from the root object, by traversing through YANG data - * model node, and simultaneously checking the object nodes presence and - * walking the object. - */ - public void createYdtFromRootObject() { - YangNode curNode = (YangNode) rootSchema; - TraversalType curTraversal = ROOT; - YtbNodeInfo listNodeInfo = null; - YtbNodeInfo augmentNodeInfo = null; - - while (curNode != null) { - /* - * Processes the node, if it is being visited for the first time in - * the schema, also if the schema node is being retraced in a multi - * instance node. - */ - if (curTraversal != PARENT || isMultiInstanceNode(curNode)) { - - if (curTraversal == PARENT && isMultiInstanceNode(curNode)) { - /* - * If the schema is being retraced for a multi-instance - * node, it has already entered for this multi-instance - * node. Now this re-processes the same schema node for - * any additional list object. - */ - listNodeInfo = getCurNodeInfoAndTraverseBack(); - } - - if (curTraversal == ROOT && !isAugmentNode(curNode)) { - /* - * In case of RPC output, the root node is augmentative, - * so when the root traversal is coming for augment this - * flow is skipped. This adds only the root node in the YDT. - */ - processApplicationRootNode(); - } else { - /* - * Gets the object corresponding to current schema node. - * If object exists, this adds the corresponding YDT node - * to the tree and returns the object. Else returns null. - */ - Object processedObject = processCurSchemaNodeAndAddToYdt( - curNode, listNodeInfo); - /* - * Clears the list info of processed node. The next time - * list info is taken newly and accordingly. - */ - listNodeInfo = null; - if (processedObject == null && !isAugmentNode(curNode)) { - /* - * Checks the presence of next sibling of the node, by - * breaking the complete chain of the current node, - * when the object value is not present, or when the - * list entries are completely retraced. The augment - * may have sibling, so this doesn't process for - * augment. - */ - YtbTraversalInfo traverseInfo = - getProcessableInfo(curNode); - curNode = traverseInfo.getYangNode(); - curTraversal = traverseInfo.getTraverseType(); - continue; - /* - * Irrespective of root or parent, sets the traversal - * type as parent, when augment node doesn't have any - * value. So, the other sibling augments can be - * processed, if present. - */ - } else if (processedObject == null && - isAugmentNode(curNode)) { - curTraversal = PARENT; - /* - * The second content in the list will be having - * parent traversal, in such case it cannot go to its - * child in the flow, so it is made as child - * traversal and proceeded to continue. - */ - } else if (curTraversal == PARENT && - isMultiInstanceNode(curNode)) { - curTraversal = CHILD; - } - } - } - /* - * Checks for the sibling augment when the first augment node is - * getting completed. From the current augment node the previous - * node info is taken for augment and the traversal is changed to - * child, so as to check for the presence of sibling augment. - */ - if (curTraversal == PARENT && isAugmentNode(curNode)) { - curNode = ((YangAugment) curNode).getAugmentedNode(); - augmentNodeInfo = getParentYtbInfo(); - curTraversal = CHILD; - } - /* - * Creates an augment iterator for the first time or takes the - * previous augment iterator for more than one time, whenever an - * augmentative node arrives. If augment is present it goes back - * for processing. If its null, the augmentative nodes process is - * continued. - */ - if (curTraversal != PARENT && - curNode instanceof YangAugmentableNode) { - YangNode augmentNode = getAugmentInsideSchemaNode( - curNode, augmentNodeInfo); - if (augmentNode != null) { - curNode = augmentNode; - continue; - } - } - /* - * Processes the child, after processing the node. If complete - * child depth is over, it takes up sibling and processes it. - * Once child and sibling is over, it is traversed back to the - * parent, without processing. In multi instance case, before - * going to parent or schema sibling, its own list sibling is - * processed. Skips the processing of RPC,notification and - * augment, as these nodes are dealt in a different flow. - */ - if (curTraversal != PARENT && curNode.getChild() != null) { - augmentNodeInfo = null; - listNodeInfo = null; - curTraversal = CHILD; - curNode = curNode.getChild(); - if (isNonProcessableNode(curNode)) { - YtbTraversalInfo traverseInfo = getProcessableInfo(curNode); - curNode = traverseInfo.getYangNode(); - curTraversal = traverseInfo.getTraverseType(); - } - } else if (curNode.getNextSibling() != null) { - if (isNodeProcessCompleted(curNode, curTraversal)) { - break; - } - if (isMultiInstanceNode(curNode)) { - listNodeInfo = getCurNodeInfoAndTraverseBack(); - augmentNodeInfo = null; - continue; - } - curTraversal = SIBLING; - augmentNodeInfo = null; - traverseToParent(curNode); - curNode = curNode.getNextSibling(); - if (isNonProcessableNode(curNode)) { - YtbTraversalInfo traverseInfo = getProcessableInfo(curNode); - curNode = traverseInfo.getYangNode(); - curTraversal = traverseInfo.getTraverseType(); - } - } else { - if (isNodeProcessCompleted(curNode, curTraversal)) { - break; - } - if (isMultiInstanceNode(curNode)) { - listNodeInfo = getCurNodeInfoAndTraverseBack(); - augmentNodeInfo = null; - continue; - } - curTraversal = PARENT; - traverseToParent(curNode); - curNode = getParentSchemaNode(curNode); - } - } - } - - /** - * Returns parent schema node of current node. - * - * @param curNode current schema node - * @return parent schema node - */ - private YangNode getParentSchemaNode(YangNode curNode) { - if (curNode instanceof YangAugment) { - /* - * If curNode is augment, either next augment or augmented node - * has to be processed. So traversal type is changed to parent, - * but node is not changed. - */ - return curNode; - } - return curNode.getParent(); - } - - /** - * Processes root YANG node and adds it as a child to the YDT - * extended builder which is created earlier. - */ - private void processApplicationRootNode() { - - YtbNodeInfo nodeInfo = new YtbNodeInfo(); - YangNode rootYang = (YangNode) rootSchema; - addChildNodeInYdt(rootObj, rootYang, nodeInfo); - // If root node has leaf or leaf-list those will be processed. - processLeaves(rootYang); - processLeavesList(rootYang); - } - - /** - * Traverses to parent, based on the schema node that requires to be - * traversed. Skips traversal of parent for choice and case node, as they - * don't get added to the YDT tree. - * - * @param curNode current YANG node - */ - private void traverseToParent(YangNode curNode) { - if (curNode instanceof YangCase || curNode instanceof YangChoice - || curNode instanceof YangAugment) { - return; - } - extBuilder.traverseToParentWithoutValidation(); - } - - /** - * Returns the current YTB info of the YDT builder, and then traverses back - * to parent. In case of multi instance node the previous node info is - * used for iterating through the list. - * - * @return current YTB app info - */ - private YtbNodeInfo getCurNodeInfoAndTraverseBack() { - YtbNodeInfo appInfo = getParentYtbInfo(); - extBuilder.traverseToParentWithoutValidation(); - return appInfo; - } - - /** - * Returns augment node for an augmented node. From the list of augment - * nodes it has, one of the nodes is taken and provided linearly. If the - * node is not augmented or the all the augment nodes are processed, then - * it returns null. - * - * @param curNode current YANG node - * @param augmentNodeInfo previous augment node info - * @return YANG augment node - */ - private YangNode getAugmentInsideSchemaNode(YangNode curNode, - YtbNodeInfo augmentNodeInfo) { - if (augmentNodeInfo == null) { - List augmentList = ((YangAugmentableNode) curNode) - .getAugmentedInfoList(); - if (nonEmpty(augmentList)) { - YtbNodeInfo parentNodeInfo = getParentYtbInfo(); - Iterator augmentItr = augmentList.listIterator(); - parentNodeInfo.setAugmentIterator(augmentItr); - return augmentItr.next(); - } - } else if (augmentNodeInfo.getAugmentIterator() != null) { - if (augmentNodeInfo.getAugmentIterator().hasNext()) { - return augmentNodeInfo.getAugmentIterator().next(); - } - } - return null; - } - - /** - * Processes the current YANG node and if necessary adds it to the YDT - * builder tree by extracting the information from the corresponding - * class object. - * - * @param curNode current YANG node - * @param listNodeInfo previous node info for list - * @return object of the schema node - */ - private Object processCurSchemaNodeAndAddToYdt(YangNode curNode, - YtbNodeInfo listNodeInfo) { - YtbNodeInfo curNodeInfo = new YtbNodeInfo(); - Object nodeObj = null; - YtbNodeInfo parentNodeInfo = getParentYtbInfo(); - - switch (curNode.getYangSchemaNodeType()) { - case YANG_SINGLE_INSTANCE_NODE: - nodeObj = processSingleInstanceNode(curNode, curNodeInfo, - parentNodeInfo); - break; - case YANG_MULTI_INSTANCE_NODE: - nodeObj = processMultiInstanceNode( - curNode, curNodeInfo, listNodeInfo, parentNodeInfo); - break; - case YANG_CHOICE_NODE: - nodeObj = processChoiceNode(curNode, parentNodeInfo); - break; - case YANG_NON_DATA_NODE: - if (curNode instanceof YangCase) { - nodeObj = processCaseNode(curNode, parentNodeInfo); - } - break; - case YANG_AUGMENT_NODE: - nodeObj = processAugmentNode(curNode, parentNodeInfo); - break; - default: - throw new YtbException( - "Non processable schema node has arrived for adding " + - "it in YDT tree"); - } - // Processes leaf/leaf-list only when object has value, else it skips. - if (nodeObj != null) { - processLeaves(curNode); - processLeavesList(curNode); - } - return nodeObj; - } - - /** - * Processes single instance node which is added to the YDT tree. - * - * @param curNode current YANG node - * @param curNodeInfo current YDT node info - * @param parentNodeInfo parent YDT node info - * @return object of the current node - */ - private Object processSingleInstanceNode(YangNode curNode, - YtbNodeInfo curNodeInfo, - YtbNodeInfo parentNodeInfo) { - Object childObj = getChildObject(curNode, parentNodeInfo); - if (childObj != null) { - addChildNodeInYdt(childObj, curNode, curNodeInfo); - } - return childObj; - } - - /** - * Processes multi instance node which has to be added to the YDT tree. - * For the first instance in the list, iterator is created and added to - * the list. For second instance or more the iterator from first instance - * is taken and iterated through to get the object of parent. - * - * @param curNode current list node - * @param curNodeInfo current node info for list - * @param listNodeInfo previous instance node info of list - * @param parentNodeInfo parent node info of list - * @return object of the current instance - */ - private Object processMultiInstanceNode(YangNode curNode, - YtbNodeInfo curNodeInfo, - YtbNodeInfo listNodeInfo, - YtbNodeInfo parentNodeInfo) { - Object childObj = null; - /* - * When YANG list comes to this flow for first time, its YTB node - * will be null. When it comes for the second or more content, then - * the list would have been already set for that node. According to - * set or not set this flow will be proceeded. - */ - if (listNodeInfo == null) { - List childObjList = (List) getChildObject( - curNode, parentNodeInfo); - if (nonEmpty(childObjList)) { - Iterator listItr = childObjList.iterator(); - if (!listItr.hasNext()) { - return null; - //TODO: Handle the subtree filtering with no list entries. - } - childObj = listItr.next(); - /* - * For that node the iterator is set. So the next time for - * the list this iterator will be taken. - */ - curNodeInfo.setListIterator(listItr); - } - } else { - /* - * If the list value comes for second or more time, that list - * node will be having YTB node info, where iterator can be - * retrieved and check if any more contents are present. If - * present those will be processed. - */ - curNodeInfo.setListIterator(listNodeInfo.getListIterator()); - if (listNodeInfo.getListIterator().hasNext()) { - childObj = listNodeInfo.getListIterator().next(); - } - } - if (childObj != null) { - addChildNodeInYdt(childObj, curNode, curNodeInfo); - } - return childObj; - } - - /** - * Processes choice node which adds a map to the parent node info of - * choice name and the case object. The object taken for choice node is - * of case object with choice name. Also, this Skips the addition of choice - * to YDT. - * - * @param curNode current choice node - * @param parentNodeInfo parent YTB node info - * @return object of the choice node - */ - private Object processChoiceNode(YangNode curNode, - YtbNodeInfo parentNodeInfo) { - /* - * Retrieves the parent YTB info, to take the object of parent, so as - * to check the child attribute from the object. - */ - Object childObj = getChildObject(curNode, parentNodeInfo); - if (childObj != null) { - Map choiceCaseMap = parentNodeInfo - .getChoiceCaseMap(); - if (choiceCaseMap == null) { - choiceCaseMap = new HashMap<>(); - parentNodeInfo.setChoiceCaseMap(choiceCaseMap); - } - choiceCaseMap.put(curNode.getName(), childObj); - } - return childObj; - } - - /** - * Processes case node from the map contents that is filled by choice - * nodes. Object of choice is taken when choice name and case class name - * matches. When the case node is not present in the map it returns null. - * - * @param curNode current case node - * @param parentNodeInfo choice parent node info - * @return object of the case node - */ - private Object processCaseNode(YangNode curNode, - YtbNodeInfo parentNodeInfo) { - Object childObj = null; - if (parentNodeInfo.getChoiceCaseMap() != null) { - childObj = getCaseObjectFromChoice(parentNodeInfo, - curNode); - } - if (childObj != null) { - /* - * Sets the case object in parent info, so that rest of the case - * children can use it as parent. Case is not added in YDT. - */ - parentNodeInfo.setCaseObject(childObj); - } - return childObj; - } - - /** - * Processes augment node, which is not added in the YDT, but binds - * itself to the parent YTB info, so rest of its child nodes can use for - * adding themselves to the YDT tree. If there is no augment node added - * in map or if the augment module is not registered, then it returns null. - * - * @param curNode current augment node - * @param parentNodeInfo augment parent node info - * @return object of the augment node - */ - private Object processAugmentNode(YangNode curNode, - YtbNodeInfo parentNodeInfo) { - String className = curNode.getJavaClassNameOrBuiltInType(); - String pkgName = curNode.getJavaPackage(); - Object parentObj = getParentObjectOfNode(parentNodeInfo, - curNode.getParent()); - Map augmentMap; - try { - augmentMap = (Map) getAttributeOfObject(parentObj, - YANG_AUGMENTED_INFO_MAP); - /* - * Gets the registered module class. Loads the class and gets the - * augment class. - */ - Class moduleClass = getClassLoaderForAugment(curNode, registry); - if (moduleClass == null) { - return null; - } - Class augmentClass = moduleClass.getClassLoader().loadClass( - pkgName + PERIOD + className); - Object childObj = augmentMap.get(augmentClass); - parentNodeInfo.setAugmentObject(childObj); - return childObj; - } catch (ClassNotFoundException | NoSuchMethodException e) { - throw new YtbException(e); - } - } - - /** - * Returns the YTB info from the parent node, so that its own bounded - * object can be taken out. - * - * @return parent node YTB node info - */ - private YtbNodeInfo getParentYtbInfo() { - YdtExtendedContext parentExtContext = extBuilder.getCurNode(); - return (YtbNodeInfo) parentExtContext.getAppInfo(YTB); - } - - /** - * Returns the child object from the parent object. Uses java name of the - * current node to search the attribute in the parent object. - * - * @param curNode current YANG node - * @param parentNodeInfo parent YTB node info - * @return object of the child node - */ - private Object getChildObject(YangNode curNode, - YtbNodeInfo parentNodeInfo) { - String nodeJavaName = curNode.getJavaAttributeName(); - Object parentObj = getParentObjectOfNode(parentNodeInfo, - curNode.getParent()); - try { - return getAttributeOfObject(parentObj, nodeJavaName); - } catch (NoSuchMethodException e) { - throw new YtbException(e); - } - } - - /** - * Adds the child node to the YDT by taking operation type from the - * object. Also, binds the object to the YDT node through YTB node info. - * - * @param childObj node object - * @param curNode current YANG node - * @param curNodeInfo current YTB info - */ - private void addChildNodeInYdt(Object childObj, YangNode curNode, - YtbNodeInfo curNodeInfo) { - YdtContextOperationType opType = - getNodeOpType(childObj, getOpTypeName(curNode)); - extBuilder.addChild(opType, curNode); - YdtExtendedContext curExtContext = extBuilder.getCurNode(); - curNodeInfo.setYangObject(childObj); - curExtContext.addAppInfo(YTB, curNodeInfo); - } - - /** - * Processes every leaf in a YANG node. Iterates through the leaf, takes - * value from the leaf and adds it to the YDT with value. If value is not - * present, and select leaf is set, adds it to the YDT without value. - * - * @param yangNode leaves holder node - */ - private void processLeaves(YangNode yangNode) { - if (yangNode instanceof YangLeavesHolder) { - List leavesList = ((YangLeavesHolder) yangNode) - .getListOfLeaf(); - if (leavesList != null) { - for (YangLeaf yangLeaf : leavesList) { - YtbNodeInfo parentYtbInfo = getParentYtbInfo(); - Object parentObj = getParentObjectOfNode(parentYtbInfo, - yangNode); - Object leafType; - try { - leafType = getAttributeOfObject(parentObj, - getJavaName(yangLeaf)); - } catch (NoSuchMethodException e) { - throw new YtbException(e); - } - - addLeafWithValue(yangNode, yangLeaf, parentObj, leafType); - addLeafWithoutValue(yangNode, yangLeaf, parentObj); - } - } - } - } - - /** - * Processes every leaf-list in a YANG node for adding the value in YDT. - * - * @param yangNode list of leaf-list holder node - */ - private void processLeavesList(YangNode yangNode) { - if (yangNode instanceof YangLeavesHolder) { - List listOfLeafList = - ((YangLeavesHolder) yangNode).getListOfLeafList(); - - if (listOfLeafList != null) { - for (YangLeafList yangLeafList : listOfLeafList) { - addToBuilder(yangNode, yangLeafList); - } - } - } - } - - /** - * Processes the list of objects of the leaf list and adds the leaf list - * value to the builder. - * - * @param yangNode YANG node - * @param leafList YANG leaf list - */ - private void addToBuilder(YangNode yangNode, YangLeafList leafList) { - YtbNodeInfo ytbNodeInfo = getParentYtbInfo(); - Object parentObj = getParentObjectOfNode(ytbNodeInfo, yangNode); - List obj; - try { - obj = (List) getAttributeOfObject(parentObj, - getJavaName(leafList)); - } catch (NoSuchMethodException e) { - throw new YtbException(e); - } - if (obj != null) { - addLeafListValue(yangNode, parentObj, leafList, obj); - } - } - - /** - * Adds the leaf list value to the YDT builder by taking the string value - * from the data type. - * - * @param yangNode YANG node - * @param parentObj parent object - * @param leafList YANG leaf list - * @param obj list of objects - */ - private void addLeafListValue(YangNode yangNode, Object parentObj, - YangLeafList leafList, List obj) { - - Set leafListVal = new LinkedHashSet<>(); - boolean isEmpty = false; - for (Object object : obj) { - String val = getStringFromType(yangNode, parentObj, - getJavaName(leafList), object, - leafList.getDataType()); - isEmpty = isTypeEmpty(val, leafList.getDataType()); - if (isEmpty) { - if (val.equals(TRUE)) { - addLeafList(leafListVal, leafList); - } - break; - } - if (!"".equals(val)) { - leafListVal.add(val); - } - } - if (!isEmpty && !leafListVal.isEmpty()) { - addLeafList(leafListVal, leafList); - } - } - - /** - * Adds set of leaf list values in the builder and traverses back to the - * holder. - * - * @param leafListVal set of values - * @param leafList YANG leaf list - */ - private void addLeafList(Set leafListVal, YangLeafList leafList) { - extBuilder.addLeafList(leafListVal, leafList); - extBuilder.traverseToParentWithoutValidation(); - } - - /** - * Returns the schema node of notification from the root node. Gets the - * enum value from event object and gives it to the root schema node for - * getting back the notification schema node. - * - * @return YANG schema node of notification - */ - private YangSchemaNode getSchemaNodeOfNotification() { - - Object eventObjType = getAttributeFromInheritance(rootObj, STR_TYPE); - String opTypeValue = String.valueOf(eventObjType); - - if (opTypeValue.equals(STR_NULL) || opTypeValue.isEmpty()) { - throw new YtbException( - "There is no notification present for the event. Invalid " + - "input for notification."); - } - try { - return rootSchema.getNotificationSchemaNode(opTypeValue); - } catch (DataModelException e) { - throw new YtbException(e); - } - } - - /** - * Returns the object of the notification by retrieving the attributes - * from the event class object. - * - * @return notification YANG object - */ - private Object getObjOfNotification() { - - Object eventSubjectObj = - getAttributeFromInheritance(rootObj, STR_SUBJECT); - String notificationName = rootSchema.getJavaAttributeName(); - try { - return getAttributeOfObject(eventSubjectObj, notificationName); - } catch (NoSuchMethodException e) { - throw new YtbException(e); - } - } - - /** - * Returns case object from the map that is bound to the parent node - * info. For any case node, only when the key and value is matched the - * object of the case is provided. If a match is not found, null is - * returned. - * - * @param parentNodeInfo parent YTB node info - * @param caseNode case schema node - * @return object of the case node - */ - private Object getCaseObjectFromChoice(YtbNodeInfo parentNodeInfo, - YangSchemaNode caseNode) { - String javaName = getCapitalCase( - caseNode.getJavaClassNameOrBuiltInType()); - String choiceName = ((YangNode) caseNode).getParent().getName(); - Map mapObj = parentNodeInfo.getChoiceCaseMap(); - Object caseObj = mapObj.get(choiceName); - Class interfaceClass = getInterfaceClassFromImplClass(caseObj); - return interfaceClass.getSimpleName().equals(javaName) ? caseObj : null; - } - - /** - * Adds leaf to YDT when value is present. For primitive types, in order - * to avoid default values, the value select is set or not is checked and - * then added. - * - * @param holder leaf holder - * @param yangLeaf YANG leaf node - * @param parentObj leaf holder object - * @param leafType object of leaf type - */ - private void addLeafWithValue(YangSchemaNode holder, YangLeaf yangLeaf, - Object parentObj, Object leafType) { - String fieldValue = null; - if (isTypePrimitive(yangLeaf.getDataType())) { - fieldValue = getLeafValueFromValueSetFlag(holder, parentObj, - yangLeaf, leafType); - /* - * Checks the object is present or not, when type is - * non-primitive. And adds the value from the respective data type. - */ - } else if (leafType != null) { - fieldValue = getStringFromType(holder, parentObj, - getJavaName(yangLeaf), leafType, - yangLeaf.getDataType()); - } - - if (nonEmpty(fieldValue)) { - boolean isEmpty = isTypeEmpty(fieldValue, - yangLeaf.getDataType()); - if (isEmpty) { - if (!fieldValue.equals(TRUE)) { - return; - } - fieldValue = null; - } - extBuilder.addLeaf(fieldValue, yangLeaf); - extBuilder.traverseToParentWithoutValidation(); - } - } - - /** - * Returns the value as true if direct or referred type from leafref or - * derived points to empty data type; false otherwise. - * - * @param fieldValue value of the leaf - * @param dataType type of the leaf - * @return true if type is empty; false otherwise. - */ - private boolean isTypeEmpty(String fieldValue, YangType dataType) { - if (fieldValue.equals(TRUE) || fieldValue.equals(FALSE)) { - switch (dataType.getDataType()) { - case EMPTY: - return true; - - case LEAFREF: - YangLeafRef leafRef = - (YangLeafRef) dataType.getDataTypeExtendedInfo(); - return isTypeEmpty(fieldValue, - leafRef.getEffectiveDataType()); - case DERIVED: - YangDerivedInfo info = - (YangDerivedInfo) dataType - .getDataTypeExtendedInfo(); - YangDataTypes type = info.getEffectiveBuiltInType(); - return type == EMPTY; - - default: - return false; - } - } - return false; - } - - /** - * Adds leaf without value, when the select leaf bit is set. - * - * @param holder leaf holder - * @param yangLeaf YANG leaf node - * @param parentObj leaf holder object - */ - private void addLeafWithoutValue(YangSchemaNode holder, YangLeaf yangLeaf, - Object parentObj) { - - String selectLeaf; - try { - selectLeaf = isValueOrSelectLeafSet(holder, parentObj, - getJavaName(yangLeaf), - IS_SELECT_LEAF_SET_METHOD); - } catch (NoSuchMethodException e) { - selectLeaf = FALSE; - } - if (selectLeaf.equals(TRUE)) { - extBuilder.addLeaf(null, yangLeaf); - extBuilder.traverseToParentWithoutValidation(); - } - } - - /** - * Returns the value of type, after checking the value leaf flag. If the - * flag is set, then it takes the value else returns null. - * - * @param holder leaf holder - * @param parentObj parent object - * @param yangLeaf YANG leaf node - * @param leafType object of leaf type - * @return value of type - */ - private String getLeafValueFromValueSetFlag(YangSchemaNode holder, Object parentObj, - YangLeaf yangLeaf, Object leafType) { - - String valueOfLeaf; - try { - valueOfLeaf = isValueOrSelectLeafSet(holder, parentObj, - getJavaName(yangLeaf), - IS_LEAF_VALUE_SET_METHOD); - } catch (NoSuchMethodException e) { - throw new YtbException(e); - } - if (valueOfLeaf.equals(TRUE)) { - return getStringFromType(holder, parentObj, - getJavaName(yangLeaf), leafType, - yangLeaf.getDataType()); - } - return null; - } - - /** - * Returns the node info which can be processed, by eliminating the nodes - * which need not to be processed at normal conditions such as RPC, - * notification and augment. - * - * @param curNode current node - * @return info of node which needs processing - */ - private YtbTraversalInfo getProcessableInfo(YangNode curNode) { - if (curNode.getNextSibling() != null) { - YangNode sibling = curNode.getNextSibling(); - while (isNonProcessableNode(sibling)) { - sibling = sibling.getNextSibling(); - } - if (sibling != null) { - return new YtbTraversalInfo(sibling, SIBLING); - } - } - return new YtbTraversalInfo(curNode.getParent(), PARENT); - } - -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbException.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbException.java deleted file mode 100644 index 1023ca9c0b..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -/** - * Represents exception that needs to be handled by YTB. - */ -public class YtbException extends RuntimeException { - - /** - * Creates YTB exception with an exception message. - * - * @param exceptionMessage message with which exception must be thrown - */ - public YtbException(String exceptionMessage) { - super(exceptionMessage); - } - - /** - * Creates YTB exception with the cause for it. - * - * @param cause cause of the exception - */ - public YtbException(Throwable cause) { - super(cause); - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbNodeInfo.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbNodeInfo.java deleted file mode 100644 index 045192dd9f..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbNodeInfo.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -import org.onosproject.yangutils.datamodel.YangAugment; - -import java.util.Iterator; -import java.util.Map; - -/** - * Represents YTB node info for all the nodes that are added to the YDT - * builder tree.Contains the information which can be attached and retrieved - * back from YDT while walking. - */ -public class YtbNodeInfo { - - /** - * Object of the corresponding YANG construct. This object is bound to - * each and every YDT node. So, whenever walk of parent and sibling - * happens, object can be retrieved from its YDT node. - */ - private Object yangObject; - - /** - * The list iterator since first content of the multi instance node is - * faced. With this iterator the node can be walked multiple times till - * it becomes empty. - */ - private Iterator listIterator; - - /** - * The current YTB node's, list of augments are iterated through this - * iterator. Every time an augment is built completely, this iterator - * gives the next augment node until it becomes empty. - */ - private Iterator augmentNodeItr; - - /** - * The map with case object as value and choice node name as key is added - * for the current YTB info. Every time a case schema node comes, it takes - * this map and checks if it is present. - */ - private Map choiceCaseMap; - - /** - * When the case finds its object in map, it assigns it to case object of - * the YTB info, so when its child wants to take the parent object, they - * can take from the YTB info's case object. - */ - private Object caseObject; - - /** - * When the augment object is present, it assigns it to augment object of - * the YTB info, so when its child wants to take the parent object, they - * can take from the YTB info's augment object. - */ - private Object augmentObject; - - /** - * Constructs a default YTB node info. - */ - public YtbNodeInfo() { - } - - /** - * Returns the object of the YANG schema node. - * - * @return YANG node object - */ - public Object getYangObject() { - return yangObject; - } - - /** - * Sets the object of the YANG schema node. - * - * @param yangObject YANG node object - */ - public void setYangObject(Object yangObject) { - this.yangObject = yangObject; - } - - /** - * Returns the current list iterator of the YANG schema node. - * - * @return current list iterator for the schema node - */ - public Iterator getListIterator() { - return listIterator; - } - - /** - * Sets the current list iterator of the YANG schema node. - * - * @param listIterator current list iterator for the schema node - */ - public void setListIterator(Iterator listIterator) { - this.listIterator = listIterator; - } - - /** - * Returns the map of choice schema name and case object. - * - * @return choice name and case object map - */ - public Map getChoiceCaseMap() { - return choiceCaseMap; - } - - /** - * Sets the map of choice schema name and case object. - * - * @param choiceCaseMap choice name and case object map - */ - public void setChoiceCaseMap(Map choiceCaseMap) { - this.choiceCaseMap = choiceCaseMap; - } - - /** - * Returns the case object. - * - * @return case object - */ - public Object getCaseObject() { - return caseObject; - } - - /** - * Sets the case node object. - * - * @param caseObject case node object - */ - public void setCaseObject(Object caseObject) { - this.caseObject = caseObject; - } - - /** - * Returns the augment node object. - * - * @return augment node object - */ - public Object getAugmentObject() { - return augmentObject; - } - - /** - * Sets the augment node object. - * - * @param augmentObject augment node object - */ - public void setAugmentObject(Object augmentObject) { - this.augmentObject = augmentObject; - } - - /** - * Returns the current list iterator of the YANG augment node. - * - * @return augment node iterator - */ - public Iterator getAugmentIterator() { - return augmentNodeItr; - } - - /** - * Sets the current list iterator of the YANG augment node. - * - * @param augmentNodeItr augment node iterator - */ - public void setAugmentIterator(Iterator augmentNodeItr) { - this.augmentNodeItr = augmentNodeItr; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbTraversalInfo.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbTraversalInfo.java deleted file mode 100644 index a1ea640b8c..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbTraversalInfo.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -import org.onosproject.yangutils.datamodel.YangNode; -import org.onosproject.yms.app.utils.TraversalType; - -/** - * Represents YTB Traversal info which is needed every time the traversal of - * a YANG node happens. This contains YANG node and its corresponding traversal - * type information. - */ -public class YtbTraversalInfo { - - /** - * YANG node of the current traversal. - */ - private YangNode yangNode; - - /** - * Traverse type of the current traversal. - */ - private TraversalType traverseType; - - /** - * Creates YTB traversal info by taking the traversal type and the YANG - * node. - * - * @param yangNode YANG node - * @param traverseType traversal type - */ - public YtbTraversalInfo(YangNode yangNode, TraversalType traverseType) { - this.yangNode = yangNode; - this.traverseType = traverseType; - } - - /** - * Returns the YANG node of the current traversal. - * - * @return YANG node - */ - public YangNode getYangNode() { - return yangNode; - } - - /** - * Returns the traversal type of the current traversal. - * - * @return traversal type - */ - public TraversalType getTraverseType() { - return traverseType; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbUtil.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbUtil.java deleted file mode 100644 index e9cdd574e4..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YtbUtil.java +++ /dev/null @@ -1,495 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -import org.onosproject.yangutils.datamodel.YangAugment; -import org.onosproject.yangutils.datamodel.YangCase; -import org.onosproject.yangutils.datamodel.YangIdentity; -import org.onosproject.yangutils.datamodel.YangIdentityRef; -import org.onosproject.yangutils.datamodel.YangLeafRef; -import org.onosproject.yangutils.datamodel.YangNode; -import org.onosproject.yangutils.datamodel.YangNotification; -import org.onosproject.yangutils.datamodel.YangOutput; -import org.onosproject.yangutils.datamodel.YangRpc; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangType; -import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes; -import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer; -import org.onosproject.yms.app.utils.TraversalType; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.ydt.YdtContextOperationType; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.Base64; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - -import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_AUGMENT_NODE; -import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_MULTI_INSTANCE_NODE; -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN; -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY; -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16; -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32; -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64; -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8; -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF; -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16; -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32; -import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8; -import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase; -import static org.onosproject.yms.app.utils.TraversalType.PARENT; - -/** - * Representation of utility for YANG tree builder. - */ -public final class YtbUtil { - - /** - * Static attribute for string value having null. - */ - public static final String STR_NULL = "null"; - - /** - * Static attribute for a dot string. - */ - public static final String PERIOD = "."; - - private static final int ONE = 1; - private static final String YANG = "yang"; - private static final String OP_TYPE = "OpType"; - private static final String STR_NONE = "NONE"; - private static final String ENUM_LEAF_IDENTIFIER = "$LeafIdentifier"; - private static final Set PRIMITIVE_TYPES = - new HashSet<>(Arrays.asList(INT8, INT16, INT32, INT64, UINT8, - UINT16, UINT32, BOOLEAN, EMPTY)); - private static final String TO_STRING = "toString"; - - // No instantiation. - private YtbUtil() { - } - - /** - * Returns the object of the node from the node info. Getting object for - * augment and case differs from other node. - * - * @param nodeInfo node info of the holder - * @param yangNode YANG node of the holder - * @return object of the parent - */ - public static Object getParentObjectOfNode(YtbNodeInfo nodeInfo, - YangNode yangNode) { - Object object; - if (yangNode instanceof YangCase) { - object = nodeInfo.getCaseObject(); - } else if (yangNode instanceof YangAugment) { - object = nodeInfo.getAugmentObject(); - } else { - object = nodeInfo.getYangObject(); - } - return object; - } - - /** - * Returns the value of an attribute, in a class object. The attribute - * name is taken from the YANG node java name. - * - * @param nodeObj object of the node - * @param fieldName name of the attribute - * @return object of the attribute - * @throws NoSuchMethodException method not found exception - */ - public static Object getAttributeOfObject(Object nodeObj, String fieldName) - throws NoSuchMethodException { - Class nodeClass = nodeObj.getClass(); - Method getterMethod; - try { - getterMethod = nodeClass.getDeclaredMethod(fieldName); - return getterMethod.invoke(nodeObj); - } catch (InvocationTargetException | IllegalAccessException e) { - throw new YtbException(e); - } - } - - /** - * Returns the object of the declared method in parent class by invoking - * through the child class object. - * - * @param childClass child class which inherits the parent class - * @param methodName name of the declared method - * @return value of the method - */ - public static Object getAttributeFromInheritance(Object childClass, - String methodName) { - Class parentClass = childClass.getClass().getSuperclass(); - Method getterMethod; - try { - getterMethod = parentClass.getDeclaredMethod(methodName); - return getterMethod.invoke(childClass); - } catch (InvocationTargetException | NoSuchMethodException | - IllegalAccessException e) { - throw new YtbException(e); - } - } - - /** - * Returns interface class from an implementation class object. - * - * @param obj implementation class object - * @return interface class - */ - public static Class getInterfaceClassFromImplClass(Object obj) { - Class[] interfaces = obj.getClass().getInterfaces(); - if (interfaces.length > ONE) { - // TODO: Need to handle when impl class has more than one interface. - throw new YtbException("Implementation class having more than one" + - " interface is not handled"); - } - return interfaces[0]; - } - - /** - * Returns the operation type value for a class object. If the operation - * type is not set, then none type is returned. - * - * @param nodeObj node object - * @param typeName data type name - * @return operation type of the class - */ - public static YdtContextOperationType getNodeOpType(Object nodeObj, - String typeName) { - Object opTypeObj; - try { - opTypeObj = getAttributeOfObject(nodeObj, typeName); - } catch (NoSuchMethodException e) { - return YdtContextOperationType.valueOf(STR_NONE); - } - String opTypeValue = String.valueOf(opTypeObj); - if (opTypeValue.equals(STR_NULL)) { - return null; - } - return YdtContextOperationType.valueOf(opTypeValue); - } - - /** - * Returns true, if data type of leaf is primitive data type; false - * otherwise. - * - * @param yangType leaf type - * @return true if data type is primitive; false otherwise - */ - public static boolean isTypePrimitive(YangType yangType) { - if (yangType.getDataType() == LEAFREF) { - YangLeafRef leafRef = - (YangLeafRef) yangType.getDataTypeExtendedInfo(); - return isPrimitiveDataType(leafRef.getEffectiveDataType() - .getDataType()); - } - return isPrimitiveDataType(yangType.getDataType()); - } - - /** - * Returns the registered class from the YSR of the module node where - * augment is present. - * - * @param curNode current augment node - * @param registry schema registry - * @return class loader of module - */ - public static Class getClassLoaderForAugment( - YangNode curNode, YangSchemaRegistry registry) { - YangNode moduleNode = curNode.getParent(); - String moduleName = moduleNode.getJavaClassNameOrBuiltInType(); - String modulePackage = moduleNode.getJavaPackage(); - return registry.getRegisteredClass(moduleNode - ); - } - - /** - * Returns the string true, if the leaf data is actually set; false - * otherwise. - * - * @param holder leaf holder - * @param nodeObj object if the node - * @param javaName java name of the leaf - * @param methodName getter method name - * @return string value of the boolean method - * @throws NoSuchMethodException if the method is not present - */ - public static String isValueOrSelectLeafSet(YangSchemaNode holder, Object nodeObj, - String javaName, String methodName) - throws NoSuchMethodException { - - Class nodeClass = nodeObj.getClass(); - - // Appends the enum inner package to the interface class package. - String enumPackage = holder.getJavaPackage() + PERIOD + - getCapitalCase(holder.getJavaClassNameOrBuiltInType()) + - ENUM_LEAF_IDENTIFIER; - - ClassLoader classLoader = nodeClass.getClassLoader(); - Class leafEnum; - try { - leafEnum = classLoader.loadClass(enumPackage); - Method getterMethod = nodeClass.getMethod(methodName, leafEnum); - // Gets the value of the enum. - Enum value = Enum.valueOf(leafEnum, javaName.toUpperCase()); - // Invokes the method with the value of enum as param. - return String.valueOf(getterMethod.invoke(nodeObj, value)); - } catch (IllegalAccessException | InvocationTargetException | - ClassNotFoundException e) { - throw new YtbException(e); - } - } - - /** - * Returns the string value from the respective data types of the - * leaf/leaf-list. - * - * @param holder leaf/leaf-list holder - * @param holderObj leaf/leaf-list holder object - * @param name leaf/leaf-list name - * @param fieldObj object of the leaf/leaf-list field - * @param dataType type of the leaf/leaf-list - * @return string value from the type - */ - public static String getStringFromType(YangSchemaNode holder, Object holderObj, - String name, Object fieldObj, YangType dataType) { - - if (fieldObj == null) { - throw new YtbException("Value of " + holder.getName() + " is null"); - } - - YangDataTypes type = dataType.getDataType(); - switch (type) { - case INT8: - case INT16: - case INT32: - case INT64: - case UINT8: - case UINT16: - case UINT32: - case UINT64: - case EMPTY: - case STRING: - case DECIMAL64: - case INSTANCE_IDENTIFIER: - case DERIVED: - case UNION: - case ENUMERATION: - case BOOLEAN: - return String.valueOf(fieldObj).trim(); - - case BITS: - return getBitsValue(holder, holderObj, name, fieldObj).trim(); - - case BINARY: - return Base64.getEncoder().encodeToString((byte[]) fieldObj); - - case IDENTITYREF: - YangIdentityRef ir = - (YangIdentityRef) dataType.getDataTypeExtendedInfo(); - if (ir.isInGrouping()) { - return String.valueOf(fieldObj).trim(); - } - return getIdentityRefValue(fieldObj, ir, holderObj); - - case LEAFREF: - YangLeafRef leafRef = - (YangLeafRef) dataType.getDataTypeExtendedInfo(); - return getStringFromType(holder, holderObj, name, fieldObj, - leafRef.getEffectiveDataType()); - - default: - throw new YtbException("Unsupported data type. Cannot be " + - "processed."); - } - } - - /** - * Returns the string values for the data type bits. - * - * @param holder leaf/leaf-list holder - * @param holderObj leaf/leaf-list holder object - * @param name leaf/leaf-list name - * @param fieldObj object of the leaf/leaf-list field - * @return string value for bits type - */ - private static String getBitsValue(YangSchemaNode holder, Object holderObj, - String name, Object fieldObj) { - - Class holderClass = holderObj.getClass(); - String interfaceName = holder.getJavaClassNameOrBuiltInType(); - String className = interfaceName.toLowerCase() + PERIOD + - getCapitalCase(name); - String pkgName = holder.getJavaPackage() + PERIOD + className; - ClassLoader classLoader = holderClass.getClassLoader(); - - Class bitClass; - try { - bitClass = classLoader.loadClass(pkgName); - Method getterMethod = bitClass.getDeclaredMethod( - TO_STRING, fieldObj.getClass()); - return String.valueOf(getterMethod.invoke(null, fieldObj)); - } catch (ClassNotFoundException | NoSuchMethodException | - InvocationTargetException | IllegalAccessException e) { - throw new YtbException(e); - } - } - - /** - * Returns the string value of the type identity-ref. - * - * @param fieldObj object of the leaf/leaf-list field - * @param ir YANG identity ref - * @param holderObj leaf/leaf-list holder object - * @return string value for identity ref type - */ - private static String getIdentityRefValue(Object fieldObj, YangIdentityRef ir, - Object holderObj) { - - YangIdentity id = ir.getReferredIdentity(); - String idName = id.getJavaClassNameOrBuiltInType(); - String idPkg = id.getJavaPackage() + PERIOD + getCapitalCase(idName); - String methodName = idName + getCapitalCase(TO_STRING); - - Class holderClass = holderObj.getClass(); - ClassLoader classLoader = holderClass.getClassLoader(); - Class idClass; - try { - idClass = classLoader.loadClass(idPkg); - Method method = idClass.getDeclaredMethod(methodName, null); - return String.valueOf(method.invoke(fieldObj, null)).trim(); - } catch (ClassNotFoundException | NoSuchMethodException | - InvocationTargetException | IllegalAccessException e) { - throw new YtbException(e); - } - } - - /** - * Returns true, if the data type is primitive; false otherwise. - * - * @param dataType data type - * @return true if the data type is primitive; false otherwise - */ - private static boolean isPrimitiveDataType(YangDataTypes dataType) { - return PRIMITIVE_TYPES.contains(dataType); - } - - /** - * Returns true, if processing of the node is not required; false otherwise. - * For the nodes such as notification, RPC, augment there is a different - * flow, so these nodes are skipped in normal conditions. - * - * @param yangNode node to be checked - * @return true if node processing is not required; false otherwise. - */ - public static boolean isNonProcessableNode(YangNode yangNode) { - return yangNode != null && (yangNode instanceof YangNotification) || - (yangNode instanceof YangRpc) || (yangNode instanceof YangAugment); - } - - /** - * Returns true, if multi instance node; false otherwise. - * - * @param yangNode YANG node - * @return true, if multi instance node; false otherwise. - */ - public static boolean isMultiInstanceNode(YangNode yangNode) { - return yangNode.getYangSchemaNodeType() == YANG_MULTI_INSTANCE_NODE; - } - - /** - * Returns true, if augment node; false otherwise. - * - * @param yangNode YANG node - * @return true, if augment node; false otherwise. - */ - public static boolean isAugmentNode(YangNode yangNode) { - return yangNode.getYangSchemaNodeType() == YANG_AUGMENT_NODE; - } - - /** - * Returns string for throwing error when empty object is given as input - * to YTB. - * - * @param objName name of the object - * @return error message - */ - public static String emptyObjErrMsg(String objName) { - return "The " + objName + " given for tree creation cannot be null"; - } - - /** - * Returns the java name for the nodes, leaf/leaf-list. - * - * @param node YANG node - * @return node java name - */ - public static String getJavaName(Object node) { - return ((JavaLeafInfoContainer) node).getJavaName(null); - } - - /** - * Returns true, if the list is not null and non-empty; false otherwise. - * - * @param c collection object - * @return true, if the list is not null and non-empty; false otherwise - */ - public static boolean nonEmpty(Collection c) { - return c != null && !c.isEmpty(); - } - - /** - * Returns true, if the string is not null and non-empty; false otherwise. - * - * @param str string value - * @return true, if the string is not null and non-empty; false otherwise. - */ - public static boolean nonEmpty(String str) { - return str != null && !str.isEmpty(); - } - - /** - * Returns true when the node processing of RPC and notification is - * completed; false otherwise. For RPC and notification, processing of - * other nodes are invalid, so once node gets completed, it must be stopped. - * - * @param curNode current node - * @param curTraversal current traversal of the node - * @return true, if the node processing is completed; false otherwise. - */ - public static boolean isNodeProcessCompleted( - YangNode curNode, TraversalType curTraversal) { - return (curTraversal == PARENT && - curNode instanceof YangNotification) || - curNode instanceof YangOutput; - } - - /** - * Returns the name of the operation type variable from the yang name. - * - * @param curNode YANG node - * @return name of operation type - */ - public static String getOpTypeName(YangNode curNode) { - return YANG + getCapitalCase(curNode.getJavaClassNameOrBuiltInType()) + - OP_TYPE; - } -} diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/package-info.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/package-info.java deleted file mode 100644 index a3c95a33c1..0000000000 --- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/package-info.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Provides implementation of YANG tree builder. YTB handles creation of YDT - * from YANG modeled objects. - */ -package org.onosproject.yms.app.ytb; diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/MockYmsManager.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/MockYmsManager.java deleted file mode 100644 index 3fcd5aa46b..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/MockYmsManager.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yab; - -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.ych.YangCodecHandler; -import org.onosproject.yms.ych.YangDataTreeCodec; -import org.onosproject.yms.ych.YangProtocolEncodingFormat; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YdtResponse; -import org.onosproject.yms.ydt.YdtWalker; -import org.onosproject.yms.ydt.YmsOperationType; -import org.onosproject.yms.ymsm.YmsService; -import org.onosproject.yms.ynh.YangNotificationService; -import org.onosproject.yms.ysr.YangModuleIdentifier; -import org.onosproject.yms.ysr.YangModuleLibrary; - -import java.util.List; - -/** - * Represents implementation of YANG application management system manager. - */ -public class MockYmsManager - implements YmsService { - - YangSchemaRegistry schemaRegistry; - TestYangSchemaNodeProvider testYangSchemaNodeProvider = - new TestYangSchemaNodeProvider(); - - @Override - public YdtBuilder getYdtBuilder(String logicalRootName, - String rootNamespace, - YmsOperationType operationType) { - testYangSchemaNodeProvider.processSchemaRegistry(new TestManager()); - schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - return new YangRequestWorkBench(logicalRootName, rootNamespace, - operationType, schemaRegistry, false); - } - - @Override - public YdtBuilder getYdtBuilder(String logicalRootName, - String rootNamespace, - YmsOperationType operationType, - Object schemaRegistryForYdt) { - return null; - } - - @Override - public YdtWalker getYdtWalker() { - return null; - } - - @Override - public YdtResponse executeOperation(YdtBuilder operationRequest) { - YangApplicationBroker requestBroker = - new YangApplicationBroker(schemaRegistry); - switch (operationRequest.getYmsOperationType()) { - case EDIT_CONFIG_REQUEST: - try { - return requestBroker.processEdit(operationRequest); - } catch (CloneNotSupportedException e) { - } - break; - case QUERY_CONFIG_REQUEST: - case QUERY_REQUEST: - return requestBroker.processQuery(operationRequest); - case RPC_REQUEST: - return requestBroker.processOperation(operationRequest); - default: - } - return null; - } - - @Override - public YangNotificationService getYangNotificationService() { - return null; - } - - @Override - public void registerService(Object appManager, Class yangService, - List supportedFeatureList) { - } - - @Override - public void unRegisterService(Object appManager, Class yangService) { - - } - - @Override - public YangModuleLibrary getYangModuleLibrary() { - return null; - } - - @Override - public String getYangFile(YangModuleIdentifier moduleIdentifier) { - return null; - } - - @Override - public void registerDefaultCodec(YangDataTreeCodec defaultCodec, - YangProtocolEncodingFormat dataFormat) { - } - - @Override - public YangCodecHandler getYangCodecHandler() { - return null; - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/TestManager.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/TestManager.java deleted file mode 100644 index 182d4ca6bd..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/TestManager.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yab; - -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.Test; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.TestOpParam; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.TestService; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.Cont1; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.DefaultCont1; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse.DefaultRockTheHouseOutput; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse.RockTheHouseInput; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse.RockTheHouseOutput; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse1.RockTheHouse1Input; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse2.DefaultRockTheHouse2Output; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.test.rockthehouse2.RockTheHouse2Output; - -/** - * Implementation of the application management service. - */ -public class TestManager implements TestService { - - Test response; - - @Override - public Test getTest(TestOpParam test) { - Cont1 cont = new DefaultCont1.Cont1Builder().leaf4("4").build(); - Test response = new TestOpParam.TestBuilder().cont1(cont).build(); - return response; - } - - @Override - public void setTest(TestOpParam test) { - response = test; - } - - @Override - public Test getAugmentedTestCont4(TestOpParam test) { - Cont1 cont = new DefaultCont1.Cont1Builder().leaf4("4").build(); - Test response = new TestOpParam.TestBuilder().cont1(cont).build(); - return response; - } - - @Override - public void setAugmentedTestCont4(TestOpParam augmentedTestCont4) { - response = augmentedTestCont4; - } - - @Override - public RockTheHouseOutput rockTheHouse(RockTheHouseInput inputVar) { - return DefaultRockTheHouseOutput.builder().hello("hello").build(); - } - - - @Override - public void rockTheHouse1(RockTheHouse1Input inputVar) { - // TODO : to be implemented - } - - @Override - public RockTheHouse2Output rockTheHouse2() { - return DefaultRockTheHouse2Output - .builder().leaf14("14").build(); - } - - @Override - public void rockTheHouse3() { - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/YangApplicationBrokerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/YangApplicationBrokerTest.java deleted file mode 100644 index 8c03d47cfa..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yab/YangApplicationBrokerTest.java +++ /dev/null @@ -1,1080 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yab; - -import org.junit.Test; -import org.onosproject.yangutils.datamodel.YangAugment; -import org.onosproject.yangutils.datamodel.YangNode; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtAppContext; -import org.onosproject.yms.app.ydt.YdtAppNodeOperationType; -import org.onosproject.yms.app.ydt.YdtNode; -import org.onosproject.yms.ydt.YdtContext; - -import java.io.IOException; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; -import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; -import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST; -import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REQUEST; -import static org.onosproject.yms.ydt.YmsOperationType.RPC_REQUEST; - -/** - * Unit test case for YANG application broker. - */ -public class YangApplicationBrokerTest { - - MockYmsManager ymsManager = new MockYmsManager(); - - /** - * Returns YANG data tree to check edit operation of container. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForEditOperationWithoutDelete() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - EDIT_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test", MERGE); - defaultYdtBuilder.addChild("cont1", null, MERGE); - defaultYdtBuilder.addChild("cont2", null, MERGE); - defaultYdtBuilder.addChild("cont3", null, MERGE); - defaultYdtBuilder.addLeaf("leaf1", null, "1"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf4", null, "4"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("cont4", null, MERGE); - defaultYdtBuilder.addChild("cont5", null, MERGE); - defaultYdtBuilder.addLeaf("leaf9", null, "9"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf10", null, "10"); - return defaultYdtBuilder; - } - - private YangRequestWorkBench buildYdtForKeyLeavesInDeleteTree() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - EDIT_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test", MERGE); - defaultYdtBuilder.addChild("list2", null, MERGE); - defaultYdtBuilder.addLeaf("leaf5", null, "5"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf6", null, "6"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf7", null, "7"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("cont7", null, DELETE); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check delete operation of container. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForEditOperationWithDelete() { - String rootName = "rootNode"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - EDIT_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test", MERGE); - defaultYdtBuilder.addChild("cont1", null, MERGE); - defaultYdtBuilder.addChild("cont2", null, DELETE); - defaultYdtBuilder.addChild("cont3", null, DELETE); - defaultYdtBuilder.addLeaf("leaf1", null, "1"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf4", null, "4"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("cont4", null, DELETE); - defaultYdtBuilder.addChild("cont5", null, DELETE); - defaultYdtBuilder.addLeaf("leaf9", null, "9"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf10", null, "10"); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check edit operation of list. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForListEditOperationWithoutDelete() { - String rootName = "listWithoutDelete"; - Set valueSet = new LinkedHashSet<>(); - valueSet.add("10"); - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - EDIT_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test", MERGE); - defaultYdtBuilder.addChild("cont1", null, MERGE); - defaultYdtBuilder.addChild("list1", null, MERGE); - defaultYdtBuilder.addLeaf("leaf2", null, "2"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf3", null, "3"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf4", null, "4"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("list2", null, MERGE); - defaultYdtBuilder.addLeaf("leaf5", null, "5"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf6", null, "6"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf7", null, "7"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaflist8", null, valueSet); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf10", null, "10"); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check delete operation of list. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForListEditOperationWithDelete() { - String rootName = "listWithDelete"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - EDIT_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test", MERGE); - defaultYdtBuilder.addChild("cont1", null, MERGE); - defaultYdtBuilder.addChild("list1", null, DELETE); - defaultYdtBuilder.addLeaf("leaf2", null, "2"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf3", null, "3"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf4", null, "4"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("list2", null, DELETE); - defaultYdtBuilder.addLeaf("leaf5", null, "5"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf6", null, "6"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf10", null, "10"); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check query operation of container. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForQueryOperation() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - QUERY_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test"); - defaultYdtBuilder.addChild("cont1", null); - defaultYdtBuilder.addChild("cont2", null); - defaultYdtBuilder.addChild("cont3", null); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("cont4", null); - defaultYdtBuilder.addChild("cont5", null); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check query operation of list. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForListQueryOperation() { - String rootName = "listQuery"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - QUERY_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test"); - defaultYdtBuilder.addChild("cont1", null); - defaultYdtBuilder.addChild("list1", null); - defaultYdtBuilder.addLeaf("leaf2", null, "2"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("list2", null); - defaultYdtBuilder.addLeaf("leaf5", null, "5"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf6", null, "6"); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check delete operation of a node. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtWithOneDeleteNode() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - EDIT_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test"); - defaultYdtBuilder.addChild("cont1", null, MERGE); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("cont4", null, DELETE); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf10", null, "10"); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check delete operation of last node. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtWithDeleteNodeAsLastChild() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - EDIT_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test", MERGE); - defaultYdtBuilder.addChild("cont1", null, MERGE); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("list2", null, MERGE); - defaultYdtBuilder.addLeaf("leaf5", null, "10"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf6", null, "10"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("cont4", null, DELETE); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to with delete operation of all the nodes. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtWithAllDeleteNode() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - EDIT_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test", DELETE); - defaultYdtBuilder.addChild("cont1", null, DELETE); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("list2", null, DELETE); - defaultYdtBuilder.addLeaf("leaf5", null, "10"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addLeaf("leaf6", null, "10"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("cont4", null, DELETE); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check rpc operation with only input. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForRpcWithOnlyInput() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - RPC_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test"); - defaultYdtBuilder.addChild("rock-the-house1", null); - defaultYdtBuilder.addChild("input", null); - defaultYdtBuilder.addLeaf("leaf13", null, "5"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check rpc operation with only output. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForRpcWithOnlyOutput() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - RPC_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test"); - defaultYdtBuilder.addChild("rock-the-house2", null); - defaultYdtBuilder.addChild("output", null); - defaultYdtBuilder.addLeaf("leaf14", null, "14"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check rpc operation with both input and output. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForRpcWithBothInputOutput() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - RPC_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test"); - defaultYdtBuilder.addChild("rock-the-house", null); - defaultYdtBuilder.addChild("input", null); - defaultYdtBuilder.addLeaf("zip-code", null, "5"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.addChild("output", null); - defaultYdtBuilder.addLeaf("hello", null, "5"); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check rpc operation. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForRpc() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - RPC_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test"); - defaultYdtBuilder.addChild("rock-the-house3", null); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check query operation with multiple level of - * augment. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForQueryWithMultipleAugment() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - QUERY_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test"); - defaultYdtBuilder.traverseToParent(); - return defaultYdtBuilder; - } - - /** - * Returns YANG data tree to check delete operation with multiple level of - * augment. - * - * @return YANG data tree - */ - private YangRequestWorkBench buildYdtForDeleteWithMultipleAugment() { - String rootName = "root"; - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) ymsManager.getYdtBuilder(rootName, null, - EDIT_CONFIG_REQUEST); - defaultYdtBuilder.addChild("test", "ydt.test"); - defaultYdtBuilder.addChild("cont4", null, DELETE); - defaultYdtBuilder.traverseToParent(); - defaultYdtBuilder.traverseToParent(); - return defaultYdtBuilder; - } - - /** - * Checks whether YANG data tree and delete tree is correct. - */ - @Test - public void validateDeleteTreeOnlyOneNodeInDeleteList() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForEditOperationWithDelete(); - YdtAppContext appContext = - defaultYdtBuilder.getAppRootNode().getFirstChild(); - YdtContext ydtContext = appContext.getModuleContext(); - List deleteNodes = appContext.getDeleteNodes(); - - YdtContext cont1YdtContext; - YdtContext cont2YdtContext; - YdtContext cont3YdtContext; - YdtContext cont4YdtContext; - YdtContext deleteTree; - - // verify whether ydt tree is correct - assertThat(ydtContext.getName(), is("test")); - - cont1YdtContext = ydtContext.getFirstChild(); - assertThat(cont1YdtContext.getName(), is("cont1")); - - cont2YdtContext = cont1YdtContext.getFirstChild(); - assertThat(cont2YdtContext.getName(), is("cont2")); - - cont3YdtContext = cont2YdtContext.getFirstChild(); - assertThat(cont3YdtContext.getName(), is("cont3")); - - ydtContext = cont3YdtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf1")); - assertThat(ydtContext.getValue(), is("1")); - - ydtContext = cont2YdtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf4")); - assertThat(ydtContext.getValue(), is("4")); - - cont4YdtContext = cont1YdtContext.getNextSibling(); - assertThat(cont4YdtContext.getName(), is("cont4")); - - ydtContext = cont4YdtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("cont5")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf9")); - assertThat(ydtContext.getValue(), is("9")); - - ydtContext = cont4YdtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf10")); - assertThat(ydtContext.getValue(), is("10")); - - // build delete tree - YangApplicationBroker yab = new YangApplicationBroker(null); - deleteTree = yab.buildDeleteTree(deleteNodes); - - // verify whether delete ydt tree is correct - assertThat(deleteTree.getFirstChild().getName(), is("test")); - - cont1YdtContext = deleteTree.getFirstChild().getFirstChild(); - assertThat(cont1YdtContext.getName(), is("cont1")); - - cont2YdtContext = cont1YdtContext.getFirstChild(); - assertThat(cont2YdtContext.getName(), is("cont2")); - - cont3YdtContext = cont2YdtContext.getFirstChild(); - assertThat(cont3YdtContext.getName(), is("cont3")); - - ydtContext = cont3YdtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf1")); - assertThat(ydtContext.getValue(), is("1")); - - assertThat(cont2YdtContext.getNextSibling(), nullValue()); - - cont4YdtContext = cont1YdtContext.getNextSibling(); - assertThat(cont4YdtContext.getName(), is("cont4")); - - ydtContext = cont4YdtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("cont5")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf9")); - assertThat(ydtContext.getValue(), is("9")); - - assertThat(cont4YdtContext.getNextSibling(), nullValue()); - - // ydtTree after removing delete nodes - ydtContext = appContext.getModuleContext(); - assertThat(ydtContext.getName(), is("test")); - - cont1YdtContext = ydtContext.getFirstChild(); - assertThat(cont1YdtContext.getName(), is("cont1")); - - ydtContext = cont1YdtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf4")); - assertThat(ydtContext.getValue(), is("4")); - - ydtContext = cont1YdtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf10")); - assertThat(ydtContext.getValue(), is("10")); - } - - /** - * Checks whether YANG data tree and delete tree is correct. - */ - @Test - public void validateListDeleteTree() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForListEditOperationWithDelete(); - YdtAppContext appContext = - defaultYdtBuilder.getAppRootNode().getFirstChild(); - YdtContext ydtContext = appContext.getModuleContext(); - List deleteNodes = appContext.getDeleteNodes(); - - YdtContext cont1YdtContext; - YdtContext list1YdtContext; - YdtContext list2YdtContext; - YdtContext deleteTree; - - // verify whether ydt tree is correct - assertThat(ydtContext.getName(), is("test")); - - cont1YdtContext = ydtContext.getFirstChild(); - assertThat(cont1YdtContext.getName(), is("cont1")); - - list1YdtContext = cont1YdtContext.getFirstChild(); - assertThat(list1YdtContext.getName(), is("list1")); - - ydtContext = list1YdtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf2")); - assertThat(ydtContext.getValue(), is("2")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf3")); - assertThat(ydtContext.getValue(), is("3")); - - ydtContext = list1YdtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf4")); - assertThat(ydtContext.getValue(), is("4")); - - list2YdtContext = cont1YdtContext.getNextSibling(); - assertThat(list2YdtContext.getName(), is("list2")); - - ydtContext = list2YdtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf5")); - assertThat(ydtContext.getValue(), is("5")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf6")); - assertThat(ydtContext.getValue(), is("6")); - - ydtContext = list2YdtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf10")); - assertThat(ydtContext.getValue(), is("10")); - - // build delete tree - YangApplicationBroker yab = new YangApplicationBroker(null); - deleteTree = yab.buildDeleteTree(deleteNodes); - - assertThat(deleteTree.getFirstChild().getName(), is("test")); - - cont1YdtContext = deleteTree.getFirstChild().getFirstChild(); - assertThat(cont1YdtContext.getName(), is("cont1")); - - list1YdtContext = cont1YdtContext.getFirstChild(); - assertThat(list1YdtContext.getName(), is("list1")); - - ydtContext = list1YdtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf2")); - assertThat(ydtContext.getValue(), is("2")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf3")); - assertThat(ydtContext.getValue(), is("3")); - - assertThat(list1YdtContext.getNextSibling(), nullValue()); - - list2YdtContext = cont1YdtContext.getNextSibling(); - assertThat(list2YdtContext.getName(), is("list2")); - - ydtContext = list2YdtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf5")); - assertThat(ydtContext.getValue(), is("5")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf6")); - assertThat(ydtContext.getValue(), is("6")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - - // verify whether ydt tree is correct - ydtContext = appContext.getModuleContext(); - assertThat(ydtContext.getName(), is("test")); - - cont1YdtContext = ydtContext.getFirstChild(); - assertThat(cont1YdtContext.getName(), is("cont1")); - - ydtContext = cont1YdtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf4")); - assertThat(ydtContext.getValue(), is("4")); - - ydtContext = cont1YdtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf10")); - assertThat(ydtContext.getValue(), is("10")); - } - - /** - * Checks whether there is no exception when there is valid edit - * request. - */ - @Test - public void testExecuteEditOperationWithoutDelete() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForEditOperationWithoutDelete(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks whether there is no exception when there is valid delete - * request. - */ - @Test - public void testExecuteEditOperationWithDelete() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForEditOperationWithDelete(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks whether there is no exception when there is valid edit - * request for list. - */ - @Test - public void testExecuteListEditOperationWithoutDelete() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForListEditOperationWithoutDelete(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks whether there is no exception when there is valid delete - * request for list. - */ - @Test - public void testExecuteListEditOperationWithDelete() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForListEditOperationWithDelete(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks whether there is no exception when there is valid query - * request. - */ - @Test - public void testExecuteQueryOperation() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = buildYdtForQueryOperation(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks whether there is no exception when there is valid query - * request for list. - */ - @Test - public void testExecuteListQueryOperation() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForListQueryOperation(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks whether delete tree is updated correctly. - */ - @Test - public void testSiblingsInDeleteTree() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = buildYdtWithOneDeleteNode(); - YdtAppContext appContext = - defaultYdtBuilder.getAppRootNode().getFirstChild(); - YdtContext ydtContext = appContext.getModuleContext(); - List deleteNodes = appContext.getDeleteNodes(); - - // verify whether ydt tree is correct - assertThat(ydtContext.getName(), is("test")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("cont1")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("cont4")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf10")); - assertThat(ydtContext.getValue(), is("10")); - - // build delete tree - YangApplicationBroker yab = new YangApplicationBroker(null); - YdtContext deleteTree = yab.buildDeleteTree(deleteNodes); - - assertThat(deleteTree.getFirstChild().getName(), is("test")); - - ydtContext = deleteTree.getFirstChild().getFirstChild(); - assertThat(ydtContext.getName(), is("cont4")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - assertThat(ydtContext.getPreviousSibling(), nullValue()); - - ydtContext = appContext.getModuleContext(); - - // verify whether ydt tree is correct - assertThat(ydtContext.getName(), is("test")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("cont1")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf10")); - assertThat(ydtContext.getValue(), is("10")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - } - - /** - * Checks last child is updated correctly after delete tree is built. - */ - @Test - public void testLastChildInYdtTree() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtWithDeleteNodeAsLastChild(); - YdtAppContext appContext = - defaultYdtBuilder.getAppRootNode().getFirstChild(); - YdtContext ydtContext = appContext.getModuleContext(); - List deleteNodes = appContext.getDeleteNodes(); - assertThat(YdtAppNodeOperationType.BOTH, - is(appContext.getOperationType())); - - // verify whether ydt tree is correct - assertThat(ydtContext.getName(), is("test")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("cont1")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("list2")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("cont4")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - - // build delete tree - YangApplicationBroker yab = new YangApplicationBroker(null); - YdtContext deleteTree = yab.buildDeleteTree(deleteNodes); - - assertThat(deleteTree.getFirstChild().getName(), is("test")); - - ydtContext = deleteTree.getFirstChild().getFirstChild(); - assertThat(ydtContext.getName(), is("cont4")); - - ydtContext = deleteTree.getFirstChild().getLastChild(); - assertThat(ydtContext.getName(), is("cont4")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - assertThat(ydtContext.getPreviousSibling(), nullValue()); - - ydtContext = appContext.getModuleContext(); - - assertThat(ydtContext.getLastChild().getName(), is("list2")); - - // verify whether ydt tree is correct - assertThat(ydtContext.getName(), is("test")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("cont1")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("list2")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - } - - /** - * Checks YDT tree with all delete nodes. - */ - @Test - public void testYdtTreeWithAllDeleteNodes() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = buildYdtWithAllDeleteNode(); - YdtAppContext appContext = - defaultYdtBuilder.getAppRootNode().getFirstChild(); - YdtContext ydtContext = appContext.getModuleContext(); - List deleteNodes = appContext.getDeleteNodes(); - - assertThat(YdtAppNodeOperationType.DELETE_ONLY, - is(appContext.getOperationType())); - - // verify whether ydt tree is correct - assertThat(ydtContext.getName(), is("test")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("cont1")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("list2")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("cont4")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - - // build delete tree - YangApplicationBroker yab = new YangApplicationBroker(null); - YdtContext deleteTree = yab.buildDeleteTree(deleteNodes); - - assertThat(deleteTree.getFirstChild().getName(), is("test")); - - ydtContext = deleteTree.getFirstChild().getFirstChild(); - assertThat(ydtContext.getName(), is("cont1")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("list2")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("cont4")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - } - - /** - * Checks whether key leaves are also available when there is delete - * request for list. - */ - @Test - public void testKeyLeavesInDeleteTree() throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = buildYdtForKeyLeavesInDeleteTree(); - - YdtAppContext appContext = - defaultYdtBuilder.getAppRootNode().getFirstChild(); - YdtContext ydtContext = appContext.getModuleContext(); - List deleteNodes = appContext.getDeleteNodes(); - - assertThat(YdtAppNodeOperationType.BOTH, is(appContext.getOperationType())); - - // verify whether ydt tree is correct - assertThat(ydtContext.getName(), is("test")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("list2")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf5")); - assertThat(ydtContext.getValue(), is("5")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf6")); - assertThat(ydtContext.getValue(), is("6")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf7")); - assertThat(ydtContext.getValue(), is("7")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("cont7")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - - // build delete tree - YangApplicationBroker yab = new YangApplicationBroker(null); - YdtContext deleteTree = yab.buildDeleteTree(deleteNodes); - - assertThat(deleteTree.getFirstChild().getName(), is("test")); - - ydtContext = deleteTree.getFirstChild().getFirstChild(); - assertThat(ydtContext.getName(), is("list2")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext, notNullValue()); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext, notNullValue()); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("cont7")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - - ydtContext = appContext.getModuleContext(); - - // verify whether ydt tree is correct - assertThat(ydtContext.getName(), is("test")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("list2")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("leaf5")); - assertThat(ydtContext.getValue(), is("5")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf6")); - assertThat(ydtContext.getValue(), is("6")); - - ydtContext = ydtContext.getNextSibling(); - assertThat(ydtContext.getName(), is("leaf7")); - assertThat(ydtContext.getValue(), is("7")); - - assertThat(ydtContext.getNextSibling(), nullValue()); - } - - /** - * Checks YDT tree and application tree for query request with mutiple - * augments. - */ - @Test - public void testApptreeForQueryWithMultipleAugment() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = buildYdtForQueryWithMultipleAugment(); - YdtAppContext appContext = defaultYdtBuilder.getAppRootNode() - .getFirstChild(); - YdtContext ydtNode = appContext.getModuleContext(); - YangNode yangNode = (YangNode) ((YdtNode) ydtNode).getYangSchemaNode(); - - YangApplicationBroker yab = new YangApplicationBroker(defaultYdtBuilder. - getYangSchemaRegistry()); - yab.setAugGenMethodSet(defaultYdtBuilder.getAugGenMethodSet()); - yab.processAugmentForChildNode(appContext, yangNode); - - assertThat(appContext.getModuleContext().getName(), is("test")); - - appContext = appContext.getFirstChild(); - - String augmentName = ((YangAugment) appContext - .getAugmentingSchemaNode()).getTargetNode().get(0) - .getResolvedNode().getJavaClassNameOrBuiltInType(); - assertThat(augmentName, is("cont4")); - - assertThat(appContext.getFirstChild(), nullValue()); - assertThat(appContext.getLastChild(), nullValue()); - } - - /** - * Checks whether there is no exception when there is valid query request - * for data resource with multiple augments. - */ - @Test - public void testQueryWithMultipleAugment() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = buildYdtForQueryWithMultipleAugment(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks whether YDT is updated correctly for delete with multiple augment. - */ - @Test - public void testYdtForDeleteWithMultipleAugment() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForDeleteWithMultipleAugment(); - YdtAppContext appContext = defaultYdtBuilder.getAppRootNode() - .getFirstChild(); - - YangApplicationBroker yab = new YangApplicationBroker(defaultYdtBuilder. - getYangSchemaRegistry()); - yab.setAugGenMethodSet(defaultYdtBuilder.getAugGenMethodSet()); - YdtContext deleteTree = yab.buildDeleteTree(appContext.getDeleteNodes()); - yab.processAugmentedNodesForDelete(deleteTree.getFirstChild(), - appContext); - - assertThat(appContext.getModuleContext().getName(), is("test")); - - appContext = appContext.getFirstChild(); - String augmentName = ((YangAugment) appContext - .getAugmentingSchemaNode()).getTargetNode().get(0) - .getResolvedNode().getJavaClassNameOrBuiltInType(); - assertThat(augmentName, is("cont4")); - - assertThat(appContext.getFirstChild(), nullValue()); - assertThat(appContext.getLastChild(), nullValue()); - - YdtContext ydtContext = deleteTree.getFirstChild(); - assertThat(ydtContext.getName(), is("test")); - - ydtContext = ydtContext.getFirstChild(); - assertThat(ydtContext.getName(), is("cont4")); - } - - /** - * Checks whether there is no exception when there is valid delete request - * for data resource with multiple augments. - */ - @Test - public void testDeleteWithMultipleAugment() { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForDeleteWithMultipleAugment(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks execute operation for rpc request with only output. - */ - @Test - public void testRpcWithOutput() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForRpcWithOnlyOutput(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks execute operation for rpc request with only input. - */ - @Test - public void testRpcWithInput() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForRpcWithOnlyInput(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks execute operation for rpc request with input and output. - */ - @Test - public void testRpcWithInputOutput() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForRpcWithBothInputOutput(); - ymsManager.executeOperation(defaultYdtBuilder); - } - - /** - * Checks execute operation for rpc request without input and - * output. - */ - @Test - public void testRpcWithoutInputOutput() - throws IOException, CloneNotSupportedException { - YangRequestWorkBench defaultYdtBuilder = - buildYdtForRpc(); - ymsManager.executeOperation(defaultYdtBuilder); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ych/DefaultYangCodecHandlerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ych/DefaultYangCodecHandlerTest.java deleted file mode 100644 index 590bbc9c78..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ych/DefaultYangCodecHandlerTest.java +++ /dev/null @@ -1,1604 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ych; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML; -import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REQUEST; -import static org.onosproject.yms.ydt.YmsOperationType.QUERY_REQUEST; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.BitSet; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.CombinedOpParam; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.AsNum; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.Attributes; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.DefaultAttributes; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.Metric; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.PathId; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.Aigp; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.BgpParameters; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultAigp; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultBgpParameters; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultLocalPref; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultMultiExitDisc; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultOrigin; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultUnrecognizedAttributes; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.LocalPref; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.MultiExitDisc; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.Origin; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.UnrecognizedAttributes; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.aigp.AigpTlv; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.aigp.DefaultAigpTlv; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.DefaultOptionalCapabilities; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.OptionalCapabilities; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.Cparameters; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.DefaultCparameters; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.cparameters.As4BytesCapability; -import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.cparameters.DefaultAs4BytesCapability; -import org.onosproject.yang.gen.v1.ych.empty.container.rev20160524.EmptyContainerOpParam; -import org.onosproject.yang.gen.v1.ych.empty.container.rev20160524.emptycontainer.EmptyContainer; -import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.YchPurchasingsupervisor.OnosYangOpType; -import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.YchPurchasingsupervisorOpParam; -import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.ychpurchasingsupervisor.DefaultYchPurchasingSupervisor; -import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.ychpurchasingsupervisor.YchPurchasingSupervisor; -import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.ychpurchasingsupervisor.ychpurchasingsupervisor.DefaultYchIsManager; -import org.onosproject.yang.gen.v1.ydt.customs.supervisor.rev20160524.CustomssupervisorOpParam; -import org.onosproject.yang.gen.v1.ydt.material.supervisor.rev20160524.MaterialsupervisorOpParam; -import org.onosproject.yang.gen.v1.ydt.material.supervisor.rev20160524.materialsupervisor.DefaultSupervisor; -import org.onosproject.yang.gen.v1.ydt.material.supervisor.rev20160524.materialsupervisor.Supervisor; -import org.onosproject.yang.gen.v1.ydt.merchandiser.supervisor.rev20160524.MerchandisersupervisorOpParam; -import org.onosproject.yang.gen.v1.ydt.root.rev20160524.LogisticsManagerOpParam; -import org.onosproject.yang.gen.v1.ydt.trading.supervisor.rev20160524.TradingsupervisorOpParam; -import org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry; -import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry; -import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider; -import org.onosproject.yms.ych.YangCompositeEncoding; - -/** - * Unit test case for default codec handler. - */ -public class DefaultYangCodecHandlerTest { - private TestYangSchemaNodeProvider testYangSchemaNodeProvider = - new TestYangSchemaNodeProvider(); - private static final String AM_XML = "Incorrect XML generated: "; - private static final String AM_OBJ = "Incorrect object generated: "; - private static final String EMPTY_CONTAINER = "EmptyContainerOpParam"; - private static final String LOGISTIC_MOD = "LogisticsManagerOpParam"; - private static final String MERCHA_MOD = "MerchandisersupervisorOpParam"; - private static final String PURCH_MOD = "YchPurchasingsupervisorOpParam"; - - /** - * Returns the xml string for customssupervisor module. - * - * @return the xml string for customssupervisor module - */ - private static String customsXml() { - return "" + - "" + - "Customssupervisor" + - ""; - } - - /** - * Returns the xml string for purchasesupervisor with empty selection node. - * - * @return the xml string for purchasesupervisor with empty selection node - */ - private static String purchaseXmlEmptySelectionNode() { - return "" + - "" + - "" + - "" + - ""; - } - - /** - * Returns the xml string for merchandisersupervisor module. - * - * @return the xml string for merchandisersupervisor module - */ - private static String merchandXml() { - return "" + - "" + - "Merchandisersupervisor" + - ""; - } - - /** - * Returns the xml string for tradingsupervisor module. - * - * @return the xml string for tradingsupervisor module - */ - private static String tradingXml() { - return "" + - "" + - "Tradingsupervisor" + - ""; - } - - /** - * Returns the xml string for customssupervisor module. - * - * @return the xml string for customssupervisor module - */ - private static String customsCompositeXml() { - return "" + - "" + - "Customssupervisor"; - } - - /** - * Returns the xml string for customssupervisor module with filter-type. - * - * @return the xml string for customssupervisor module with filter-type - */ - private static String customsEmptyXml() { - return "" + - ""; - } - - /** - * Returns the xml string for materialsupervisor module. - * - * @return the xml string for materialsupervisor module - */ - private static String materialXml() { - return "" + - "" + - "abc1xyz1" + - "" + - "abc2xyz2" + - "" + - "abc3xyz3" + - "" + - "abc4xyz4" + - "" + - "abc5xyz5" + - "" + - ""; - } - - /** - * Returns the xml string for EmptyContainer module. - * - * @return the xml string for EmptyContainer module - */ - private static String containerEmptyXml() { - return "" + - ""; - } - - /** - * Returns the xml string for Combined module. - * - * @return the xml string for Combined module - */ - private static String listTestXml() { - return "" + - "" + - "123" + - "456" + - "23" + - "456" + - "false" + - "false1" + - "QUJD" + - "true" + - "true2" + - "QUJD" + - "true" + - "false3" + - "QUJD" + - "false" + - "true4" + - "QUJD" + - "" + - "11" + - "" + - "" + - "" + - "22" + - "" + - "" + - "33" + - "" + - "" + - "11" + - "" + - "" + - "" + - "22" + - "" + - "" + - "33" + - "" + - ""; - } - - /** - * Returns the xml string for ych-purchasingsupervisor module. - * - * @return the XML string for ych-purchasingsupervisor module - */ - private static String purchaseXml() { - return "" + - "" + - "purchasingSpecialist" + - "" + - "support" + - "" + - "" + - ""; - } - - /** - * Returns the xml string for ych-purchasingsupervisor module with BitSet options. - * - * @return the XML string for ych-purchasingsupervisor module - */ - private static String purchaseXmlOptions(BitSet options) { - boolean isFirst = true; - - StringBuffer sb = new StringBuffer(); - sb.append(""); - sb.append(""); - sb.append("support"); - if (options == null || options.isEmpty()) { - sb.append(""); - } else { - sb.append(""); - for (int i = 0; i < 4; i++) { - if (options.get(i)) { - if (isFirst) { - isFirst = false; - } else { - sb.append(' '); - } - sb.append("option" + i); - } - } - sb.append(""); - } - sb.append(""); - sb.append(""); - - return sb.toString(); - } - - /** - * Returns the xml string for employeeid module. - * - * @return the xml string for employeeid module - */ - private static String emplyIdXml() { - return "" + - "" + - "Employ1" + - "Employ2" + - "Employ3" + - "Employ4" + - "Employ5" + - "" + - ""; - } - - /** - * Returns the xml string for warehousesupervisor module. - * - * @return the xml string for warehousesupervisor module - */ - private static String wareHseXml() { - return "" + - "" + - "supervisor1" + - "supervisor2" + - "supervisor3" + - "supervisor4" + - "supervisor5" + - "" + - ""; - } - - /** - * Returns the xml string for more than one module. - * - * @return the xml string for more than one module - */ - private static String multiModuleXml() { - return "" + - "" + - "Customssupervisor" + - "" + - "" + - "Merchandisersupervisor" + - "" + - "" + - "" + - "abc1" + - "xyz1" + - "" + - "" + - "abc2" + - "xyz2" + - "" + - "" + - "abc3" + - "xyz3" + - "" + - "" + - "abc4" + - "xyz4" + - "" + - "" + - "abc5" + - "xyz5" + - "" + - "" + - "" + - "" + - "purchasingSpecialist" + - "" + - "support" + - "" + - "" + - "" + - "supervisor1" + - "supervisor2" + - "supervisor3" + - "supervisor4" + - "supervisor5" + - "" + - "" + - "Tradingsupervisor" + - "" + - "" + - "Employ1" + - "Employ2" + - "Employ3" + - "Employ4" + - "Employ5" + - "" + - ""; - } - - /** - * Returns the xml string for more than one module. - * - * @return the xml string for more than one module - */ - private String multipleAppxml() { - return "Customssupervisor" + - "abc1xyz1" + - "abc2xyz2" + - "abc3xyz3" + - "abc4xyz4" + - "abc5xyz5" + - ""; - } - - /** - * Unit test case in which verifying xml string for module object with leaf - * for composite encode. - */ - @Test - public void proceessCodecHandlerForCompositeEnc() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider - .getDefaultYangSchemaRegistry(); - - // Creating the object - Object object = CustomssupervisorOpParam.builder() - .supervisor("Customssupervisor").build(); - - // Get the xml string and compare - Map tagAttr = new HashMap(); - tagAttr.put("type", "subtree"); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - YangCompositeEncoding xml = - defaultYangCodecHandler - .encodeCompositeOperation("filter", "ydt.filter-type", - object, XML, null); - - assertNull("customs-super: resource id not null", - xml.getResourceIdentifier()); - assertEquals(AM_XML + "customs-super: comp res info", - customsCompositeXml(), xml.getResourceInformation()); - - // Creating the object - object = MerchandisersupervisorOpParam.builder() - .supervisor("Merchandisersupervisor").build(); - - // Get the xml string and compare - xml = defaultYangCodecHandler.encodeCompositeOperation("config", - "ydt.root", - object, XML, - null); - assertNull("merch-super: res id not null", xml.getResourceIdentifier()); - assertEquals(AM_XML + "merch-super: comp res info", - merchandXml(), xml.getResourceInformation()); - - // Creating the object - object = TradingsupervisorOpParam.builder() - .supervisor("Tradingsupervisor").build(); - - // Get the xml string and compare - xml = defaultYangCodecHandler - .encodeCompositeOperation("config", "ydt.root", object, XML, - null); - assertNull("trading-super: res id not null", - xml.getResourceIdentifier()); - assertEquals(AM_XML + "trading-super: comp res info", - tradingXml(), xml.getResourceInformation()); - } - - /** - * Unit test case in which verifying xml string for module object with leaf. - */ - @Test - public void proceessCodecHandlerForLeaf() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider - .getDefaultYangSchemaRegistry(); - List yangModuleList = new ArrayList<>(); - - // Creating the object - Object object = CustomssupervisorOpParam.builder() - .supervisor("Customssupervisor").build(); - yangModuleList.add(object); - - // Get the xml string and compare - Map tagAttr = new HashMap(); - tagAttr.put("type", "subtree"); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - String xml = - defaultYangCodecHandler.encodeOperation("filter", - "ydt.filter-type", - tagAttr, yangModuleList, - XML, null); - - assertEquals(AM_XML + "customs-super: leaf info", customsXml(), xml); - - // Creating the object - object = MerchandisersupervisorOpParam.builder() - .supervisor("Merchandisersupervisor").build(); - yangModuleList.clear(); - yangModuleList.add(object); - - // Get the xml string and compare - xml = defaultYangCodecHandler.encodeOperation("config", "ydt.root", - null, yangModuleList, - XML, null); - assertEquals(AM_XML + "merchandiser-super: leaf info", merchandXml(), - xml); - - // Creating the object - object = TradingsupervisorOpParam.builder() - .supervisor("Tradingsupervisor").build(); - yangModuleList.clear(); - yangModuleList.add(object); - - // Get the xml string and compare - xml = defaultYangCodecHandler.encodeOperation("config", "ydt.root", - null, yangModuleList, - XML, null); - assertEquals(AM_XML + "trading-super: leaf info", tradingXml(), xml); - } - - /** - * Unit test case in which verifying xml string for module object with - * empty leaf. - */ - @Test - public void proceessCodecHandlerForEmptyLeaf() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider - .getDefaultYangSchemaRegistry(); - List yangModuleList = new ArrayList<>(); - - // Creating the object - Object object = CustomssupervisorOpParam.builder().supervisor("") - .build(); - yangModuleList.add(object); - - // Get the xml string and compare - Map tagAttr = new HashMap(); - tagAttr.put("type", "subtree"); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler codecHandler = - new DefaultYangCodecHandler(schemaRegistry); - String xml = codecHandler.encodeOperation("filter", "ydt.filter-type", - tagAttr, yangModuleList, - XML, null); - - assertEquals(AM_XML + "customs-super: leaf is not empty", - customsEmptyXml(), xml); - } - - /** - * Unit test case in which verifying xml string for more than one module - * object. - */ - @Test - public void proceessCodecHandlerForMultipleApp() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider - .getDefaultYangSchemaRegistry(); - List yangModuleList = new ArrayList<>(); - - // Creating the object - Object object = CustomssupervisorOpParam.builder() - .supervisor("Customssupervisor").build(); - yangModuleList.add(object); - - // Creating the object - Supervisor supervisor1 = new DefaultSupervisor.SupervisorBuilder() - .name("abc1").departmentId("xyz1").build(); - Supervisor supervisor2 = new DefaultSupervisor.SupervisorBuilder() - .name("abc2").departmentId("xyz2").build(); - Supervisor supervisor3 = new DefaultSupervisor.SupervisorBuilder() - .name("abc3").departmentId("xyz3").build(); - Supervisor supervisor4 = new DefaultSupervisor.SupervisorBuilder() - .name("abc4").departmentId("xyz4").build(); - Supervisor supervisor5 = new DefaultSupervisor.SupervisorBuilder() - .name("abc5").departmentId("xyz5").build(); - - Object object1 = MaterialsupervisorOpParam.builder() - .addToSupervisor(supervisor1) - .addToSupervisor(supervisor2) - .addToSupervisor(supervisor3) - .addToSupervisor(supervisor4) - .addToSupervisor(supervisor5).build(); - yangModuleList.add(object1); - - // Get the xml string and compare - Map tagAttr = new HashMap(); - tagAttr.put("type", "subtree"); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler codecHandler = - new DefaultYangCodecHandler(schemaRegistry); - String xml = codecHandler.encodeOperation("filter", "ydt.filter-type", - tagAttr, yangModuleList, - XML, null); - - assertEquals(AM_XML + "for multiple applications", - multipleAppxml(), xml); - } - - /** - * Unit test case in which verifying xml string for module object with list. - */ - @Test - public void proceessCodecHandlerForList() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - List yangModuleList = new ArrayList<>(); - - // Creating the object - Supervisor supervisor1 = new DefaultSupervisor.SupervisorBuilder() - .name("abc1").departmentId("xyz1").build(); - Supervisor supervisor2 = new DefaultSupervisor.SupervisorBuilder() - .name("abc2").departmentId("xyz2").build(); - Supervisor supervisor3 = new DefaultSupervisor.SupervisorBuilder() - .name("abc3").departmentId("xyz3").build(); - Supervisor supervisor4 = new DefaultSupervisor.SupervisorBuilder() - .name("abc4").departmentId("xyz4").build(); - Supervisor supervisor5 = new DefaultSupervisor.SupervisorBuilder() - .name("abc5").departmentId("xyz5").build(); - - Object object = MaterialsupervisorOpParam.builder() - .addToSupervisor(supervisor1) - .addToSupervisor(supervisor2) - .addToSupervisor(supervisor3) - .addToSupervisor(supervisor4) - .addToSupervisor(supervisor5).build(); - - yangModuleList.add(object); - - // Get the xml string and compare - Map tagAttr = new HashMap(); - tagAttr.put("type", "subtree"); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler codecHandler = - new DefaultYangCodecHandler(schemaRegistry); - String xml = codecHandler.encodeOperation("filter", "ydt.filter-type", - tagAttr, yangModuleList, - XML, null); - assertEquals(AM_XML + "material-super: list info", materialXml(), xml); - } - - /** - * Unit test case in which verifying xml string for module object with - * empty container. - */ - @Test - public void proceessCodecHandlerForEmptyContainer() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - List yangModuleList = new ArrayList<>(); - - // Creating the object - EmptyContainer emptyContainer = EmptyContainerOpParam.builder() - .emptyContainer(); - Object object = EmptyContainerOpParam.builder() - .emptyContainer(emptyContainer).build(); - - yangModuleList.add(object); - - // Get the xml string and compare - Map tagAttr = new HashMap(); - tagAttr.put("type", "subtree"); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler codecHandler = - new DefaultYangCodecHandler(schemaRegistry); - String xml = codecHandler.encodeOperation("filter", "ydt.filter-type", - tagAttr, yangModuleList, - XML, null); - assertEquals(AM_XML + "empty-contain: container is not empty", - containerEmptyXml(), xml); - } - - /** - * Unit test case in which verifying xml string for module object with list - * inside list. - */ - @Test - public void proceessCodecHandlerForListInsideList() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - List yangModuleList = new ArrayList<>(); - - // Creating the object - PathId pathId = new PathId(123); - Origin origin = new DefaultOrigin.OriginBuilder().value(pathId) - .build(); - MultiExitDisc multiExitDisc = new DefaultMultiExitDisc - .MultiExitDiscBuilder().med(456).build(); - LocalPref localPref = new DefaultLocalPref.LocalPrefBuilder() - .pref(23).build(); - Metric metric = new Metric(456); - AigpTlv aigpTlv = new DefaultAigpTlv.AigpTlvBuilder().metric(metric) - .build(); - Aigp aigp = new DefaultAigp.AigpBuilder().aigpTlv(aigpTlv).build(); - - UnrecognizedAttributes unrecognizedAttributes1 = - new DefaultUnrecognizedAttributes - .UnrecognizedAttributesBuilder() - .partial(false).transitive(false).type((short) 1) - .value("ABC".getBytes()).build(); - - UnrecognizedAttributes unrecognizedAttributes2 = - new DefaultUnrecognizedAttributes - .UnrecognizedAttributesBuilder() - .partial(true).transitive(true).type((short) 2) - .value("ABC".getBytes()) - .build(); - - UnrecognizedAttributes unrecognizedAttributes3 = - new DefaultUnrecognizedAttributes - .UnrecognizedAttributesBuilder() - .partial(true).transitive(false).type((short) 3) - .value("ABC".getBytes()) - .build(); - - UnrecognizedAttributes unrecognizedAttributes4 = - new DefaultUnrecognizedAttributes - .UnrecognizedAttributesBuilder() - .partial(false).transitive(true).type((short) 4) - .value("ABC".getBytes()).build(); - - AsNum asNum1 = new AsNum(11); - As4BytesCapability as4BytesCapability1 = - new DefaultAs4BytesCapability.As4BytesCapabilityBuilder() - .asNumber(asNum1).build(); - Cparameters cparameters1 = new DefaultCparameters.CparametersBuilder() - .as4BytesCapability(as4BytesCapability1) - .build(); - OptionalCapabilities optionalCapabilities1 = - new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() - .cParameters(cparameters1).build(); - - AsNum asNum2 = new AsNum(22); - As4BytesCapability as4BytesCapability2 = - new DefaultAs4BytesCapability.As4BytesCapabilityBuilder() - .asNumber(asNum2).build(); - Cparameters cparameters2 = new DefaultCparameters.CparametersBuilder() - .as4BytesCapability(as4BytesCapability2) - .build(); - OptionalCapabilities optionalCapabilities2 = - new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() - .cParameters(cparameters2).build(); - - AsNum asNum3 = new AsNum(33); - As4BytesCapability as4BytesCapability3 = - new DefaultAs4BytesCapability.As4BytesCapabilityBuilder() - .asNumber(asNum3).build(); - Cparameters cparameters3 = new DefaultCparameters.CparametersBuilder() - .as4BytesCapability(as4BytesCapability3) - .build(); - OptionalCapabilities optionalCapabilities3 = - new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() - .cParameters(cparameters3).build(); - - BgpParameters bgpParameters1 = - new DefaultBgpParameters.BgpParametersBuilder() - .addToOptionalCapabilities(optionalCapabilities1) - .addToOptionalCapabilities(optionalCapabilities2) - .addToOptionalCapabilities(optionalCapabilities3) - .build(); - - AsNum asNum4 = new AsNum(11); - As4BytesCapability as4BytesCapability4 = new DefaultAs4BytesCapability - .As4BytesCapabilityBuilder() - .asNumber(asNum4).build(); - Cparameters cparameters4 = new DefaultCparameters.CparametersBuilder() - .as4BytesCapability(as4BytesCapability4) - .build(); - OptionalCapabilities optionalCapabilities4 = - new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() - .cParameters(cparameters4).build(); - - AsNum asNum5 = new AsNum(22); - As4BytesCapability as4BytesCapability5 = - new DefaultAs4BytesCapability.As4BytesCapabilityBuilder() - .asNumber(asNum5).build(); - Cparameters cparameters5 = - new DefaultCparameters.CparametersBuilder() - .as4BytesCapability(as4BytesCapability5) - .build(); - OptionalCapabilities optionalCapabilities5 = - new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() - .cParameters(cparameters5).build(); - - AsNum asNum6 = new AsNum(33); - As4BytesCapability as4BytesCapability6 = - new DefaultAs4BytesCapability.As4BytesCapabilityBuilder() - .asNumber(asNum6).build(); - Cparameters cparameters6 = - new DefaultCparameters.CparametersBuilder() - .as4BytesCapability(as4BytesCapability6) - .build(); - OptionalCapabilities optionalCapabilities6 = - new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() - .cParameters(cparameters6).build(); - - BgpParameters bgpParameters2 = - new DefaultBgpParameters.BgpParametersBuilder() - .addToOptionalCapabilities(optionalCapabilities4) - .addToOptionalCapabilities(optionalCapabilities5) - .addToOptionalCapabilities(optionalCapabilities6) - .build(); - - Attributes attributes = new DefaultAttributes.AttributesBuilder() - .origin(origin) - .multiExitDisc(multiExitDisc) - .localPref(localPref) - .aigp(aigp) - .addToUnrecognizedAttributes(unrecognizedAttributes1) - .addToUnrecognizedAttributes(unrecognizedAttributes2) - .addToUnrecognizedAttributes(unrecognizedAttributes3) - .addToUnrecognizedAttributes(unrecognizedAttributes4) - .addToBgpParameters(bgpParameters1) - .addToBgpParameters(bgpParameters2).build(); - Object object = CombinedOpParam.builder().attributes(attributes) - .build(); - - yangModuleList.add(object); - - // Get the xml string and compare - Map tagAttr = new HashMap(); - tagAttr.put("type", "subtree"); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler codecHandler = - new DefaultYangCodecHandler(schemaRegistry); - String xml = codecHandler.encodeOperation("filter", "ydt.filter-type", - tagAttr, yangModuleList, - XML, null); - assertEquals(AM_XML + "combined: list info", listTestXml(), xml); - } - -// TODO negative scenario will be handled later - /** - * Unit test case in which verifying xml string for module object with - * container. - */ - @Test - public void proceessCodecHandlerForContainer() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - List yangModuleList = new ArrayList<>(); - - // Creating the object - YchPurchasingSupervisor supervisor = - new DefaultYchPurchasingSupervisor - .YchPurchasingSupervisorBuilder() - .ychPurchasingSpecialist("purchasingSpecialist") - .ychPurchasingSupport("support") - .ychIsManager(DefaultYchIsManager.builder().build()) - .yangYchPurchasingSupervisorOpType(OnosYangOpType.CREATE).build(); - Object object = YchPurchasingsupervisorOpParam.builder() - .ychPurchasingSupervisor(supervisor).build(); - yangModuleList.add(object); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler codecHandler = - new DefaultYangCodecHandler(schemaRegistry); - String xml = codecHandler.encodeOperation("config", "urn:ietf:params:xml:ns:netconf:base:1.0", - null, yangModuleList, - XML, null); - assertEquals(AM_XML + "puchas-super: container info", purchaseXml(), - xml); - } - -// /** -// * Unit test case in which verifying xml string for module object with -// * leaf list. -// */ -// @Test -// public void proceessCodecHandlerForLeafList() { -// testYangSchemaNodeProvider.processSchemaRegistry(null); -// DefaultYangSchemaRegistry schemaRegistry = -// testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); -// List yangModuleList = new ArrayList<>(); -// -// // Creating the object -// EmployeeidOpParam.EmployeeidBuilder employeeidBuilder = -// EmployeeidOpParam.builder(); -// employeeidBuilder.addToEmployeeid("Employ1"); -// employeeidBuilder.addToEmployeeid("Employ2"); -// employeeidBuilder.addToEmployeeid("Employ3"); -// employeeidBuilder.addToEmployeeid("Employ4"); -// employeeidBuilder.addToEmployeeid("Employ5"); -// -// Object object = employeeidBuilder.build(); -// yangModuleList.add(object); -// -// // Get the xml string and compare -// YangCodecRegistry.initializeDefaultCodec(); -// DefaultYangCodecHandler codecHandler = -// new DefaultYangCodecHandler(schemaRegistry); -// String xml = codecHandler.encodeOperation("config", "ydt.root", null, -// yangModuleList, XML, null); -// assertEquals(AM_XML + "employ-id: leaf-list info", emplyIdXml(), xml); -// WarehousesupervisorOpParam.WarehousesupervisorBuilder warehsebldr = -// WarehousesupervisorOpParam.builder(); -// warehsebldr.addToSupervisor("supervisor1"); -// warehsebldr.addToSupervisor("supervisor2"); -// warehsebldr.addToSupervisor("supervisor3"); -// warehsebldr.addToSupervisor("supervisor4"); -// warehsebldr.addToSupervisor("supervisor5"); -// -// object = warehsebldr.build(); -// yangModuleList.clear(); -// yangModuleList.add(object); -// -// -// // Get the xml string and compare -// xml = codecHandler.encodeOperation("config", "ydt.root", null, -// yangModuleList, XML, null); -// -// assertEquals(AM_XML + "warehouse-super: leaf-list info", wareHseXml(), -// xml); -// } - -// /** -// * Unit test case in which verifying xml string for multiple module object. -// */ -// @Test -// public void proceessCodecHandlerForMultipleModule() { -// testYangSchemaNodeProvider.processSchemaRegistry(null); -// DefaultYangSchemaRegistry schemaRegistry = -// testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); -// -// List yangModuleList = new ArrayList<>(); -// YangCodecRegistry.initializeDefaultCodec(); -// DefaultYangCodecHandler codecHandler = -// new DefaultYangCodecHandler(schemaRegistry); -// -// // Creating the object for customssupervisor module -// Object object = CustomssupervisorOpParam.builder() -// .supervisor("Customssupervisor").build(); -// yangModuleList.add(object); -// -// // Creating the object for merchandisersupervisor module -// object = MerchandisersupervisorOpParam.builder() -// .supervisor("Merchandisersupervisor").build(); -// yangModuleList.add(object); -// -// // Creating the object for materialsupervisor module -// Supervisor supervisor1 = new DefaultSupervisor.SupervisorBuilder() -// .name("abc1").departmentId("xyz1").build(); -// Supervisor supervisor2 = new DefaultSupervisor.SupervisorBuilder() -// .name("abc2").departmentId("xyz2").build(); -// Supervisor supervisor3 = new DefaultSupervisor.SupervisorBuilder() -// .name("abc3").departmentId("xyz3").build(); -// Supervisor supervisor4 = new DefaultSupervisor.SupervisorBuilder() -// .name("abc4").departmentId("xyz4").build(); -// Supervisor supervisor5 = new DefaultSupervisor.SupervisorBuilder() -// .name("abc5").departmentId("xyz5").build(); -// -// object = MaterialsupervisorOpParam.builder() -// .addToSupervisor(supervisor1) -// .addToSupervisor(supervisor2) -// .addToSupervisor(supervisor3) -// .addToSupervisor(supervisor4) -// .addToSupervisor(supervisor5).build(); -// -// yangModuleList.add(object); -// -// // Creating the object for YchPurchasingsupervisor module -// YchPurchasingSupervisor purSupervisor = -// new DefaultYchPurchasingSupervisor -// .YchPurchasingSupervisorBuilder() -// .ychPurchasingSpecialist("purchasingSpecialist") -// .ychPurchasingSupport("support").build(); -// object = YchPurchasingsupervisorOpParam.builder() -// .ychPurchasingSupervisor(purSupervisor).build(); -// yangModuleList.add(object); -// -// // Creating the object for warehousesupervisor module -// WarehousesupervisorOpParam.WarehousesupervisorBuilder warehsebldr = -// WarehousesupervisorOpParam.builder(); -// warehsebldr.addToSupervisor("supervisor1"); -// warehsebldr.addToSupervisor("supervisor2"); -// warehsebldr.addToSupervisor("supervisor3"); -// warehsebldr.addToSupervisor("supervisor4"); -// warehsebldr.addToSupervisor("supervisor5"); -// -// object = warehsebldr.build(); -// yangModuleList.add(object); -// -// // Creating the object for tradingsupervisor module -// object = TradingsupervisorOpParam.builder() -// .supervisor("Tradingsupervisor").build(); -// yangModuleList.add(object); -// -// List employeeid = EmployeeidOpParam.builder().employeeid(); -// if (employeeid == null) { -// employeeid = new ArrayList<>(); -// } -// employeeid.add("Employ1"); -// employeeid.add("Employ2"); -// employeeid.add("Employ3"); -// employeeid.add("Employ4"); -// employeeid.add("Employ5"); -// -// // Creating the object for employeeid module -// object = EmployeeidOpParam.builder().employeeid(employeeid).build(); -// yangModuleList.add(object); -// -// // Get the xml string and compare -// String xml = codecHandler.encodeOperation("config", "ydt.root", null, -// yangModuleList, XML, null); -// assertEquals(AM_XML + "multiple: module info", multiModuleXml(), xml); -// } - - /** - * Unit test case in which verifying object for xml string with config as - * root name and multiple module. - */ - @Test - public void proceessCodecDecodeFunctionForListInsideList() { - String path = "src/test/resources/ychTestResourceFiles/combinedrootname.xml"; - StringBuilder sb = new StringBuilder(); - String sCurrentLine; - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - - try (BufferedReader br = new BufferedReader(new FileReader(path))) { - - while ((sCurrentLine = br.readLine()) != null) { - sb.append(sCurrentLine); - } - } catch (IOException e) { - e.printStackTrace(); - } - - // TODO YOB and YTB need to do some changes for binary - // Verify the received object list - /*objectList = defaultYangCodecHandler.decode(sb.toString(), - XML_ENCODING, - EDIT_CONFIG_REQUEST); - Iterator iterator = objectList.iterator(); - while (iterator.hasNext()) { - Object object = iterator.next(); - if (object.getClass().getSimpleName().equals("CombinedOpParam")) { - CombinedOpParam combinedOpParam = (CombinedOpParam) object; - - PathId pathId = new PathId(123); - Origin origin = new DefaultOrigin.OriginBuilder() - .value(pathId).build(); - assertTrue(combinedOpParam.attributes().origin() - .equals(origin)); - - MultiExitDisc multiExitDisc = new DefaultMultiExitDisc - .MultiExitDiscBuilder().med(456).build(); - assertTrue(combinedOpParam.attributes().multiExitDisc() - .equals(multiExitDisc)); - - LocalPref localPref = new DefaultLocalPref.LocalPrefBuilder() - .pref(23).build(); - assertTrue(combinedOpParam.attributes().localPref() - .equals(localPref)); - - Metric metric = new Metric(456); - AigpTlv aigpTlv = new DefaultAigpTlv.AigpTlvBuilder() - .metric(metric).build(); - Aigp aigp = new DefaultAigp.AigpBuilder().aigpTlv(aigpTlv) - .build(); - assertTrue(combinedOpParam.attributes().aigp().equals(aigp)); - - UnrecognizedAttributes unrecognizedAttributes1 = - new DefaultUnrecognizedAttributes - .UnrecognizedAttributesBuilder() - .partial(false).transitive(false).type((short) 1) - .value("ABC".getBytes()).build(); - - UnrecognizedAttributes unrecognizedAttributes2 = - new DefaultUnrecognizedAttributes - .UnrecognizedAttributesBuilder() - .partial(true).transitive(true).type((short) 2) - .value("BCA".getBytes()).build(); - - UnrecognizedAttributes unrecognizedAttributes3 = - new DefaultUnrecognizedAttributes - .UnrecognizedAttributesBuilder() - .partial(true).transitive(false).type((short) 3) - .value("CAB".getBytes()).build(); - - UnrecognizedAttributes unrecognizedAttributes4 = - new DefaultUnrecognizedAttributes - .UnrecognizedAttributesBuilder() - .partial(false).transitive(true).type((short) 4) - .value("111".getBytes()).build(); - - AsNum asNum1 = new AsNum(11); - As4BytesCapability as4BytesCapability1 = - new DefaultAs4BytesCapability - .As4BytesCapabilityBuilder() - .asNumber(asNum1).build(); - Cparameters cparameters1 = new DefaultCparameters - .CparametersBuilder() - .as4BytesCapability(as4BytesCapability1) - .build(); - OptionalCapabilities optionalCapabilities1 = - new DefaultOptionalCapabilities - .OptionalCapabilitiesBuilder() - .cParameters(cparameters1).build(); - - AsNum asNum2 = new AsNum(22); - As4BytesCapability as4BytesCapability2 = - new DefaultAs4BytesCapability - .As4BytesCapabilityBuilder() - .asNumber(asNum2).build(); - Cparameters cparameters2 = new DefaultCparameters - .CparametersBuilder() - .as4BytesCapability(as4BytesCapability2) - .build(); - OptionalCapabilities optionalCapabilities2 = - new DefaultOptionalCapabilities - .OptionalCapabilitiesBuilder() - .cParameters(cparameters2).build(); - - AsNum asNum3 = new AsNum(33); - As4BytesCapability as4BytesCapability3 = - new DefaultAs4BytesCapability - .As4BytesCapabilityBuilder() - .asNumber(asNum3).build(); - Cparameters cparameters3 = - new DefaultCparameters.CparametersBuilder() - .as4BytesCapability(as4BytesCapability3) - .build(); - OptionalCapabilities optionalCapabilities3 = - new DefaultOptionalCapabilities - .OptionalCapabilitiesBuilder() - .cParameters(cparameters3).build(); - - BgpParameters bgpParameters1 = - new DefaultBgpParameters.BgpParametersBuilder() - .addToOptionalCapabilities(optionalCapabilities1) - .addToOptionalCapabilities(optionalCapabilities2) - .addToOptionalCapabilities(optionalCapabilities3) - .build(); - - AsNum asNum4 = new AsNum(11); - As4BytesCapability as4BytesCapability4 = - new DefaultAs4BytesCapability - .As4BytesCapabilityBuilder() - .asNumber(asNum4).build(); - Cparameters cparameters4 = - new DefaultCparameters.CparametersBuilder() - .as4BytesCapability(as4BytesCapability4) - .build(); - OptionalCapabilities optionalCapabilities4 = - new DefaultOptionalCapabilities - .OptionalCapabilitiesBuilder() - .cParameters(cparameters4).build(); - - AsNum asNum5 = new AsNum(22); - As4BytesCapability as4BytesCapability5 = - new DefaultAs4BytesCapability - .As4BytesCapabilityBuilder() - .asNumber(asNum5).build(); - Cparameters cparameters5 = - new DefaultCparameters.CparametersBuilder() - .as4BytesCapability(as4BytesCapability5) - .build(); - OptionalCapabilities optionalCapabilities5 = - new DefaultOptionalCapabilities - .OptionalCapabilitiesBuilder() - .cParameters(cparameters5).build(); - - AsNum asNum6 = new AsNum(33); - As4BytesCapability as4BytesCapability6 = - new DefaultAs4BytesCapability - .As4BytesCapabilityBuilder() - .asNumber(asNum6).build(); - Cparameters cparameters6 = - new DefaultCparameters.CparametersBuilder() - .as4BytesCapability(as4BytesCapability6) - .build(); - OptionalCapabilities optionalCapabilities6 = - new DefaultOptionalCapabilities - .OptionalCapabilitiesBuilder() - .cParameters(cparameters6).build(); - - BgpParameters bgpParameters2 = - new DefaultBgpParameters.BgpParametersBuilder() - .addToOptionalCapabilities(optionalCapabilities4) - .addToOptionalCapabilities(optionalCapabilities5) - .addToOptionalCapabilities(optionalCapabilities6) - .build(); - - Attributes attributes = - new DefaultAttributes.AttributesBuilder() - .origin(origin) - .multiExitDisc(multiExitDisc) - .localPref(localPref) - .aigp(aigp) - .addToUnrecognizedAttributes(unrecognizedAttributes1) - .addToUnrecognizedAttributes(unrecognizedAttributes2) - .addToUnrecognizedAttributes(unrecognizedAttributes3) - .addToUnrecognizedAttributes(unrecognizedAttributes4) - .addToBgpParameters(bgpParameters1) - .addToBgpParameters(bgpParameters2).build(); - } else { - assertTrue(false); - } - }*/ - } - -// /** -// * Unit test case in which verifying object for xml string with config as root name and -// * operation type. -// */ -// @Test -// public void proceessCodecDecodeFunctionForOperTypeTest() { -// String path = "src/test/resources/ychTestResourceFiles/configrootnameOperationType.xml"; -// testYangSchemaNodeProvider.processSchemaRegistry(null); -// DefaultYangSchemaRegistry schemaRegistry = -// testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); -// -// YangCodecRegistry.initializeDefaultCodec(); -// DefaultYangCodecHandler defaultYangCodecHandler = -// new DefaultYangCodecHandler(schemaRegistry); -// -// StringBuilder sb = new StringBuilder(); -// String sCurrentLine; -// -// try (BufferedReader br = new BufferedReader(new FileReader(path))) { -// -// while ((sCurrentLine = br.readLine()) != null) { -// sb.append(sCurrentLine); -// } -// -// } catch (IOException e) { -// e.printStackTrace(); -// } -// -// // Verify the received object list -// List objectList = -// defaultYangCodecHandler.decode(sb.toString(), -// XML, EDIT_CONFIG_REQUEST); -// Iterator iterator = objectList.iterator(); -// while (iterator.hasNext()) { -// Object object = iterator.next(); -// if (object.getClass().getSimpleName() -// .equals(LOGISTIC_MOD)) { -// LogisticsManagerOpParam logistics = -// (LogisticsManagerOpParam) object; -// DefaultPurchasingSupervisor purchasingSupervisor = -// (DefaultPurchasingSupervisor) logistics -// .purchasingSupervisor(); -// -// assertEquals(AM_OBJ + "purchase-super: operation type", DELETE, -// purchasingSupervisor.yangPurchasingSupervisorOpType()); -// assertEquals(AM_OBJ + "customs-super: leaf value", "abc", -// logistics.customsSupervisor()); -// assertEquals(AM_OBJ + "purchase-spec: leaf value", "bcd", -// logistics.purchasingSupervisor() -// .purchasingSpecialist()); -// assertEquals(AM_OBJ + "purchase-support: leaf value", -// "cde", logistics.purchasingSupervisor() -// .support()); -// -// } else if (object.getClass().getSimpleName() -// .equals(MERCHA_MOD)) { -// MerchandisersupervisorOpParam merchandisersupervisorOpParam = -// (MerchandisersupervisorOpParam) object; -// assertEquals(AM_OBJ + "merchandiser-super: leaf value", -// "abc", merchandisersupervisorOpParam.supervisor()); -// } else { -// assertEquals(AM_OBJ, LOGISTIC_MOD, object -// .getClass().getSimpleName()); -// assertEquals(AM_OBJ, MERCHA_MOD, object -// .getClass().getSimpleName()); -// } -// } -// } - - /** - * Validate the leaf value for purchasing specialist. - * - * @param objectList object list - */ - private void processPurchasingSpecObj(List objectList) { - Iterator iterator = objectList.iterator(); - while (iterator.hasNext()) { - Object object = iterator.next(); - if ("LogisticsManagerOpParam".equals(object.getClass().getSimpleName())) { - LogisticsManagerOpParam logisticsManagerOpParam = - (LogisticsManagerOpParam) object; - assertEquals(AM_OBJ + "purchasing-spec: leaf value", "bcd", - logisticsManagerOpParam.purchasingSupervisor() - .purchasingSpecialist()); - } else { - assertEquals(AM_OBJ, "LogisticsManagerOpParam", object - .getClass().getSimpleName()); - } - } - } - - /** - * Validate the leaf value for merchandiser supervisor. - * - * @param objectList object list - */ - private void processMerchandiserObj(List objectList) { - Iterator iterator = objectList.iterator(); - while (iterator.hasNext()) { - Object object = iterator.next(); - if (object.getClass().getSimpleName() - .equals(MERCHA_MOD)) { - MerchandisersupervisorOpParam merchandisersupervisorOpParam = - (MerchandisersupervisorOpParam) object; - assertEquals(AM_OBJ + "merchandiser-super: leaf value", "abc", - merchandisersupervisorOpParam.supervisor()); - } else { - assertEquals(AM_OBJ, MERCHA_MOD, object - .getClass().getSimpleName()); - } - } - } - - /** - * Unit test case in which verifying object for xml string with get and - * filter as root name. - */ - @Test - public void proceessCodecDecodeFunctionForGet() { - String path = "src/test/resources/ychTestResourceFiles/getrootname.xml"; - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - - StringBuilder sb = new StringBuilder(); - String sCurrentLine; - - try (BufferedReader br = new BufferedReader(new FileReader(path))) { - - while ((sCurrentLine = br.readLine()) != null) { - sb.append(sCurrentLine); - } - } catch (IOException e) { - e.printStackTrace(); - } - - // Verify the received object list - List objectList = - defaultYangCodecHandler.decode(sb.toString(), - XML, QUERY_REQUEST); - processPurchasingSpecObj(objectList); - } - - /** - * Unit test case in which verifying object for xml string with get-config - * and filter as root name. - */ - @Test - public void proceessCodecDecodeFunctionForGetConfig() { - String path = "src/test/resources/ychTestResourceFiles/getconfigrootname.xml"; - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - - StringBuilder sb = new StringBuilder(); - String sCurrentLine; - - try (BufferedReader br = new BufferedReader(new FileReader(path))) { - - while ((sCurrentLine = br.readLine()) != null) { - sb.append(sCurrentLine); - } - } catch (IOException e) { - e.printStackTrace(); - } - - // Verify the received object list - List objectList = defaultYangCodecHandler.decode( - sb.toString(), - XML, QUERY_CONFIG_REQUEST); - processMerchandiserObj(objectList); - } - - /** - * Unit test case in which verifying object for xml string with data as - * root name. - */ - @Test - public void proceessCodecDecodeFunctionForGetData() { - String path = "src/test/resources/ychTestResourceFiles/getReply.xml"; - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - - StringBuilder sb = new StringBuilder(); - String sCurrentLine; - - try (BufferedReader br = new BufferedReader(new FileReader(path))) { - - while ((sCurrentLine = br.readLine()) != null) { - sb.append(sCurrentLine); - } - } catch (IOException e) { - e.printStackTrace(); - } - - // Verify the received object list - List objectList = defaultYangCodecHandler.decode( - sb.toString(), - XML, QUERY_CONFIG_REQUEST); - processPurchasingSpecObj(objectList); - } - - /** - * Unit test case in which verifying object for xml string with rpc-reply - * and data as root name . - */ - @Test - public void proceessCodecDecodeFunctionForGetConfigData() { - String path = "src/test/resources/ychTestResourceFiles/getconfigReply.xml"; - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - - StringBuilder sb = new StringBuilder(); - String sCurrentLine; - - try (BufferedReader br = new BufferedReader(new FileReader(path))) { - - while ((sCurrentLine = br.readLine()) != null) { - sb.append(sCurrentLine); - } - } catch (IOException e) { - e.printStackTrace(); - } - - // Verify the received object list - List objectList = defaultYangCodecHandler.decode(sb.toString(), - XML, null); - processMerchandiserObj(objectList); - } - - @Test - public void proceessCodecDecodeFunctionForPresenceContainer() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - - // Verify the received object list - List objectList = defaultYangCodecHandler.decode(purchaseXml(), - XML, null); - assertNotNull(objectList); - Iterator iterator = objectList.iterator(); - while (iterator.hasNext()) { - Object object = iterator.next(); - if (object.getClass().getSimpleName().equals(PURCH_MOD)) { - YchPurchasingsupervisorOpParam purchasingsupervisorOpParam = - (YchPurchasingsupervisorOpParam) object; - assertEquals(AM_OBJ + "purchasing-specialist: leaf value", "purchasingSpecialist", - purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSpecialist()); - assertEquals(AM_OBJ + "purchasing-support: leaf value", "support", - purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSupport()); - assertNotNull(AM_OBJ + "purchasing-manager: leaf value", - purchasingsupervisorOpParam.ychPurchasingSupervisor().ychIsManager()); - } else { - assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName()); - } - } - } - - @Test - public void proceessCodecDecodeFunctionForSelectionNode() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - - // Verify the received object list - List objectList = defaultYangCodecHandler.decode( - purchaseXmlEmptySelectionNode(), XML, null); - assertNotNull(objectList); - Iterator iterator = objectList.iterator(); - while (iterator.hasNext()) { - Object object = iterator.next(); - if (object.getClass().getSimpleName().equals(PURCH_MOD)) { - YchPurchasingsupervisorOpParam purchasingsupervisorOpParam = - (YchPurchasingsupervisorOpParam) object; - assertNull(AM_OBJ + "purchasing-specialist: leaf value not empty", - purchasingsupervisorOpParam. - ychPurchasingSupervisor().ychPurchasingSpecialist()); - } else { - assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName()); - } - } - } - - @Test - public void proceessCodecDecodeFunctionForBitmaskContainer() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - - BitSet purchaseOptions = new BitSet(4); - purchaseOptions.set(1); //option1 - purchaseOptions.set(3); //option3 - - // Verify the received object list - List objectList = defaultYangCodecHandler.decode( - purchaseXmlOptions(purchaseOptions), XML, null); - assertNotNull(objectList); - Iterator iterator = objectList.iterator(); - while (iterator.hasNext()) { - Object object = iterator.next(); - if (object.getClass().getSimpleName().equals(PURCH_MOD)) { - YchPurchasingsupervisorOpParam purchasingsupervisorOpParam = - (YchPurchasingsupervisorOpParam) object; - assertEquals(AM_OBJ + "purchasing-support: leaf value", "support", - purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSupport()); - assertEquals(AM_OBJ + "ych-puchasing-options: leaf value", - purchaseOptions, - purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingOptions()); - } else { - assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName()); - } - } - } - - @Test - public void proceessCodecDecodeFunctionForEmptyBitmask() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry schemaRegistry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangCodecRegistry.initializeDefaultCodec(); - DefaultYangCodecHandler defaultYangCodecHandler = - new DefaultYangCodecHandler(schemaRegistry); - - // Verify the received object list - List objectList = defaultYangCodecHandler.decode( - purchaseXmlOptions(null), XML, null); - assertNotNull(objectList); - Iterator iterator = objectList.iterator(); - while (iterator.hasNext()) { - Object object = iterator.next(); - if (object.getClass().getSimpleName().equals(PURCH_MOD)) { - YchPurchasingsupervisorOpParam purchasingsupervisorOpParam = - (YchPurchasingsupervisorOpParam) object; - assertEquals(AM_OBJ + "purchasing-support: leaf value", "support", - purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSupport()); - assertNull(AM_OBJ + "ych-puchasing-options: leaf value empty", - purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingOptions()); - } else { - assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName()); - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentSequenceTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentSequenceTest.java deleted file mode 100644 index 720b8274a6..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentSequenceTest.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.yms.app.ydt; - -import org.junit.Test; - -import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT; -import static org.onosproject.yms.app.ydt.YdtTestConstants.AUGNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.AUGSE; -import static org.onosproject.yms.app.ydt.YdtTestUtils.augmentSequenceYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppLogicalNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppModuleNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class AugmentSequenceTest { - - private static final String[] EXPECTED = { - "Entry Node is augment.", - "Entry Node is augmentSequence.", - "Entry Node is l1.", - "Entry Node is leaf1.", - "Exit Node is leaf1.", - - "Entry Node is c1.", - "Entry Node is leaf2.", - "Exit Node is leaf2.", - "Exit Node is c1.", - - "Entry Node is c2.", - "Entry Node is leaf2.", - "Exit Node is leaf2.", - "Exit Node is c2.", - - "Exit Node is l1.", - "Exit Node is augmentSequence.", - "Exit Node is augment.", - }; - - /** - * Creates and validates sequence of augment in ydt. - */ - @Test - public void augmentTest() { - YangRequestWorkBench ydtBuilder = augmentSequenceYdt(); - validateTree(ydtBuilder); - validateAppTree(ydtBuilder); - walkINTree(ydtBuilder, EXPECTED); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // Assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "augment", null); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "augmentSequence", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "l1", MERGE); - ydtNode = ydtNode.getFirstChild(); - - validateLeafContents(ydtNode, "leaf1", "1"); - ydtNode = ydtNode.getNextSibling(); - - //Augmenting leaf2 - validateNodeContents(ydtNode, "c1", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "leaf2", "2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - //Augmenting leaf3 - validateNodeContents(ydtNode, "c2", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "leaf2", "3"); - } - - /** - * Validates the given built ydt application tree. - */ - private void validateAppTree(YangRequestWorkBench ydtBuilder) { - - // Assign root node to ydtNode for validating purpose. - YdtAppContext ydtAppContext = ydtBuilder.getAppRootNode(); - // Logical root node does not have operation type - validateAppLogicalNodeContents(ydtAppContext); - ydtAppContext = ydtAppContext.getFirstChild(); - validateAppModuleNodeContents(ydtAppContext, "augmentSequence", - OTHER_EDIT); - ydtAppContext = ydtAppContext.getFirstChild(); - - //Inside list checking the first augmented leaf - validateAppNodeContents(ydtAppContext, AUGSE, AUGNS, OTHER_EDIT); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentTest.java deleted file mode 100644 index 9846d0a07a..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/AugmentTest.java +++ /dev/null @@ -1,527 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; - -import java.util.HashSet; -import java.util.Set; - -import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.BOTH; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A2L; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A5L; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A6L; -import static org.onosproject.yms.app.ydt.YdtTestConstants.AUG1; -import static org.onosproject.yms.app.ydt.YdtTestConstants.IETF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.NETNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SLINK; -import static org.onosproject.yms.app.ydt.YdtTestConstants.STP; -import static org.onosproject.yms.app.ydt.YdtTestConstants.TOPONS; -import static org.onosproject.yms.app.ydt.YdtTestUtils.augmentNetworkYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppLogicalNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppModuleNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree; -import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class AugmentTest { - - private Set valueSet = new HashSet(); - - private static final String[] EXPECTED = { - "Entry Node is yms-ietf-network.", - "Entry Node is yms-ietf-network.", - "Entry Node is networks.", - "Entry Node is network.", - "Entry Node is network-id.", - "Exit Node is network-id.", - "Entry Node is link.", - "Entry Node is link-id.", - "Exit Node is link-id.", - "Entry Node is source.", - "Entry Node is source-node.", - "Exit Node is source-node.", - "Entry Node is source-tp.", - "Exit Node is source-tp.", - "Exit Node is source.", - - "Entry Node is destination.", - "Entry Node is dest-node.", - "Exit Node is dest-node.", - "Entry Node is dest-tp.", - "Exit Node is dest-tp.", - "Exit Node is destination.", - - "Entry Node is supporting-link.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is link-ref.", - "Exit Node is link-ref.", - "Exit Node is supporting-link.", - - "Entry Node is supporting-link.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is link-ref.", - "Exit Node is link-ref.", - "Exit Node is supporting-link.", - - "Entry Node is augment1.", - "Entry Node is value1.", - "Exit Node is value1.", - "Exit Node is augment1.", - - "Entry Node is augment2.", - "Entry Node is key1.", - "Exit Node is key1.", - "Entry Node is key2.", - "Exit Node is key2.", - - "Entry Node is augment5.", - - "Entry Node is augment6leafList.", - "Exit Node is augment6leafList.", - - "Entry Node is value5.", - "Exit Node is value5.", - "Exit Node is augment5.", - - "Entry Node is augment5leafList.", - "Exit Node is augment5leafList.", - - "Entry Node is augment3.", - - "Entry Node is augment4.", - "Entry Node is value4.", - "Exit Node is value4.", - "Exit Node is augment4.", - - "Entry Node is augment5.", - - "Entry Node is leaf6.", - "Exit Node is leaf6.", - - "Entry Node is value5.", - "Exit Node is value5.", - "Exit Node is augment5.", - - "Entry Node is augment6.", - "Entry Node is value6.", - "Exit Node is value6.", - "Exit Node is augment6.", - - "Entry Node is value3.", - "Exit Node is value3.", - "Exit Node is augment3.", - - "Entry Node is augment3leaf.", - "Exit Node is augment3leaf.", - - "Exit Node is augment2.", - - "Entry Node is augment2leafList.", - "Exit Node is augment2leafList.", - - "Exit Node is link.", - - "Entry Node is supporting-network.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Exit Node is supporting-network.", - "Entry Node is node.", - "Entry Node is node-id.", - "Exit Node is node-id.", - "Entry Node is t-point.", - "Entry Node is tp-id.", - "Exit Node is tp-id.", - - "Entry Node is supporting-termination-point.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is node-ref.", - "Exit Node is node-ref.", - "Entry Node is tp-ref.", - "Exit Node is tp-ref.", - - "Entry Node is augment1.", - "Entry Node is value1.", - "Exit Node is value1.", - "Exit Node is augment1.", - - "Entry Node is augment1-leaf.", - "Exit Node is augment1-leaf.", - - "Entry Node is augment2.", - - "Entry Node is augment3.", - "Entry Node is value3.", - "Exit Node is value3.", - "Exit Node is augment3.", - - "Entry Node is augment4leaf.", - "Exit Node is augment4leaf.", - - "Entry Node is value2.", - "Exit Node is value2.", - "Exit Node is augment2.", - "Entry Node is augment2leafList.", - "Exit Node is augment2leafList.", - "Entry Node is augment2leaf.", - "Exit Node is augment2leaf.", - - "Exit Node is supporting-termination-point.", - "Exit Node is t-point.", - "Entry Node is supporting-node.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is node-ref.", - "Exit Node is node-ref.", - "Exit Node is supporting-node.", - - "Exit Node is node.", - // last augmented sibling in network - "Entry Node is link-id.", - "Exit Node is link-id.", - - "Exit Node is network.", - "Exit Node is networks.", - "Entry Node is networks-state.", - "Entry Node is network.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is server-provided.", - "Exit Node is server-provided.", - "Exit Node is network.", - "Exit Node is networks-state.", - "Exit Node is yms-ietf-network.", - - "Entry Node is augmentNetwork.", - "Entry Node is node.", - "Entry Node is name.", - "Exit Node is name.", - "Entry Node is cont1s.", - "Entry Node is cont1s.", - "Entry Node is fine.", - "Exit Node is fine.", - - // augmenting node augment1 under cont1s - "Entry Node is augment1.", - "Entry Node is value1.", - "Exit Node is value1.", - "Exit Node is augment1.", - - "Exit Node is cont1s.", - "Exit Node is cont1s.", - "Exit Node is node.", - "Exit Node is augmentNetwork.", - - "Exit Node is yms-ietf-network." - }; - - /** - * Creates and validates ietf network augment ydt. - */ - @Test - public void augmentTest() { - YangRequestWorkBench ydtBuilder = augmentNetworkYdt(); - validateTree(ydtBuilder); - validateAppTree(ydtBuilder); - walkINTree(ydtBuilder, EXPECTED); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // Assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "yms-ietf-network", null); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "yms-ietf-network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "networks", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-id", "network1"); - ydtNode = ydtNode.getNextSibling(); - - // Validating augmented child - validateNodeContents(ydtNode, "link", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "link-id", "id1"); - ydtNode = ydtNode.getNextSibling(); - - // Inside source node - validateNodeContents(ydtNode, "source", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "source-node", "source1"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "source-tp", "source2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - //Inside destination node - validateNodeContents(ydtNode, "destination", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "dest-node", "dest1"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "dest-tp", "dest2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - //Inside supporting links - validateNodeContents(ydtNode, SLINK, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network1"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "link-ref", "id2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - //Inside another supporting links instance - validateNodeContents(ydtNode, SLINK, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network2"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "link-ref", "id3"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - validateNodeContents(ydtNode, "augment1", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "value1", "1"); - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "augment2", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "key1", "1"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "key2", "2"); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "augment5", DELETE); - ydtNode = ydtNode.getFirstChild(); - valueSet.add("1"); - valueSet.add("2"); - validateLeafListContents(ydtNode, A6L, valueSet); - ydtNode = ydtNode.getNextSibling(); - - validateLeafContents(ydtNode, "value5", "5"); - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateLeafListContents(ydtNode, A5L, valueSet); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "augment3", MERGE); - ydtNode = ydtNode.getFirstChild(); - - validateNodeContents(ydtNode, "augment4", DELETE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "value4", "4"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - validateNodeContents(ydtNode, "augment5", MERGE); - ydtNode = ydtNode.getFirstChild(); - - validateLeafContents(ydtNode, "leaf6", "6"); - ydtNode = ydtNode.getNextSibling(); - - validateLeafContents(ydtNode, "value5", "5"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - validateNodeContents(ydtNode, "augment6", DELETE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "value6", "6"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - validateLeafContents(ydtNode, "value3", "3"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "augment3leaf", "3"); - - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateLeafListContents(ydtNode, A2L, valueSet); - - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "supporting-network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network2"); - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "node", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "node-id", "node1"); - ydtNode = ydtNode.getNextSibling(); - - //Inside termination-point - validateNodeContents(ydtNode, "t-point", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "tp-id", "tp_id1"); - ydtNode = ydtNode.getNextSibling(); - - validateTerminationPointAugment(ydtNode); - } - - /** - * Validates the termination point node in given built ydt. - */ - private void validateTerminationPointAugment(YdtNode ydtNode) { - - //Inside supporting-termination-point - validateNodeContents(ydtNode, STP, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network-ref"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "node-ref", "node-ref"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "tp-ref", "tp-ref"); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "augment1", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "value1", "1"); - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "augment1-leaf", "1"); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "augment2", MERGE); - ydtNode = ydtNode.getFirstChild(); - - validateNodeContents(ydtNode, "augment3", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "value3", "3"); - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "augment4leaf", "4"); - - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "value2", "2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateLeafListContents(ydtNode, A2L, valueSet); - - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "augment2leaf", "2"); - - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "supporting-node", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network3"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "node-ref", "network4"); - - ydtNode = ydtNode.getParent().getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "link-id", "id1"); - ydtNode = ydtNode.getParent().getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "networks-state", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network5"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "server-provided", "true"); - ydtNode = ydtNode.getParent().getParent().getParent(); - - validateAugmentNetworkModule(ydtNode); - } - - /** - * Validates the given built ydt for augment network module. - */ - private void validateAugmentNetworkModule(YdtNode ydtNode) { - - ydtNode = ydtNode.getNextSibling(); - //augmenting network module node - validateNodeContents(ydtNode, "augmentNetwork", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "node", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "name", "node1"); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "cont1s", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "cont1s", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "fine", "leaf"); - - // checking augmenting node augment1 - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "augment1", DELETE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "value1", "1"); - } - - /** - * Validates the given built ydt application tree. - */ - private void validateAppTree(YangRequestWorkBench ydtBuilder) { - - // Assign root node to ydtNode for validating purpose. - YdtAppContext ydtAppContext = ydtBuilder.getAppRootNode(); - // Logical root node does not have operation type - validateAppLogicalNodeContents(ydtAppContext); - ydtAppContext = ydtAppContext.getFirstChild(); - validateAppModuleNodeContents(ydtAppContext, IETF, BOTH); - ydtAppContext = ydtAppContext.getFirstChild(); - - //Inside link node - validateAppNodeContents(ydtAppContext, AUG1, TOPONS, BOTH); - - ydtAppContext = ydtAppContext.getParent(); - validateAugmentNetworkAppTree(ydtAppContext); - } - - /** - * Validates the given built ydt application tree for augmenting network - * module. - */ - private void validateAugmentNetworkAppTree(YdtAppContext ydtAppContext) { - - ydtAppContext = ydtAppContext.getNextSibling(); - //augmenting network module node - validateAppModuleNodeContents(ydtAppContext, "augmentNetwork", BOTH); - ydtAppContext = ydtAppContext.getFirstChild(); - validateAppNodeContents(ydtAppContext, "/node", NETNS, BOTH); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/EmptyLeafListTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/EmptyLeafListTest.java deleted file mode 100644 index c7b63f2f96..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/EmptyLeafListTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class EmptyLeafListTest { - - // Logger list is used for walker testing. - private final List logger = new ArrayList<>(); - - private static final String[] EXPECTED = { - "Entry Node is empty.", - "Entry Node is EmptyLeafList.", - "Entry Node is l1.", - "Exit Node is l1.", - "Entry Node is l2.", - "Exit Node is l2.", - "Entry Node is l3.", - "Exit Node is l3.", - "Entry Node is list1.", - "Exit Node is list1.", - "Entry Node is list2.", - "Exit Node is list2.", - "Entry Node is list3.", - "Exit Node is list3.", - "Exit Node is EmptyLeafList.", - "Exit Node is empty." - }; - - /** - * Creates and validates empty leaf list ydt. - */ - @Test - public void emptyListTest() throws IOException { - - //TODO need to be handled later -// YangRequestWorkBench ydtBuilder = emptyLeafListYdt(); -// validateTree(ydtBuilder); -// walkINTree(ydtBuilder, EXPECTED); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - Set valueSet = new HashSet(); - - // Assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "empty", null); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "EmptyLeafList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "l1", null); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "l2", null); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "l3", null); - ydtNode = ydtNode.getNextSibling(); - - validateLeafListContents(ydtNode, "list1", valueSet); - ydtNode = ydtNode.getNextSibling(); - validateLeafListContents(ydtNode, "list2", valueSet); - ydtNode = ydtNode.getNextSibling(); - validateLeafListContents(ydtNode, "list3", valueSet); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/FoodArenaTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/FoodArenaTest.java deleted file mode 100644 index b7bcddb328..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/FoodArenaTest.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.DELETE_ONLY; -import static org.onosproject.yms.app.ydt.YdtTestUtils.foodArenaYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.getYdtBuilder; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree; -import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; -import static org.onosproject.yms.ydt.YdtContextOperationType.NONE; - -public class FoodArenaTest { - - // Logger list is used for walker testing. - private final List logger = new ArrayList<>(); - - private static final String[] EXPECTED = { - "Entry Node is foodarena.", - "Entry Node is food.", - "Entry Node is food.", - "Entry Node is chocolate.", - "Exit Node is chocolate.", - "Exit Node is food.", - "Exit Node is food.", - "Exit Node is foodarena." - }; - - /** - * Creates and validates food arena ydt. - */ - @Test - public void foodArenaTest() throws IOException { - - YangRequestWorkBench ydtBuilder = foodArenaYdt(); - validateTree(ydtBuilder); - walkINTree(ydtBuilder, EXPECTED); - } - - /** - * Creates and validates food arena ydt. - */ - @Test - public void foodArenaDeleteOperationTest() throws IOException { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder("foodarena", "food", "ydt.food", NONE); - ydtBuilder.addChild("food", "ydt.food", DELETE); - YdtAppContext appRootNode = ydtBuilder.getAppRootNode(); - assertEquals(DELETE_ONLY, appRootNode.getFirstChild().getOperationType()); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - // Assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "foodarena", null); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "food", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "food", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "chocolate", "dark"); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IdentityTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IdentityTest.java deleted file mode 100644 index 68200f1a44..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IdentityTest.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; -import org.onosproject.yms.app.yob.DefaultYobBuilder; -import org.onosproject.yms.app.ytb.DefaultYangTreeBuilder; -import org.onosproject.yms.ydt.YdtContext; - -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT; -import static org.onosproject.yms.app.ydt.YdtTestUtils.identityRefYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppLogicalNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppModuleNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; -import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REPLY; - -public class IdentityTest { - - Set valueSet = new HashSet(); - - private static final String[] EXPECTED = { - "Entry Node is identityref.", - "Entry Node is crypto-base.", - "Entry Node is crypto.", - "Exit Node is crypto.", - "Entry Node is abc-zeunion.", - "Exit Node is abc-zeunion.", - "Entry Node is level2.", - "Exit Node is level2.", - "Entry Node is level3.", - "Exit Node is level3.", - "Entry Node is level4.", - "Exit Node is level4.", - "Entry Node is abc-type.", - "Exit Node is abc-type.", - "Exit Node is crypto-base.", - "Exit Node is identityref.", - }; - - /** - * Creates and validates identity ref in ydt. - */ - @Test - public void identityRefTest() { - YangRequestWorkBench ydtBuilder = identityRefYdt(); - validateTree(ydtBuilder); - validateAppTree(ydtBuilder); - walkINTree(ydtBuilder, EXPECTED); - - //TODO need to be handled later -// validateYangObject(ydtBuilder); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - valueSet.add("crypto-alg"); - // Assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "identityref", null); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "crypto-base", MERGE); - ydtNode = ydtNode.getFirstChild(); - - validateLeafContents(ydtNode, "crypto", "crypto-alg"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "abc-zeunion", "crypto-alg"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "level2", "crypto-alg2"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "level3", "crypto-alg3"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "level4", "crypto-alg3"); - ydtNode = ydtNode.getNextSibling(); - validateLeafListContents(ydtNode, "abc-type", valueSet); - - } - - /** - * Validates the given built ydt application tree. - */ - private void validateAppTree(YangRequestWorkBench ydtBuilder) { - - // Assign root node to ydtNode for validating purpose. - YdtAppContext ydtAppContext = ydtBuilder.getAppRootNode(); - // Logical root node does not have operation type - validateAppLogicalNodeContents(ydtAppContext); - ydtAppContext = ydtAppContext.getFirstChild(); - validateAppModuleNodeContents(ydtAppContext, "crypto-base", - OTHER_EDIT); - } - - /** - * Creates Ydt from YO using YTB. - */ - private void validateYangObject(YangRequestWorkBench ydtBuilder) { - - YdtContext rootCtx = ydtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - - List list = new LinkedList<>(); - list.add(yangObject); - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) treeBuilder.getYdtBuilderForYo( - list, "identityref", "ydt.crypto-base", - EDIT_CONFIG_REPLY, YdtTestUtils - .getSchemaRegistry()); - - // Validate the created YDT - walkINTree(defaultYdtBuilder, EXPECTED); - validateTree(defaultYdtBuilder); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfNetworkTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfNetworkTest.java deleted file mode 100644 index b62ac87bf6..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfNetworkTest.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; - -import static org.onosproject.yms.app.ydt.YdtTestUtils.ietfNetwork1Ydt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class IetfNetworkTest { - - private static final String[] EXPECTED = { - "Entry Node is yms-ietf-network.", - "Entry Node is yms-ietf-network.", - "Entry Node is networks.", - "Entry Node is network.", - "Entry Node is network-id.", - "Exit Node is network-id.", - "Entry Node is supporting-network.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Exit Node is supporting-network.", - "Entry Node is node.", - "Entry Node is node-id.", - "Exit Node is node-id.", - "Entry Node is supporting-node.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is node-ref.", - "Exit Node is node-ref.", - "Exit Node is supporting-node.", - "Exit Node is node.", - "Exit Node is network.", - "Exit Node is networks.", - "Entry Node is networks-state.", - "Entry Node is network.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is server-provided.", - "Exit Node is server-provided.", - "Exit Node is network.", - "Exit Node is networks-state.", - "Exit Node is yms-ietf-network.", - "Exit Node is yms-ietf-network." - }; - - /** - * Creates and validates ietf network ydt. - */ - @Test - public void ietfNetwork1Test() { - YangRequestWorkBench ydtBuilder = ietfNetwork1Ydt(); - validateTree(ydtBuilder); - walkINTree(ydtBuilder, EXPECTED); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // Assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "yms-ietf-network", null); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "yms-ietf-network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "networks", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-id", "network1"); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "supporting-network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network2"); - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "node", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "node-id", "node1"); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "supporting-node", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network3"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "node-ref", "network4"); - - ydtNode = ydtNode.getParent().getParent().getParent().getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "networks-state", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network5"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "server-provided", "true"); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfTopologyTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfTopologyTest.java deleted file mode 100644 index c1c1fe9054..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/IetfTopologyTest.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; - -import static org.onosproject.yms.app.ydt.YdtAppNodeOperationType.OTHER_EDIT; -import static org.onosproject.yms.app.ydt.YdtTestConstants.AUG1; -import static org.onosproject.yms.app.ydt.YdtTestConstants.IETF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SLINK; -import static org.onosproject.yms.app.ydt.YdtTestConstants.STP; -import static org.onosproject.yms.app.ydt.YdtTestConstants.TOPONS; -import static org.onosproject.yms.app.ydt.YdtTestUtils.ietfNetworkTopologyYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppLogicalNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppModuleNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateAppNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class IetfTopologyTest { - - private static final String[] EXPECTED = { - "Entry Node is yms-ietf-network.", - "Entry Node is yms-ietf-network.", - "Entry Node is networks.", - "Entry Node is network.", - "Entry Node is network-id.", - "Exit Node is network-id.", - "Entry Node is link.", - "Entry Node is link-id.", - "Exit Node is link-id.", - "Entry Node is source.", - "Entry Node is source-node.", - "Exit Node is source-node.", - "Entry Node is source-tp.", - "Exit Node is source-tp.", - "Exit Node is source.", - - "Entry Node is destination.", - "Entry Node is dest-node.", - "Exit Node is dest-node.", - "Entry Node is dest-tp.", - "Exit Node is dest-tp.", - "Exit Node is destination.", - - "Entry Node is supporting-link.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is link-ref.", - "Exit Node is link-ref.", - "Exit Node is supporting-link.", - - "Entry Node is supporting-link.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is link-ref.", - "Exit Node is link-ref.", - "Exit Node is supporting-link.", - "Exit Node is link.", - - "Entry Node is supporting-network.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Exit Node is supporting-network.", - "Entry Node is node.", - "Entry Node is node-id.", - "Exit Node is node-id.", - "Entry Node is t-point.", - "Entry Node is tp-id.", - "Exit Node is tp-id.", - - "Entry Node is supporting-termination-point.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is node-ref.", - "Exit Node is node-ref.", - "Entry Node is tp-ref.", - "Exit Node is tp-ref.", - - "Exit Node is supporting-termination-point.", - "Exit Node is t-point.", - "Entry Node is supporting-node.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is node-ref.", - "Exit Node is node-ref.", - "Exit Node is supporting-node.", - - "Exit Node is node.", - // last augmented sibling in network - "Entry Node is link-id.", - "Exit Node is link-id.", - - "Exit Node is network.", - "Exit Node is networks.", - "Entry Node is networks-state.", - "Entry Node is network.", - "Entry Node is network-ref.", - "Exit Node is network-ref.", - "Entry Node is server-provided.", - "Exit Node is server-provided.", - "Exit Node is network.", - "Exit Node is networks-state.", - "Exit Node is yms-ietf-network.", - "Exit Node is yms-ietf-network." - }; - - /** - * Creates and validates ietf network ydt. - */ - @Test - public void ietfNetwork1Test() { - YangRequestWorkBench ydtBuilder = ietfNetworkTopologyYdt(); - validateTree(ydtBuilder); - validateAppTree(ydtBuilder); - walkINTree(ydtBuilder, EXPECTED); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // Assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "yms-ietf-network", null); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "yms-ietf-network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "networks", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-id", "network1"); - ydtNode = ydtNode.getNextSibling(); - - // Validating augmented child - validateNodeContents(ydtNode, "link", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "link-id", "id1"); - ydtNode = ydtNode.getNextSibling(); - - // Inside source node - validateNodeContents(ydtNode, "source", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "source-node", "source1"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "source-tp", "source2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - //Inside destination node - validateNodeContents(ydtNode, "destination", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "dest-node", "dest1"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "dest-tp", "dest2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - //Inside supporting links - validateNodeContents(ydtNode, SLINK, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network1"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "link-ref", "id2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - - //Inside another supporting links instance - validateNodeContents(ydtNode, SLINK, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network2"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "link-ref", "id3"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "supporting-network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network2"); - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "node", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "node-id", "node1"); - ydtNode = ydtNode.getNextSibling(); - - //Inside termination-point - validateNodeContents(ydtNode, "t-point", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "tp-id", "tp_id1"); - ydtNode = ydtNode.getNextSibling(); - - //Inside supporting-termination-point - validateNodeContents(ydtNode, STP, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network-ref"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "node-ref", "node-ref"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "tp-ref", "tp-ref"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "supporting-node", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network3"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "node-ref", "network4"); - - ydtNode = ydtNode.getParent().getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "link-id", "id1"); - ydtNode = ydtNode.getParent().getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "networks-state", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "network", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "network-ref", "network5"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "server-provided", "true"); - } - - /** - * Validates the given built ydt application tree. - */ - private void validateAppTree(YangRequestWorkBench ydtBuilder) { - - // Assign root node to ydtNode for validating purpose. - YdtAppContext ydtAppContext = ydtBuilder.getAppRootNode(); - // Logical root node does not have operation type - validateAppLogicalNodeContents(ydtAppContext); - ydtAppContext = ydtAppContext.getFirstChild(); - validateAppModuleNodeContents(ydtAppContext, IETF, OTHER_EDIT); - ydtAppContext = ydtAppContext.getFirstChild(); - - //Inside link node - validateAppNodeContents(ydtAppContext, AUG1, TOPONS, OTHER_EDIT); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/ListTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/ListTest.java deleted file mode 100644 index 39298552db..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/ListTest.java +++ /dev/null @@ -1,478 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.yms.app.ydt.YdtTestConstants.E_LEAF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.E_LIST; -import static org.onosproject.yms.app.ydt.YdtTestConstants.E_TOPARENT; -import static org.onosproject.yms.app.ydt.YdtTestConstants.INV; -import static org.onosproject.yms.app.ydt.YdtTestConstants.LISTNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.LWC; -import static org.onosproject.yms.app.ydt.YdtTestUtils.getTestYdtBuilder; -import static org.onosproject.yms.app.ydt.YdtTestUtils.getYdtBuilder; -import static org.onosproject.yms.app.ydt.YdtTestUtils.listWithContainer1Ydt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.listWithContainer2Ydt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.listWithContainerYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.listWithoutContainerYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; -import static org.onosproject.yms.ydt.YdtType.SINGLE_INSTANCE_NODE; - -public class ListTest { - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - private Set valueSet = new HashSet(); - - private static final String[] ERROR = { - "rootlist is missing some of the keys of listwithcontainer.", - "Duplicate entry with name invalid.", - "Some of the key elements are not unique in listwithcontainer.", - "Too few key parameters in listwithcontainer." + - " Expected 2; actual 1.", - "Too many key parameters in listwithcontainer." + - " Expected 2; actual 3.", - "Application with name \"" + "invalid\" doesn't exist.", - "Too many instances of listwithcontainer. Expected maximum " + - "instances 3.", - "Duplicate entry found under invalidinterval leaf-list node.", - "YANG file error : Input value \"string\" is not a valid uint16.", - "Schema node with name listwithcontainer doesn't exist.", - "Duplicate entry with name rootlist." - }; - - private static final String[] EXPECTED = { - "Entry Node is list.", - "Entry Node is rootlist.", - "Entry Node is listwithoutcontainer.", - "Entry Node is invalidinterval.", - "Exit Node is invalidinterval.", - "Exit Node is listwithoutcontainer.", - "Exit Node is rootlist.", - "Exit Node is list." - }; - - List keysValueList = new ArrayList<>(); - - /** - * Creates and validates rootlist module with listwithoutcontainer node. - */ - @Test - public void listwithoutcontainerTest() throws YdtException { - YangRequestWorkBench ydtBuilder = listWithoutContainerYdt(); - validateTree(ydtBuilder); - // walker test - walkINTree(ydtBuilder, EXPECTED); - } - - /** - * Creates and validates rootlist module with listwithcontainer node - * using addMultiInstanceChild interface for adding multi instance node. - */ - @Test - public void listwithcontainerTest() throws YdtException { - YangRequestWorkBench ydtBuilder = listWithContainerYdt(); - validateListwithcontainerTree(ydtBuilder); - } - - /** - * Creates and validates rootlist module with listwithcontainer - * node using addChild interface for adding multi instance node. - */ - @Test - public void listwithcontainer1Test() throws YdtException { - YangRequestWorkBench ydtBuilder = listWithContainer1Ydt(); - validateListwithcontainerTree(ydtBuilder); - } - - /** - * Creates and validates rootlist module with multiple instances of - * listwithcontainer node using addMultiInstanceChild interface for adding - * multi instance node. - */ - @Test - public void listwithcontainer2Test() throws YdtException { - YangRequestWorkBench ydtBuilder = listWithContainer2Ydt(); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "list", null); - - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "rootlist", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "listwithoutcontainer", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, INV, "12"); - } - - /** - * Validates the given list with container built ydt. - */ - private void validateListwithcontainerTree( - YangRequestWorkBench ydtBuilder) { - - valueSet.add("1"); - valueSet.add("2"); - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "list", null); - - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "rootlist", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, LWC, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "invalid", "12"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "invalid1", "12"); - ydtNode = ydtNode.getNextSibling(); - validateLeafListContents(ydtNode, INV, valueSet); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "interface", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, INV, "12"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "invalid", "121"); - } - - /** - * Tests the negative error scenario when application name for ydt is - * invalid. - */ - @Test - public void negative1Test() { - thrown.expect(IllegalArgumentException.class); - thrown.expectMessage(ERROR[5]); - getYdtBuilder("list", "invalid", "ydt.invalid", MERGE); - } - - /** - * Tests the negative error scenario when list node is not having all - * key elements. - */ - @Test - public void negative2Test() throws YdtException { - - YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); - ydtBuilder.addChild(LWC, LISTNS); - ydtBuilder.addLeaf("invalid", LISTNS, "12"); - ydtBuilder.traverseToParent(); - - traversToParentErrorMsgValidator(ydtBuilder, ERROR[0]); - } - - /** - * Tests the negative error scenario when duplicate entry of list node - * is created. - */ - @Test - public void negative3Test() throws YdtException { - YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); - ydtBuilder.addChild(LWC, LISTNS); - ydtBuilder.addLeaf("invalid", LISTNS, "12"); - ydtBuilder.traverseToParent(); - leafErrorMsgValidator(ydtBuilder, "invalid", "12", ERROR[1]); - } - - /** - * Tests the negative error scenario when key elements of list node - * are not unique. - */ - @Test - public void negative4Test() throws YdtException { - YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); - ydtBuilder.addChild(LWC, LISTNS); - ydtBuilder.addLeaf("invalid", LISTNS, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("invalid1", LISTNS, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(LWC, LISTNS); - ydtBuilder.addLeaf("invalid", LISTNS, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("invalid1", LISTNS, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - traversToParentErrorMsgValidator(ydtBuilder, ERROR[2]); - } - - /** - * Tests the negative error scenario when all key elements of list node - * are not supplied. - */ - @Test - public void negative5Test() throws YdtException { - keysValueList.clear(); - keysValueList.add("1"); - keysValueList.add("2"); - keysValueList.add("2"); - YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); - listNodeErrorMsgValidator(ydtBuilder, keysValueList, ERROR[4]); - - keysValueList.clear(); - keysValueList.add("1"); - ydtBuilder = getTestYdtBuilder(LISTNS); - listNodeErrorMsgValidator(ydtBuilder, keysValueList, ERROR[3]); - } - - /** - * Tests the negative error scenario when instances of a list node are - * created above the allowed limit. - */ - @Test - public void negative6Test() throws YdtException { - keysValueList.clear(); - keysValueList.add("1"); - keysValueList.add("1"); - YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); - ydtBuilder.addMultiInstanceChild(LWC, LISTNS, keysValueList, null); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(LWC, LISTNS); - ydtBuilder.addLeaf("invalid", LISTNS, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("invalid1", LISTNS, "121"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(LWC, LISTNS); - ydtBuilder.addLeaf("invalid", LISTNS, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("invalid1", LISTNS, "1211"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(LWC, LISTNS); - ydtBuilder.addLeaf("invalid", LISTNS, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("invalid1", LISTNS, "21"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - traversToParentErrorMsgValidator(ydtBuilder, ERROR[6]); - } - - /** - * Tests the negative error scenario when list node is not having all - * key elements. - */ - @Test - public void negative7Test() throws YdtException { - YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); - ydtBuilder.addChild(LWC, LISTNS); - traversToParentErrorMsgValidator(ydtBuilder, ERROR[0]); - } - - /** - * Tests the negative error scenario when duplicate key entry is created - * inside leaf-list node. - */ - @Test - public void negative8Test() throws YdtException { - YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); - ydtBuilder.addChild(LWC, LISTNS); - ydtBuilder.addLeaf("invalid", LISTNS, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("invalid1", LISTNS, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(INV, LISTNS, "12"); - ydtBuilder.traverseToParent(); - leafErrorMsgValidator(ydtBuilder, INV, "12", ERROR[7]); - } - - //TODO negative scenario will be handled later -// /** -// * Tests the negative error scenario when string is passed for uint16 type -// * leaf node. -// */ -// @Test -// public void negative9Test() throws YdtException { -// YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); -// ydtBuilder.addChild(LWC, LISTNS); -// ydtBuilder.addLeaf("invalid", LISTNS, "12"); -// ydtBuilder.traverseToParent(); -// ydtBuilder.addLeaf("invalid1", LISTNS, "12"); -// ydtBuilder.traverseToParent(); -// leafErrorMsgValidator(ydtBuilder, INV, "string", ERROR[8]); -// } -// -// /** -// * Tests the negative error scenario when duplicate key entry created -// * inside a leaf-list node. -// */ -// @Test -// public void negative10Test() throws YdtException { -// valueSet.clear(); -// valueSet.add("1"); -// valueSet.add("2"); -// valueSet.add("12"); -// YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); -// ydtBuilder.addChild(LWC, LISTNS); -// ydtBuilder.addLeaf("invalid", LISTNS, "12"); -// ydtBuilder.traverseToParent(); -// ydtBuilder.addLeaf("invalid1", LISTNS, "12"); -// ydtBuilder.traverseToParent(); -// ydtBuilder.addLeaf(INV, LISTNS, "12"); -// ydtBuilder.traverseToParent(); -// thrown.expect(IllegalArgumentException.class); -// thrown.expectMessage(ERROR[7]); -// ydtBuilder.addLeaf(INV, LISTNS, valueSet); -// } - -// /** -// * Tests the negative error scenario when string is passed for uint16 type -// * key entry inside a leaf-list node. -// */ -// @Test -// public void negative11Test() throws YdtException { -// valueSet.clear(); -// valueSet.add("string"); -// YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); -// ydtBuilder.addChild(LWC, LISTNS); -// ydtBuilder.addLeaf("invalid", LISTNS, "12"); -// ydtBuilder.traverseToParent(); -// ydtBuilder.addLeaf("invalid1", LISTNS, "12"); -// ydtBuilder.traverseToParent(); -// ydtBuilder.addLeaf(INV, LISTNS, "12"); -// ydtBuilder.traverseToParent(); -// thrown.expect(DataTypeException.class); -// thrown.expectMessage(ERROR[8]); -// ydtBuilder.addLeaf(INV, LISTNS, valueSet); -// } - - /** - * Tests the negative error scenario when list node addition requested - * with single instance request type. - */ - @Test - public void negative12Test() { - YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); - thrown.expect(IllegalArgumentException.class); - thrown.expectMessage(ERROR[9]); - ydtBuilder.addChild(LWC, LISTNS, SINGLE_INSTANCE_NODE, MERGE); - } - - /** - * Tests the negative error scenario when application with requested - * name is already part of tree. - */ - @Test - public void negative13Test() { - YangRequestWorkBench ydtBuilder = getTestYdtBuilder(LISTNS); - ydtBuilder.traverseToParent(); - thrown.expect(IllegalArgumentException.class); - thrown.expectMessage(ERROR[10]); - ydtBuilder.addChild("rootlist", LISTNS, MERGE); - } - - /** - * Validate the error message obtained by adding multi instance node in - * current context against the given error string. - * - * @param bldr ydt builder - * @param list list of key values - * @param error error string - */ - private void listNodeErrorMsgValidator(YangRequestWorkBench bldr, - List list, String error) { - /* - * This try catch is explicitly written to use as utility in other - * test cases. - */ - boolean isExpOccurred = false; - try { - bldr.addMultiInstanceChild(LWC, LISTNS, list, null); - } catch (IllegalArgumentException e) { - isExpOccurred = true; - assertEquals(e.getMessage(), error); - } - assertEquals(E_LIST + LWC, isExpOccurred, true); - } - - /** - * Validate the error message obtained by traversing back to parent of - * current context against the given error string. - * - * @param ydtBuilder ydt builder - * @param error error string - */ - private void traversToParentErrorMsgValidator( - YangRequestWorkBench ydtBuilder, String error) { - /* - * This try catch is explicitly written to use as utility in other - * test cases. - */ - boolean isExpOccurred = false; - try { - ydtBuilder.traverseToParent(); - } catch (IllegalStateException e) { - isExpOccurred = true; - assertEquals(e.getMessage(), error); - } - assertEquals(E_TOPARENT, isExpOccurred, true); - } - - /** - * Validate the error message obtained by adding leaf node in - * current context against the given error string. - * - * @param bldr ydt builder - * @param name name of the leaf - * @param val leaf value - * @param error error string - */ - private void leafErrorMsgValidator( - YangRequestWorkBench bldr, String name, String val, String error) { - /* - * This try catch is explicitly written to use as utility in other - * test cases. - */ - boolean isExpOccurred = false; - try { - bldr.addLeaf(name, LISTNS, val); - } catch (IllegalArgumentException e) { - isExpOccurred = true; - assertEquals(e.getMessage(), error); - } - assertEquals(E_LEAF + name, isExpOccurred, true); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/LogisticsManagerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/LogisticsManagerTest.java deleted file mode 100644 index e56a128115..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/LogisticsManagerTest.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import static org.onosproject.yms.app.ydt.YdtTestUtils.logisticsManagerYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafListContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class LogisticsManagerTest { - - // Logger list is used for walker testing. - private final List logger = new ArrayList<>(); - - private Set valueSet = new HashSet(); - - private static final String[] EXPECTED = { - "Entry Node is logisticsmanager.", - "Entry Node is customssupervisor.", - "Entry Node is supervisor.", - "Exit Node is supervisor.", - "Exit Node is customssupervisor.", - "Entry Node is merchandisersupervisor.", - "Entry Node is supervisor.", - "Exit Node is supervisor.", - "Exit Node is merchandisersupervisor.", - "Entry Node is materialsupervisor.", - "Entry Node is supervisor.", - "Entry Node is name.", - "Exit Node is name.", - "Entry Node is departmentId.", - "Exit Node is departmentId.", - "Exit Node is supervisor.", - "Entry Node is supervisor.", - "Entry Node is name.", - "Exit Node is name.", - "Entry Node is departmentId.", - "Exit Node is departmentId.", - "Exit Node is supervisor.", - "Exit Node is materialsupervisor.", - "Entry Node is purchasingsupervisor.", - "Entry Node is supervisor.", - "Entry Node is purchasing-specialist.", - "Exit Node is purchasing-specialist.", - "Entry Node is support.", - "Exit Node is support.", - "Exit Node is supervisor.", - "Exit Node is purchasingsupervisor.", - "Entry Node is warehousesupervisor.", - "Entry Node is supervisor.", - "Exit Node is supervisor.", - "Exit Node is warehousesupervisor.", - "Entry Node is tradingsupervisor.", - "Entry Node is supervisor.", - "Exit Node is supervisor.", - "Exit Node is tradingsupervisor.", - "Entry Node is employeeid.", - "Entry Node is employeeid.", - "Exit Node is employeeid.", - "Exit Node is employeeid.", - "Exit Node is logisticsmanager." - }; - - /** - * Creates and validates logistics manager ydt. - */ - @Test - public void logisticsManagerTest() { - YangRequestWorkBench ydtBuilder = logisticsManagerYdt(); - validateTree(ydtBuilder); - // walker test - walkINTree(ydtBuilder, EXPECTED); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - valueSet.add("1"); - valueSet.add("2"); - valueSet.add("3"); - valueSet.add("4"); - valueSet.add("5"); - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "logisticsmanager", null); - - ydtNode = ydtNode.getFirstChild(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "customssupervisor", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "supervisor", "abc"); - - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "merchandisersupervisor", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "supervisor", "abc"); - - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "materialsupervisor", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "supervisor", MERGE); - - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "name", "abc"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "departmentId", "xyz"); - - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "supervisor", MERGE); - - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "name", "ab"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "departmentId", "xy"); - - ydtNode = ydtNode.getParent().getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "purchasingsupervisor", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "supervisor", MERGE); - - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "purchasing-specialist", "abc"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "support", "xyz"); - - ydtNode = ydtNode.getParent().getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "warehousesupervisor", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafListContents(ydtNode, "supervisor", valueSet); - - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "tradingsupervisor", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "supervisor", "abc"); - - ydtNode = ydtNode.getParent(); - - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "employeeid", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafListContents(ydtNode, "employeeid", valueSet); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/RpcTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/RpcTest.java deleted file mode 100644 index 68894aa0fa..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/RpcTest.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; - -import java.util.ArrayList; -import java.util.List; - -import static org.onosproject.yms.app.ydt.YdtTestUtils.helloOnos; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.walkINTree; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class RpcTest { - - // Logger list is used for walker testing. - private final List logger = new ArrayList<>(); - - private static final String[] EXPECTED = { - "Entry Node is Hello-ONOS.", - "Entry Node is Hello_ONOS.", - "Entry Node is hello-world.", - "Entry Node is input.", - "Entry Node is name.", - "Exit Node is name.", - "Entry Node is surName.", - "Exit Node is surName.", - "Entry Node is stringList.", - "Entry Node is string1.", - "Exit Node is string1.", - "Entry Node is string2.", - "Exit Node is string2.", - "Exit Node is stringList.", - "Exit Node is input.", - "Exit Node is hello-world.", - "Exit Node is Hello_ONOS.", - "Exit Node is Hello-ONOS." - }; - - /** - * Creates and validates hello onos ydt. - */ - @Test - public void rpc1Test() { - YangRequestWorkBench ydtBuilder = helloOnos(); - validateTree(ydtBuilder); - // walker test - walkINTree(ydtBuilder, EXPECTED); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "Hello-ONOS", null); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "Hello_ONOS", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "hello-world", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "input", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "name", "onos"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "surName", "yang"); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "stringList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "string1", "ON"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "string2", "LAB"); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBitTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBitTest.java deleted file mode 100644 index ac60f21171..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBitTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; - -import static org.onosproject.yms.app.ydt.YdtTestUtils.bitYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class YdtBitTest { - - /* - BINARY - - Positive scenario - input with position 0 - input with position 1 - input with position 2 - */ - - /** - * Creates and validates bit ydt covering different positive scenario. - */ - @Test - public void positiveTest() { - YangRequestWorkBench ydtBuilder = bitYdt(); - validateTree(ydtBuilder); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "builtInType", null); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "bit", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "bitList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "bit", "disable-nagle"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "bitList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "bit", "auto-sense-speed"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "bitList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "bit", "ten-Mb-only"); - } - - //TODO negative scenario will be handled later -// /* -// Negative scenario -// -// input with position 0 -// input with position 1 -// input with position 2 -// */ -// -// /** -// * Tests all the negative scenario's for bit data type. -// */ -// @Test -// public void negativeTest() { -// validateErrMsg("bit", BITNS, "0", BIT, "bitList"); -// validateErrMsg("bit", BITNS, "default", BIT, "bitList"); -// validateErrMsg("bit", BITNS, "1", BIT, "bitList"); -// validateErrMsg("bit", BITNS, "", BIT, "bitList"); -// } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBooleanTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBooleanTest.java deleted file mode 100644 index 2d38f789d8..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtBooleanTest.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; - -import static org.onosproject.yms.app.ydt.YdtTestUtils.booleanYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class YdtBooleanTest { - - /* - BOOLEAN - Positive scenario - input with in "booleanList" and false - */ - - /** - * Creates and validates boolean ydt covering different positive scenario. - */ - @Test - public void positiveTest() { - YangRequestWorkBench ydtBuilder = booleanYdt(); - validateTree(ydtBuilder); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, "builtInType", null); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "bool", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "booleanList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "boolean", "true"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "booleanList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "boolean", "false"); - } - - //TODO negative scenario will be handled later -// /* -// Negative scenario -// -// input with in non zero value in case of "booleanList" -// input with zero value in case of false -// input with empty value in case of false -// */ -// -// /** -// * Tests all the negative scenario's for boolean data type. -// */ -// @Test -// public void negativeTest() { -// validateErrMsg("boolean", BOOLNS, "10", BOOL, "booleanList"); -// validateErrMsg("boolean", BOOLNS, "0", BOOL, "booleanList"); -// validateErrMsg("boolean", BOOLNS, "", BOOL, "booleanList"); -// validateErrMsg("boolean", BOOLNS, "-1", BOOL, "booleanList"); -// validateErrMsg("boolean", BOOLNS, "tru", BOOL, "booleanList"); -// validateErrMsg("boolean", BOOLNS, "boolean", BOOL, "booleanList"); -// } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtDecimal64Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtDecimal64Test.java deleted file mode 100644 index 69fffb09e2..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtDecimal64Test.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yms.app.ydt.YdtTestConstants.A; -import static org.onosproject.yms.app.ydt.YdtTestConstants.B; -import static org.onosproject.yms.app.ydt.YdtTestConstants.C; -import static org.onosproject.yms.app.ydt.YdtTestConstants.E; -import static org.onosproject.yms.app.ydt.YdtTestConstants.F; -import static org.onosproject.yms.app.ydt.YdtTestConstants.G; -import static org.onosproject.yms.app.ydt.YdtTestConstants.H; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV; -import static org.onosproject.yms.app.ydt.YdtTestConstants.NIWMF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.NWF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.PIWMF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.PWF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE; -import static org.onosproject.yms.app.ydt.YdtTestUtils.decimal64Ydt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class YdtDecimal64Test { - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - /* - - Positive scenario - - input at boundary for decimal64 with fraction 2 - i. min value - ii. max value - - input at boundry for decimal64 with minimum fraction - i. min value - ii. mid value - iii. max value - - input at boundry for decimal64 with maximum fraction - i. min value - ii. mid value - iii. max value - - input with in range - if range is 10 to 100 for integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - input with multi interval range - if range is 10..40 | 50..100 for decimal64 - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is "min .. 3.14 | 10 | 20..max" for decimal64 - i.1. input min - i.2. input 2.505 - i.3. input 3.14 - i.4. input 10 - i.5. input 20 - i.6. input 92233720368547757 - i.7. input 92233720368547758.07 - - */ - - /** - * Creates and validates decimal64 ydt covering different positive scenario. - */ - @Test - public void positiveTest() throws YdtException { - YangRequestWorkBench ydtBuilder = decimal64Ydt(); - validateTree(ydtBuilder); - - //TODO need to be handled later -// YangRequestWorkBench sbiYdt = validateYangObject( -// ydtBuilder, "builtInType", "ydt.decimal64"); -// validateTree(sbiYdt); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, TYPE, null); - - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "decimal64", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "negInt", C); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "posInt", A); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, NIWMF, F); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, PIWMF, G); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, NWF, H); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, PWF, E); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MIDIWR, "11"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MINIWR, "10"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MAXIWR, "100"); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "decimal", "11"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "decimal", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "decimal", "40"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "decimal", "50"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "decimal", "55"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "decimal", "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revDecimal", C); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revDecimal", "2.505"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revDecimal", "3.14"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revDecimal", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revDecimal", "20"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revDecimal", B); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revDecimal", A); - } - - //TODO negative scenario will be handled later - /* - Negative scenario - - input with position 0 - input with position 1 - input with position 2 - */ - -// /** -// * Tests all the negative scenario's for bit data type. -// */ -// @Test -// public void negativeTest() { -// thrown.expect(IllegalArgumentException.class); -// thrown.expectMessage(E_D64); -// YangRequestWorkBench ydtBuilder; -// ydtBuilder = getYdtBuilder("builtInType", "decimal64", "ydt.decimal64", -// MERGE); -// ydtBuilder.addLeaf("l1", null, "-9.1999999999e17"); -// ydtBuilder.traverseToParent(); -// } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEmptyTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEmptyTest.java deleted file mode 100644 index e7ca3205fa..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEmptyTest.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE; -import static org.onosproject.yms.app.ydt.YdtTestUtils.emptyTypeYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class YdtEmptyTest { - - /* - EMPTY - Positive scenario - input with in empty. - */ - - /** - * Creates and validates empty ydt covering different positive scenario. - */ - @Test - public void positiveTest() throws YdtException { - YangRequestWorkBench ydtBuilder = emptyTypeYdt(); - validateTree(ydtBuilder); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, TYPE, null); - - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "emptydata", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "emptyList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "empty", ""); - } - - //TODO negative scenario will be handled later -// /* -// Negative scenario -// -// input with " " -// input with "tab" -// input with """" -// */ -// -// /** -// * Tests all the negative scenario's for empty data type. -// */ -// @Test -// public void negativeTest() throws YdtException { -// validateErrMsg("empty", EMPTYNS, " ", EMPTY, "emptyList"); -// validateErrMsg("empty", EMPTYNS, " ", EMPTY, "emptyList"); -// validateErrMsg("empty", EMPTYNS, " ", EMPTY, "emptyList"); -// } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEnumTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEnumTest.java deleted file mode 100644 index 3c71ede4d0..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtEnumTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE; -import static org.onosproject.yms.app.ydt.YdtTestUtils.enumYdt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class YdtEnumTest { - -/* - ENUM - - Positive scenario - - input with in enum - input with "ten" - input with "hundred" - input with "thousand" -*/ - - /** - * Creates and validates enum ydt covering different positive scenario. - */ - @Test - public void positiveTest() throws YdtException { - YangRequestWorkBench ydtBuilder = enumYdt(); - validateTree(ydtBuilder); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, TYPE, null); - - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "enumtest", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "enumList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "enumleaf", "ten"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "enumList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "enumleaf", "hundred"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, "enumList", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "enumleaf", "thousand"); - } - - //TODO negative scenario will be handled later -// /* -// Negative scenario -// -// input with "10" -// input with "thousands" -// */ -// -// /** -// * Tests all the negative scenario's for enum data type. -// */ -// @Test -// public void negativeTest() throws YdtException { -// validateErrMsg("enumleaf", ENUMNS, "10", ENUM, "enumList"); -// validateErrMsg("enumleaf", ENUMNS, "thousands", ENUM, "enumList"); -// validateErrMsg("enumleaf", ENUMNS, "enumeration", ENUM, "enumList"); -// } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger16Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger16Test.java deleted file mode 100644 index ceb5e89cb5..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger16Test.java +++ /dev/null @@ -1,418 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV; -import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI; -import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE; -import static org.onosproject.yms.app.ydt.YdtTestUtils.integer16Ydt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class YdtInteger16Test { - - /* - Positive scenario - - input at boundry for integer - i. min value - ii. max value - - input at boundry for uinteger - i. min value - ii. max value - - input with in range - if range is 10 to 100 for integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - if range is 10 to 100 for uinteger - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - input with multi interval range - if range is 10..40 | 50..100 for integer - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is 10..40 | 50..100 for uinteger - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is "min .. 2 | 10 | 20..max" for integer - i.1. input -32768 - i.2. input 1 - i.3. input 2 - i.4. input 10 - i.5. input 20 - i.6. input 100 - i.7. input 32767 - - if range is "min .. 2 | 10 | 20..max" for uInteger - i.1. input 0 - i.2. input 1 - i.3. input 2 - i.4. input 10 - i.5. input 20 - i.6. input 100 - i.7. input 65535 - */ - - /** - * Creates and validates integer16 ydt covering different positive scenario. - */ - @Test - public void positiveTest() throws YdtException { - YangRequestWorkBench ydtBuilder = integer16Ydt(); - validateTree(ydtBuilder); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, TYPE, null); - - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "integer16", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "negInt", "-32768"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "posInt", "32767"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "minUInt", "0"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "maxUInt", "65535"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MIDIWR, "11"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MINIWR, "10"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MAXIWR, "100"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MIDUIWR, "11"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MINUIWR, "10"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MAXUIWR, "100"); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "11"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "40"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "50"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "55"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "11"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "40"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "50"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "55"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "100"); - - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "-32768"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "1"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - - validate1Tree(ydtNode); - } - - /** - * Validates the given built ydt. - */ - private void validate1Tree(YdtNode ydtNode) { - - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "20"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "32767"); - - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "0"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "1"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "20"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "65535"); - } - - //TODO negative scenario will be handled later - /* - Negative scenario - - wrong type input - i. input string instead of integer - ii. input string instead of uinteger - - input out of range - i. input for int 8 range -32768 to 32767 - i.1. input -32769 - i.2. input 32768 - - ii. input for uint 8 range 0 to 65535 - ii.1. input -32769 - ii.2. input 65536 - - input out of range parameter - if range is 10 to 100 for int - i.1. input 9 - i.2. input 101 - - if range is 10 to 100 for uInt - i.1. input 9 - i.2. input 101 - - input with multi interval range - if range is 10..40 | 50..100 for integer - i.1. input 9 - i.2. input 41 - i.3. input 49 - i.4. input 101 - - if range is 10..40 | 50..100 for uinteger - i.1. input 9 - i.2. input 41 - i.3. input 49 - i.4. input 101 - - input with multi interval range - if range is min .. | 10 | 20..max for integer - i.1. input -32769 - i.2. input 4 - i.3. input 9 - i.4. input 11 - i.5. input 19 - i.6. input 32768 - - if range is min .. 3 | 10 | 20..max for uinteger - i.1. input -32769 - i.2. input 4 - i.3. input 9 - i.4. input 11 - i.5. input 19 - i.6. input 65536 - - */ - - /** - * Tests all the minimum and maximum value's negative scenario's for - * signed integer16 data type. - */ -// @Test -// public void negative1Test() throws YdtException { -// validateErrMsg("posInt", INT16NS, "integer", SINT16, null); -// validateErrMsg("posInt", INT16NS, "127.0", SINT16, null); -// validateErrMsg("negInt", INT16NS, "-32769", SINT16, null); -// validateErrMsg("posInt", INT16NS, "32768", SINT16, null); -// validateErrMsg(MINIWR, INT16NS, "9", CAPSINT16, null); -// validateErrMsg(MAXIWR, INT16NS, "101", CAPSINT16, null); -// } -// -// /** -// * Tests all the minimum and maximum value's negative scenario's for -// * unsigned integer16 data type. -// */ -// @Test -// public void negative2Test() throws YdtException { -// validateErrMsg("maxUInt", INT16NS, "integer", SUINT16, null); -// validateErrMsg("maxUInt", INT16NS, "127.0", SUINT16, null); -// validateErrMsg("minUInt", INT16NS, "-32769", MINVALUE, null); -// validateErrMsg("maxUInt", INT16NS, "65536", MAXUINT16, null); -// validateErrMsg(MINUIWR, INT16NS, "9", CAPSUINT16, null); -// validateErrMsg(MAXUIWR, INT16NS, "101", CAPSUINT16, null); -// } -// -// /** -// * Tests all possible negative scenario's for signed integer16 data type -// * with range "10..40 | 50..100". -// */ -// @Test -// public void negative3Test() throws YdtException { -// validateErrMsg("integer", INT16NS, "9", CAPSINT16, MRV); -// validateErrMsg("integer", INT16NS, "41", CAPSINT16, MRV); -// validateErrMsg("integer", INT16NS, "49", CAPSINT16, MRV); -// validateErrMsg("integer", INT16NS, "101", CAPSINT16, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for unsigned integer16 data type -// * with range "10..40 | 50..100". -// */ -// @Test -// public void negative4Test() throws YdtException { -// validateErrMsg("UnInteger", INT16NS, "9", CAPSUINT16, MRV); -// validateErrMsg("UnInteger", INT16NS, "41", CAPSUINT16, MRV); -// validateErrMsg("UnInteger", INT16NS, "49", CAPSUINT16, MRV); -// validateErrMsg("UnInteger", INT16NS, "101", CAPSUINT16, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for signed integer16 data type -// * with range "min .. 2 | 10 | 20..max". -// */ -// @Test -// public void negative5Test() throws YdtException { -// // multi range validation -// validateErrMsg("revInteger", INT16NS, "-32769", SINT16, MRV); -// validateErrMsg("revInteger", INT16NS, "19", CAPSINT16, MRV); -// validateErrMsg("revInteger", INT16NS, "4", CAPSINT16, MRV); -// validateErrMsg("revInteger", INT16NS, "32768", SINT16, MRV); -// validateErrMsg("revInteger", INT16NS, "9", CAPSINT16, MRV); -// validateErrMsg("revInteger", INT16NS, "11", CAPSINT16, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for unsigned integer16 data type -// * with range "min .. 2 | 10 | 20..max". -// */ -// @Test -// public void negative6Test() throws YdtException { -// // multi range validation -// validateErrMsg(RUI, INT16NS, "-32769", MINVALUE, MRV); -// validateErrMsg(RUI, INT16NS, "4", CAPSUINT16, MRV); -// validateErrMsg(RUI, INT16NS, "9", CAPSUINT16, MRV); -// validateErrMsg(RUI, INT16NS, "11", CAPSUINT16, MRV); -// validateErrMsg(RUI, INT16NS, "19", CAPSUINT16, MRV); -// validateErrMsg(RUI, INT16NS, "65536", MAXUINT16, MRV); -// } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger32Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger32Test.java deleted file mode 100644 index 20c3c378af..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger32Test.java +++ /dev/null @@ -1,419 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT32; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV; -import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI; -import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE; -import static org.onosproject.yms.app.ydt.YdtTestUtils.integer32Ydt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class YdtInteger32Test { - - /* - Positive scenario - - input at boundry for integer - i. min value - ii. max value - - input at boundry for uinteger - i. min value - ii. max value - - input with in range - if range is 10 to 100 for integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - if range is 10 to 100 for uinteger - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - input with multi interval range - if range is 10..40 | 50..100 for integer - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is 10..40 | 50..100 for uinteger - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is "min .. 2 | 10 | 20..max" for integer - i.1. input -2147483648 - i.2. input 1 - i.3. input 2 - i.4. input 10 - i.5. input 20 - i.6. input 100 - i.7. input 2147483647 - - if range is "min .. 2 | 10 | 20..max" for uInteger - i.1. input 0 - i.2. input 1 - i.3. input 2 - i.4. input 10 - i.5. input 20 - i.6. input 100 - i.7. input 4294967295 - */ - - /** - * Creates and validates integer32 ydt covering different positive scenario. - */ - @Test - public void positiveTest() throws YdtException { - YangRequestWorkBench ydtBuilder = integer32Ydt(); - validateTree(ydtBuilder); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, TYPE, null); - - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "integer32", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "negInt", "-2147483648"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "posInt", "2147483647"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "minUInt", MINVALUE); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "maxUInt", MAXUINT32); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MIDIWR, "11"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MINIWR, "10"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MAXIWR, "100"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MIDUIWR, "11"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MINUIWR, "10"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MAXUIWR, "100"); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "11"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "40"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "50"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "55"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "11"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "40"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "50"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "55"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "100"); - - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "-2147483648"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "1"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "20"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - - validate1Tree(ydtNode); - } - - /** - * Validates the given built ydt. - */ - private void validate1Tree(YdtNode ydtNode) { - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "2147483647"); - - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, MINVALUE); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "1"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "20"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, MAXUINT32); - } - - //TODO negative scenario will be handled later - /* - Negative scenario - - wrong type input - i. input string instead of integer - ii. input string instead of uinteger - - input out of range - i. input for int 8 range -2147483648 to 2147483647 - i.1. input -2147483649 - i.2. input 2147483648 - - ii. input for uint 8 range 0 to 4294967295 - ii.1. input -2147483649 - ii.2. input 4294967296 - - input out of range parameter - if range is 10 to 100 for int - i.1. input 9 - i.2. input 101 - - if range is 10 to 100 for uInt - i.1. input 9 - i.2. input 101 - - input with multi interval range - if range is 10..40 | 50..100 for integer - i.1. input 9 - i.2. input 41 - i.3. input 49 - i.4. input 101 - - if range is 10..40 | 50..100 for uinteger - i.1. input 9 - i.2. input 41 - i.3. input 49 - i.4. input 101 - - input with multi interval range - if range is min .. | 10 | 20..max for integer - i.1. input -2147483649 - i.2. input 4 - i.3. input 9 - i.4. input 11 - i.5. input 19 - i.6. input 256 - - if range is min .. 3 | 10 | 20..max for uinteger - i.1. input -2147483649 - i.2. input 4 - i.3. input 9 - i.4. input 11 - i.5. input 19 - i.6. input 4294967296 - - */ - - /** - * Tests all the minimum and maximum value's negative scenario's for - * signed integer32 data type. - */ -// @Test -// public void negative1Test() throws YdtException { -// validateErrMsg("posInt", INT32NS, "integer", SINT32, null); -// validateErrMsg("posInt", INT32NS, "127.0", SINT32, null); -// validateErrMsg("negInt", INT32NS, "-2147483649", SINT32, null); -// validateErrMsg("posInt", INT32NS, "2147483648", SINT32, null); -// validateErrMsg(MINIWR, INT32NS, "9", CAPSINT32, null); -// validateErrMsg(MAXIWR, INT32NS, "101", CAPSINT32, null); -// } -// -// /** -// * Tests all the minimum and maximum value's negative scenario's for -// * unsigned integer32 data type. -// */ -// @Test -// public void negative2Test() throws YdtException { -// validateErrMsg("maxUInt", INT32NS, "integer", SUINT32, null); -// validateErrMsg("maxUInt", INT32NS, "127.0", SUINT32, null); -// validateErrMsg("minUInt", INT32NS, "-2147483649", MINVALUE, null); -// validateErrMsg("maxUInt", INT32NS, "4294967296", MAXUINT32, null); -// validateErrMsg(MINUIWR, INT32NS, "9", CAPSUINT32, null); -// validateErrMsg(MAXUIWR, INT32NS, "101", CAPSUINT32, null); -// } -// -// /** -// * Tests all possible negative scenario's for signed integer32 data type -// * with range "10..40 | 50..100". -// */ -// @Test -// public void negative3Test() throws YdtException { -// validateErrMsg("integer", INT32NS, "9", CAPSINT32, MRV); -// validateErrMsg("integer", INT32NS, "41", CAPSINT32, MRV); -// validateErrMsg("integer", INT32NS, "49", CAPSINT32, MRV); -// validateErrMsg("integer", INT32NS, "101", CAPSINT32, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for unsigned integer32 data type -// * with range "10..40 | 50..100". -// */ -// @Test -// public void negative4Test() throws YdtException { -// validateErrMsg("UnInteger", INT32NS, "9", CAPSUINT32, MRV); -// validateErrMsg("UnInteger", INT32NS, "41", CAPSUINT32, MRV); -// validateErrMsg("UnInteger", INT32NS, "49", CAPSUINT32, MRV); -// validateErrMsg("UnInteger", INT32NS, "101", CAPSUINT32, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for signed integer32 data type -// * with range "min .. 2 | 10 | 20..max". -// */ -// @Test -// public void negative5Test() throws YdtException { -// // Multi range validation -// validateErrMsg("revInteger", INT32NS, "-2147483649", SINT32, MRV); -// validateErrMsg("revInteger", INT32NS, "4", CAPSINT32, MRV); -// validateErrMsg("revInteger", INT32NS, "9", CAPSINT32, MRV); -// validateErrMsg("revInteger", INT32NS, "11", CAPSINT32, MRV); -// validateErrMsg("revInteger", INT32NS, "19", CAPSINT32, MRV); -// validateErrMsg("revInteger", INT32NS, "2147483648", SINT32, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for unsigned integer32 data type -// * with range "min .. 2 | 10 | 20..max". -// */ -// @Test -// public void negative6Test() throws YdtException { -// // Multi range validation -// validateErrMsg(RUI, INT32NS, "-2147483649", MINVALUE, MRV); -// validateErrMsg(RUI, INT32NS, "4", CAPSUINT32, MRV); -// validateErrMsg(RUI, INT32NS, "9", CAPSUINT32, MRV); -// validateErrMsg(RUI, INT32NS, "11", CAPSUINT32, MRV); -// validateErrMsg(RUI, INT32NS, "19", CAPSUINT32, MRV); -// validateErrMsg(RUI, INT32NS, "4294967296", MAXUINT32, MRV); -// } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger64Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger64Test.java deleted file mode 100644 index 4805786768..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger64Test.java +++ /dev/null @@ -1,422 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yms.app.ydt.YdtTestConstants.J; -import static org.onosproject.yms.app.ydt.YdtTestConstants.K; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT64; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV; -import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI; -import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE; -import static org.onosproject.yms.app.ydt.YdtTestUtils.integer64Ydt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class YdtInteger64Test { - - /* - - Positive scenario - - input at boundry for integer - i. min value - ii. max value - - input at boundry for uinteger - i. min value - ii. max value - - input with in range - if range is 10 to 100 for integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - if range is 10 to 100 for uinteger - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - input with multi interval range - if range is 10..40 | 50..100 for integer - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is 10..40 | 50..100 for uinteger - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is "min .. 2 | 10 | 20..max" for integer - i.1. input -9223372036854775808 - i.2. input 1 - i.3. input 2 - i.4. input 10 - i.5. input 20 - i.6. input 100 - i.7. input 9223372036854775807 - - if range is "min .. 2 | 10 | 20..max" for uInteger - i.1. input 0 - i.2. input 1 - i.3. input 2 - i.4. input 10 - i.5. input 20 - i.6. input 100 - i.7. input 18446744073709551615 - */ - - /** - * Creates and validates integer64 ydt covering different positive scenario. - */ - @Test - public void positiveTest() throws YdtException { - YangRequestWorkBench ydtBuilder = integer64Ydt(); - validateTree(ydtBuilder); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, TYPE, null); - - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "integer64", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "negInt", K); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "posInt", J); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "minUInt", MINVALUE); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "maxUInt", MAXUINT64); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MIDIWR, "11"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MINIWR, "10"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MAXIWR, "100"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MIDUIWR, "11"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MINUIWR, "10"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MAXUIWR, "100"); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "11"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "40"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "50"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "55"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "11"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "40"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "50"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "55"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "100"); - - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", K); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "1"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - - validate1Tree(ydtNode); - } - - /** - * Validates the given built ydt. - */ - private void validate1Tree(YdtNode ydtNode) { - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "20"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", J); - - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, MINVALUE); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "1"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "20"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, MAXUINT64); - } - - //TODO negative scenario will be handled later - /* - Negative scenario - - wrong type input - i. input string instead of integer - ii. input string instead of uinteger - - input out of range - i. input for int 8 range -9223372036854775808 to 9223372036854775807 - i.1. input -9223372036854775809 - i.2. input 9223372036854775808 - - ii. input for uint 8 range 0 to 18446744073709551615 - ii.1. input -9223372036854775809 - ii.2. input 18446744073709551616 - - input out of range parameter - if range is 10 to 100 for int - i.1. input 9 - i.2. input 101 - - if range is 10 to 100 for uInt - i.1. input 9 - i.2. input 101 - - input with multi interval range - if range is 10..40 | 50..100 for integer - i.1. input 9 - i.2. input 41 - i.3. input 49 - i.4. input 101 - - if range is 10..40 | 50..100 for uinteger - i.1. input 9 - i.2. input 41 - i.3. input 49 - i.4. input 101 - - input with multi interval range - if range is min .. | 10 | 20..max for integer - i.1. input -9223372036854775809 - i.2. input 4 - i.3. input 9 - i.4. input 11 - i.5. input 19 - i.6. input 9223372036854775808 - - if range is min .. 3 | 10 | 20..max for uinteger - i.1. input -9223372036854775809 - i.2. input 4 - i.3. input 9 - i.4. input 11 - i.5. input 19 - i.6. input 18446744073709551616 - - */ - - /** - * Tests all the minimum and maximum value's negative scenario's for - * signed integer64 data type. - */ -// @Test -// public void negative1Test() throws YdtException { -// validateErrMsg("posInt", INT64NS, "integer", SMALLINT64, null); -// validateErrMsg("posInt", INT64NS, "127.0", SMALLINT64, null); -// validateErrMsg("negInt", INT64NS, L, SMALLINT64, null); -// validateErrMsg("posInt", INT64NS, I, SMALLINT64, null); -// validateErrMsg(MINIWR, INT64NS, "9", CAPSINT64, null); -// validateErrMsg(MAXIWR, INT64NS, "101", CAPSINT64, null); -// } -// -// /** -// * Tests all the minimum and maximum value's negative scenario's for -// * unsigned integer64 data type. -// */ -// @Test -// public void negative2Test() throws YdtException { -// validateErrMsg("maxUInt", INT64NS, "integer", SMALLUINT64, null); -// validateErrMsg("maxUInt", INT64NS, "127.0", SMALLUINT64, null); -// validateErrMsg("minUInt", INT64NS, L, MINVALUE, null); -// validateErrMsg("maxUInt", INT64NS, M, MAXUINT64, null); -// validateErrMsg(MINUIWR, INT64NS, "9", CAPSUINT64, null); -// validateErrMsg(MAXUIWR, INT64NS, "101", CAPSUINT64, null); -// } -// -// /** -// * Tests all possible negative scenario's for signed integer64 data type -// * with range "10..40 | 50..100". -// */ -// @Test -// public void negative3Test() throws YdtException { -// validateErrMsg("integer", INT64NS, "9", CAPSINT64, MRV); -// validateErrMsg("integer", INT64NS, "41", CAPSINT64, MRV); -// validateErrMsg("integer", INT64NS, "49", CAPSINT64, MRV); -// validateErrMsg("integer", INT64NS, "101", CAPSINT64, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for unsigned integer64 data type -// * with range "10..40 | 50..100". -// */ -// @Test -// public void negative4Test() throws YdtException { -// validateErrMsg("UnInteger", INT64NS, "9", CAPSUINT64, MRV); -// validateErrMsg("UnInteger", INT64NS, "41", CAPSUINT64, MRV); -// validateErrMsg("UnInteger", INT64NS, "49", CAPSUINT64, MRV); -// validateErrMsg("UnInteger", INT64NS, "101", CAPSUINT64, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for signed integer64 data type -// * with range "min .. 2 | 10 | 20..max". -// */ -// @Test -// public void negative5Test() throws YdtException { -// // multi range validation -// validateErrMsg("revInteger", INT64NS, L, SMALLINT64, MRV); -// validateErrMsg("revInteger", INT64NS, "11", CAPSINT64, MRV); -// validateErrMsg("revInteger", INT64NS, "4", CAPSINT64, MRV); -// validateErrMsg("revInteger", INT64NS, "9", CAPSINT64, MRV); -// validateErrMsg("revInteger", INT64NS, "19", CAPSINT64, MRV); -// validateErrMsg("revInteger", INT64NS, I, SMALLINT64, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for unsigned integer64 data type -// * with range "min .. 2 | 10 | 20..max". -// */ -// @Test -// public void negative6Test() throws YdtException { -// // multi range validation -// validateErrMsg(RUI, INT64NS, L, MINVALUE, MRV); -// validateErrMsg(RUI, INT64NS, "4", CAPSUINT64, MRV); -// validateErrMsg(RUI, INT64NS, "9", CAPSUINT64, MRV); -// validateErrMsg(RUI, INT64NS, "11", CAPSUINT64, MRV); -// validateErrMsg(RUI, INT64NS, "19", CAPSUINT64, MRV); -// validateErrMsg(RUI, INT64NS, M, MAXUINT64, MRV); -// } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger8Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger8Test.java deleted file mode 100644 index 70727aa4b0..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtInteger8Test.java +++ /dev/null @@ -1,418 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -import org.junit.Test; -import org.onosproject.yms.app.ydt.exceptions.YdtException; - -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT8; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV; -import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI; -import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE; -import static org.onosproject.yms.app.ydt.YdtTestUtils.integer8Ydt; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; -import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; - -public class YdtInteger8Test { - - /* - Positive scenario - - input at boundry for integer - i. min value - ii. max value - - input at boundry for uinteger - i. min value - ii. max value - - input with in range - if range is 10 to 100 for integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - if range is 10 to 100 for uinteger - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - input with multi interval range - if range is 10..40 | 50..100 for integer - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is 10..40 | 50..100 for uinteger - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is "min .. 2 | 10 | 20..max" for integer - i.1. input -128 - i.2. input 1 - i.3. input 2 - i.4. input 10 - i.5. input 20 - i.6. input 100 - i.7. input 127 - - if range is "min .. 2 | 10 | 20..max" for uInteger - i.1. input 0 - i.2. input 1 - i.3. input 2 - i.4. input 10 - i.5. input 20 - i.6. input 100 - i.7. input 255 - */ - - /** - * Creates and validates integer8 ydt covering different positive scenario. - */ - @Test - public void positiveTest() throws YdtException { - YangRequestWorkBench ydtBuilder = integer8Ydt(); - validateTree(ydtBuilder); - } - - /** - * Validates the given built ydt. - */ - private void validateTree(YangRequestWorkBench ydtBuilder) { - - // assign root node to ydtNode for validating purpose. - YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); - // Logical root node does not have operation type - validateNodeContents(ydtNode, TYPE, null); - - ydtNode = ydtNode.getFirstChild(); - validateNodeContents(ydtNode, "integer8", MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "negInt", "-128"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "posInt", "127"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "minUInt", MINVALUE); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, "maxUInt", MAXUINT8); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MIDIWR, "11"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MINIWR, "10"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MAXIWR, "100"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MIDUIWR, "11"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MINUIWR, "10"); - ydtNode = ydtNode.getNextSibling(); - validateLeafContents(ydtNode, MAXUIWR, "100"); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "11"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "40"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "50"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "55"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "integer", "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "11"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "40"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "50"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "55"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "UnInteger", "100"); - - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "-128"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "1"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - validate1Tree(ydtNode); - } - - /** - * Validates the given built ydt. - */ - private void validate1Tree(YdtNode ydtNode) { - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "20"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, "revInteger", "127"); - - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, MINVALUE); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "1"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "2"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "10"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "20"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, "100"); - ydtNode = ydtNode.getParent(); - ydtNode = ydtNode.getNextSibling(); - validateNodeContents(ydtNode, MRV, MERGE); - ydtNode = ydtNode.getFirstChild(); - validateLeafContents(ydtNode, RUI, MAXUINT8); - } - - //TODO negative scenario will be handled later - /* - Negative scenario - - wrong type input - i. input string instead of integer - ii. input string instead of uinteger - - input out of range - i. input for int 8 range -128 to 127 - i.1. input -129 - i.2. input 128 - - ii. input for uint 8 range 0 to 255 - ii.1. input -128 - ii.2. input 256 - - input out of range parameter - if range is 10 to 100 for int - i.1. input 9 - i.2. input 101 - - if range is 10 to 100 for uInt - i.1. input 9 - i.2. input 101 - - input with multi interval range - if range is 10..40 | 50..100 for integer - i.1. input 9 - i.2. input 41 - i.3. input 49 - i.4. input 101 - - if range is 10..40 | 50..100 for uinteger - i.1. input 9 - i.2. input 41 - i.3. input 49 - i.4. input 101 - - input with multi interval range - if range is min .. | 10 | 20..max for integer - i.1. input -129 - i.2. input 4 - i.3. input 9 - i.4. input 11 - i.5. input 19 - i.6. input 128 - - if range is min .. 3 | 10 | 20..max for uinteger - i.1. input -129 - i.2. input 4 - i.3. input 9 - i.4. input 11 - i.5. input 19 - i.6. input 256 - - */ - - /** - * Tests all the minimum and maximum value's negative scenario's for - * signed integer8 data type. - */ -// @Test -// public void negative1Test() throws YdtException { -// validateErrMsg("posInt", INT8NS, "integer", SMALLINT8, null); -// validateErrMsg("posInt", INT8NS, "127.0", SMALLINT8, null); -// validateErrMsg("negInt", INT8NS, "-129", SMALLINT8, null); -// validateErrMsg("posInt", INT8NS, "128", SMALLINT8, null); -// validateErrMsg(MINIWR, INT8NS, "9", CAPSINT8, null); -// validateErrMsg(MAXIWR, INT8NS, "101", CAPSINT8, null); -// } -// -// /** -// * Tests all the minimum and maximum value's negative scenario's for -// * unsigned integer8 data type. -// */ -// @Test -// public void negative2Test() throws YdtException { -// validateErrMsg("maxUInt", INT8NS, "integer", SMALLUINT8, null); -// validateErrMsg("maxUInt", INT8NS, "127.0", SMALLUINT8, null); -// validateErrMsg("minUInt", INT8NS, "-128", MINVALUE, null); -// validateErrMsg("maxUInt", INT8NS, "256", MAXUINT8, null); -// validateErrMsg(MINUIWR, INT8NS, "9", CAPSUINT8, null); -// validateErrMsg(MAXUIWR, INT8NS, "101", CAPSUINT8, null); -// } -// -// /** -// * Tests all possible negative scenario's for signed integer8 data type -// * with range "10..40 | 50..100". -// */ -// @Test -// public void negative3Test() throws YdtException { -// validateErrMsg("integer", INT8NS, "9", CAPSINT8, MRV); -// validateErrMsg("integer", INT8NS, "41", CAPSINT8, MRV); -// validateErrMsg("integer", INT8NS, "49", CAPSINT8, MRV); -// validateErrMsg("integer", INT8NS, "101", CAPSINT8, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for unsigned integer8 data type -// * with range "10..40 | 50..100". -// */ -// @Test -// public void negative4Test() throws YdtException { -// validateErrMsg("UnInteger", INT8NS, "9", CAPSUINT8, MRV); -// validateErrMsg("UnInteger", INT8NS, "41", CAPSUINT8, MRV); -// validateErrMsg("UnInteger", INT8NS, "49", CAPSUINT8, MRV); -// validateErrMsg("UnInteger", INT8NS, "101", CAPSUINT8, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for signed integer8 data type -// * with range "min .. 2 | 10 | 20..max". -// */ -// @Test -// public void negative5Test() throws YdtException { -// // multi range validation -// validateErrMsg("revInteger", INT8NS, "-129", SMALLINT8, MRV); -// validateErrMsg("revInteger", INT8NS, "128", SMALLINT8, MRV); -// validateErrMsg("revInteger", INT8NS, "4", CAPSINT8, MRV); -// validateErrMsg("revInteger", INT8NS, "11", CAPSINT8, MRV); -// validateErrMsg("revInteger", INT8NS, "9", CAPSINT8, MRV); -// validateErrMsg("revInteger", INT8NS, "19", CAPSINT8, MRV); -// } -// -// /** -// * Tests all possible negative scenario's for unsigned integer8 data type -// * with range "min .. 2 | 10 | 20..max". -// */ -// @Test -// public void negative6Test() throws YdtException { -// // multi range validation -// validateErrMsg(RUI, INT8NS, "-129", MINVALUE, MRV); -// validateErrMsg(RUI, INT8NS, "4", CAPSUINT8, MRV); -// validateErrMsg(RUI, INT8NS, "9", CAPSUINT8, MRV); -// validateErrMsg(RUI, INT8NS, "11", CAPSUINT8, MRV); -// validateErrMsg(RUI, INT8NS, "19", CAPSUINT8, MRV); -// validateErrMsg(RUI, INT8NS, "256", MAXUINT8, MRV); -// } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestConstants.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestConstants.java deleted file mode 100644 index d4f3d8b61c..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestConstants.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ydt; - -/** - * Represents common constant utility for YANG data tree UT framework. - */ -final class YdtTestConstants { - - // No instantiation. - private YdtTestConstants() { - } - - public static final String BACKSLASH = "\""; - public static final String PERIOD = "."; - public static final String A = "92233720368547758.07"; - public static final String B = "92233720368547757"; - public static final String C = "-92233720368547758.08"; - public static final String D = "92233720368547757"; - public static final String E = "9.223372036854775807"; - public static final String F = "-922337203685477580.8"; - public static final String G = "922337203685477580.7"; - public static final String H = "-9.223372036854775808"; - public static final String I = "9223372036854775808"; - public static final String J = "9223372036854775807"; - public static final String K = "-9223372036854775808"; - public static final String L = "-9223372036854775809"; - public static final String M = "18446744073709551616"; - public static final String NWF = "negIntWithMaxFraction"; - public static final String PWF = "posIntWithMaxFraction"; - public static final String NIWMF = "negIntWithMinFraction"; - public static final String PIWMF = "posIntWithMinFraction"; - public static final String CAPSUINT8 = "UINT8"; - public static final String CAPSINT8 = "INT8"; - public static final String SMALLUINT8 = "uint8."; - public static final String SMALLINT8 = "int8."; - public static final String MAXUINT8 = "255"; - public static final String CAPSUINT16 = "UINT16"; - public static final String CAPSINT16 = "INT16"; - public static final String SUINT16 = "uint16."; - public static final String SINT16 = "int16."; - public static final String MAXUINT16 = "65535"; - public static final String CAPSUINT32 = "UINT32"; - public static final String CAPSINT32 = "INT32"; - public static final String SUINT32 = "uint32."; - public static final String SINT32 = "int32."; - public static final String MAXUINT32 = "4294967295"; - public static final String CAPSUINT64 = "UINT64"; - public static final String CAPSINT64 = "INT64"; - public static final String SMALLUINT64 = "uint64."; - public static final String SMALLINT64 = "int64."; - public static final String MAXUINT64 = "18446744073709551615"; - public static final String MINVALUE = "0"; - public static final String MINIWR = "minIntWithRange"; - public static final String MIDIWR = "midIntWithRange"; - public static final String MAXIWR = "maxIntWithRange"; - public static final String MINUIWR = "minUIntWithRange"; - public static final String MIDUIWR = "midUIntWithRange"; - public static final String MAXUIWR = "maxUIntWithRange"; - public static final String MRV = "multiRangeValidation"; - public static final String RUI = "revUnInteger"; - public static final String TYPE = "builtInType"; - public static final String INT8NS = "ydt.integer8"; - public static final String BIT = "BITS"; - public static final String BOOL = "BOOLEAN"; - public static final String EMPTY = ""; - public static final String ENUM = "ENUMERATION"; - public static final String LIST = "List"; - public static final String LWC = "listwithcontainer"; - public static final String INV = "invalidinterval"; - public static final String INT16NS = "ydt.integer16"; - public static final String INT32NS = "ydt.integer32"; - public static final String INT64NS = "ydt.integer64"; - public static final String BITNS = "ydt.bit"; - public static final String BOOLNS = "ydt.boolean"; - public static final String EMPTYNS = "ydt.emptydata"; - public static final String ENUMNS = "ydt.enumtest"; - public static final String LISTNS = "ydt.rootlist"; - public static final String A1 = "ydt.augment-topology1"; - public static final String A2 = "ydt.augment-topology2"; - public static final String A3 = "ydt.augment-topology3"; - public static final String A4 = "ydt.augment-topology4"; - public static final String A5 = "ydt.augment-topology5"; - public static final String A6 = "ydt.augment-topology6"; - public static final String A2L = "augment2leafList"; - public static final String A5L = "augment5leafList"; - public static final String A6L = "augment6leafList"; - public static final String MATERIALNS = "ydt.material-supervisor"; - public static final String PURCHASNS = "ydt.purchasing-supervisor"; - public static final String WAREHNS = "ydt.warehouse-supervisor"; - public static final String TRADNS = "ydt.trading-supervisor"; - public static final String EMPNS = "ydt.employee-id"; - public static final String COUSTOMNS = "ydt.customs-supervisor"; - public static final String MERCHNS = "ydt.Merchandiser-supervisor"; - public static final String STP = "supporting-termination-point"; - public static final String SLINK = "supporting-link"; - public static final String AUGSE = "/aug:l1"; - public static final String ELNS = "ydt.Empty.leafList"; - public static final String AUG1 = "/nd:networks/nd:network"; - public static final String AUG2 = "/nd:networks/nd:network/nd:node"; - public static final String AUG3 = "/nd:networks/nd:network/topo:link"; - public static final String AUG4 = "/nd:networks/nd:network/nd:node/" + - "topo:t-point/supporting-termination-point"; - public static final String AUG5 = "/nd:networks/nd:network/topo:link/" + - "aug2:augment2"; - public static final String AUG6 = "/nd:networks/nd:network/nd:node/" + - "topo:t-point/supporting-termination-point/aug2:augment2"; - public static final String AUG7 = "/nd:networks/nd:network/topo:link/" + - "aug2:augment2/aug3:augment3"; - public static final String AUG8 = "/nd:networks/nd:network/topo:link/" + - "aug2:augment2/aug3:augment3/aug5:augment5"; - public static final String AUG9 = "/nd:networks/nd:network/topo:link/" + - "aug2:augment2/aug5:augment5"; - public static final String AUG10 = "/aug:node/aug:cont1s/aug:cont1s"; - public static final String NETNS = "ydt.augmentNetwork"; - public static final String AUGNS = "ydt.augmentSequence1"; - public static final String IETFNS = - "urn:ietf:params:xml:ns:yang:ietf-network"; - public static final String IETF = "yms-ietf-network"; - public static final String TOPONS = - "urn:ietf:params:xml:ns:yang:ietf-network-topology"; - public static final String E_LEAF = "Exception has not occurred for " + - "invalid leaf value with name "; - public static final String E_LIST = "Exception has not occurred for " + - "invalid node addition with the name "; - public static final String E_TOPARENT = "Exception has not occurred " + - "in traverse back to parent for multi instance node."; - public static final String E_D64 = "YANG file error : value is not in" + - " decimal64 range."; -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestUtils.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestUtils.java deleted file mode 100644 index 989f85d862..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ydt/YdtTestUtils.java +++ /dev/null @@ -1,1938 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.yms.app.ydt; - -import org.junit.Rule; -import org.junit.rules.ExpectedException; -import org.onosproject.yms.app.yob.DefaultYobBuilder; -import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; -import org.onosproject.yms.app.ytb.DefaultYangTreeBuilder; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtContextOperationType; -import org.onosproject.yms.ydt.YdtListener; -import org.onosproject.yms.ydt.YdtType; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A1; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A2; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A2L; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A3; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A4; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A5; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A5L; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A6; -import static org.onosproject.yms.app.ydt.YdtTestConstants.A6L; -import static org.onosproject.yms.app.ydt.YdtTestConstants.BACKSLASH; -import static org.onosproject.yms.app.ydt.YdtTestConstants.BIT; -import static org.onosproject.yms.app.ydt.YdtTestConstants.BITNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.BOOL; -import static org.onosproject.yms.app.ydt.YdtTestConstants.BOOLNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSINT16; -import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSINT32; -import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSINT64; -import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSINT8; -import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSUINT16; -import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSUINT32; -import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSUINT64; -import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSUINT8; -import static org.onosproject.yms.app.ydt.YdtTestConstants.COUSTOMNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.ELNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.EMPNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.EMPTY; -import static org.onosproject.yms.app.ydt.YdtTestConstants.EMPTYNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.ENUM; -import static org.onosproject.yms.app.ydt.YdtTestConstants.ENUMNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.E_LEAF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.IETF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.IETFNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.INT16NS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.INT32NS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.INT64NS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.INT8NS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.INV; -import static org.onosproject.yms.app.ydt.YdtTestConstants.LIST; -import static org.onosproject.yms.app.ydt.YdtTestConstants.LISTNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.LWC; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MATERIALNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT16; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT32; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT64; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT8; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MERCHNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE; -import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV; -import static org.onosproject.yms.app.ydt.YdtTestConstants.NETNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.NIWMF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.NWF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.PERIOD; -import static org.onosproject.yms.app.ydt.YdtTestConstants.PIWMF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.PURCHASNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.PWF; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SINT16; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SINT32; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SLINK; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SMALLINT64; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SMALLINT8; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SMALLUINT64; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SMALLUINT8; -import static org.onosproject.yms.app.ydt.YdtTestConstants.STP; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SUINT16; -import static org.onosproject.yms.app.ydt.YdtTestConstants.SUINT32; -import static org.onosproject.yms.app.ydt.YdtTestConstants.TOPONS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.TRADNS; -import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE; -import static org.onosproject.yms.app.ydt.YdtTestConstants.WAREHNS; -import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; -import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REPLY; - -public class YdtTestUtils implements YdtListener { - - private static List kValList = new ArrayList<>(); - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - private static YangSchemaRegistry schemaRegistry; - - private static TestYangSchemaNodeProvider schemaProvider = - new TestYangSchemaNodeProvider(); - - // Logger list is used for walker testing. - private static final List LOGGER = new ArrayList<>(); - - /** - * Returns the LOGGER with log for testing the YDT walker. - * - * @return list of logs - */ - public static List getLogger() { - return LOGGER; - } - - /** - * Clear the LOGGER array. - */ - public static void resetLogger() { - LOGGER.clear(); - } - - @Override - public void enterYdtNode(YdtContext ydtContext) { - LOGGER.add("Entry Node is " + ydtContext.getName() + PERIOD); - } - - @Override - public void exitYdtNode(YdtContext ydtContext) { - LOGGER.add("Exit Node is " + ydtContext.getName() + PERIOD); - } - - /** - * Returns schema registry of YDT. - * - * @return schema registry - */ - public static YangSchemaRegistry getSchemaRegistry() { - return schemaRegistry; - } - - /** - * Sets the ydt schema registry. - * - * @param registry schema registry - */ - public static void setSchemaRegistry(YangSchemaRegistry registry) { - schemaRegistry = registry; - } - - /** - * Returns the ydt builder for food module. - * - * @return ydt builder - */ - public static YangRequestWorkBench foodArenaYdt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder("foodarena", "food", "ydt.food", MERGE); - ydtBuilder.addChild("food", "ydt.food"); -// ydtBuilder.addChild("snack", null, "ydt.food"); -// ydtBuilder.addChild("latenight", null, "ydt.food"); - ydtBuilder.addLeaf("chocolate", "ydt.food", "dark"); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for empty leaf list module. - * - * @return ydt builder - */ - public static YangRequestWorkBench emptyLeafListYdt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder("empty", "EmptyLeafList", ELNS, MERGE); - ydtBuilder.addChild("l1", ELNS); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("l2", ELNS); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("l3", ELNS); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("list1", ELNS); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("list2", ELNS); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("list3", ELNS); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for yms-ietf-network module. - * - * @return ydt builder - */ - public static YangRequestWorkBench ietfNetwork1Ydt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder(IETF, IETF, IETFNS, MERGE); - // Adding container - ydtBuilder.addChild("networks", null); - // Adding list inside container - ydtBuilder.addChild("network", null); - // Adding key element network Id - ydtBuilder.addLeaf("network-id", null, "network1"); - ydtBuilder.traverseToParent(); - - // Adding list inside list - ydtBuilder.addChild("supporting-network", null); - // Adding key element network-ref - ydtBuilder.addLeaf("network-ref", null, "network2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // Adding list inside list - ydtBuilder.addChild("node", null); - // Adding key element node-id - ydtBuilder.addLeaf("node-id", null, "node1"); - ydtBuilder.traverseToParent(); - - // Adding list inside list - ydtBuilder.addChild("supporting-node", null); - // Adding key element network-ref - ydtBuilder.addLeaf("network-ref", null, "network3"); - ydtBuilder.traverseToParent(); - - // Adding key element node-ref - ydtBuilder.addLeaf("node-ref", null, "network4"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // Adding container - ydtBuilder.addChild("networks-state", null); - // Adding list inside container - ydtBuilder.addChild("network", null); - // Adding key element network-ref - ydtBuilder.addLeaf("network-ref", null, "network5"); - ydtBuilder.traverseToParent(); - // Adding leaf server-provided - ydtBuilder.addLeaf("server-provided", null, "true"); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for yms-ietf-network-topology module. - * - * @return ydt builder - */ - public static YangRequestWorkBench ietfNetworkTopologyYdt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder(IETF, IETF, IETFNS, MERGE); - // Adding container - ydtBuilder.addChild("networks", IETFNS, MERGE); - // Adding list inside container - ydtBuilder.addChild("network", IETFNS, MERGE); - - // Adding key element network Id - ydtBuilder.addLeaf("network-id", null, "network1"); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("id1"); - // adding the augmented node - ydtBuilder.addMultiInstanceChild("link", TOPONS, kValList, MERGE); - // container source - ydtBuilder.addChild("source", TOPONS, MERGE); - ydtBuilder.addLeaf("source-node", null, "source1"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("source-tp", null, "source2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // container destination - ydtBuilder.addChild("destination", TOPONS, MERGE); - ydtBuilder.addLeaf("dest-node", null, "dest1"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("dest-tp", null, "dest2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("network1"); - kValList.add("id2"); - // adding the supporting-link list node - ydtBuilder.addMultiInstanceChild(SLINK, TOPONS, kValList, MERGE); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("network2"); - kValList.add("id3"); - // adding the supporting-link list another instance - ydtBuilder.addMultiInstanceChild(SLINK, TOPONS, kValList, MERGE); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // Adding list inside list - ydtBuilder.addChild("supporting-network", null); - // Adding key element network-ref - ydtBuilder.addLeaf("network-ref", null, "network2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // Adding list inside list - ydtBuilder.addChild("node", null); - // Adding key element node-id - ydtBuilder.addLeaf("node-id", null, "node1"); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("tp_id1"); - //adding augmented termination-point list - ydtBuilder.addMultiInstanceChild("t-point", TOPONS, - kValList, MERGE); - kValList.clear(); - kValList.add("network-ref"); - kValList.add("node-ref"); - kValList.add("tp-ref"); - //adding supporting-termination-point - ydtBuilder.addMultiInstanceChild(STP, TOPONS, kValList, MERGE); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // Adding list inside list - ydtBuilder.addChild("supporting-node", null); - // Adding key element network-ref - ydtBuilder.addLeaf("network-ref", null, "network3"); - ydtBuilder.traverseToParent(); - - // Adding key element node-ref - ydtBuilder.addLeaf("node-ref", null, "network4"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("link-id", TOPONS, "id1"); - ydtBuilder.traverseToParent(); - - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // Adding container - ydtBuilder.addChild("networks-state", null); - // Adding list inside container - ydtBuilder.addChild("network", null); - // Adding key element network-ref - ydtBuilder.addLeaf("network-ref", null, "network5"); - ydtBuilder.traverseToParent(); - // Adding leaf server-provided - ydtBuilder.addLeaf("server-provided", null, "true"); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for augmented module. - * - * @return ydt builder - */ - public static YangRequestWorkBench augmentNetworkYdt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder(IETF, IETF, IETFNS, MERGE); - // Adding container - ydtBuilder.addChild("networks", IETFNS, MERGE); - // Adding list inside container - ydtBuilder.addChild("network", IETFNS, MERGE); - - // Adding key element network Id - ydtBuilder.addLeaf("network-id", null, "network1"); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("id1"); - // adding the augmented node - ydtBuilder.addMultiInstanceChild("link", TOPONS, kValList, MERGE); - // container source - ydtBuilder.addChild("source", TOPONS, MERGE); - ydtBuilder.addLeaf("source-node", null, "source1"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("source-tp", null, "source2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // container destination - ydtBuilder.addChild("destination", TOPONS, MERGE); - ydtBuilder.addLeaf("dest-node", null, "dest1"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("dest-tp", null, "dest2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("network1"); - kValList.add("id2"); - // adding the supporting-link list node - ydtBuilder.addMultiInstanceChild(SLINK, TOPONS, kValList, MERGE); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("network2"); - kValList.add("id3"); - // adding the supporting-link list another instance - ydtBuilder.addMultiInstanceChild(SLINK, TOPONS, kValList, MERGE); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("1"); - ydtBuilder.addMultiInstanceChild("augment1", A1, kValList, MERGE); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("1"); - kValList.add("2"); - ydtBuilder.addMultiInstanceChild("augment2", A2, kValList, MERGE); - - ydtBuilder.addChild("augment5", A5, DELETE); - - ydtBuilder.addMultiInstanceChild(A6L, A6, kValList, DELETE); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("value5", null, "5"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addMultiInstanceChild(A5L, A5, kValList, DELETE); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("augment3", A3, MERGE); - - ydtBuilder.addChild("augment4", A4, DELETE); - ydtBuilder.addLeaf("value4", null, "4"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("augment5", A5, MERGE); - - ydtBuilder.addLeaf("leaf6", A6, "6"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("value5", null, "5"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("augment6", A6, DELETE); - ydtBuilder.addLeaf("value6", null, "6"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("value3", null, "3"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("augment3leaf", A3, "3"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addMultiInstanceChild(A2L, A2, kValList, MERGE); - ydtBuilder.traverseToParent(); - - ydtBuilder.traverseToParent(); - - // Adding list inside list - ydtBuilder.addChild("supporting-network", null); - // Adding key element network-ref - ydtBuilder.addLeaf("network-ref", null, "network2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // Adding list inside list - ydtBuilder.addChild("node", null); - // Adding key element node-id - ydtBuilder.addLeaf("node-id", null, "node1"); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("tp_id1"); - //adding augmented termination-point list - ydtBuilder.addMultiInstanceChild("t-point", TOPONS, - kValList, MERGE); - kValList.clear(); - kValList.add("network-ref"); - kValList.add("node-ref"); - kValList.add("tp-ref"); - //adding supporting-termination-point - ydtBuilder.addMultiInstanceChild(STP, TOPONS, kValList, MERGE); - - // Adding augmented container1 inside supporting-termination-point - augmentTerminationPointYdt(ydtBuilder); - - return ydtBuilder; - } - - /** - * Adds augments inside supporting-termination-point in augmented module. - * - * @param ydtBuilder ydt builder which need to be updated - */ - private static void augmentTerminationPointYdt(YangRequestWorkBench ydtBuilder) { - - ydtBuilder.addChild("augment1", A1); - ydtBuilder.addLeaf("value1", null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("augment1-leaf", A1, "1"); - - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("augment2", A2, MERGE); - - ydtBuilder.addChild("augment3", A3, MERGE); - ydtBuilder.addLeaf("value3", null, "3"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("augment4leaf", A4, "4"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("value2", null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("1"); - kValList.add("2"); - ydtBuilder.addMultiInstanceChild(A2L, A2, kValList, MERGE); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("augment2leaf", A2, "2"); - ydtBuilder.traverseToParent(); - - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // Adding list inside list - ydtBuilder.addChild("supporting-node", null); - // Adding key element network-ref - ydtBuilder.addLeaf("network-ref", null, "network3"); - ydtBuilder.traverseToParent(); - - // Adding key element node-ref - ydtBuilder.addLeaf("node-ref", null, "network4"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("link-id", TOPONS, "id1"); - ydtBuilder.traverseToParent(); - - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - // Adding container - ydtBuilder.addChild("networks-state", null); - // Adding list inside container - ydtBuilder.addChild("network", null); - // Adding key element network-ref - ydtBuilder.addLeaf("network-ref", null, "network5"); - ydtBuilder.traverseToParent(); - // Adding leaf server-provided - ydtBuilder.addLeaf("server-provided", null, "true"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - augmentNetworkYdt(ydtBuilder); - } - - /** - * Adds augmented module augment-network under logical node ietf-network. - * - * @param ydtBuilder ydt builder which need to be updated - */ - private static void augmentNetworkYdt(YangRequestWorkBench ydtBuilder) { - ydtBuilder.addChild("augmentNetwork", NETNS); - - //adding list with name node under module node - ydtBuilder.addChild("node", null); - - //adding key leaf for node - ydtBuilder.addLeaf("name", null, "node1"); - ydtBuilder.traverseToParent(); - - // adding augmented container cont1s under list - ydtBuilder.addChild("cont1s", null); - // adding container cont1s under cont1s - ydtBuilder.addChild("cont1s", null); - //adding leaf under cont1s - ydtBuilder.addLeaf("fine", null, "leaf"); - - //adding augmented list node bu augment-topology1 under container - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("augment1", A1, DELETE); - //adding key leaf for list node augment1 - ydtBuilder.addLeaf("value1", null, "1"); - } - - /** - * Returns the ydt builder for rootlist module with listwithcontainer node - * using addMultiInstanceChild interface for adding multi instance node. - * - * @return ydt builder - */ - public static YangRequestWorkBench listWithContainerYdt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder("list", "rootlist", "ydt.rootlist", MERGE); - kValList.clear(); - kValList.add("12"); - kValList.add("12"); - ydtBuilder.addMultiInstanceChild(LWC, null, kValList, MERGE); - ydtBuilder.addLeaf(INV, null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(INV, null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("interface", null); - ydtBuilder.addLeaf(INV, null, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("invalid", null, "121"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - return ydtBuilder; - } - - /** - * Returns the ydt builder for rootlist module with listwithcontainer - * node using addChild interface for adding multi instance node. - * - * @return ydt builder - */ - public static YangRequestWorkBench listWithContainer1Ydt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder("list", "rootlist", "ydt.rootlist", MERGE); - ydtBuilder.addChild(LWC, null); - ydtBuilder.addLeaf("invalid", null, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("invalid1", null, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(INV, null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(INV, null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("interface", null); - ydtBuilder.addLeaf(INV, null, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("invalid", null, "121"); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for rootlist module with multiple instances of - * listwithcontainer node using addMultiInstanceChild interface for adding - * multi instance node. - * - * @return ydt builder - */ - public static YangRequestWorkBench listWithContainer2Ydt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder("list", "rootlist", "ydt.rootlist", MERGE); - kValList.clear(); - kValList.add("1222"); - kValList.add("1212"); - ydtBuilder.addMultiInstanceChild(LWC, null, kValList, MERGE); - - kValList.clear(); - kValList.add("12"); - kValList.add("1"); - ydtBuilder.addMultiInstanceChild(INV, null, kValList, MERGE); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(INV, null, "122"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(INV, null, "2222"); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("1222"); - kValList.add("1212"); - ydtBuilder.addMultiInstanceChild(INV, null, kValList, MERGE); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("interface", null); - ydtBuilder.addLeaf(INV, null, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for rootlist module with listwithoutcontainer - * node. - * - * @return ydt builder - */ - public static YangRequestWorkBench listWithoutContainerYdt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder("list", "rootlist", "ydt.rootlist", MERGE); - ydtBuilder.addChild("listwithoutcontainer", null); - ydtBuilder.addLeaf(INV, null, "12"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - return ydtBuilder; - } - - /** - * Returns the ydt builder for logisticsmanager module. - * - * @return ydt builder - */ - public static YangRequestWorkBench logisticsManagerYdt() { - - Set valueSet = new HashSet(); - valueSet.add("1"); - valueSet.add("2"); - valueSet.add("3"); - valueSet.add("4"); - valueSet.add("5"); - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder("logisticsmanager", "customssupervisor", - null, MERGE); - ydtBuilder.addLeaf("supervisor", COUSTOMNS, "abc"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("merchandisersupervisor", MERCHNS, MERGE); - ydtBuilder.addLeaf("supervisor", MERCHNS, "abc"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("materialsupervisor", MATERIALNS, MERGE); - ydtBuilder.addChild("supervisor", MATERIALNS); - ydtBuilder.addLeaf("name", MATERIALNS, "abc"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("departmentId", MATERIALNS, "xyz"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("supervisor", MATERIALNS); - ydtBuilder.addLeaf("name", MATERIALNS, "ab"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("departmentId", MATERIALNS, "xy"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("purchasingsupervisor", PURCHASNS, MERGE); - ydtBuilder.addChild("supervisor", PURCHASNS); - ydtBuilder.addLeaf("purchasing-specialist", PURCHASNS, "abc"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("support", "ydt.purchasing-supervisor", "xyz"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("warehousesupervisor", WAREHNS, MERGE); - ydtBuilder.addLeaf("supervisor", WAREHNS, valueSet); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("tradingsupervisor", TRADNS, MERGE); - ydtBuilder.addLeaf("supervisor", TRADNS, "abc"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("employeeid", EMPNS, MERGE); - ydtBuilder.addLeaf("employeeid", EMPNS, valueSet); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - return ydtBuilder; - } - - /** - * Returns the ydt builder for bit module. - * - * @return ydt builder - */ - public static YangRequestWorkBench bitYdt() { - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder("builtInType", "bit", "ydt.bit", MERGE); - ydtBuilder.addChild("bitList", null); - ydtBuilder.addLeaf("bit", null, "disable-nagle"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("bitList", null); - ydtBuilder.addLeaf("bit", null, "auto-sense-speed"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("bitList", null); - ydtBuilder.addLeaf("bit", null, "ten-Mb-only"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("bitList", null); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - return ydtBuilder; - } - - /** - * Returns the ydt builder for bool module. - * - * @return ydt builder - */ - public static YangRequestWorkBench booleanYdt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder("builtInType", "bool", "ydt.boolean", MERGE); - ydtBuilder.addChild("booleanList", null); - ydtBuilder.addLeaf("boolean", null, "true"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("booleanList", null); - ydtBuilder.addLeaf("boolean", null, "false"); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for emptydata module. - * - * @return ydt builder - */ - public static YangRequestWorkBench emptyTypeYdt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder( - "builtInType", "emptydata", "ydt.emptydata", MERGE); - ydtBuilder.addChild("emptyList", null); - ydtBuilder.addLeaf("empty", null, ""); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for enumtest module. - * - * @return ydt builder - */ - public static YangRequestWorkBench enumYdt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder( - "builtInType", "enumtest", "ydt.enumtest", MERGE); - ydtBuilder.addChild("enumList", null); - ydtBuilder.addLeaf("enumleaf", null, "ten"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("enumList", null); - ydtBuilder.addLeaf("enumleaf", null, "hundred"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("enumList", null); - ydtBuilder.addLeaf("enumleaf", null, "thousand"); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for augmentSequence module. - * - * @return ydt builder - */ - public static YangRequestWorkBench augmentSequenceYdt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder( - "augment", "augmentSequence", "ydt.augmentSequence", MERGE); - ydtBuilder.addChild("l1", null); - ydtBuilder.addLeaf("leaf1", null, "1"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("c1", "ydt.augmentSequence1"); - ydtBuilder.addLeaf("leaf2", null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild("c2", "ydt.augmentSequence2"); - ydtBuilder.addLeaf("leaf2", null, "3"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for crypto-base module. - * - * @return ydt builder - */ - public static YangRequestWorkBench identityRefYdt() { - - Set valueSet = new HashSet(); - valueSet.add("crypto-alg"); - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder( - "identityref", "crypto-base", "ydt.crypto-base", MERGE); - ydtBuilder.addLeaf("crypto", null, "crypto-alg"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("abc-zeunion", null, "crypto-alg"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("level2", null, "crypto-alg2"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("level3", null, "crypto-alg3"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("level4", null, "crypto-alg3"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("abc-type", null, valueSet); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for builtin type integer8 module. - * - * @return ydt builder - */ - public static YangRequestWorkBench integer8Ydt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder( - "builtInType", "integer8", "ydt.integer8", MERGE); - ydtBuilder.addLeaf("negInt", null, "-128"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("posInt", null, "127"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("minUInt", null, "0"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxUInt", null, "255"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("midIntWithRange", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("minIntWithRange", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxIntWithRange", null, "100"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("midUIntWithRange", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("minUIntWithRange", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxUIntWithRange", null, "100"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "40"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "50"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "55"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("UnInteger", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "40"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "50"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "55"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revInteger", null, "-128"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "20"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "127"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "0"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "20"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "255"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for builtin type integer16 module. - * - * @return ydt builder - */ - public static YangRequestWorkBench integer16Ydt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder( - "builtInType", "integer16", "ydt.integer16", MERGE); - ydtBuilder.addLeaf("negInt", null, "-32768"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("posInt", null, "32767"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("minUInt", null, "0"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxUInt", null, "65535"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("midIntWithRange", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("minIntWithRange", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxIntWithRange", null, "100"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("midUIntWithRange", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("minUIntWithRange", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxUIntWithRange", null, "100"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "40"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "50"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "55"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("UnInteger", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "40"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "50"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "55"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revInteger", null, "-32768"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "20"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "32767"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "0"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "20"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "65535"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for builtin type integer32 module. - * - * @return ydt builder - */ - public static YangRequestWorkBench integer32Ydt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder( - "builtInType", "integer32", "ydt.integer32", MERGE); - ydtBuilder.addLeaf("negInt", null, "-2147483648"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("posInt", null, "2147483647"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("minUInt", null, "0"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxUInt", null, "4294967295"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("midIntWithRange", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("minIntWithRange", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxIntWithRange", null, "100"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("midUIntWithRange", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("minUIntWithRange", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxUIntWithRange", null, "100"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "40"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "50"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "55"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("UnInteger", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "40"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "50"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "55"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revInteger", null, "-2147483648"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "20"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "2147483647"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "0"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "20"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "4294967295"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for builtin type integer64 module. - * - * @return ydt builder - */ - public static YangRequestWorkBench integer64Ydt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder( - "builtInType", "integer64", "ydt.integer64", MERGE); - ydtBuilder.addLeaf("negInt", null, "-9223372036854775808"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("posInt", null, "9223372036854775807"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("minUInt", null, "0"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxUInt", null, "18446744073709551615"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("midIntWithRange", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("minIntWithRange", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxIntWithRange", null, "100"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addLeaf("midUIntWithRange", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("minUIntWithRange", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxUIntWithRange", null, "100"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "40"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "50"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "55"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("integer", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("UnInteger", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "40"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "50"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "55"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("UnInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revInteger", null, "-9223372036854775808"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "20"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revInteger", null, "9223372036854775807"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "0"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "1"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "2"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "20"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null, YdtType.MULTI_INSTANCE_NODE); - ydtBuilder.addLeaf("revUnInteger", null, "18446744073709551615"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder for builtin type decimal64 module. - * - * @return ydt builder - */ - public static YangRequestWorkBench decimal64Ydt() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder( - "builtInType", "decimal64", "ydt.decimal64", MERGE); - ydtBuilder.addLeaf("negInt", null, "-92233720368547758.08"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("posInt", null, "92233720368547758.07"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(NIWMF, null, "-922337203685477580.8"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(PIWMF, null, "922337203685477580.7"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(NWF, null, "-9.223372036854775808"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(PWF, null, "9.223372036854775807"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("midIntWithRange", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("minIntWithRange", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("maxIntWithRange", null, "100"); - ydtBuilder.traverseToParent(); - - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("decimal", null, "11"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("decimal", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("decimal", null, "40"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("decimal", null, "50"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("decimal", null, "55"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("decimal", null, "100"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revDecimal", null, "-92233720368547758.08"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revDecimal", null, "2.505"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revDecimal", null, "3.14"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revDecimal", null, "10"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revDecimal", null, "20"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revDecimal", null, "92233720368547757"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild(MRV, null); - ydtBuilder.addLeaf("revDecimal", null, "92233720368547758.07"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the ydt builder with requested logical root name and module name. - * - * @param rootName logical rootNode name - * @param moduleName application(module) name - * @param nameSpace namespace of module - * @param opType operation type - * @return ydt builder - */ - public static YangRequestWorkBench getYdtBuilder(String rootName, String - moduleName, String nameSpace, YdtContextOperationType opType) { - setSchemaRegistry(schemaProvider.getDefaultYangSchemaRegistry()); - YangRequestWorkBench ydtBuilder; - schemaProvider.processSchemaRegistry(null); - ydtBuilder = new YangRequestWorkBench( - rootName, null, null, schemaProvider - .getDefaultYangSchemaRegistry(), true); - ydtBuilder.addChild(moduleName, nameSpace, opType); - return ydtBuilder; - } - - /** - * Compares the two value sets. - */ - public static void compareValueSet(Set valueSet, - Set userInputValueSet) { - // Check the value against user input. - assertTrue("Expected 'valueSet' and 'userInputValueSet' to be equal.", - valueSet.containsAll(userInputValueSet)); - } - - /** - * Returns the ydt builder for Hello_ONOS module. - * - * @return ydt builder - */ - public static YangRequestWorkBench helloOnos() { - - YangRequestWorkBench ydtBuilder; - ydtBuilder = getYdtBuilder( - "Hello-ONOS", "Hello_ONOS", "ydt:hello_onos", MERGE); - ydtBuilder.addChild("hello-world", null); - ydtBuilder.addChild("input", null); - ydtBuilder.addLeaf("name", null, "onos"); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf("surName", null, "yang"); - ydtBuilder.traverseToParent(); - - kValList.clear(); - kValList.add("ON"); - kValList.add("LAB"); - ydtBuilder.addMultiInstanceChild("stringList", null, kValList, - MERGE); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - - return ydtBuilder; - } - - /** - * Returns the error message for requested node. - * - * @param value value in string format - * @param dataType requested data type - * @return error string - */ - static String getErrorString(String value, String dataType) { - StringBuilder msg = new StringBuilder(); - switch (dataType) { - case SINT16: - case SINT32: - case SMALLINT8: - case SMALLINT64: - case SMALLUINT8: - case SMALLUINT64: - case SUINT16: - case SUINT32: - case CAPSINT8: - case CAPSINT16: - case CAPSINT32: - case CAPSINT64: - case CAPSUINT8: - case CAPSUINT16: - case CAPSUINT32: - case CAPSUINT64: - case BIT: - case BOOL: - case ENUM: - msg.append("YANG file error : Input value ").append(BACKSLASH) - .append(value).append(BACKSLASH) - .append(" is not a valid ").append(dataType); - break; - case EMPTY: - msg.append("YANG file error : Input value ").append(BACKSLASH) - .append(value).append(BACKSLASH).append( - " is not allowed for a data type EMPTY"); - break; - case MINVALUE: - msg.append("YANG file error : ").append(value) - .append(" is lesser than minimum value ") - .append(MINVALUE).append(PERIOD); - break; - case MAXUINT8: - case MAXUINT16: - case MAXUINT32: - case MAXUINT64: - msg.append("YANG file error : ").append(value) - .append(" is greater than maximum value ") - .append(dataType).append(PERIOD); - break; - default: - return null; - } - return msg.toString(); - } - - /** - * Validates the error message which is obtained by checking the given - * value against its data type restrictions. - * - * @param name leaf name - * @param nameSpace leaf namespace - * @param val leaf value - * @param type data type suffix string for exception message - * @param childName child name - */ - public static void validateErrMsg(String name, String nameSpace, - String val, String type, String childName) { - YangRequestWorkBench ydtBuilder = getTestYdtBuilder(nameSpace); - boolean isExpOccurred = false; - /* - * If childName exist then leaf need to be added under the - * child node with the given childName - */ - if (childName != null) { - ydtBuilder.addChild(childName, nameSpace); - } - /* - * This try catch is explicitly written to use as utility in other - * test cases. - */ - try { - ydtBuilder.addLeaf(name, nameSpace, val); - } catch (IllegalArgumentException e) { - isExpOccurred = true; - assertEquals(e.getMessage(), getErrorString(val, type)); - } - assertEquals(E_LEAF + name, isExpOccurred, true); - } - - /** - * Returns ydt builder for requested namespace. - * - * @param namespace namespace of the requested yang data tree - * @return ydt builder - */ - public static YangRequestWorkBench getTestYdtBuilder(String namespace) { - - switch (namespace) { - case INT8NS: - return getYdtBuilder(TYPE, "integer8", INT8NS, MERGE); - case INT16NS: - return getYdtBuilder(TYPE, "integer16", INT16NS, MERGE); - case INT32NS: - return getYdtBuilder(TYPE, "integer32", INT32NS, MERGE); - case INT64NS: - return getYdtBuilder(TYPE, "integer64", INT64NS, MERGE); - case BITNS: - return getYdtBuilder(TYPE, "bit", BITNS, MERGE); - case BOOLNS: - return getYdtBuilder(TYPE, "bool", BOOLNS, MERGE); - case EMPTYNS: - return getYdtBuilder(TYPE, "emptydata", EMPTYNS, MERGE); - case ENUMNS: - return getYdtBuilder(TYPE, "enumtest", ENUMNS, MERGE); - case LISTNS: - return getYdtBuilder(LIST, "rootlist", LISTNS, MERGE); - default: - return null; - } - } - - /** - * Validates the contents of node like name, namespace and operation type. - * - * @param ydtNode node need to be validate - * @param name name of the node - * @param opType operation type of the node - */ - public static void validateNodeContents(YdtNode ydtNode, String name, - YdtContextOperationType opType) { - assertEquals(ydtNode.getName(), name); - assertEquals(ydtNode.getYdtContextOperationType(), opType); - } - - /** - * Validates the contents of leaf node like name, namespace and operation - * type. - * - * @param ydtNode node need to be validate - * @param name name of the node - * @param value value of the leaf node - */ - public static void validateLeafContents(YdtNode ydtNode, String name, - String value) { - validateNodeContents(ydtNode, name, null); - assertEquals(ydtNode.getValue(), value); - } - - /** - * Validates the contents of leaf-list node like name, namespace and - * operation type. - * - * @param ydtNode node need to be validate - * @param name name of the node - * @param valueSet value of the leaf node - */ - public static void validateLeafListContents(YdtNode ydtNode, String name, - Set valueSet) { - validateNodeContents(ydtNode, name, null); - compareValueSet(ydtNode.getValueSet(), valueSet); - } - - /** - * Validates the contents of ydt application logical node. - * - * @param ydtAppNode node need to be validate - */ - public static void validateAppLogicalNodeContents( - YdtAppContext ydtAppNode) { - - assertNull(ydtAppNode.getOperationType()); - assertNull(ydtAppNode.getParent()); - assertNull(ydtAppNode.getNextSibling()); - assertNull(ydtAppNode.getPreviousSibling()); - assertNotNull(ydtAppNode.getFirstChild()); - assertNotNull(ydtAppNode.getLastChild()); - } - - /** - * Validates the contents of ydt application module node. - * - * @param ydtAppNode node need to be validate - * @param name name of the node - * @param opType operation type of the app node - */ - public static void validateAppModuleNodeContents( - YdtAppContext ydtAppNode, String name, - YdtAppNodeOperationType opType) { - - assertEquals(ydtAppNode.getModuleContext().getName(), name); - assertEquals(ydtAppNode.getOperationType(), opType); - } - - /** - * Validates the contents of ydt application node like name, namespace - * and operation type. - * - * @param ydtAppNode node need to be validate - * @param name name of the schema node - * @param ns namespace of the schema node - * @param opType operation type of the app node - */ - public static void validateAppNodeContents( - YdtAppContext ydtAppNode, String name, String ns, - YdtAppNodeOperationType opType) { - assertEquals(ydtAppNode.getAugmentingSchemaNode().getName(), name); - assertEquals(ydtAppNode.getAugmentingSchemaNode().getNameSpace() - .getModuleNamespace(), ns); - assertEquals(ydtAppNode.getOperationType(), opType); - } - - /** - * Walks in the given built ydt and validates it. - */ - public static void walkINTree(YangRequestWorkBench ydtBuilder, - String[] expected) { - DefaultYdtWalker ydtWalker = new DefaultYdtWalker(); - resetLogger(); - - YdtTestUtils utils = new YdtTestUtils(); - // Assign root node as starting node to walk the whole tree. - ydtWalker.walk(utils, ydtBuilder.getRootNode()); - // Logger list is used for walker testing. - List logger = getLogger(); - - for (int i = 0; i < expected.length; i++) { - assertEquals(expected[i], logger.get(i)); - } - } - - /** - * Creates Ydt from YO using YTB. - */ - static YangRequestWorkBench validateYangObject( - YangRequestWorkBench ydtBuilder, String name, String namespace) { - - YdtContext rootCtx = ydtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - - List list = new LinkedList<>(); - list.add(yangObject); - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YangRequestWorkBench defaultYdtBuilder = - (YangRequestWorkBench) treeBuilder.getYdtBuilderForYo( - list, name, namespace, EDIT_CONFIG_REPLY, YdtTestUtils - .getSchemaRegistry()); - return defaultYdtBuilder; - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockCoreService.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockCoreService.java deleted file mode 100644 index 2b8d7e6072..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockCoreService.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ymsm; - -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.core.IdGenerator; -import org.onosproject.core.Version; - -import java.util.Set; -import java.util.concurrent.atomic.AtomicLong; - -/** - * Represents implementation of CoreService interfaces. - */ -public class MockCoreService implements CoreService { - @Override - public Version version() { - return null; - } - - @Override - public Set getAppIds() { - return null; - } - - @Override - public ApplicationId getAppId(Short id) { - return null; - } - - @Override - public ApplicationId getAppId(String name) { - return null; - } - - @Override - public ApplicationId registerApplication(String name) { - return null; - } - - @Override - public ApplicationId registerApplication(String name, - Runnable preDeactivate) { - return null; - } - - @Override - public IdGenerator getIdGenerator(String topic) { - return new IdGenerator() { - private AtomicLong counter = new AtomicLong(0); - - @Override - public long getNewId() { - return counter.getAndIncrement(); - } - }; - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockOverriddenDataTreeCodec.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockOverriddenDataTreeCodec.java deleted file mode 100644 index 3585ee1639..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockOverriddenDataTreeCodec.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ymsm; - -import org.onosproject.yms.app.ych.YchException; -import org.onosproject.yms.ych.YangCompositeEncoding; -import org.onosproject.yms.ych.YangDataTreeCodec; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YmsOperationType; - -/** - * Represents implementation of overridden YANG data tree codec interfaces. - */ -public class MockOverriddenDataTreeCodec implements YangDataTreeCodec { - private static final String PREFIX = "OverriddenDataTreeCodec "; - private static final String ENCODE = PREFIX + - "encodeYdtToProtocolFormat Called."; - private static final String COMPOSITE_ENCODE = PREFIX + - "encodeYdtToCompositeProtocolFormat Called."; - private static final String DECODE = PREFIX + - "decodeProtocolDataToYdt Called."; - private static final String COMPOSITE_DECODE = PREFIX + - "decodeCompositeProtocolDataToYdt Called."; - - @Override - public String encodeYdtToProtocolFormat(YdtBuilder ydtBuilder) { - - throw new YchException(ENCODE); - } - - @Override - public YangCompositeEncoding encodeYdtToCompositeProtocolFormat( - YdtBuilder ydtBuilder) { - - throw new YchException(COMPOSITE_ENCODE); - } - - @Override - public YdtBuilder decodeProtocolDataToYdt(String protocolData, - Object schemaRegistryForYdt, - YmsOperationType proOper) { - - throw new YchException(DECODE); - } - - @Override - public YdtBuilder decodeCompositeProtocolDataToYdt( - YangCompositeEncoding protocolData, - Object schemaRegistryForYdt, - YmsOperationType proOper) { - - throw new YchException(COMPOSITE_DECODE); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockRegisteredDataTreeCodec.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockRegisteredDataTreeCodec.java deleted file mode 100644 index c3fa150d8a..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockRegisteredDataTreeCodec.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.yms.app.ymsm; - -import org.onosproject.yms.app.ych.YchException; -import org.onosproject.yms.ych.YangCompositeEncoding; -import org.onosproject.yms.ych.YangDataTreeCodec; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YmsOperationType; - -/** - * Represents implementation of YANG SBI broker interfaces. - */ -public class MockRegisteredDataTreeCodec implements YangDataTreeCodec { - private static final String PREFIX = "RegisteredDataTreeCodec "; - private static final String ENCODE = PREFIX + - "encodeYdtToProtocolFormat Called."; - private static final String COMPOSITE_ENCODE = PREFIX + - "encodeYdtToCompositeProtocolFormat Called."; - private static final String DECODE = PREFIX + - "decodeProtocolDataToYdt Called."; - private static final String COMPOSITE_DECODE = PREFIX + - "decodeCompositeProtocolDataToYdt Called."; - - @Override - public String encodeYdtToProtocolFormat(YdtBuilder ydtBuilder) { - throw new YchException(ENCODE); - } - - @Override - public YangCompositeEncoding encodeYdtToCompositeProtocolFormat( - YdtBuilder ydtBuilder) { - - throw new YchException(COMPOSITE_ENCODE); - } - - @Override - public YdtBuilder decodeProtocolDataToYdt(String protocolData, - Object schemaRegistry, - YmsOperationType proOper) { - - throw new YchException(DECODE); - } - - @Override - public YdtBuilder decodeCompositeProtocolDataToYdt( - YangCompositeEncoding protocolData, - Object schemaRegistry, - YmsOperationType proOper) { - - throw new YchException(COMPOSITE_DECODE); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockYangCompositeEncoding.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockYangCompositeEncoding.java deleted file mode 100644 index af4dc7cbd8..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/MockYangCompositeEncoding.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ymsm; - -import org.onosproject.yms.ych.YangCompositeEncoding; -import org.onosproject.yms.ych.YangResourceIdentifierType; - -/** - * Represents implementation of YangCompositeEncoding interfaces. - */ -public class MockYangCompositeEncoding implements YangCompositeEncoding { - /** - * Resource identifier for composite encoding. - */ - private String resourceIdentifier; - - /** - * Resource information for composite encoding. - */ - private String resourceInformation; - - /** - * Resource identifier type. - */ - private YangResourceIdentifierType resourceIdentifierType; - - /** - * Sets resource identifier. - * - * @param resIdentifier resource identifier - */ - public void setResourceIdentifier(String resIdentifier) { - resourceIdentifier = resIdentifier; - } - - /** - * Sets the resource information. - * - * @param resInformation resource information - */ - public void setResourceInformation(String resInformation) { - resourceInformation = resInformation; - } - - /** - * Sets the resource identifier type. - * - * @param resIdent resource identifier - */ - public void setResourceIdentifierType(YangResourceIdentifierType resIdent) { - resourceIdentifierType = resIdent; - } - - @Override - public String getResourceIdentifier() { - return resourceIdentifier; - } - - @Override - public YangResourceIdentifierType getResourceIdentifierType() { - return resourceIdentifierType; - } - - @Override - public String getResourceInformation() { - return resourceInformation; - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/YchCompositeHandlerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/YchCompositeHandlerTest.java deleted file mode 100644 index 50f178ca4a..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ymsm/YchCompositeHandlerTest.java +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ymsm; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.onosproject.yang.gen.v1.ydt.customs.supervisor.rev20160524.CustomssupervisorOpParam; -import org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry; -import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider; -import org.onosproject.yms.ych.YangCodecHandler; -import org.onosproject.yms.ych.YangCompositeEncoding; -import org.onosproject.yms.ych.YangDataTreeCodec; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static junit.framework.TestCase.assertNotNull; -import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML; - -/** - * Unit test case for YCH composite codec handler. - */ -public class YchCompositeHandlerTest { - @Rule - public ExpectedException thrown = ExpectedException.none(); - - private static final String REG_PREFIX = "RegisteredDataTreeCodec "; - private static final String REG_ENCODE = REG_PREFIX + - "encodeYdtToProtocolFormat Called."; - private static final String REG_DECODE = REG_PREFIX + - "decodeProtocolDataToYdt Called."; - private static final String REG_COMPO_ENCODE = REG_PREFIX + - "encodeYdtToCompositeProtocolFormat Called."; - private static final String REG_COMPO_DECODE = REG_PREFIX + - "decodeCompositeProtocolDataToYdt Called."; - private static final String OVERRIDE_PREFIX = "OverriddenDataTreeCodec "; - private static final String OVERRIDE_ENCODE = OVERRIDE_PREFIX + - "encodeYdtToProtocolFormat Called."; - private static final String OVERRIDE_DECODE = OVERRIDE_PREFIX + - "decodeProtocolDataToYdt Called."; - private static final String OVERRIDE_COMPO_ENCODE = OVERRIDE_PREFIX + - "encodeYdtToCompositeProtocolFormat Called."; - private static final String OVERRIDE_COMPO_DECODE = OVERRIDE_PREFIX + - "decodeCompositeProtocolDataToYdt Called."; - - private TestYangSchemaNodeProvider provider = - new TestYangSchemaNodeProvider(); - - /** - * Unit test case in which verifying codec handler is null or not. - */ - @Test - public void checkForCodecHandler() { - YmsManager ymsManager = new YmsManager(); - ymsManager.coreService = new MockCoreService(); - ymsManager.activate(); - YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler(); - assertNotNull("Codec handler is null", yangCodecHandler); - } - - /** - * Unit test case in which verifying registered codec handler for encode is - * null or not. - */ - @Test - public void checkForRegisterDefaultCodecEncode() { - thrown.expectMessage(REG_ENCODE); - YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec(); - YmsManager ymsManager = new YmsManager(); - YangCodecRegistry.initializeDefaultCodec(); - ymsManager.coreService = new MockCoreService(); - ymsManager.activate(); - ymsManager.registerDefaultCodec(yangDataTreeCodec, XML); - YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler(); - assertNotNull("Codec handler is null", yangCodecHandler); - - provider.processSchemaRegistry(null); - List yangModuleList = new ArrayList<>(); - - // Creating the object - Object object = CustomssupervisorOpParam.builder() - .supervisor("Customssupervisor").build(); - yangModuleList.add(object); - - // Get the xml string and compare - Map tagAttr = new HashMap(); - tagAttr.put("type", "subtree"); - - yangCodecHandler.encodeOperation("filter", "ydt.filter-type", - tagAttr, yangModuleList, - XML, null); - } - - /** - * Unit test case in which verifying registered codec handler for decode is - * null or not. - */ - @Test - public void checkForRegisterDefaultCodecDecode() { - thrown.expectMessage(REG_DECODE); - YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec(); - YmsManager ymsManager = new YmsManager(); - YangCodecRegistry.initializeDefaultCodec(); - ymsManager.coreService = new MockCoreService(); - ymsManager.activate(); - ymsManager.registerDefaultCodec(yangDataTreeCodec, XML); - YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler(); - assertNotNull("Codec handler is null", yangCodecHandler); - - provider.processSchemaRegistry(null); - yangCodecHandler.decode("XML String", XML, null); - } - - /** - * Unit test case in which verifying registered codec handler for - * composite encode is null or not. - */ - @Test - public void checkForRegisterDefaultCodecCompEncode() { - thrown.expectMessage(REG_COMPO_ENCODE); - YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec(); - YmsManager ymsManager = new YmsManager(); - YangCodecRegistry.initializeDefaultCodec(); - ymsManager.coreService = new MockCoreService(); - ymsManager.activate(); - ymsManager.registerDefaultCodec(yangDataTreeCodec, XML); - YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler(); - assertNotNull("Codec handler is null", yangCodecHandler); - - provider.processSchemaRegistry(null); - // Creating the object - Object object = CustomssupervisorOpParam.builder() - .supervisor("Customssupervisor").build(); - - yangCodecHandler.encodeCompositeOperation("filter", - "ydt.filter-type", object, - XML, null); - } - - /** - * Unit test case in which verifying registered codec handler for - * composite decode is null or not. - */ - @Test - public void checkForRegisterDefaultCodecCompDecode() { - thrown.expectMessage(REG_COMPO_DECODE); - YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec(); - YmsManager ymsManager = new YmsManager(); - YangCodecRegistry.initializeDefaultCodec(); - ymsManager.coreService = new MockCoreService(); - ymsManager.activate(); - ymsManager.registerDefaultCodec(yangDataTreeCodec, XML); - YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler(); - assertNotNull("Codec handler is null", yangCodecHandler); - - provider.processSchemaRegistry(null); - // Creating the object - YangCompositeEncoding yangCompositeEncoding = - new MockYangCompositeEncoding(); - yangCodecHandler.decode(yangCompositeEncoding, XML, null); - } - - /** - * Unit test case in which verifying overridden codec handler for encode is - * null or not. - */ - @Test - public void checkForOverriddenDataTreeCodecEncode() { - thrown.expectMessage(OVERRIDE_ENCODE); - YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec(); - YmsManager ymsManager = new YmsManager(); - ymsManager.coreService = new MockCoreService(); - ymsManager.activate(); - ymsManager.registerDefaultCodec(yangDataTreeCodec, XML); - YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler(); - assertNotNull("Codec handler is null", yangCodecHandler); - - YangDataTreeCodec overriddenCodec = new MockOverriddenDataTreeCodec(); - yangCodecHandler.registerOverriddenCodec(overriddenCodec, XML); - - provider.processSchemaRegistry(null); - List yangModuleList = new ArrayList<>(); - - // Creating the object - Object object = CustomssupervisorOpParam.builder() - .supervisor("Customssupervisor").build(); - yangModuleList.add(object); - - // Get the xml string and compare - Map tagAttr = new HashMap(); - tagAttr.put("type", "subtree"); - yangCodecHandler.encodeOperation("filter", "ydt.filter-type", - tagAttr, yangModuleList, - XML, null); - } - - /** - * Unit test case in which verifying overridden codec handler for decode is - * null or not. - */ - @Test - public void checkForOverriddenDataTreeCodecDecode() { - thrown.expectMessage(OVERRIDE_DECODE); - YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec(); - YmsManager ymsManager = new YmsManager(); - ymsManager.coreService = new MockCoreService(); - ymsManager.activate(); - ymsManager.registerDefaultCodec(yangDataTreeCodec, XML); - YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler(); - assertNotNull("Codec handler is null", yangCodecHandler); - - YangDataTreeCodec overriddenCodec = new MockOverriddenDataTreeCodec(); - yangCodecHandler.registerOverriddenCodec(overriddenCodec, XML); - - provider.processSchemaRegistry(null); - yangCodecHandler.decode("XML String", XML, null); - } - - /** - * Unit test case in which verifying overridden codec handler for - * composite encode is null or not. - */ - @Test - public void checkForOverriddenDataTreeCodecCompoEncode() { - thrown.expectMessage(OVERRIDE_COMPO_ENCODE); - YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec(); - YmsManager ymsManager = new YmsManager(); - ymsManager.coreService = new MockCoreService(); - ymsManager.activate(); - ymsManager.registerDefaultCodec(yangDataTreeCodec, XML); - YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler(); - assertNotNull("Codec handler is null", yangCodecHandler); - - YangDataTreeCodec overriddenCodec = new MockOverriddenDataTreeCodec(); - yangCodecHandler.registerOverriddenCodec(overriddenCodec, XML); - - provider.processSchemaRegistry(null); - // Creating the object - Object object = CustomssupervisorOpParam.builder() - .supervisor("Customssupervisor").build(); - yangCodecHandler.encodeCompositeOperation("filter", - "ydt.filter-type", - object, - XML, null); - } - - /** - * Unit test case in which verifying overridden codec handler for - * composite decode is null or not. - */ - @Test - public void checkForOverriddenDataTreeCodecCompoDecode() { - thrown.expectMessage(OVERRIDE_COMPO_DECODE); - YangDataTreeCodec yangDataTreeCodec = new MockRegisteredDataTreeCodec(); - YmsManager ymsManager = new YmsManager(); - ymsManager.coreService = new MockCoreService(); - ymsManager.activate(); - ymsManager.registerDefaultCodec(yangDataTreeCodec, XML); - YangCodecHandler yangCodecHandler = ymsManager.getYangCodecHandler(); - assertNotNull("Codec handler is null", yangCodecHandler); - - YangDataTreeCodec overriddenCodec = new MockOverriddenDataTreeCodec(); - yangCodecHandler.registerOverriddenCodec(overriddenCodec, XML); - - provider.processSchemaRegistry(null); - // Verify the received object list - YangCompositeEncoding yangCompositeEncoding = - new MockYangCompositeEncoding(); - yangCodecHandler.decode(yangCompositeEncoding, XML, null); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobAugmentTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobAugmentTest.java deleted file mode 100644 index c366c4b4e0..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobAugmentTest.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.urn.ip.topo.rev20140101.ymsiptopology.node.AugmentedTopoNode; -import org.onosproject.yang.gen.v1.urn.ip.topo.rev20140101.ymsiptopology.node.DefaultAugmentedTopoNode; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.YmsTopologyOpParam; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.DefaultNode; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.io.IOException; - -import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; -import static org.onosproject.yms.app.yob.YobTestUtils.NODE; -import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE; -import static org.onosproject.yms.app.yob.YobTestUtils.ROUTER_ID; -import static org.onosproject.yms.app.yob.YobTestUtils.ROUTER_IP; -import static org.onosproject.yms.app.yob.YobTestUtils.STR_LEAF_VALUE; -import static org.onosproject.yms.app.yob.YobTestUtils.TOPOLOGY; -import static org.onosproject.yms.ydt.YdtContextOperationType.NONE; - -/** - * Test the YANG object building for the YANG data tree based on the non - * schema augmented nodes. - */ -public class YobAugmentTest { - - private YobTestUtils utils = YobTestUtils.instance(); - - @Test - public void augmentedLeaf() throws IOException { - - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - - ydtBuilder.addChild(TOPOLOGY, null, NONE); - ydtBuilder.addChild(NODE, null); - ydtBuilder.addLeaf(ROUTER_ID, "urn:ip:topo", STR_LEAF_VALUE); - - YdtContext logicalRoot = ydtBuilder.getRootNode(); - YdtExtendedContext appRoot = - (YdtExtendedContext) logicalRoot.getFirstChild(); - - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - Object yangObject = yobBuilder.getYangObject(appRoot, - utils.schemaRegistry()); - assertNotNull("Fail to create augmented YANG object", yangObject); - - assertEquals("invalid augmented node created", YmsTopologyOpParam.class, - yangObject.getClass()); - - YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject; - assertNotNull("failed to build augmented node", topology.node()); - assertEquals("Single node entry is expected", 1, topology.node().size()); - assertEquals("Node type is not DefaultNode", DefaultNode.class, - topology.node().get(0).getClass()); - - DefaultNode node = (DefaultNode) topology.node().get(0); - assertNotNull("Augmented info is missing", node.yangAugmentedInfo( - AugmentedTopoNode.class)); - assertEquals("Augmented class is incorrect", - DefaultAugmentedTopoNode.class, - node.yangAugmentedInfo(AugmentedTopoNode.class) - .getClass()); - - DefaultAugmentedTopoNode augmentedNode = (DefaultAugmentedTopoNode) - node.yangAugmentedInfo(AugmentedTopoNode.class); - assertThat("Augmented leaf value is incorrect", - augmentedNode.routerId(), is(STR_LEAF_VALUE)); - } - - @Test - public void augmentedLeaves() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - - ydtBuilder.addChild(TOPOLOGY, null, NONE); - ydtBuilder.addChild(NODE, null); - ydtBuilder.addLeaf(ROUTER_ID, "urn:ip:topo", STR_LEAF_VALUE); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(ROUTER_IP, "urn:ip:topo", STR_LEAF_VALUE); - - YdtContext logicalRoot = ydtBuilder.getRootNode(); - YdtExtendedContext appRoot = - (YdtExtendedContext) logicalRoot.getFirstChild(); - - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - Object yangObject = yobBuilder.getYangObject(appRoot, - utils.schemaRegistry()); - assertNotNull("Fail to create augmented YANG object", yangObject); - - assertEquals("invalid augmented node created", - YmsTopologyOpParam.class, yangObject.getClass()); - - YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject; - assertNotNull("failed to build augmented node", topology.node()); - assertEquals("Single node entry is expected", 1, - topology.node().size()); - assertEquals("Node type is not DefaultNode", DefaultNode.class, - topology.node().get(0).getClass()); - - DefaultNode node = (DefaultNode) topology.node().get(0); - assertNotNull("Augmented info is missing", node.yangAugmentedInfo( - AugmentedTopoNode.class)); - assertEquals("Augmented class is incorrect", - DefaultAugmentedTopoNode.class, - node.yangAugmentedInfo(AugmentedTopoNode.class) - .getClass()); - - DefaultAugmentedTopoNode augmentedNode = (DefaultAugmentedTopoNode) - node.yangAugmentedInfo(AugmentedTopoNode.class); - assertThat("Augmented router id is incorrect", - augmentedNode.routerId(), is(STR_LEAF_VALUE)); - assertThat("Augmented router ip is incorrect", - augmentedNode.routerIp(), is(STR_LEAF_VALUE)); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBinaryTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBinaryTest.java deleted file mode 100644 index 2b3d4cba57..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBinaryTest.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.ydt.binarytest.rev20160524.BinarytestOpParam; -import org.onosproject.yang.gen.v1.ydt.binarytest.rev20160524.binarytest.cont1.AugmentedCont1; -import org.onosproject.yang.gen.v1.ydt.binarytest.rev20160524.binarytest.food.snack.Sportsarena; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.io.IOException; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.IsNull.notNullValue; -import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE; - -/** - * Test the YANG object building for the YANG data tree based on the binary. - */ -public class YobBinaryTest { - - private YobTestUtils utils = YobTestUtils.instance(); - - @Test - public void testBinaryInLeaf() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("binarytest", "ydt.binarytest"); - ydtBuilder.addChild("binaryList", null); - ydtBuilder.addLeaf("binary", null, "YmluYXJ5"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject); - - byte[] binaryValue = binarytestOpParam.binaryList().get(0).binary(); - String value = new String(binaryValue); - assertThat(value, is("binary")); - } - - @Test - public void testBinaryInTypedef() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("binarytest", "ydt.binarytest"); - ydtBuilder.addLeaf("name", null, "YmluYXJ5"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject); - - byte[] binaryValue = binarytestOpParam.name().binary(); - String value = new String(binaryValue); - assertThat(value, is("binary")); - } - - @Test - public void testBinaryInGrouping() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("binarytest", "ydt.binarytest"); - ydtBuilder.addChild("cont1", "ydt.binarytest"); - ydtBuilder.addLeaf("surname", null, "YmluYXJ5"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject); - - byte[] binaryValue = binarytestOpParam.cont1().surname(); - String value = new String(binaryValue); - assertThat(value, is("binary")); - } - - @Test - public void testBinaryInAugment() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("binarytest", "ydt.binarytest"); - ydtBuilder.addChild("cont1", "ydt.binarytest"); - ydtBuilder.addLeaf("lastname", null, "YmluYXJ5"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject); - - AugmentedCont1 augmentedCont1 = (AugmentedCont1) binarytestOpParam.cont1() - .yangAugmentedInfo(AugmentedCont1.class); - byte[] binaryValue = augmentedCont1.lastname(); - String value = new String(binaryValue); - assertThat(value, is("binary")); - } - - @Test - public void testBinaryInCase() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("binarytest", "ydt.binarytest"); - ydtBuilder.addChild("food", "ydt.binarytest"); - ydtBuilder.addLeaf("pretzel", null, "YmluYXJ5"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject); - Sportsarena sportsArena = ((Sportsarena) binarytestOpParam.food() - .snack()); - byte[] binaryValue = sportsArena.pretzel(); - String value = new String(binaryValue); - assertThat(value, is("binary")); - } - - @Test - public void testBinaryInUnion() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("binarytest", "ydt.binarytest"); - ydtBuilder.addLeaf("middlename", null, "YmluYXJ5"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - BinarytestOpParam binarytestOpParam = ((BinarytestOpParam) yangObject); - - byte[] binaryValue = binarytestOpParam.middlename().binary(); - String value = new String(binaryValue); - assertThat(value, is("binary")); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBitTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBitTest.java deleted file mode 100644 index 565576f684..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBitTest.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.ydt.bit.rev20160524.BitOpParam; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YmsOperationType; - -import java.io.IOException; - -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE; - -/** - * Test the YANG object building for the YDT based on the bits. - */ -public class YobBitTest { - - private YobTestUtils utils = YobTestUtils.instance(); - - @Test - public void testBitsInLeaf() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("bit", "ydt.bit"); - ydtBuilder.addChild("bitList", null); - ydtBuilder.addLeaf("bit", null, "disable-nagle"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("bitList", null); - ydtBuilder.addLeaf("bit", null, "auto-sense-speed"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.addChild("bitList", null); - ydtBuilder.addLeaf("bit", null, "ten-Mb-only"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - BitOpParam bitOpParam = ((BitOpParam) yangObject); - - assertThat(bitOpParam.bitList().get(0).bit().get(0), is(true)); - assertThat(bitOpParam.bitList().get(0).bit().get(1), is(false)); - assertThat(bitOpParam.bitList().get(1).bit().get(0), is(false)); - assertThat(bitOpParam.bitList().get(1).bit().get(1), is(true)); - assertThat(bitOpParam.bitList().get(2).bit().get(0), is(false)); - assertThat(bitOpParam.bitList().get(2).bit().get(1), is(false)); - assertThat(bitOpParam.bitList().get(2).bit().get(2), is(true)); - assertThat(bitOpParam.bitList().get(2).bit().get(2), is(true)); - } - - @Test - public void testBitsInTypedef() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("bit", "ydt.bit"); - ydtBuilder.addLeaf("name", null, "bit3"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - BitOpParam bitOpParam = ((BitOpParam) yangObject); - - assertThat(bitOpParam.name().bits().get(0), is(false)); - assertThat(bitOpParam.name().bits().get(3), is(true)); - } - - @Test - public void testBitsQuery() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, YmsOperationType.QUERY_REQUEST, - utils.schemaRegistry(), true); - ydtBuilder.addChild("bit", "ydt.bit"); - ydtBuilder.addChild("name", "ydt.bit"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - BitOpParam bitOpParam = ((BitOpParam) yangObject); - assertThat(bitOpParam.selectLeafFlags().get(1), is(true)); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBooleanTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBooleanTest.java deleted file mode 100644 index ea87ca7d48..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobBooleanTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.lang.reflect.Field; -import java.util.List; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -public class YobBooleanTest { - - private static final String BOOLEAN_LIST = "booleanList"; - private static final String AUTO_PREFIX_BOOLEAN = "yangAutoPrefixBoolean"; - - /* - BOOLEAN - Positive scenario - input with in true and false - */ - @Test - public void positiveTest() { - YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.booleanYdt(); - validateYangObject(defaultYdtBuilder); - } - - private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) { - - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - assertNotNull(yangObject); - try { - - Field field = yangObject.getClass().getDeclaredField(BOOLEAN_LIST); - field.setAccessible(true); - List booleanList = (List) field.get(yangObject); - Field invalidInterval = booleanList.get(0).getClass() - .getDeclaredField(AUTO_PREFIX_BOOLEAN); - invalidInterval.setAccessible(true); - assertTrue((boolean) invalidInterval.get(booleanList.get(0))); - assertFalse((boolean) invalidInterval.get(booleanList.get(1))); - } catch (NoSuchFieldException | IllegalAccessException e) { - Assert.fail(); - } - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobChoiceTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobChoiceTest.java deleted file mode 100644 index fdad2ecd8f..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobChoiceTest.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.YmsTopologyOpParam; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.DefaultNode; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.Node; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.Case1a; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.Case1b; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.DefaultCase1a; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.DefaultCase1b; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.case1b.choice1b.Case1Bi; -import org.onosproject.yang.gen.v1.urn.topo.rev20140101.ymstopology.node.choice1.case1b.choice1b.DefaultCase1Bi; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.io.IOException; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.onosproject.yms.app.yob.YobTestUtils.LEAF_1A1; -import static org.onosproject.yms.app.yob.YobTestUtils.LEAF_1A2; -import static org.onosproject.yms.app.yob.YobTestUtils.LEAF_1BIA; -import static org.onosproject.yms.app.yob.YobTestUtils.LEAF_1BIB; -import static org.onosproject.yms.app.yob.YobTestUtils.NODE; -import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE; -import static org.onosproject.yms.app.yob.YobTestUtils.STR_LEAF_VALUE; -import static org.onosproject.yms.app.yob.YobTestUtils.TOPOLOGY; -import static org.onosproject.yms.ydt.YdtContextOperationType.NONE; - -/** - * Test the YANG object building for the YANG data tree based on the non - * schema choice and case nodes. - */ -public class YobChoiceTest { - - private YobTestUtils utils = YobTestUtils.instance(); - - @Test - public void caseInChoice() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - - ydtBuilder.addChild(TOPOLOGY, null, NONE); - ydtBuilder.addChild(NODE, null); - ydtBuilder.addLeaf(LEAF_1A1, null, STR_LEAF_VALUE); - - YdtContext logicalRoot = ydtBuilder.getRootNode(); - YdtExtendedContext appRoot = - (YdtExtendedContext) logicalRoot.getFirstChild(); - - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - Object yangObject = yobBuilder.getYangObject(appRoot, - utils.schemaRegistry()); - assertNotNull(yangObject); - assertEquals("YANG object created is not topology object", - YmsTopologyOpParam.class, yangObject.getClass()); - - YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject; - assertNotNull("Failed to build the object", topology.node()); - assertEquals("Single node entry is expected", 1, - topology.node().size()); - assertEquals("Node type is not DefaultNode", DefaultNode.class, - topology.node().get(0).getClass()); - - Node node = topology.node().get(0); - assertNotNull("choice1 is not set in node", node.choice1()); - assertEquals("choice 1 type is not ", DefaultCase1a.class, - node.choice1().getClass()); - - Case1a case1a = (Case1a) node.choice1(); - assertNotNull("leaf1a1 is not set in case", case1a.leaf1A1()); - assertEquals("leaf1a1 type is not correct", String.class, - case1a.leaf1A1().getClass()); - assertEquals("leaf1a1 value is not correct", STR_LEAF_VALUE, - case1a.leaf1A1()); - - } - - @Test - public void caseWithMultiAttribute() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - - ydtBuilder.addChild(TOPOLOGY, null, NONE); - ydtBuilder.addChild(NODE, null); - ydtBuilder.addLeaf(LEAF_1A1, null, STR_LEAF_VALUE); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(LEAF_1A2, null, STR_LEAF_VALUE); - - YdtContext logicalRoot = ydtBuilder.getRootNode(); - YdtExtendedContext appRoot = - (YdtExtendedContext) logicalRoot.getFirstChild(); - - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - Object yangObject = yobBuilder.getYangObject(appRoot, - utils.schemaRegistry()); - assertNotNull(yangObject); - assertEquals("YANG object created is not topology object", - YmsTopologyOpParam.class, yangObject.getClass()); - - YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject; - assertNotNull("Failed to build the object", topology.node()); - assertEquals("Single node entry is expected", 1, - topology.node().size()); - assertEquals("Node type is not DefaultNode", DefaultNode.class, - topology.node().get(0).getClass()); - - Node node = topology.node().get(0); - assertNotNull("choice1 is not set in node", node.choice1()); - assertEquals("choice 1 type is not ", DefaultCase1a.class, - node.choice1().getClass()); - - Case1a case1a = (Case1a) node.choice1(); - assertNotNull("leaf1a1 is not set in case", case1a.leaf1A1()); - assertEquals("leaf1a1 type is not correct", String.class, - case1a.leaf1A1().getClass()); - assertEquals("leaf1a1 value is not correct", STR_LEAF_VALUE, - case1a.leaf1A1()); - - assertNotNull("leaf1a2 is not set in case", case1a.leaf1A2()); - assertEquals("leaf1a2 type is not correct", String.class, - case1a.leaf1A2().getClass()); - assertEquals("leaf1a1 value is not correct", STR_LEAF_VALUE, - case1a.leaf1A1()); - - } - - @Test - public void recursiveChoice() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - - ydtBuilder.addChild(TOPOLOGY, null, NONE); - ydtBuilder.addChild(NODE, null); - ydtBuilder.addLeaf(LEAF_1BIA, null, STR_LEAF_VALUE); - - YdtContext logicalRoot = ydtBuilder.getRootNode(); - YdtExtendedContext appRoot = - (YdtExtendedContext) logicalRoot.getFirstChild(); - - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - Object yangObject = yobBuilder.getYangObject(appRoot, - utils.schemaRegistry()); - assertNotNull(yangObject); - assertEquals("YANG object created is not topology object", - YmsTopologyOpParam.class, yangObject.getClass()); - - YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject; - assertNotNull("Failed to build the object", topology.node()); - assertEquals("Single node entry is expected", 1, - topology.node().size()); - assertEquals("Node type is not DefaultNode", DefaultNode.class, - topology.node().get(0).getClass()); - - Node node = topology.node().get(0); - assertNotNull("Choice 1 is not set in Node", node.choice1()); - assertEquals("Choice 1 is not of type DefaultCase1b", - DefaultCase1b.class, node.choice1().getClass()); - - Case1b case1b = (Case1b) node.choice1(); - assertNotNull("Case1b does not have child choice1b ", - case1b.choice1b()); - assertEquals("choice1b is not of type DefaultCase1Bi", - DefaultCase1Bi.class, case1b.choice1b().getClass()); - - Case1Bi case1Bi = (Case1Bi) case1b.choice1b(); - assertNotNull("leaf1bia is not set", case1Bi.leaf1Bia()); - assertEquals("leaf1bia type is not string", String.class, - case1Bi.leaf1Bia().getClass()); - assertEquals("leaf1bia value is wrong", STR_LEAF_VALUE, - case1Bi.leaf1Bia()); - } - - @Test - public void recursiveChoiceWithMultipleAttribute() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - - ydtBuilder.addChild(TOPOLOGY, null, NONE); - ydtBuilder.addChild(NODE, null); - ydtBuilder.addLeaf(LEAF_1BIA, null, STR_LEAF_VALUE); - ydtBuilder.traverseToParent(); - ydtBuilder.addLeaf(LEAF_1BIB, null, STR_LEAF_VALUE); - - YdtContext logicalRoot = ydtBuilder.getRootNode(); - YdtExtendedContext appRoot = - (YdtExtendedContext) logicalRoot.getFirstChild(); - - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - Object yangObject = yobBuilder.getYangObject(appRoot, - utils.schemaRegistry()); - assertNotNull(yangObject); - assertEquals("YANG object created is not topology object", - YmsTopologyOpParam.class, yangObject.getClass()); - - YmsTopologyOpParam topology = (YmsTopologyOpParam) yangObject; - assertNotNull("Failed to build the object", topology.node()); - assertEquals("Single node entry is expected", 1, - topology.node().size()); - assertEquals("Node type is not DefaultNode", DefaultNode.class, - topology.node().get(0).getClass()); - - Node node = topology.node().get(0); - assertNotNull("Choice 1 is not set in Node", node.choice1()); - assertEquals("Choice 1 is not of type DefaultCase1b", - DefaultCase1b.class, - node.choice1().getClass()); - - Case1b case1b = (Case1b) node.choice1(); - assertNotNull("Case1b does not have child choice1b ", - case1b.choice1b()); - assertEquals("choice1b is not of type DefaultCase1Bi", - DefaultCase1Bi.class, - case1b.choice1b().getClass()); - - Case1Bi case1Bi = (Case1Bi) case1b.choice1b(); - assertNotNull("leaf1bia is not set", case1Bi.leaf1Bia()); - assertEquals("leaf1bia type is not string", String.class, - case1Bi.leaf1Bia().getClass()); - assertEquals("leaf1bia value is wrong", STR_LEAF_VALUE, - case1Bi.leaf1Bia()); - - assertNotNull("leaf1bib is not set", case1Bi.leaf1Bib()); - assertEquals("leaf1bia type is not string", String.class, - case1Bi.leaf1Bib().getClass()); - assertEquals("leaf1bia value is wrong", STR_LEAF_VALUE, - case1Bi.leaf1Bib()); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobDecimal64Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobDecimal64Test.java deleted file mode 100644 index d0b9f1e31b..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobDecimal64Test.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.lang.reflect.Field; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -public class YobDecimal64Test { - - /* - - Positive scenario - - input at boundary for decimal64 with fraction 2 - i. min value - ii. max value - - input at boundary for decimal64 with minimum fraction - i. min value - ii. mid value - iii. max value - - input at boundary for decimal64 with maximum fraction - i. min value - ii. mid value - iii. max value - - input with in range - if range is 10 to 100 for integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - input with multi interval range - if range is 10..40 | 50..100 for decimal64 - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is "min .. 3.14 | 10 | 20..max" for decimal64 - i.1. input min - i.2. input 2.505 - i.3. input 3.14 - i.4. input 10 - i.5. input 20 - i.6. input 92233720368547757 - i.7. input 92233720368547758.07 - - */ - @Test - public void positiveTest() { - YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.decimal64Ydt(); - validateYangObject(defaultYdtBuilder); - } - - private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) { - - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - assertNotNull(yangObject); - try { - Field negInt = yangObject.getClass().getDeclaredField("negInt"); - negInt.setAccessible(true); - assertEquals("-92233720368547758.08", negInt - .get(yangObject).toString()); - Field negIntWithMaxFraction = yangObject.getClass() - .getDeclaredField("negIntWithMaxFraction"); - negIntWithMaxFraction.setAccessible(true); - assertEquals("-9.223372036854775808", negIntWithMaxFraction - .get(yangObject).toString()); - Field negIntWithMinFraction = yangObject.getClass() - .getDeclaredField("negIntWithMinFraction"); - negIntWithMinFraction.setAccessible(true); - assertEquals("-922337203685477580.8", negIntWithMinFraction - .get(yangObject).toString()); - Field posInt = yangObject.getClass() - .getDeclaredField("posInt"); - posInt.setAccessible(true); - assertEquals("92233720368547758.07", posInt - .get(yangObject).toString()); - Field posIntWithMaxFraction = yangObject - .getClass().getDeclaredField("posIntWithMaxFraction"); - posIntWithMaxFraction.setAccessible(true); - assertEquals("9.223372036854775807", posIntWithMaxFraction - .get(yangObject).toString()); - Field posIntWithMinFraction = yangObject.getClass() - .getDeclaredField("posIntWithMinFraction"); - posIntWithMinFraction.setAccessible(true); - assertEquals("922337203685477580.7", posIntWithMinFraction - .get(yangObject).toString()); - Field minIntWithRange = yangObject.getClass() - .getDeclaredField("minIntWithRange"); - minIntWithRange.setAccessible(true); - assertEquals("10", minIntWithRange - .get(yangObject).toString()); - Field midIntWithRange = yangObject - .getClass().getDeclaredField("midIntWithRange"); - midIntWithRange.setAccessible(true); - assertEquals("11", midIntWithRange.get(yangObject).toString()); - Field maxIntWithRange = yangObject - .getClass().getDeclaredField("maxIntWithRange"); - maxIntWithRange.setAccessible(true); - assertEquals("100", maxIntWithRange.get(yangObject).toString()); - } catch (IllegalAccessException | NoSuchFieldException e) { - Assert.fail(); - } - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEmptyTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEmptyTest.java deleted file mode 100644 index 6a3fc05870..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEmptyTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Test; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.ydt.YdtContext; - -import java.lang.reflect.Field; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; - -/** - * Test the YANG object building for the YANG data tree based on the schema - * nodes with empty data type. - */ -public class YobEmptyTest { - - /* - EMPTY - Positive scenario - input with in empty. - */ - @Test - public void positiveTest() { - YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.emptyTypeYdt(); - validateYangObject(defaultYdtBuilder); - } - - private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) { - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - assertNotNull(yangObject); - - try { - Field field = yangObject.getClass().getDeclaredField("emptyList"); - field.setAccessible(true); - List booleanList = (List) field.get(yangObject); - Field invalidInterval = booleanList.get(0) - .getClass().getDeclaredField("empty"); - invalidInterval.setAccessible(true); - assertEquals(true, invalidInterval.get(booleanList.get(0))); - } catch (NoSuchFieldException | IllegalAccessException e) { - fail(); - } - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEnumTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEnumTest.java deleted file mode 100644 index 48eda96901..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobEnumTest.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.lang.reflect.Field; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -public class YobEnumTest { - -/* - ENUM - - Positive scenario - - input with in enum - input with "ten" - input with "hundred" - input with "thousand" -*/ - - @Test - public void positiveTest() { - YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.enumYdt(); - validateYangObject(defaultYdtBuilder); - } - - private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) { - - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - assertNotNull(yangObject); - try { - Field field = yangObject.getClass().getDeclaredField("enumList"); - field.setAccessible(true); - List enumList = (List) field.get(yangObject); - assertEquals(false, enumList.isEmpty()); - Field enumleaf = enumList.get(0) - .getClass().getDeclaredField("enumleaf"); - enumleaf.setAccessible(true); - assertEquals("ten", enumleaf - .get(enumList.get(0)).toString().toLowerCase()); - assertEquals("hundred", enumleaf - .get(enumList.get(1)).toString().toLowerCase()); - assertEquals("thousand", enumleaf - .get(enumList.get(2)).toString().toLowerCase()); - } catch (IllegalAccessException | NoSuchFieldException e) { - Assert.fail(); - } - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobGroupingUsesTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobGroupingUsesTest.java deleted file mode 100644 index 08b2484a2c..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobGroupingUsesTest.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.YmsIetfNetworkOpParam; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networksstate.Network; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.YmsNetworkTopology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ymsnetworktopology.networks.network.AugmentedNdNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ymsnetworktopology.networks.network.DefaultAugmentedNdNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ymsnetworktopology.networks.network.augmentedndnetwork.Link; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.YmsIetfTeTopology; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.YmsIetfTeTopologyOpParam; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.TeAdminStatus; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.networks.network.link.AugmentedNtLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.networks.network.link.DefaultAugmentedNtLink; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.teadminstatus.TeAdminStatusEnum; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.telinkconfig.bundlestacklevel.DefaultBundle; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160317.ymsietftetopology.telinkconfig.bundlestacklevel.bundle.bundledlinks.BundledLink; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.io.IOException; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.IsNull.notNullValue; -import static org.onosproject.yms.app.yob.YobTestUtils.ADMIN_STATUS; -import static org.onosproject.yms.app.yob.YobTestUtils.BUNDLED_LINK; -import static org.onosproject.yms.app.yob.YobTestUtils.BUNDLED_LINKS; -import static org.onosproject.yms.app.yob.YobTestUtils.CONFIG; -import static org.onosproject.yms.app.yob.YobTestUtils.IETF_TE_TOPOLOGY; -import static org.onosproject.yms.app.yob.YobTestUtils.LINK; -import static org.onosproject.yms.app.yob.YobTestUtils.NETWORK; -import static org.onosproject.yms.app.yob.YobTestUtils.NETWORKS; -import static org.onosproject.yms.app.yob.YobTestUtils.NETWORKS_STATE; -import static org.onosproject.yms.app.yob.YobTestUtils.NETWORK_REF; -import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE; -import static org.onosproject.yms.app.yob.YobTestUtils.SEQUENCE; -import static org.onosproject.yms.app.yob.YobTestUtils.STR_LEAF_VALUE; -import static org.onosproject.yms.app.yob.YobTestUtils.TE; -import static org.onosproject.yms.app.yob.YobTestUtils.TE_LINK_TEMPLATE; -import static org.onosproject.yms.app.yob.YobTestUtils.TE_NODE_ATTRIBUTES; -import static org.onosproject.yms.app.yob.YobTestUtils.TE_NODE_EVENT; -import static org.onosproject.yms.app.yob.YobTestUtils.UP; -import static org.onosproject.yms.app.yob.YobTestUtils.YMS_IETF_NETWORK; -import static org.onosproject.yms.app.yob.YobTestUtils.YMS_NETWORK_TOPOLOGY; -import static org.onosproject.yms.ydt.YdtContextOperationType.CREATE; - -/** - * Test the YANG object building for the YANG data tree based on the grouping - * and uses nodes. - */ -public class YobGroupingUsesTest { - - private YobTestUtils utils = YobTestUtils.instance(); - - @Test - public void testGroupingUsesLeaf() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild(YMS_IETF_NETWORK, null, CREATE); - ydtBuilder.addChild(NETWORKS_STATE, null); - ydtBuilder.addChild(NETWORK, null); - ydtBuilder.addLeaf(NETWORK_REF, null, STR_LEAF_VALUE); - YdtContext logicalRoot = ydtBuilder.getRootNode(); - YdtExtendedContext appRoot = - (YdtExtendedContext) logicalRoot.getFirstChild(); - - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - Object yangObject = yobBuilder.getYangObject(appRoot, - utils.schemaRegistry()); - assertThat(yangObject, is(notNullValue())); - YmsIetfNetworkOpParam ietfNetwork = (YmsIetfNetworkOpParam) yangObject; - Network network = ietfNetwork.networksState().network().iterator().next(); - assertThat(network.networkRef(), is(STR_LEAF_VALUE)); - } - - @Test - public void testGroupingUsesContainer() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild(IETF_TE_TOPOLOGY, null, CREATE); - ydtBuilder.addChild(TE_NODE_EVENT, null); - ydtBuilder.addChild(TE_NODE_ATTRIBUTES, null); - ydtBuilder.addLeaf(ADMIN_STATUS, null, UP); - YdtContext logicalRoot = ydtBuilder.getRootNode(); - YdtExtendedContext appRoot = - (YdtExtendedContext) logicalRoot.getFirstChild(); - - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - Object yangObject = yobBuilder.getYangObject(appRoot, - utils.schemaRegistry()); - assertThat(yangObject, is(notNullValue())); - YmsIetfTeTopologyOpParam ietfTeTopology = (YmsIetfTeTopologyOpParam) - yangObject; - TeAdminStatus adminStatus = ietfTeTopology.teNodeEvent() - .teNodeAttributes() - .adminStatus(); - assertThat(adminStatus.enumeration(), is(TeAdminStatusEnum.UP)); - } - - @Test - public void testGroupingUsesInterfile() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild(YMS_IETF_NETWORK, null, CREATE); - ydtBuilder.addChild(NETWORKS, null); - ydtBuilder.addChild(NETWORK, null); - ydtBuilder.addChild(LINK, YMS_NETWORK_TOPOLOGY); - ydtBuilder.addChild(TE, IETF_TE_TOPOLOGY); - ydtBuilder.addChild(CONFIG, IETF_TE_TOPOLOGY); - ydtBuilder.addChild(BUNDLED_LINKS, IETF_TE_TOPOLOGY); - ydtBuilder.addChild(BUNDLED_LINK, IETF_TE_TOPOLOGY); - ydtBuilder.addLeaf(SEQUENCE, null, "1"); - YdtContext logicalRoot = ydtBuilder.getRootNode(); - YdtExtendedContext appRoot = - (YdtExtendedContext) logicalRoot.getFirstChild(); - - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - Object yangObject = yobBuilder.getYangObject(appRoot, - utils.schemaRegistry()); - assertThat(yangObject, is(notNullValue())); - YmsIetfNetworkOpParam ietfNetwork = (YmsIetfNetworkOpParam) yangObject; - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang - .ietf.network.rev20151208.ymsietfnetwork - .networks.Network network = ietfNetwork.networks().network().get(0); - - DefaultAugmentedNdNetwork augmentedNdNetworks = (DefaultAugmentedNdNetwork) network - .yangAugmentedInfo(AugmentedNdNetwork.class); - assertThat(augmentedNdNetworks.yangAugmentedNdNetworkOpType(), - is(YmsNetworkTopology.OnosYangOpType.CREATE)); - - Link link = augmentedNdNetworks.link().get(0); - DefaultAugmentedNtLink augmentedNtLink = (DefaultAugmentedNtLink) link - .yangAugmentedInfo(AugmentedNtLink.class); - assertThat(augmentedNtLink.yangAugmentedNtLinkOpType(), - is(YmsIetfTeTopology.OnosYangOpType.CREATE)); - - DefaultBundle bundleStackLevel = (DefaultBundle) augmentedNtLink.te() - .config().bundleStackLevel(); - assertThat(bundleStackLevel.yangBundleOpType(), - is(YmsIetfTeTopology.OnosYangOpType.CREATE)); - - BundledLink bundledLink = bundleStackLevel.bundledLinks().bundledLink().get(0); - assertThat(bundledLink.yangBundledLinkOpType(), - is(YmsIetfTeTopology.OnosYangOpType.CREATE)); - assertThat(bundledLink.sequence(), is(1L)); - } - - @Test - public void testGroupingUsesAugment() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild(YMS_IETF_NETWORK, null, CREATE); - ydtBuilder.addChild(NETWORKS, null); - ydtBuilder.addChild(NETWORK, null); - ydtBuilder.addChild(LINK, YMS_NETWORK_TOPOLOGY); - ydtBuilder.addChild(TE, IETF_TE_TOPOLOGY); - ydtBuilder.addChild(CONFIG, IETF_TE_TOPOLOGY); - ydtBuilder.addLeaf(TE_LINK_TEMPLATE, null, "1"); - YdtContext logicalRoot = ydtBuilder.getRootNode(); - YdtExtendedContext appRoot = - (YdtExtendedContext) logicalRoot.getFirstChild(); - - DefaultYobBuilder yobBuilder = new DefaultYobBuilder(); - Object yangObject = yobBuilder.getYangObject(appRoot, - utils.schemaRegistry()); - assertThat(yangObject, is(notNullValue())); - YmsIetfNetworkOpParam ietfNetwork = (YmsIetfNetworkOpParam) yangObject; - - org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang - .ietf.network.rev20151208.ymsietfnetwork - .networks.Network network = ietfNetwork.networks().network().get(0); - - DefaultAugmentedNdNetwork augmentedNdNetworks = (DefaultAugmentedNdNetwork) network - .yangAugmentedInfo(AugmentedNdNetwork.class); - assertThat(augmentedNdNetworks.yangAugmentedNdNetworkOpType(), - is(YmsNetworkTopology.OnosYangOpType.CREATE)); - - Link link = augmentedNdNetworks.link().get(0); - DefaultAugmentedNtLink augmentedNtLink = (DefaultAugmentedNtLink) link - .yangAugmentedInfo(AugmentedNtLink.class); - assertThat(augmentedNtLink.yangAugmentedNtLinkOpType(), - is(YmsIetfTeTopology.OnosYangOpType.CREATE)); - - assertThat(augmentedNtLink.te().config().teLinkTemplate().get(0), - is("1")); - } -} - diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobIetfNetworkTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobIetfNetworkTest.java deleted file mode 100644 index df6df65819..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobIetfNetworkTest.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Test; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import static org.junit.Assert.assertNotNull; - -public class YobIetfNetworkTest { - - @Test - public void ietfNetwork1Test() { - YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.ietfNetwork1Ydt(); - validateYangObject(defaultYdtBuilder); - } - - private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) { - - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - assertNotNull(yangObject); - //TODO yangObject need to verify - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger16Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger16Test.java deleted file mode 100644 index 650a958ddb..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger16Test.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.lang.reflect.Field; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -public class YobInteger16Test { - - /* - - Positive scenario - - input at boundary for integer - i. min value - ii. max value - - input at boundary for unsigned integer - i. min value - ii. max value - - input with in range - if range is 10 to 100 for integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - if range is 10 to 100 for unsigned integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - */ - @Test - public void positiveTest() { - YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.integer16Ydt(); - validateYangObject(defaultYdtBuilder); - } - - public void validateYangObject(YangRequestWorkBench defaultYdtBuilder) { - - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - assertNotNull(yangObject); - try { - Field negInt = yangObject.getClass().getDeclaredField("negInt"); - negInt.setAccessible(true); - assertEquals("-32768", negInt.get(yangObject).toString()); - Field posInt = yangObject.getClass().getDeclaredField("posInt"); - posInt.setAccessible(true); - assertEquals("32767", posInt.get(yangObject).toString()); - Field minIntWithRange = yangObject - .getClass().getDeclaredField("minIntWithRange"); - minIntWithRange.setAccessible(true); - assertEquals("10", minIntWithRange.get(yangObject).toString()); - Field midIntWithRange = yangObject - .getClass().getDeclaredField("midIntWithRange"); - midIntWithRange.setAccessible(true); - assertEquals("11", midIntWithRange.get(yangObject).toString()); - Field maxIntWithRange = yangObject - .getClass().getDeclaredField("maxIntWithRange"); - maxIntWithRange.setAccessible(true); - assertEquals("100", maxIntWithRange.get(yangObject).toString()); - Field minUint = yangObject.getClass().getDeclaredField("minUint"); - minUint.setAccessible(true); - assertEquals("0", minUint.get(yangObject).toString()); - Field maxUint = yangObject.getClass().getDeclaredField("maxUint"); - maxUint.setAccessible(true); - assertEquals("65535", maxUint.get(yangObject).toString()); - Field minUintWithRange = yangObject - .getClass().getDeclaredField("minUintWithRange"); - minUintWithRange.setAccessible(true); - assertEquals("10", minUintWithRange.get(yangObject).toString()); - Field midUintWithRange = yangObject - .getClass().getDeclaredField("midUintWithRange"); - midUintWithRange.setAccessible(true); - assertEquals("11", midUintWithRange.get(yangObject).toString()); - Field maxUintWithRange = yangObject - .getClass().getDeclaredField("maxUintWithRange"); - maxUintWithRange.setAccessible(true); - assertEquals("100", maxUintWithRange.get(yangObject).toString()); - } catch (IllegalAccessException | NoSuchFieldException e) { - Assert.fail(); - } - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger32Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger32Test.java deleted file mode 100644 index 663b544daa..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger32Test.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.lang.reflect.Field; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -public class YobInteger32Test { - - /* - - Positive scenario - - input at boundary for integer - i. min value - ii. max value - - input at boundary for unsigned integer - i. min value - ii. max value - - input with in range - if range is 10 to 100 for integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - if range is 10 to 100 for unsigned integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - */ - @Test - public void positiveTest() { - YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.integer32Ydt(); - validateYangObject(defaultYdtBuilder); - } - - public void validateYangObject(YangRequestWorkBench defaultYdtBuilder) { - - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - assertNotNull(yangObject); - try { - Field negInt = yangObject.getClass().getDeclaredField("negInt"); - negInt.setAccessible(true); - assertEquals("-2147483648", negInt.get(yangObject).toString()); - Field posInt = yangObject.getClass().getDeclaredField("posInt"); - posInt.setAccessible(true); - assertEquals("2147483647", posInt.get(yangObject).toString()); - Field minIntWithRange = yangObject - .getClass().getDeclaredField("minIntWithRange"); - minIntWithRange.setAccessible(true); - assertEquals("10", minIntWithRange.get(yangObject).toString()); - Field midIntWithRange = yangObject - .getClass().getDeclaredField("midIntWithRange"); - midIntWithRange.setAccessible(true); - assertEquals("11", midIntWithRange.get(yangObject).toString()); - Field maxIntWithRange = yangObject - .getClass().getDeclaredField("maxIntWithRange"); - maxIntWithRange.setAccessible(true); - assertEquals("100", maxIntWithRange.get(yangObject).toString()); - Field minUint = yangObject.getClass().getDeclaredField("minUint"); - minUint.setAccessible(true); - assertEquals("0", minUint.get(yangObject).toString()); - Field maxUint = yangObject.getClass().getDeclaredField("maxUint"); - maxUint.setAccessible(true); - assertEquals("4294967295", maxUint.get(yangObject).toString()); - Field minUintWithRange = yangObject - .getClass().getDeclaredField("minUintWithRange"); - minUintWithRange.setAccessible(true); - assertEquals("10", minUintWithRange.get(yangObject).toString()); - Field midUintWithRange = yangObject - .getClass().getDeclaredField("midUintWithRange"); - midUintWithRange.setAccessible(true); - assertEquals("11", midUintWithRange.get(yangObject).toString()); - Field maxUintWithRange = yangObject - .getClass().getDeclaredField("maxUintWithRange"); - maxUintWithRange.setAccessible(true); - assertEquals("100", maxUintWithRange.get(yangObject).toString()); - } catch (IllegalAccessException | NoSuchFieldException e) { - Assert.fail(); - } - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger64Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger64Test.java deleted file mode 100644 index 0f3ba8b018..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger64Test.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.lang.reflect.Field; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - - -public class YobInteger64Test { - - /* - - Positive scenario - - input at boundary for integer - i. min value - ii. max value - - input at boundary for unsigned integer - i. min value - ii. max value - - input with in range - if range is 10 to 100 for integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - if range is 10 to 100 for unsigned integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - */ - @Test - public void positiveTest() { - YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.integer64Ydt(); - validateYangObject(defaultYdtBuilder); - } - - private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) { - - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - assertNotNull(yangObject); - try { - Field negInt = yangObject.getClass().getDeclaredField("negInt"); - negInt.setAccessible(true); - assertEquals("-9223372036854775808", negInt - .get(yangObject).toString()); - Field posIntField = yangObject - .getClass().getDeclaredField("posInt"); - posIntField.setAccessible(true); - assertEquals("9223372036854775807", posIntField - .get(yangObject).toString()); - Field minIntWithRange = yangObject - .getClass().getDeclaredField("minIntWithRange"); - minIntWithRange.setAccessible(true); - assertEquals("10", minIntWithRange.get(yangObject).toString()); - Field midIntWithRange = yangObject - .getClass().getDeclaredField("midIntWithRange"); - midIntWithRange.setAccessible(true); - assertEquals("11", midIntWithRange.get(yangObject).toString()); - Field maxIntWithRange = yangObject - .getClass().getDeclaredField("maxIntWithRange"); - maxIntWithRange.setAccessible(true); - assertEquals("100", maxIntWithRange.get(yangObject).toString()); - Field minUint = yangObject.getClass().getDeclaredField("minUint"); - minUint.setAccessible(true); - assertEquals("0", minUint.get(yangObject).toString()); - Field maxUint = yangObject.getClass().getDeclaredField("maxUint"); - maxUint.setAccessible(true); - assertEquals("18446744073709551615", maxUint - .get(yangObject).toString()); - Field minUintWithRange = yangObject - .getClass().getDeclaredField("minUintWithRange"); - minUintWithRange.setAccessible(true); - assertEquals("10", minUintWithRange.get(yangObject).toString()); - Field midUintWithRange = yangObject - .getClass().getDeclaredField("midUintWithRange"); - midUintWithRange.setAccessible(true); - assertEquals("11", midUintWithRange.get(yangObject).toString()); - Field maxUintWithRange = yangObject - .getClass().getDeclaredField("maxUintWithRange"); - maxUintWithRange.setAccessible(true); - assertEquals("100", maxUintWithRange.get(yangObject).toString()); - } catch (IllegalAccessException | NoSuchFieldException e) { - Assert.fail(); - } - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger8Test.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger8Test.java deleted file mode 100644 index 9755c65d6f..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobInteger8Test.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.lang.reflect.Field; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -public class YobInteger8Test { - - /* - - Positive scenario - - input at boundary for integer - i. min value - ii. max value - - input at boundary for unsigned integer - i. min value - ii. max value - - input with in range - if range is 10 to 100 for integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - if range is 10 to 100 for unsigned integer - i.1. input 11 - i.2. min value 10 - i.3. max value 100 - - input with multi interval range - if range is 10..40 | 50..100 for integer - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is 10..40 | 50..100 for unsigned integer - i.1. input 11 - i.2. input 10 - i.3. input 40 - i.4. input 50 - i.5. input 55 - i.6. input 100 - - if range is "min .. 2 | 10 | 20..max" for integer - i.1. input -128 - i.2. input 1 - i.3. input 2 - i.4. input 10 - i.5. input 20 - i.6. input 100 - i.7. input 127 - - if range is "min .. 2 | 10 | 20..max" for unsigned Integer - i.1. input 0 - i.2. input 1 - i.3. input 2 - i.4. input 10 - i.5. input 20 - i.6. input 100 - i.7. input 255 - */ - @Test - public void positiveTest() { - YangRequestWorkBench defaultYdtBuilder = YdtTestUtils.integer8Ydt(); - validateYangObject(defaultYdtBuilder); - } - - private void validateYangObject(YangRequestWorkBench defaultYdtBuilder) { - - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - assertNotNull(yangObject); - try { - Field negInt = yangObject.getClass().getDeclaredField("negInt"); - negInt.setAccessible(true); - assertEquals("-128", negInt.get(yangObject).toString()); - Field posInt = yangObject.getClass().getDeclaredField("posInt"); - posInt.setAccessible(true); - assertEquals("127", posInt.get(yangObject).toString()); - Field minIntWithRange = yangObject - .getClass().getDeclaredField("minIntWithRange"); - minIntWithRange.setAccessible(true); - assertEquals("10", minIntWithRange - .get(yangObject).toString()); - Field midIntWithRange = yangObject - .getClass().getDeclaredField("midIntWithRange"); - midIntWithRange.setAccessible(true); - assertEquals("11", midIntWithRange - .get(yangObject).toString()); - Field maxIntWithRange = yangObject - .getClass().getDeclaredField("maxIntWithRange"); - maxIntWithRange.setAccessible(true); - assertEquals("100", maxIntWithRange.get(yangObject).toString()); - Field minUint = yangObject.getClass().getDeclaredField("minUint"); - minUint.setAccessible(true); - assertEquals("0", minUint.get(yangObject).toString()); - Field maxUint = yangObject.getClass().getDeclaredField("maxUint"); - maxUint.setAccessible(true); - assertEquals("255", maxUint.get(yangObject).toString()); - Field minUintWithRange = yangObject - .getClass().getDeclaredField("maxIntWithRange"); - minUintWithRange.setAccessible(true); - assertEquals("100", minUintWithRange.get(yangObject).toString()); - Field midUintWithRange = yangObject - .getClass().getDeclaredField("midUintWithRange"); - midUintWithRange.setAccessible(true); - assertEquals("11", midUintWithRange.get(yangObject).toString()); - Field maxUintWithRange = yangObject - .getClass().getDeclaredField("maxUintWithRange"); - maxUintWithRange.setAccessible(true); - assertEquals("100", maxUintWithRange.get(yangObject).toString()); - } catch (IllegalAccessException | NoSuchFieldException e) { - Assert.fail(); - } - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLeafRefTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLeafRefTest.java deleted file mode 100644 index fe6801e9e2..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLeafRefTest.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.ydt.leafreftest.rev20160524.LeafreftestOpParam; -import org.onosproject.yang.gen.v1.ydt.leafreftest.rev20160524.leafreftest.cont1.AugmentedCont1; -import org.onosproject.yang.gen.v1.ydt.leafreftest.rev20160524.leafreftest.food.snack.Sportsarena; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.io.IOException; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE; - -/** - * Test the YANG object building for the YANG data tree based on the leaf ref. - */ -public class YobLeafRefTest { - - private YobTestUtils utils = YobTestUtils.instance(); - - @Test - public void testLeafrefInLeaf() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("leafreftest", "ydt.leafreftest"); - ydtBuilder.addChild("leafrefList", null); - ydtBuilder.addLeaf("id", null, "leafref"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - LeafreftestOpParam leafrefTestOpParam = ((LeafreftestOpParam) - yangObject); - assertThat(leafrefTestOpParam.leafrefList().get(0).id().toString(), - is("leafref")); - } - - @Test - public void testLeafrefInTypedef() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("leafreftest", "ydt.leafreftest"); - ydtBuilder.addLeaf("name", null, "leafref"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - LeafreftestOpParam leafrefTestOpParam = ((LeafreftestOpParam) yangObject); - assertThat(leafrefTestOpParam.name().toString(), is("leafref")); - } - - @Test - public void testLeafrefInGrouping() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("leafreftest", "ydt.leafreftest"); - ydtBuilder.addChild("cont1", "ydt.leafreftest"); - ydtBuilder.addLeaf("surname", null, "leafref"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - LeafreftestOpParam leafreftestOpParam = ((LeafreftestOpParam) yangObject); - assertThat(leafreftestOpParam.cont1().surname().toString(), - is("leafref")); - } - - @Test - public void testLeafrefInAugment() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("leafreftest", "ydt.leafreftest"); - ydtBuilder.addChild("cont1", "ydt.leafreftest"); - ydtBuilder.addLeaf("lastname", null, "yang"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - LeafreftestOpParam leafreftestOpParam = ((LeafreftestOpParam) yangObject); - AugmentedCont1 augmentedCont1 = (AugmentedCont1) leafreftestOpParam - .cont1().yangAugmentedInfo(AugmentedCont1.class); - assertThat(augmentedCont1.lastname().toString(), is("yang")); - } - - @Test - public void testLeafrefInCase() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("leafreftest", "ydt.leafreftest"); - ydtBuilder.addChild("food", "ydt.leafreftest"); - ydtBuilder.addLeaf("pretzel", null, "yang"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - LeafreftestOpParam leafreftestOpParam = ((LeafreftestOpParam) - yangObject); - Sportsarena sportsArena = ((Sportsarena) leafreftestOpParam.food() - .snack()); - assertThat(sportsArena.pretzel().toString(), is("yang")); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobListTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobListTest.java deleted file mode 100644 index 1c32f86cb4..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobListTest.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -public class YobListTest { - - @Test - public void listwithoutcontainerTest() { - YangRequestWorkBench defaultYdtBuilder = - YdtTestUtils.listWithoutContainerYdt(); - validateYangObjectList(defaultYdtBuilder); - } - - private void validateYangObjectList( - YangRequestWorkBench defaultYdtBuilder) { - - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils. - getSchemaRegistry()); - assertNotNull(yangObject); - assertTrue("RootlistOpParam".equals(yangObject.getClass().getSimpleName())); - try { - - Field field = - yangObject.getClass().getDeclaredField("listwithcontainer"); - field.setAccessible(true); - List listwithcontainer = (List) field.get(yangObject); - assertNull(listwithcontainer); - Field field1 = yangObject.getClass() - .getDeclaredField("listwithoutcontainer"); - field1.setAccessible(true); - List listwithoutcontainer = (List) field1.get(yangObject); - assertEquals(false, listwithoutcontainer.isEmpty()); - Field invalidinterval = listwithoutcontainer.get(0).getClass() - .getDeclaredField("invalidinterval"); - invalidinterval.setAccessible(true); - assertEquals("12", invalidinterval.get(listwithoutcontainer.get(0)) - .toString()); - } catch (NoSuchFieldException | IllegalAccessException e) { - Assert.fail(); - } - } - - @Test - public void listwithcontainerTest() - throws IOException { - YangRequestWorkBench defaultYdtBuilder = - YdtTestUtils.listWithContainerYdt(); - - validateYangObject(defaultYdtBuilder); - } - - public void validateYangObject(YangRequestWorkBench defaultYdtBuilder) { - - YdtContext ydtContext = defaultYdtBuilder.getRootNode(); - - YdtContext ydtContext1 = ydtContext.getFirstChild(); - - DefaultYobBuilder defaultYobBuilder = new DefaultYobBuilder(); - - Object yangObject = defaultYobBuilder.getYangObject( - (YdtExtendedContext) ydtContext1, YdtTestUtils - .getSchemaRegistry()); - assertNotNull(yangObject); - assertTrue("RootlistOpParam".equals(yangObject.getClass().getSimpleName())); - try { - - Field field = yangObject.getClass() - .getDeclaredField("listwithoutcontainer"); - field.setAccessible(true); - List listwithoutcontainer = (List) field.get(yangObject); - assertNull(listwithoutcontainer); - Field listwithcontainerField = - yangObject.getClass().getDeclaredField("listwithcontainer"); - listwithcontainerField.setAccessible(true); - List listwithcontainer = - (List) listwithcontainerField.get(yangObject); - Field invalid = listwithcontainer.get(0).getClass() - .getDeclaredField("invalid"); - invalid.setAccessible(true); - assertEquals("12", - invalid.get(listwithcontainer.get(0)).toString()); - Field invalidinterval = listwithcontainer.get(0).getClass() - .getDeclaredField("invalidinterval"); - invalidinterval.setAccessible(true); - List invalidintervalList = - (List) invalidinterval.get(listwithcontainer.get(0)); - assertEquals("1", invalidintervalList.get(0).toString()); - assertEquals("2", invalidintervalList.get(1).toString()); - } catch (NoSuchFieldException | IllegalAccessException e) { - Assert.fail(); - } - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLogisticsManagerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLogisticsManagerTest.java deleted file mode 100644 index ec1f14c407..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLogisticsManagerTest.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Assert; -import org.junit.Test; -import org.onosproject.yms.app.ydt.YdtTestUtils; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.ArrayList; - -import static org.junit.Assert.assertEquals; - -public class YobLogisticsManagerTest { - - @Test - public void logisticsManagerTest() throws IOException { - YangRequestWorkBench defaultYdtBuilder = YdtTestUtils - .logisticsManagerYdt(); - - YdtContext rootCtx = defaultYdtBuilder.getRootNode(); - - YdtContext childCtx = rootCtx.getFirstChild(); - - DefaultYobBuilder builder = new DefaultYobBuilder(); - - while (childCtx != null) { - - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, YdtTestUtils - .getSchemaRegistry()); - Class aClass = yangObject.getClass(); - if ("CustomssupervisorOpParam".equals(aClass.getSimpleName())) { - try { - Field field = aClass.getDeclaredField("supervisor"); - Field onosYangNodeOperationType = aClass - .getDeclaredField("yangCustomssupervisorOpType"); - field.setAccessible(true); - onosYangNodeOperationType.setAccessible(true); - try { - assertEquals("abc", field.get(yangObject).toString()); - assertEquals("MERGE", onosYangNodeOperationType - .get(yangObject).toString()); - } catch (IllegalAccessException e) { - Assert.fail(); - } - } catch (NoSuchFieldException e) { - Assert.fail(); - } - } - - if ("MerchandisersupervisorOpParam".equals(aClass.getSimpleName())) { - try { - Field field = aClass.getDeclaredField("supervisor"); - field.setAccessible(true); - try { - assertEquals("abc", field.get(yangObject).toString()); - } catch (IllegalAccessException e) { - Assert.fail(); - } - } catch (NoSuchFieldException e) { - Assert.fail(); - } - } - - if ("WarehousesupervisorOpParam".equals(aClass.getSimpleName())) { - try { - Field field = aClass.getDeclaredField("supervisor"); - field.setAccessible(true); - try { - ArrayList arrayList = - (ArrayList) field.get(yangObject); - assertEquals("1", arrayList.get(0)); - assertEquals("2", arrayList.get(1)); - assertEquals("3", arrayList.get(2)); - assertEquals("4", arrayList.get(3)); - assertEquals("5", arrayList.get(4)); - } catch (IllegalAccessException e) { - Assert.fail(); - } - } catch (NoSuchFieldException e) { - Assert.fail(); - } - } - childCtx = childCtx.getNextSibling(); - } - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobTestUtils.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobTestUtils.java deleted file mode 100644 index 6ec1517493..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobTestUtils.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.yms.app.yob; - -import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider; -import org.onosproject.yms.app.ysr.YangSchemaRegistry; - -/** - * YOB test Utility. - */ -final class YobTestUtils { - - /** - * Schema nodes. - */ - static final String ROOT_DATA_RESOURCE = "/restconf/data"; - static final String TOPOLOGY = "yms-topology"; - static final String NODE = "node"; - static final String LEAF_1A1 = "leaf1a1"; - static final String LEAF_1A2 = "leaf1a2"; - static final String LEAF_1BIA = "leaf1bia"; - static final String LEAF_1BIB = "leaf1bib"; - static final String ROUTER_ID = "router-id"; - static final String ROUTER_IP = "router-ip"; - static final String STR_LEAF_VALUE = "leaf value"; - static final String YMS_IETF_NETWORK = "yms-ietf-network"; - static final String NETWORKS_STATE = "networks-state"; - static final String NETWORKS = "networks"; - static final String NETWORK = "network"; - static final String NETWORK_REF = "network-ref"; - static final String IETF_TE_TOPOLOGY = "yms-ietf-te-topology"; - static final String TE_NODE_EVENT = "te-node-event"; - static final String TE_NODE_ATTRIBUTES = "te-node-attributes"; - static final String ADMIN_STATUS = "admin-status"; - static final String UP = "up"; - static final String LINK = "link"; - static final String YMS_NETWORK_TOPOLOGY = "yms-network-topology"; - static final String TE = "te"; - static final String CONFIG = "config"; - static final String BUNDLED_LINKS = "bundled-links"; - static final String BUNDLED_LINK = "bundled-link"; - static final String SEQUENCE = "sequence"; - static final String TE_LINK_TEMPLATE = "te-link-template"; - - private YobTestUtils() { - TEST_SCHEMA_PROVIDER.processSchemaRegistry(null); - } - - private static final TestYangSchemaNodeProvider - TEST_SCHEMA_PROVIDER = new TestYangSchemaNodeProvider(); - - YangSchemaRegistry schemaRegistry() { - return TEST_SCHEMA_PROVIDER.getDefaultYangSchemaRegistry(); - } - - /** - * Returns the YANG object builder factory instance. - * - * @return YANG object builder factory instance - */ - static YobTestUtils instance() { - return LazyHolder.INSTANCE; - } - - /* - * Bill Pugh Singleton pattern. INSTANCE won't be instantiated until the - * LazyHolder class is loaded via a call to the instance() method below. - */ - private static class LazyHolder { - private static final YobTestUtils INSTANCE = new YobTestUtils(); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobUnionTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobUnionTest.java deleted file mode 100644 index 729829bf45..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobUnionTest.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.yob; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.ydt.uniontest.rev20160524.UniontestOpParam; -import org.onosproject.yang.gen.v1.ydt.uniontest.rev20160524.uniontest.cont1.AugmentedCont1; -import org.onosproject.yang.gen.v1.ydt.uniontest.rev20160524.uniontest.food.snack.Sportsarena; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.ydt.YdtContext; - -import java.io.IOException; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.onosproject.yms.app.yob.YobTestUtils.ROOT_DATA_RESOURCE; - -/** - * Test the YANG object building for the YANG data tree based on the union. - */ -public class YobUnionTest { - - private YobTestUtils utils = YobTestUtils.instance(); - - @Test - public void testUnionInLeaf() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("uniontest", "ydt.uniontest"); - ydtBuilder.addChild("unionList", null); - ydtBuilder.addLeaf("id", null, "YmluYXJ5"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - UniontestOpParam unionTestOpParam = ((UniontestOpParam) yangObject); - - byte[] binaryValue = unionTestOpParam.unionList().get(0).id().binary(); - String value = new String(binaryValue); - assertThat(value, is("binary")); - } - - @Test - public void testUnionInTypedef() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("uniontest", "ydt.uniontest"); - ydtBuilder.addLeaf("name", null, "bit1"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - UniontestOpParam unionTestOpParam = ((UniontestOpParam) yangObject); - assertThat(unionTestOpParam.name().union().bits().get(1), is(true)); - } - - @Test - public void testUnionInGrouping() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("uniontest", "ydt.uniontest"); - ydtBuilder.addChild("cont1", "ydt.uniontest"); - ydtBuilder.addLeaf("surname", null, "yang"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - UniontestOpParam uniontestOpParam = ((UniontestOpParam) yangObject); - assertThat(uniontestOpParam.cont1().surname().string(), is("yang")); - } - - @Test - public void testUnionInAugment() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("uniontest", "ydt.uniontest"); - ydtBuilder.addChild("cont1", "ydt.uniontest"); - ydtBuilder.addLeaf("lastname", null, "bit0"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - UniontestOpParam uniontestOpParam = ((UniontestOpParam) yangObject); - - AugmentedCont1 augmentedCont1 = (AugmentedCont1) uniontestOpParam - .cont1().yangAugmentedInfo(AugmentedCont1.class); - assertThat(augmentedCont1.lastname().bits().get(0), is(true)); - } - - @Test - public void testUnionInCase() throws IOException { - YangRequestWorkBench ydtBuilder = new YangRequestWorkBench( - ROOT_DATA_RESOURCE, null, null, utils.schemaRegistry(), true); - ydtBuilder.addChild("uniontest", "ydt.uniontest"); - ydtBuilder.addChild("food", "ydt.uniontest"); - ydtBuilder.addLeaf("pretzel", null, "YmluYXJ5"); - ydtBuilder.traverseToParent(); - ydtBuilder.traverseToParent(); - YdtContext rootCtx = ydtBuilder.getRootNode(); - YdtContext childCtx = rootCtx.getFirstChild(); - DefaultYobBuilder builder = new DefaultYobBuilder(); - Object yangObject = builder.getYangObject( - (YdtExtendedContext) childCtx, utils.schemaRegistry()); - assertThat(yangObject, notNullValue()); - UniontestOpParam uniontestOpParam = ((UniontestOpParam) yangObject); - Sportsarena sportsArena = ((Sportsarena) uniontestOpParam.food() - .snack()); - byte[] binaryValue = sportsArena.pretzel().binary(); - String value = new String(binaryValue); - assertThat(value, is("binary")); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/DefaultYpmNodeTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/DefaultYpmNodeTest.java deleted file mode 100644 index a5f561db23..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/DefaultYpmNodeTest.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ypm; - -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.nullValue; - -import org.onosproject.yms.ypm.YpmContext; -import org.onosproject.yms.ypm.DefaultYpmNode; - -/** - * Unit tests for DefaultYpmNode class. - */ -public class DefaultYpmNodeTest { - private final String logicalName = "logicalYpmNode"; - private final String moduleName1 = "portPairModule1"; - private final String moduleName2 = "portPairModule2"; - private final String xNodeName = "x"; - private final String yNodeName = "y"; - private final String zNodeName = "z"; - private final String x1NodeName = "x1"; - private final String x2NodeName = "x2"; - private final String y1NodeName = "y1"; - private final String y2NodeName = "y2"; - private final String z1NodeName = "z1"; - private final String z2NodeName = "z2"; - - /** - * Constructs ypm tree with single module. - * - * @return ypm tree root node - */ - private YpmContext constructYpmTreeSingleModule() { - // Create logical node - DefaultYpmNode rootNode = new DefaultYpmNode(logicalName); - // Create module node with moduleName1 - rootNode.addChild(moduleName1); // child to logical node - YpmContext moduleNode = rootNode.getChild(moduleName1); - moduleNode.addChild(xNodeName); // child to module node - moduleNode.addChild(yNodeName); // sibling node to child node "x" - YpmContext xNode = moduleNode.getChild("x"); - xNode.addSibling(zNodeName); // sibling node to child node "x" - xNode.addChild(x1NodeName); // child to node x - xNode.addChild(x2NodeName); // child to node x - YpmContext yNode = moduleNode.getChild(yNodeName); - yNode.addChild(y1NodeName); // child to node y - yNode.addChild(y2NodeName); // child to node y - YpmContext zNode = moduleNode.getChild(zNodeName); - zNode.addChild(z1NodeName); // child to node z - zNode.addChild(z2NodeName); // child to node z - return rootNode; - } - - /** - * Constructs ypm tree with multi module. - * - * @return ypm tree root node - */ - private YpmContext constructYpmTreeMultiModule(DefaultYpmNode rootNode) { - rootNode.addChild(moduleName2); // child to logical node - YpmContext moduleNode = rootNode.getChild(moduleName2); - moduleNode.addChild(xNodeName); // child to module node - moduleNode.addChild(yNodeName); // sibling node to child node "x" - YpmContext xNode = moduleNode.getChild("x"); - xNode.addSibling(zNodeName); // sibling node to child node "x" - xNode.addChild(x1NodeName); // child to node x - xNode.addChild(x2NodeName); // child to node x - YpmContext yNode = moduleNode.getChild(yNodeName); - yNode.addChild(y1NodeName); // child to node y - yNode.addChild(y2NodeName); // child to node y - YpmContext zNode = moduleNode.getChild(zNodeName); - zNode.addChild(z1NodeName); // child to node z - zNode.addChild(z2NodeName); // child to node z - return rootNode; - } - - /** - * Checks ypm tree single module construction. - */ - @Test - public void testYpmTreeSingleModuleConstruction() { - DefaultYpmNode rootNode = (DefaultYpmNode) constructYpmTreeSingleModule(); - // Check one by one node - String name = rootNode.getName(); - assertThat(name, is(logicalName)); - YpmContext moduleNode = rootNode.getChild(moduleName1); - assertThat(moduleNode.getName(), is(moduleName1)); - YpmContext ypmNode = moduleNode.getChild(xNodeName); - assertThat(ypmNode.getName(), is(xNodeName)); - // Check sibling by using getNextSibling(); - ypmNode = ypmNode.getNextSibling(); - assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling - ypmNode = ypmNode.getNextSibling(); - assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling - ypmNode = ypmNode.getNextSibling(); - assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null - // Check sibling by using getPreviousSibling() - ypmNode = moduleNode.getChild(zNodeName); - assertThat(ypmNode.getName(), is(zNodeName)); - ypmNode = ypmNode.getPreviousSibling(); - assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling - ypmNode = ypmNode.getPreviousSibling(); - assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling - ypmNode = ypmNode.getPreviousSibling(); - assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null - // Checks the child x1 and x2 - ypmNode = moduleNode.getChild(xNodeName); - ypmNode = ypmNode.getChild(x1NodeName); - assertThat(ypmNode.getName(), is(x1NodeName)); - ypmNode = ypmNode.getSibling(x2NodeName); - assertThat(ypmNode.getName(), is(x2NodeName)); - // Checks the child y1 and y2 - ypmNode = moduleNode.getChild(yNodeName); - ypmNode = ypmNode.getChild(y1NodeName); - assertThat(ypmNode.getName(), is(y1NodeName)); - ypmNode = ypmNode.getSibling(y2NodeName); - assertThat(ypmNode.getName(), is(y2NodeName)); - // Checks the child z1 and z2 - ypmNode = moduleNode.getChild(zNodeName); - ypmNode = ypmNode.getChild(z1NodeName); - assertThat(ypmNode.getName(), is(z1NodeName)); - ypmNode = ypmNode.getSibling(z2NodeName); - assertThat(ypmNode.getName(), is(z2NodeName)); - } - - /** - * Checks ypm tree multiple module construction. - */ - @Test - public void testYpmTreeMultiModuleConstruction() { - DefaultYpmNode rootNode = (DefaultYpmNode) constructYpmTreeSingleModule(); - rootNode = (DefaultYpmNode) constructYpmTreeMultiModule(rootNode); - // Check one by one node - String name = rootNode.getName(); - assertThat(name, is(logicalName)); - YpmContext moduleNode = rootNode.getChild(moduleName2); - assertThat(moduleNode.getName(), is(moduleName2)); - YpmContext ypmNode = moduleNode.getChild(xNodeName); - assertThat(ypmNode.getName(), is(xNodeName)); - // Check sibling by using getNextSibling(); - ypmNode = ypmNode.getNextSibling(); - assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling - ypmNode = ypmNode.getNextSibling(); - assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling - ypmNode = ypmNode.getNextSibling(); - assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null - // Check sibling by using getPreviousSibling() - ypmNode = moduleNode.getChild(zNodeName); - assertThat(ypmNode.getName(), is(zNodeName)); - ypmNode = ypmNode.getPreviousSibling(); - assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling - ypmNode = ypmNode.getPreviousSibling(); - assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling - ypmNode = ypmNode.getPreviousSibling(); - assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null - // Checks the child x1 and x2 - ypmNode = moduleNode.getChild(xNodeName); - ypmNode = ypmNode.getChild(x1NodeName); - assertThat(ypmNode.getName(), is(x1NodeName)); - ypmNode = ypmNode.getSibling(x2NodeName); - assertThat(ypmNode.getName(), is(x2NodeName)); - // Checks the child y1 and y2 - ypmNode = moduleNode.getChild(yNodeName); - ypmNode = ypmNode.getChild(y1NodeName); - assertThat(ypmNode.getName(), is(y1NodeName)); - ypmNode = ypmNode.getSibling(y2NodeName); - assertThat(ypmNode.getName(), is(y2NodeName)); - // Checks the child z1 and z2 - ypmNode = moduleNode.getChild(zNodeName); - ypmNode = ypmNode.getChild(z1NodeName); - assertThat(ypmNode.getName(), is(z1NodeName)); - ypmNode = ypmNode.getSibling(z2NodeName); - assertThat(ypmNode.getName(), is(z2NodeName)); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YdtNodeAdapter.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YdtNodeAdapter.java deleted file mode 100644 index a5b65560d1..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YdtNodeAdapter.java +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ypm; - -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier; -import org.onosproject.yms.app.ydt.AppType; -import org.onosproject.yms.app.ydt.YdtExtendedContext; -import org.onosproject.yms.app.ydt.YdtNode; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtContextOperationType; -import org.onosproject.yms.ydt.YdtExtendedInfoType; -import org.onosproject.yms.ydt.YdtType; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * Represents implementation of interfaces to build and obtain YANG data tree. - */ -public class YdtNodeAdapter implements YdtExtendedContext { - - /** - * Parent reference. - */ - private YdtNodeAdapter parent; - - /** - * First child reference. - */ - private YdtNodeAdapter child; - - /** - * Next sibling reference. - */ - private YdtNodeAdapter nextSibling; - - /** - * Previous sibling reference. - */ - private YdtNodeAdapter previousSibling; - - /** - * Last child reference. - */ - private YdtNode lastChild; - - /** - * Type of node. - */ - private YdtType ydtType; - - /** - * Flag to keep the track of context switch. - */ - private boolean isContextSwitch; - - private T ydtExtendedInfo; - - /** - * YDT extended information type. - */ - YdtExtendedInfoType ydtExtendedInfoType; - - /** - * Ydt map to keep the track of node added in YDT. - */ - private Map>> ydtNodeMap = new HashMap<>(); - - /** - * Reference for data-model schema node. - */ - private YangSchemaNode yangSchemaNode; - - /** - * Reference for ydt node operation type. - */ - private YdtContextOperationType ydtContextOperationType; - - /** - * Key object for ydtNodeMap. - */ - protected YangSchemaNodeIdentifier nodeIdentifier; - - /** - * Ydt map to keep the track of application information object with respective type. - */ - Map ydtAppInfoMap = new HashMap<>(); - - - /** - * Creation of YANG node object. - */ - public YdtNodeAdapter() { - } - - /** - * Creates a specific type of node. - * - * @param type of YDT node - * @param name name of the YDT node - */ - public YdtNodeAdapter(YdtType type, String name) { - setYdtType(type); - } - - @Override - public String getName() { - return this.nodeIdentifier.getName(); - } - - @Override - public String getNamespace() { - return yangSchemaNode.getNameSpace().getModuleNamespace(); - } - - @Override - public String getModuleNameAsNameSpace() { - return null; - } - - @Override - public T getYdtContextExtendedInfo() { - return (T) ydtExtendedInfo; - } - - @Override - public YdtExtendedInfoType getYdtExtendedInfoType() { - return ydtExtendedInfoType; - } - - @Override - public YdtType getYdtType() { - return ydtType; - } - - /** - * Sets the node type. - * - * @param ydtType type of YDT attribute - */ - public void setYdtType(YdtType ydtType) { - this.ydtType = ydtType; - } - - @Override - public YdtNodeAdapter getParent() { - return parent; - } - - /** - * Sets the parent of node. - * - * @param parent node - */ - public void setParent(YdtNodeAdapter parent) { - this.parent = parent; - } - - @Override - public YdtNodeAdapter getFirstChild() { - return child; - } - - @Override - public YdtNodeAdapter getNextSibling() { - return nextSibling; - } - - /** - * Sets the next sibling of node. - * - * @param sibling YANG node - */ - public void setNextSibling(YdtNodeAdapter sibling) { - nextSibling = sibling; - } - - @Override - public YdtNodeAdapter getPreviousSibling() { - return previousSibling; - } - - /** - * Sets the previous sibling. - * - * @param previousSibling points to predecessor sibling - */ - public void setPreviousSibling(YdtNodeAdapter previousSibling) { - this.previousSibling = previousSibling; - } - - /** - * Returns data-model node reference for of a given node. - * - * @return yang schema data node of a data-model. - */ - public YangSchemaNode getYangSchemaNode() { - return yangSchemaNode; - } - - /** - * Sets the data-model node reference for of a given node.. - * - * @param yangSchemaNode YANG data node. - */ - public void setYangSchemaNode(YangSchemaNode yangSchemaNode) { - this.yangSchemaNode = yangSchemaNode; - } - - @Override - public YdtNode getLastChild() { - return lastChild; - } - - /** - * Sets the last instance of a child node. - * - * @param child is last child to be set - */ - public void setLastChild(YdtNode child) { - this.lastChild = child; - } - - public void setNodeIdentifier(YangSchemaNodeIdentifier nodeIdentifier) { - this.nodeIdentifier = nodeIdentifier; - } - - /** - * Adds a child node. - * - * @param newChild refers to a child to be added - */ - public void addChild(YdtContext newChild) { - - ((YdtNodeAdapter) newChild).setParent(this); - - if (this.child == null) { - this.child = (YdtNodeAdapter) newChild; - return; - } - - YdtNodeAdapter currNode = this.child; - while (currNode.getNextSibling() != null) { - currNode = currNode.getNextSibling(); - } - currNode.setNextSibling((YdtNodeAdapter) newChild); - ((YdtNodeAdapter) newChild).setPreviousSibling(currNode); - } - - /** - * Adds a sibling to YANG data tree. - * - * @param newSibling context of sibling to be added - */ - public void addSibling(YdtContext newSibling) { - - ((YdtNodeAdapter) newSibling).setParent(this.getParent()); - - YdtNodeAdapter currNode = this; - - while (currNode.getNextSibling() != null) { - currNode = currNode.getNextSibling(); - } - currNode.setNextSibling((YdtNodeAdapter) newSibling); - ((YdtNodeAdapter) newSibling).setPreviousSibling(currNode); - } - - /** - * Gets the flag for node if context switch. - * - * @return isContextSwitch flag of a node. - */ - public boolean getContextSwitch() { - return isContextSwitch; - } - - /** - * Sets the flag to keep the track of context switch. - * - * @param contextSwitch boolean flag. - */ - public void setContextSwitch(boolean contextSwitch) { - isContextSwitch = contextSwitch; - } - - @Override - public String getValue() { - return null; - } - - @Override - public Set getValueSet() { - return null; - } - - @Override - public Object getAppInfo(AppType appType) { - return null; - } - - @Override - public void addAppInfo(AppType appType, Object object) { - - } - - @Override - public YdtContextOperationType getYdtContextOperationType() { - return ydtContextOperationType; - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YpmManagerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YpmManagerTest.java deleted file mode 100644 index d9ebca758f..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ypm/YpmManagerTest.java +++ /dev/null @@ -1,492 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ypm; - -import org.junit.Test; -import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier; -import org.onosproject.yms.ypm.DefaultYpmNode; -import org.onosproject.yms.ypm.YpmContext; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.nullValue; - -/** - * Unit tests for YpmManager class. - */ -public class YpmManagerTest { - private final String logicalName = "logicalYpmNode"; - private final String moduleName1 = "portPairModule1"; - private final String moduleName2 = "portPairModule2"; - private final String xNodeName = "x"; - private final String yNodeName = "y"; - private final String zNodeName = "z"; - private final String x1NodeName = "x1"; - private final String x2NodeName = "x2"; - private final String y1NodeName = "y1"; - private final String y2NodeName = "y2"; - private final String y11NodeName = "y11"; - private final String z1NodeName = "z1"; - private final String z2NodeName = "z2"; - private final String z3NodeName = "z3"; - - /** - * Creates module1 ydt tree. - */ - public YdtNodeAdapter createModule1Tree() throws CloneNotSupportedException { - YangSchemaNodeIdentifier tmpNodeIdentifier; - YdtNodeAdapter rootNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(logicalName); - rootNode.setNodeIdentifier(tmpNodeIdentifier); - - // Create module node with moduleName1 - YdtNodeAdapter moduleNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(moduleName1); - moduleNode.setNodeIdentifier(tmpNodeIdentifier); - moduleNode.setParent(rootNode); - rootNode.addChild(moduleNode); // child to logical node - YdtNodeAdapter xNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(xNodeName); - xNode.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter yNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(yNodeName); - yNode.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter zNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(zNodeName); - zNode.setNodeIdentifier(tmpNodeIdentifier); - moduleNode.addChild(xNode); // child to module node - xNode.addSibling(yNode); - yNode.addSibling(zNode); - YdtNodeAdapter x1Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(x1NodeName); - x1Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter x2Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(x2NodeName); - x2Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter y1Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(y1NodeName); - y1Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter y2Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(y2NodeName); - y2Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter z1Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(z1NodeName); - z1Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter z2Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(z2NodeName); - z2Node.setNodeIdentifier(tmpNodeIdentifier); - xNode.addChild(x1Node); - x1Node.addSibling(x2Node); - yNode.addChild(y1Node); - y1Node.addSibling(y2Node); - zNode.addChild(z1Node); - z1Node.addSibling(z2Node); - - return rootNode; - } - - /** - * Checks the protocol data added in YpmManger when only single module exists. - */ - @Test - public void retrieveAndCheckProtocolDataWhenSingleModule() throws CloneNotSupportedException { - YdtNodeAdapter rootNode = createModule1Tree(); - - YpmManager ypmManager = new YpmManager(); - Object metaData = 10; - ypmManager.setProtocolData(rootNode, metaData); - YpmContext ypmContext = ypmManager.getProtocolData(rootNode); - DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext; - assertThat(rootYpmNode.getName(), is(logicalName)); - DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(moduleName1)); - currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(xNodeName)); // x node - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), nullValue()); // no sibling - - // Check x node leaf's x1 and x2 - DefaultYpmNode moduleYpmNode = currYpmNode.getParent(); - assertThat(moduleYpmNode.getName(), is(moduleName1)); - DefaultYpmNode xYpmNode = (DefaultYpmNode) moduleYpmNode.getFirstChild(); - assertThat(xYpmNode.getName(), is(xNodeName)); - assertThat(xYpmNode.getMetaData(), is(metaData)); - // Check x1 node - currYpmNode = (DefaultYpmNode) xYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(x1NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - // Check x2 node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getName(), is(x2NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - - // Check y node leaf's y1 and y2 - DefaultYpmNode yYpmNode = xYpmNode.getNextSibling(); - assertThat(yYpmNode.getName(), is(yNodeName)); - assertThat(yYpmNode.getMetaData(), is(metaData)); - // Check y1 node - currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(y1NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - // Check y2 node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getName(), is(y2NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - - // Check z node leaf's z1 and z2 - DefaultYpmNode zYpmNode = yYpmNode.getNextSibling(); - assertThat(zYpmNode.getName(), is(zNodeName)); - assertThat(zYpmNode.getMetaData(), is(metaData)); - // Check z1 node - currYpmNode = (DefaultYpmNode) zYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(z1NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - // Check z2 node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getName(), is(z2NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - } - - /** - * Creates module2 ydt tree. Module1 and Module2 trees are point to same logical root. - */ - public YdtNodeAdapter createModule2Tree() throws CloneNotSupportedException { - YangSchemaNodeIdentifier tmpNodeIdentifier; - YdtNodeAdapter rootNode = createModule1Tree(); - YdtNodeAdapter moduleNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(moduleName2); - moduleNode.setNodeIdentifier(tmpNodeIdentifier); - moduleNode.setParent(rootNode); - rootNode.addChild(moduleNode); // child to logical node - YdtNodeAdapter xNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(xNodeName); - xNode.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter yNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(yNodeName); - yNode.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter zNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(zNodeName); - zNode.setNodeIdentifier(tmpNodeIdentifier); - moduleNode.addChild(xNode); // child to module node - xNode.addSibling(yNode); - yNode.addSibling(zNode); - YdtNodeAdapter x1Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(x1NodeName); - x1Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter x2Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(x2NodeName); - x2Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter y1Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(y1NodeName); - y1Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter y2Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(y2NodeName); - y2Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter z1Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(z1NodeName); - z1Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter z2Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(z2NodeName); - z2Node.setNodeIdentifier(tmpNodeIdentifier); - xNode.addChild(x1Node); - x1Node.addSibling(x2Node); - yNode.addChild(y1Node); - y1Node.addSibling(y2Node); - zNode.addChild(z1Node); - z1Node.addSibling(z2Node); - - return rootNode; - } - - /** - * Checks the protocol data added in YpmManger when multiple modules exists. - */ - @Test - public void retrieveAndCheckProtocolDataWhenMultipleModule() throws CloneNotSupportedException { - YdtNodeAdapter rootNode = createModule2Tree(); - - YpmManager ypmManager = new YpmManager(); - Object metaData = 10; - ypmManager.setProtocolData(rootNode, metaData); - YpmContext ypmContext = ypmManager.getProtocolData(rootNode); - DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext; - assertThat(rootYpmNode.getName(), is(logicalName)); - DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild(); - currYpmNode = currYpmNode.getNextSibling(); // jump to next module (module2) - assertThat(currYpmNode.getName(), is(moduleName2)); - currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(xNodeName)); // x node - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), nullValue()); // no sibling - - // Check x node leaf's x1 and x2 - DefaultYpmNode moduleYpmNode = currYpmNode.getParent(); - assertThat(moduleYpmNode.getName(), is(moduleName2)); - DefaultYpmNode xYpmNode = (DefaultYpmNode) moduleYpmNode.getFirstChild(); - assertThat(xYpmNode.getName(), is(xNodeName)); - assertThat(xYpmNode.getMetaData(), is(metaData)); - // Check x1 node - currYpmNode = (DefaultYpmNode) xYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(x1NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - // Check x2 node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getName(), is(x2NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - - // Check y node leaf's y1 and y2 - DefaultYpmNode yYpmNode = xYpmNode.getNextSibling(); - assertThat(yYpmNode.getName(), is(yNodeName)); - assertThat(yYpmNode.getMetaData(), is(metaData)); - // Check y1 node - currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(y1NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - // Check y2 node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getName(), is(y2NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - - // Check z node leaf's z1 and z2 - DefaultYpmNode zYpmNode = yYpmNode.getNextSibling(); - assertThat(zYpmNode.getName(), is(zNodeName)); - assertThat(zYpmNode.getMetaData(), is(metaData)); - // Check z1 node - currYpmNode = (DefaultYpmNode) zYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(z1NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - // Check z2 node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getName(), is(z2NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - } - - /** - * Checks the protocol data added in YpmManger, but tests only part of module1 tree. - */ - @Test - public void retrieveAndCheckProtocolDataChosenFromPartOfModule1Tree() throws CloneNotSupportedException { - YangSchemaNodeIdentifier tmpNodeIdentifier; - YdtNodeAdapter rootNode = createModule2Tree(); - - // Sets the tree - YpmManager ypmManager = new YpmManager(); - Object metaData = 10; - ypmManager.setProtocolData(rootNode, metaData); - - // Create new ydt tree part of module1 tree - YdtNodeAdapter rootNewYdtNode = new YdtNodeAdapter(); - // Create module node with moduleName1 - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(logicalName); - rootNewYdtNode.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter moduleNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(moduleName1); - moduleNode.setNodeIdentifier(tmpNodeIdentifier); - moduleNode.setParent(rootNewYdtNode); - rootNewYdtNode.addChild(moduleNode); // child to logical node - YdtNodeAdapter yNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(yNodeName); - yNode.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter zNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(zNodeName); - zNode.setNodeIdentifier(tmpNodeIdentifier); - moduleNode.addChild(yNode); // child to module node - yNode.addSibling(zNode); - YdtNodeAdapter y1Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(y1NodeName); - y1Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter y2Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(y2NodeName); - y2Node.setNodeIdentifier(tmpNodeIdentifier); - yNode.addChild(y1Node); - y1Node.addSibling(y2Node); - - // Again sets the protocol data - metaData = 20; - ypmManager.setProtocolData(rootNewYdtNode, metaData); - - // Retrieve protocol data and check the contents - YpmContext ypmContext = ypmManager.getProtocolData(rootNewYdtNode); - DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext; - assertThat(rootYpmNode.getName(), is(logicalName)); - DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(moduleName1)); - // Check y and z node - currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild(); - DefaultYpmNode yYpmNode = currYpmNode; - assertThat(currYpmNode.getName(), is(yNodeName)); // x node - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), notNullValue()); // z node - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getName(), is(zNodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), nullValue()); // no sibling - // Check y1 and y2 node - currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(y1NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), notNullValue()); // y2 should exists - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getName(), is(y2NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), nullValue()); - } - - /** - * Checks the protocol data added in YpmManger, but tests part of module1 tree with little bit extended tree. - */ - @Test - public void retrieveAndCheckProtocolDataChosenFromPartOfModule1TreeWithExtended() - throws CloneNotSupportedException { - YangSchemaNodeIdentifier tmpNodeIdentifier; - YdtNodeAdapter rootNode = createModule2Tree(); - - // Sets the tree - YpmManager ypmManager = new YpmManager(); - Object metaData = 10; - ypmManager.setProtocolData(rootNode, metaData); - - // Create new ydt tree part of module1 tree - YdtNodeAdapter rootNewYdtNode = new YdtNodeAdapter(); - // Create module node with moduleName1 - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(logicalName); - rootNewYdtNode.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter moduleNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(moduleName1); - moduleNode.setNodeIdentifier(tmpNodeIdentifier); - moduleNode.setParent(rootNewYdtNode); - rootNewYdtNode.addChild(moduleNode); // child to logical node - YdtNodeAdapter yNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(yNodeName); - yNode.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter zNode = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(zNodeName); - zNode.setNodeIdentifier(tmpNodeIdentifier); - moduleNode.addChild(yNode); // child to module node - yNode.addSibling(zNode); - YdtNodeAdapter y1Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(y1NodeName); - y1Node.setNodeIdentifier(tmpNodeIdentifier); - YdtNodeAdapter y2Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(y2NodeName); - y2Node.setNodeIdentifier(tmpNodeIdentifier); - yNode.addChild(y1Node); - y1Node.addSibling(y2Node); - YdtNodeAdapter y11Node = new YdtNodeAdapter(); - // Add new y11 node - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(y11NodeName); - y11Node.setNodeIdentifier(tmpNodeIdentifier); - y1Node.addChild(y11Node); - // Add new y3 node - YdtNodeAdapter z3Node = new YdtNodeAdapter(); - tmpNodeIdentifier = new YangSchemaNodeIdentifier(); - tmpNodeIdentifier.setName(z3NodeName); - z3Node.setNodeIdentifier(tmpNodeIdentifier); - zNode.addChild(z3Node); - - // Again sets the protocol data - metaData = 20; - ypmManager.setProtocolData(rootNewYdtNode, metaData); - - // Retrieve protocol data and check the contents - YpmContext ypmContext = ypmManager.getProtocolData(rootNewYdtNode); - DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext; - assertThat(rootYpmNode.getName(), is(logicalName)); - DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(moduleName1)); - // Check y and z node - currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild(); - DefaultYpmNode yYpmNode = currYpmNode; - assertThat(currYpmNode.getName(), is(yNodeName)); // y node - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), notNullValue()); // z node - currYpmNode = currYpmNode.getNextSibling(); - DefaultYpmNode zYpmNode = currYpmNode; - assertThat(currYpmNode.getName(), is(zNodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), nullValue()); // no sibling - // Check y1 and y2 node - currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild(); - DefaultYpmNode y1YpmNode = currYpmNode; - assertThat(currYpmNode.getName(), is(y1NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), notNullValue()); // y2 should exists - currYpmNode = currYpmNode.getNextSibling(); - assertThat(currYpmNode.getName(), is(y2NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), nullValue()); - // Check new y11 node - currYpmNode = (DefaultYpmNode) y1YpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(y11NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), nullValue()); - assertThat(currYpmNode.getFirstChild(), nullValue()); - // Check new z3 node - currYpmNode = (DefaultYpmNode) zYpmNode.getFirstChild(); - assertThat(currYpmNode.getName(), is(z3NodeName)); - assertThat(currYpmNode.getMetaData(), is(metaData)); - assertThat(currYpmNode.getNextSibling(), nullValue()); - assertThat(currYpmNode.getFirstChild(), nullValue()); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistryTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistryTest.java deleted file mode 100644 index 9e40b390f0..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistryTest.java +++ /dev/null @@ -1,704 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ysr; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network1.rev20151208.IetfNetwork1Service; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2Service; -import org.onosproject.yang.gen.v1.ydt.test.rev20160524.TestService; -import org.onosproject.yangutils.datamodel.YangNode; -import org.onosproject.yangutils.datamodel.YangRevision; -import org.onosproject.yangutils.datamodel.YangSchemaNode; -import org.onosproject.yms.app.yab.TestManager; - -import java.io.IOException; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; - -/** - * Unit test case for default schema registry. - */ -public class DefaultYangSchemaRegistryTest { - - private static final String SERVICE_NAME_1 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network1.rev20151208.IetfNetwork1Service"; - private static final String SCHEMA_NAME_1 = "ietf-network1"; - private static final String EVENT_NAME_1 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network1.rev20151208.ietfnetwork1.IetfNetwork1Event"; - private static final String INTERFACE_NAME_1 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network1.rev20151208.IetfNetwork1"; - private static final String OP_PARAM_NAME_1 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network1.rev20151208.IetfNetwork1OpParam"; - - private static final String SERVICE_NAME_2 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network2.rev20151208.IetfNetwork2Service"; - private static final String SCHEMA_NAME_2 = "ietf-network2"; - private static final String EVENT_NAME_2 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network2.rev20151208.ietfnetwork2.IetfNetwork2Event"; - private static final String INTERFACE_NAME_2 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network2.rev20151208.IetfNetwork2"; - private static final String OP_PARAM_NAME_2 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network2.rev20151208.IetfNetwork2OpParam"; - - private static final String SERVICE_NAME_3 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network3.rev20151208.IetfNetwork3Service"; - private static final String SCHEMA_NAME_3 = "ietf-network3"; - private static final String EVENT_NAME_3 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network3.rev20151208.ietfnetwork3.IetfNetwork3Event"; - private static final String INTERFACE_NAME_3 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network3.rev20151208.IetfNetwork3"; - private static final String OP_PARAM_NAME_3 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network3.rev20151208.IetfNetwork3OpParam"; - - private static final String SCHEMA_NAME_4_14 = "ietf-network4@2014-00-08"; - private static final String SCHEMA_NAME_4_15 = "ietf-network4@2015-00-08"; - private static final String SCHEMA_NAME_4_16 = "ietf-network4@2016-00-08"; - private static final String SCHEMA_NAME_4_17 = "ietf-network4@2017-00-08"; - private static final String SCHEMA_NAME_4 = "ietf-network4"; - private static final String SERVICE_NAME_REV_14 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20141208.IetfNetwork4Service"; - private static final String EVENT_NAME_REV_14 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20141208.ietfnetwork4.IetfNetwork4Event"; - private static final String INTERFACE_NAME_REV_14 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20141208.IetfNetwork4"; - private static final String OP_PARAM_NAME_REV_14 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20141208.IetfNetwork4OpParam"; - - private static final String SERVICE_NAME_REV_15 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20151208.IetfNetwork4Service"; - private static final String EVENT_NAME_REV_15 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20151208.ietfnetwork4.IetfNetwork4Event"; - private static final String INTERFACE_NAME_REV_15 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20151208.IetfNetwork4"; - private static final String OP_PARAM_NAME_REV_15 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20151208.IetfNetwork4OpParam"; - - private static final String SERVICE_NAME_REV_16 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20161208.IetfNetwork4Service"; - - private static final String EVENT_NAME_REV_16 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20161208.ietfnetwork4.IetfNetwork4Event"; - private static final String INTERFACE_NAME_REV_16 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20161208.IetfNetwork4"; - private static final String OP_PARAM_NAME_REV_16 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20161208.IetfNetwork4OpParam"; - - private static final String SERVICE_NAME_REV_17 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20171208.IetfNetwork4Service"; - private static final String EVENT_NAME_REV_17 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20171208.ietfnetwork4.IetfNetwork4Event"; - private static final String INTERFACE_NAME_REV_17 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20171208.IetfNetwork4"; - private static final String OP_PARAM_NAME_REV_17 = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.rev20171208.IetfNetwork4OpParam"; - - private static final String SERVICE_NAME_NO_REV = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.IetfNetwork4Service"; - private static final String EVENT_NAME_NO_REV = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.ietfnetwork4.IetfNetwork4Event"; - private static final String INTERFACE_NAME_NO_REV = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.IetfNetwork4"; - private static final String OP_PARAM_NAME_NO_REV = - "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" + - ".network4.IetfNetwork4OpParam"; - - private static final String DATE = "2014-00-08"; - private static final String SCHEMA_NAME_WITH_DATE = - "ietf-network4@2014-00-08"; - - private static final String UN_REG_SCHEMA_NAME = "ietf-routing"; - private static final String UN_REG_INTERFACE_NAME = "IetfRouting"; - private static final String UN_REG_OP_PARAM_NAME = "IetfRoutingOpParam"; - private static final String UN_REG_SERVICE_NAME = "IetfRoutingService"; - private static final String UN_REG_EVENT_NAME = "IetfRoutingEvent"; - private static final String CHECK = "check"; - private static final String DATE_NAMESPACE = "2015-00-08"; - private static final String NAMESPACE = - "urn:ietf:params:xml:ns:yang:ietf-network4:check:namespace"; - - private final TestYangSchemaNodeProvider testYangSchemaNodeProvider = - new TestYangSchemaNodeProvider(); - @Rule - public ExpectedException thrown = ExpectedException.none(); - - /** - * Unit test case in which schema node should be present. - * - * @throws IOException when fails to do IO operation - */ - @Test - public void testForGetSchemaNode() - throws IOException { - - testYangSchemaNodeProvider.processSchemaRegistry(null); - - DefaultYangSchemaRegistry registry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangSchemaNode yangNode = - registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_1); - assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName()))); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_1); - assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_1); - assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_1); - assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName()))); - - yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_1); - assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName()))); - - //As we have not registered an application this object should be null. - Object object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_1); - - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_1); - assertThat(true, is(yangNode == null)); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_1); - assertThat(true, is(yangNode == null)); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_1); - assertThat(true, is(yangNode == null)); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_1); - assertThat(true, is(yangNode == null)); - - yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_1); - assertThat(true, is(yangNode == null)); - - //As we have not registered an application this object should be null. - object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - - //With second service. - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_2); - assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName()))); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_2); - assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_2); - assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_2); - assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName()))); - - yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_2); - assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName()))); - - //As we have not registered an application this object should be null. - object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - - testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_2); - - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_2); - assertThat(true, is(yangNode == null)); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_2); - assertThat(true, is(yangNode == null)); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_2); - assertThat(true, is(yangNode == null)); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_2); - assertThat(true, is(yangNode == null)); - - yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_2); - assertThat(true, is(yangNode == null)); - - //As we have not registered an application this object should be null. - object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - - //With third service. - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_3); - assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName()))); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_3); - assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_3); - assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName()))); - - yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_3); - assertThat(true, is(yangNode == null)); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_3); - assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName()))); - - //As we have not registered an application this object should be null. - object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - - testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_3); - - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_3); - assertThat(true, is(yangNode == null)); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_3); - assertThat(true, is(yangNode == null)); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_3); - assertThat(true, is(yangNode == null)); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_3); - assertThat(true, is(yangNode == null)); - - yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_3); - assertThat(true, is(yangNode == null)); - - //As we have not registered an application this object should be null. - object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - } - - /** - * Unit test case in which schema node should not be present. - * - * @throws IOException when fails to do IO operation - */ - @Test - public void testForDoNotGetSchemaNode() - throws IOException { - - DefaultYangSchemaRegistry registry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - // here all nodes should be null as we have not done any registration - // for this application. - YangSchemaNode yangNode = - registry.getYangSchemaNodeUsingAppName(UN_REG_SERVICE_NAME); - assertThat(true, is(yangNode == null)); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(UN_REG_SCHEMA_NAME); - assertThat(true, is(yangNode == null)); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - UN_REG_INTERFACE_NAME); - assertThat(true, is(yangNode == null)); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - UN_REG_OP_PARAM_NAME); - assertThat(true, is(yangNode == null)); - - yangNode = registry.getRootYangSchemaNodeForNotification( - UN_REG_EVENT_NAME); - assertThat(true, is(yangNode == null)); - - //As we have not registered an application this object should be null. - Object object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - } - - /** - * Unit test case in which schema node should be present with multi - * revisions. - * - * @throws IOException when fails to do IO operation - */ - @Test - public void testForGetSchemaNodeWhenNoRevision() - throws IOException { - - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - //Service with rev. - YangSchemaNode yangNode = - registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_15); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_REV_15); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_REV_15); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getRootYangSchemaNodeForNotification( - EVENT_NAME_REV_15); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - //As we have not registered an application this object should be null. - Object object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_15); - - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15); - assertThat(true, is(yangNode == null)); - - //Here the yangNode should be the node which does not have revision. - // asset should pass with false. - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4); - assertThat(true, is(((YangNode) yangNode).getRevision() == null)); - - //Service no revision. - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_NO_REV); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_NO_REV); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_NO_REV); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - //As we have not registered an application this object should be null. - object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_NO_REV); - - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV); - assertThat(true, is(yangNode == null)); - - //Here the yangNode should be the node which have different revision. - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4); - assertThat(true, is(yangNode != null)); - assertThat(true, is(((YangNode) yangNode).getRevision() != null)); - } - - /** - * Unit test case in which schema node should be present with multi - * revisions. - * - * @throws IOException when fails to do IO operation - */ - @Test - public void testForGetSchemaNodeWhenMultiRevision() - throws IOException { - - testYangSchemaNodeProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - //Service with rev. - YangSchemaNode yangNode = - registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_15); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_REV_15); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_REV_15); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getRootYangSchemaNodeForNotification( - EVENT_NAME_REV_15); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - //As we have not registered an application this object should be null. - Object object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_15); - - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15); - assertThat(true, is(yangNode == null)); - - //Here the yangNode should be the node which does not have revision. - // asset should pass with false. - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4); - assertThat(true, is(((YangNode) yangNode).getRevision() == null)); - - //Service with different revision. - yangNode = registry - .getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_16); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_16); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_REV_16); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_REV_16); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_REV_16); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - //As we have not registered an application this object should be null. - object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_16); - - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_16); - assertThat(true, is(yangNode == null)); - - //Here the yangNode should be the node which have different revision. - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4); - assertThat(true, is(((YangNode) yangNode).getRevision() == null)); - - //Service with different revision. - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_17); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_17); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_REV_17); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_REV_17); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getRootYangSchemaNodeForNotification( - EVENT_NAME_REV_17); - assertThat(true, is(yangNode == null)); - - //As we have not registered an application this object should be null. - object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_17); - - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_17); - assertThat(true, is(yangNode == null)); - - //Here the yangNode should be the node which have different revision. - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4); - assertThat(true, is(((YangNode) yangNode).getRevision() == null)); - - //Service no revision. - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_NO_REV); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_NO_REV); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_NO_REV); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - //As we have not registered an application this object should be null. - object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_NO_REV); - - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV); - assertThat(true, is(yangNode == null)); - - //Here the yangNode should be the node which have different revision. - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4); - assertThat(true, is(yangNode != null)); - assertThat(true, is(((YangNode) yangNode).getRevision() != null)); - - //Service with different revision. - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_14); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_14); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName( - INTERFACE_NAME_REV_14); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = - registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName( - OP_PARAM_NAME_REV_14); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - yangNode = registry.getRootYangSchemaNodeForNotification( - EVENT_NAME_REV_14); - assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName()))); - - //As we have not registered an application this object should be null. - object = registry.getRegisteredApplication(yangNode); - assertThat(true, is(object == null)); - testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_14); - - yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_14); - assertThat(true, is(yangNode == null)); - } - - /** - * Unit test case should generate exceptions. - */ - @Test - public void testRegistration() { - thrown.expect(RuntimeException.class); - testYangSchemaNodeProvider.processSchemaRegistry(null); - testYangSchemaNodeProvider.processRegistrationOfApp(); - } - - /** - * Unit test case should not generate any exceptions and should - * return specific revision node. - */ - @Test - public void testGetWithSpecificRevision() { - testYangSchemaNodeProvider.processSchemaRegistry(null); - YangSchemaNode schemaNode = testYangSchemaNodeProvider - .getDefaultYangSchemaRegistry() - .getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_WITH_DATE); - - assertThat(true, is(schemaNode.getName().equals(SCHEMA_NAME_4))); - String date = testYangSchemaNodeProvider - .getDefaultYangSchemaRegistry() - .getDateInStringFormat(schemaNode); - assertThat(true, is(date.equals(DATE))); - } - - /** - * Unit test case should not generate any exceptions - * verify notification should be checked for registration. - */ - @Test - public void testNotification() { - MockIetfManager manager = new MockIetfManager(); - testYangSchemaNodeProvider.processSchemaRegistry(manager); - boolean isRegWithNotification = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry() - .verifyNotificationObject(manager, IetfNetwork1Service.class); - assertThat(true, is(isRegWithNotification)); - isRegWithNotification = testYangSchemaNodeProvider - .getDefaultYangSchemaRegistry() - .verifyNotificationObject(manager, IetfNetwork2Service.class); - assertThat(false, is(isRegWithNotification)); - isRegWithNotification = testYangSchemaNodeProvider - .getDefaultYangSchemaRegistry() - .verifyNotificationObject(new TestManager(), TestService.class); - assertThat(false, is(isRegWithNotification)); - } - - /** - * get schema for namespace in decode test. - */ - @Test - public void testGetNodeWrtNamespace() { - MockIetfManager manager = new MockIetfManager(); - testYangSchemaNodeProvider.processSchemaRegistry(manager); - DefaultYangSchemaRegistry registry = - testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); - - YangSchemaNode yangNode = - registry.getSchemaWrtNameSpace(NAMESPACE); - assertThat(true, is(CHECK.equals(yangNode.getName()))); - - YangRevision rev = ((YangNode) yangNode).getRevision(); - assertThat(true, is(rev != null)); - - String date = registry.getDateInStringFormat(yangNode); - assertThat(true, is(DATE_NAMESPACE.equals(date))); - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/MockIetfManager.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/MockIetfManager.java deleted file mode 100644 index 2086ed433e..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/MockIetfManager.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ysr; - -import org.onosproject.event.ListenerRegistry; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2OpParam; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2Service; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.ietfnetwork2.IetfNetwork2Event; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.ietfnetwork2.IetfNetwork2EventListener; - -/** - * Represent mock implementation for services. - */ -public class MockIetfManager - extends ListenerRegistry - implements IetfNetwork2Service { - - @Override - public IetfNetwork2 getIetfNetwork2(IetfNetwork2OpParam ietfNetwork2) { - return null; - } - - @Override - public void setIetfNetwork2(IetfNetwork2OpParam ietfNetwork2) { - - } - -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/TestYangSchemaNodeProvider.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/TestYangSchemaNodeProvider.java deleted file mode 100644 index f78d903672..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/TestYangSchemaNodeProvider.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ysr; - -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network1.rev20151208.IetfNetwork1Service; -import org.onosproject.yangutils.datamodel.YangNode; -import org.onosproject.yangutils.datamodel.YangSchemaNode; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.deSerializeDataModel; -import static org.onosproject.yangutils.utils.UtilConstants.TEMP; -import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory; - -/** - * Represents mock bundle context. provides bundle context for YSR to do unit - * testing. - */ -public class TestYangSchemaNodeProvider { - - private static final String FS = File.separator; - private static final String PATH = System.getProperty("user.dir") + - FS + "target" + FS + "classes" + FS; - private static final String SER_FILE_PATH = "yang" + FS + "resources" + - FS + "YangMetaData.ser"; - private static final String TEMP_FOLDER_PATH = PATH + TEMP; - private final DefaultYangSchemaRegistry registry = - new DefaultYangSchemaRegistry(); - private static final String RESOURCE = "src/test/resources"; - private List nodes = new ArrayList<>(); - - /** - * Creates an instance of mock bundle context. - */ - public TestYangSchemaNodeProvider() { - } - - /** - * Process YANG schema node for a application. - * - * @param appObject application object - */ - public void processSchemaRegistry(Object appObject) { - try { - Set appNode = deSerializeDataModel(PATH + SER_FILE_PATH); - nodes.addAll(appNode); - String appName; - ClassLoader classLoader = TestYangSchemaNodeProvider.class.getClassLoader(); - for (YangSchemaNode node : nodes) { - appName = registry.getServiceName(node); - Class cls; - try { - cls = classLoader.loadClass(appName); - } catch (ClassNotFoundException e) { - continue; - } - registry.processRegistration(cls, RESOURCE, nodes, appObject, true); - registry.updateServiceClass(cls); - //interface generation. - appName = registry.getInterfaceClassName(node); - try { - cls = classLoader.loadClass(appName); - } catch (ClassNotFoundException e) { - continue; - } - registry.processRegistration(cls, RESOURCE, - nodes, appObject, true); - registry.updateServiceClass(cls); - } - deleteDirectory(TEMP_FOLDER_PATH); - } catch (IOException e) { - } - } - - /** - * Unregisters services. - * - * @param appName application name - */ - void unregisterService(String appName) { - ClassLoader classLoader = TestYangSchemaNodeProvider.class.getClassLoader(); - try { - Class cls = classLoader.loadClass(appName); - registry.unRegisterApplication(null, cls); - } catch (ClassNotFoundException e) { - } - - } - - /** - * Returns schema registry. - * - * @return schema registry - */ - public DefaultYangSchemaRegistry getDefaultYangSchemaRegistry() { - return registry; - } - - /** - * Process registration of a service. - */ - void processRegistrationOfApp() { - getDefaultYangSchemaRegistry().doPreProcessing(IetfNetwork1Service.class, - new MockIetfManager()); - } - -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilderTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilderTest.java deleted file mode 100644 index c38aa95b67..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/DefaultYangTreeBuilderTest.java +++ /dev/null @@ -1,1155 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.YtbDerivedTypeWithBitsAndBinary; -import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.YtbDerivedTypeWithBitsAndBinaryOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.ytbderivedtypewithbitsandbinary.Derivedbinarya; -import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.ytbderivedtypewithbitsandbinary.Derivedbinaryb; -import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.ytbderivedtypewithbitsandbinary.Derivedbitsa; -import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.ytbderivedtypewithbitsandbinary.Derivedbitsb; -import org.onosproject.yang.gen.v1.yms.test.ytb.derived.type.with.bits.and.binary.rev20160826.ytbderivedtypewithbitsandbinary.ForunionUnion; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.container.rev20160826.YtbModuleWithContainer; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.container.rev20160826.YtbModuleWithContainerOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.container.rev20160826.ytbmodulewithcontainer.DefaultSched; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.container.rev20160826.ytbmodulewithcontainer.Sched; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaf.ietfschedule.rev20160826.YtbIetfSchedule; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaf.ietfschedule.rev20160826.YtbIetfSchedule.OnosYangOpType; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaf.ietfschedule.rev20160826.YtbIetfScheduleOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaf.ietfschedule.rev20160826.ytbietfschedule.Enum1Enum; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaf.ietfschedule.rev20160826.ytbietfschedule.Enum2Enum; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaflist.rev20160826.YtbModuleWithLeafList; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.leaflist.rev20160826.YtbModuleWithLeafListOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.yangautoprefixlist.rev20160826.YtbModuleWithList; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.yangautoprefixlist.rev20160826.YtbModuleWithListOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.yangautoprefixlist.rev20160826.ytbmodulewithlist.DefaultYtblistlist; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.yangautoprefixlist.rev20160826.ytbmodulewithlist.Find; -import org.onosproject.yang.gen.v1.yms.test.ytb.module.with.yangautoprefixlist.rev20160826.ytbmodulewithlist.Ytblistlist; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.a.rev20160826.YtbMultiModulea; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.a.rev20160826.YtbMultiModuleaOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.a.rev20160826.ytbmultimodulea.DefaultYtbmultilist; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.a.rev20160826.ytbmultimodulea.Ytbmultilist; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.b.rev20160826.YtbMultiModuleb; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.b.rev20160826.YtbMultiModulebOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.b.rev20160826.ytbmultimoduleb.DefaultYtbmultilistb; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.module.b.rev20160826.ytbmultimoduleb.Ytbmultilistb; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.DefaultFortesta; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.Fortesta; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.YtbMultiNotificationWithContainerEvent; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.YtbMultiNotificationWithContainerEventSubject; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.fortesta.DefaultYtbnot; -import org.onosproject.yang.gen.v1.yms.test.ytb.multi.notification.with.container.rev20160826.ytbmultinotificationwithcontainer.fortesta.Ytbnot; -import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.YtbTreeBuilderForListHavingList; -import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.YtbTreeBuilderForListHavingListOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.Carrier; -import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.DefaultCarrier; -import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.carrier.DefaultMultiplexes; -import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.carrier.Multiplexes; -import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.carrier.multiplexes.ApplicationAreas; -import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.carrier.multiplexes.DefaultApplicationAreas; -import org.onosproject.yang.gen.v1.yms.test.ytb.tree.builder.yangautoprefixfor.yangautoprefixlist.having.yangautoprefixlist.rev20160826.ytbtreebuilderforlisthavinglist.carrier.multiplexes.TypesEnum; -import org.onosproject.yms.app.ydt.YdtExtendedBuilder; -import org.onosproject.yms.app.ydt.YdtNode; -import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry; -import org.onosproject.yms.ydt.YdtBuilder; -import org.onosproject.yms.ydt.YdtContext; -import org.onosproject.yms.ydt.YdtContextOperationType; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.BitSet; -import java.util.List; -import java.util.Set; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; -import static org.hamcrest.core.IsNull.nullValue; -import static org.onosproject.yms.ydt.YdtContextOperationType.CREATE; -import static org.onosproject.yms.ydt.YdtContextOperationType.DELETE; -import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; -import static org.onosproject.yms.ydt.YdtContextOperationType.NONE; -import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST; -import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REQUEST; -import static org.onosproject.yms.ydt.YmsOperationType.QUERY_REQUEST; - -/** - * Unit test cases for YANG tree builder with different YANG object - * configuration. - */ -public class DefaultYangTreeBuilderTest extends YtbErrMsgAndConstants { - - private static final String ONE = "1"; - private static final String TWO = "2"; - private static final String THREE = "3"; - private static final String FOUR = "4"; - private static final String FIVE = "5"; - private static final String SIX = "6"; - private static final String NINE = "9"; - private static final String IETF_SCHEDULE = "YtbIetfSchedule"; - private static final String TIME = "time"; - private static final String MOD_LEAF_LIST = "YtbModuleWithLeafList"; - private static final String ENUM_1 = "enum1"; - private static final String ENUM_2 = "enum2"; - private static final String HUNDRED_100 = "hundred-100"; - private static final String TEN_10 = "ten-10"; - private static final String THOUSAND_1000 = "thousand-1000"; - private static final String MOD_CONT = "YtbModuleWithContainer"; - private static final String SCHED = "sched"; - private static final String PREDICT_VAL = "98989"; - private static final String MOD_LIST = "YtbModuleWithList"; - private static final String LIST_LIST = "ytblistlist"; - private static final String PREDICTION = "prediction"; - private static final String TRUE = "true"; - private static final String FALSE = "false"; - private static final String MUL_NOTIFY = - "YtbMultiNotificationWithContainer"; - private static final String NOTIFICATION = "notification"; - private static final String NOTIFY = "fortesta"; - private static final String YTB_NOTIFY_CONT = "ytbnot"; - private static final String NOTIFY_LEAF = "notileaf"; - private static final String ANT = "ant"; - private static final String ANIMAL = "animal"; - private static final String BIRD = "bird"; - private static final String BALL = "ball"; - private static final String BAT = "bat"; - private static final String MUL_MOD_A = "YtbMultiModulea"; - private static final String MUL_LIST_A = "ytbmultilist"; - private static final String CHECK = "check"; - private static final String MUL_MOD_B = "YtbMultiModuleb"; - private static final String MUL_LIST_B = "ytbmultilistb"; - private static final String CHECKIN = "checkin"; - private static final String LIST_WITH_LIST = - "YtbTreeBuilderForListHavingList"; - private static final String CONT_CARRIER = "carrier"; - private static final String LIST_MULTIPLEXES = "multiplexes"; - private static final String TYPES = "types"; - private static final String TIME_DIVISION = "time-division"; - private static final String APP_AREA_LIST = "application-areas"; - private static final String DEST_AREA = "destination-areas"; - private static final String FREQUENCY_DIV = "frequency-division"; - private static final String MOD_BIT_BIN = "YtbDerivedTypeWithBitsAndBinary"; - private static final String FOR_BINARY = "forbinary"; - private static final String BIN_VAL_1 = "BQUF"; - private static final String FOR_BITS = "forbits"; - private static final String FOR_BINARY_LIST = "forbinarylist"; - private static final String BIN_VAL_2 = "CQkA"; - private static final String BIN_VAL_3 = "DAYA"; - private static final String BIN_VAL_4 = "EB0Z"; - private static final String FOR_BITS_LIST = "forbitslist"; - private static final String FOR_UNION = "forunion"; - private static final String BIN_VAL_5 = "AAAA"; - private static final String BIT_VAL_1 = "leaf1 leaf2"; - private static final String BIN_VAL_6 = "AQYD"; - private static final String BIN_VAL_7 = "AgcE"; - private static final String BIN_VAL_8 = "BQYB"; - private static final String BIN_VAL_9 = "AwgE"; - private static final String BIN_VAL_10 = "AQAA"; - private static final String BIN_VAL_11 = "AAAB"; - private static final String BIN_VAL_12 = "BwcH"; - private static final String BIN_VAL_13 = "AAE="; - private static final String BIT_VAL_2 = "index signature"; - private static final String BIT_VAL_3 = "index"; - private static final String BIT_VAL_4 = "index name"; - private static final String BIT_VAL_5 = "index name signature"; - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - private static String emptyObjErrMsg(String objName) { - return "The " + objName + " given for tree creation cannot be null"; - } - - private static BigDecimal getBigDeci(int bigDecimal) { - return BigDecimal.valueOf(bigDecimal); - } - - /** - * Processes an empty object list to the YTB and checks that the - * exception is thrown. - */ - @Test - public void processInvalidListInput() { - thrown.expect(YtbException.class); - thrown.expectMessage(emptyObjErrMsg("object list")); - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - treeBuilder.getYdtBuilderForYo(null, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REQUEST, null); - } - - /** - * Processes an empty notification object to the YTB and checks that the - * exception is thrown. - */ - @Test - public void processInvalidInputForNotification() { - thrown.expect(YtbException.class); - thrown.expectMessage(emptyObjErrMsg("event object")); - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - treeBuilder.getYdtForNotification(null, ROOT_NAME, null); - } - - /** - * Processes an empty rpc output object to the YTB and checks that the - * exception is thrown. - */ - @Test - public void processInvalidInputForRpc() { - thrown.expect(YtbException.class); - thrown.expectMessage(emptyObjErrMsg("output object")); - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - treeBuilder.getYdtForRpcResponse(null, null); - } - - /** - * Processes a YAB/YSB request to YTB with a leaf value being filled in - * the app object. Checks the constructed YDT tree for module and leaf - * and its value. - */ - @Test - public void processModuleAndLeaf() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - YtbIetfSchedule schedule = new YtbIetfScheduleOpParam - .YtbIetfScheduleBuilder() - .time((byte) 9) - .yangYtbIetfScheduleOpType(OnosYangOpType.MERGE) - .build(); - - // As YSB or YAB protocol sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(schedule); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and checks the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - YdtContextOperationType opType = ((YdtNode) module) - .getYdtContextOperationType(); - assertThat(getInCrtName(MODULE, IETF_SCHEDULE), - module.getName(), is(IETF_SCHEDULE)); - assertThat(getInCrtOpType(MODULE, IETF_SCHEDULE), - opType, is(MERGE)); - - // Gets the first leaf from module IetfSchedule. - YdtContext leafContext = module.getFirstChild(); - assertThat(getInCrtName(LEAF, TIME), - leafContext.getName(), is(TIME)); - assertThat(getInCrtLeafValue(TIME, NINE), - leafContext.getValue(), is(NINE)); - } - - /** - * Processes a YAB/YSB request to YTB with a leaf-list value being filled - * in the app object. Checks the constructed YDT tree for module and - * leaf-list and its value. - */ - @Test - public void processModuleAndLeafList() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates list of type long for setting the leaf-list. - List longList = new ArrayList<>(); - longList.add((long) 1); - longList.add((long) 2); - longList.add((long) 3); - - YtbModuleWithLeafList leafListModule = new YtbModuleWithLeafListOpParam - .YtbModuleWithLeafListBuilder().time(longList).build(); - - // As YSB or YAB protocol sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(leafListModule); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, QUERY_REQUEST, registry); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - YdtContextOperationType opType = ((YdtNode) module) - .getYdtContextOperationType(); - assertThat(getInCrtName(MODULE, MOD_LEAF_LIST), - module.getName(), is(MOD_LEAF_LIST)); - assertThat(getInCrtOpType(MODULE, MOD_LEAF_LIST), opType, nullValue()); - - // Gets the first leaf-list from module. - YdtContext leafList = module.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, TIME), leafList.getName(), - is(TIME)); - Set value = leafList.getValueSet(); - assertThat(getInCrtLeafListValue(TIME, ONE), - value.contains(ONE), is(true)); - assertThat(getInCrtLeafListValue(TIME, TWO), - value.contains(TWO), is(true)); - assertThat(getInCrtLeafListValue(TIME, THREE), - value.contains(THREE), is(true)); - } - - /** - * Processes leaf and leaf-list with type enum under module. Checks the - * constructed YDT tree has YANG enum value. - */ - @Test - public void processWithTypeEnum() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates enum list for setting the leaf-list. - List enumList = new ArrayList<>(); - enumList.add(Enum2Enum.HUNDRED_100); - enumList.add(Enum2Enum.TEN_10); - enumList.add(Enum2Enum.THOUSAND_1000); - - YtbIetfSchedule schedule = new YtbIetfScheduleOpParam - .YtbIetfScheduleBuilder() - .time((byte) 9) - .yangYtbIetfScheduleOpType(OnosYangOpType.MERGE) - .enum1(Enum1Enum.HUNDRED) - .enum2(enumList) - .build(); - - - // As YSB or YAB protocol sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(schedule); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - YdtContextOperationType opType = - ((YdtNode) module).getYdtContextOperationType(); - assertThat(getInCrtName(MODULE, IETF_SCHEDULE), - module.getName(), is(IETF_SCHEDULE)); - assertThat(getInCrtOpType(MODULE, IETF_SCHEDULE), opType, is(MERGE)); - - // Checks the leaf and leaf-list values. - YdtContext timeLeaf = module.getFirstChild(); - assertThat(getInCrtName(LEAF, TIME), timeLeaf.getName(), is(TIME)); - assertThat(getInCrtLeafValue(TIME, NINE), - timeLeaf.getValue(), is(NINE)); - - YdtContext enum1Leaf = timeLeaf.getNextSibling(); - assertThat(getInCrtName(LEAF, ENUM_1), enum1Leaf.getName(), is(ENUM_1)); - assertThat(getInCrtLeafValue(ENUM_1, HUNDRED), - enum1Leaf.getValue(), is(HUNDRED)); - - YdtContext enum2LeafList = enum1Leaf.getNextSibling(); - assertThat(getInCrtName(LEAF_LIST, ENUM_2), - enum2LeafList.getName(), is(ENUM_2)); - Set valueSet = enum2LeafList.getValueSet(); - assertThat(getInCrtLeafListValue(ENUM_2, HUNDRED_100), - valueSet.contains(HUNDRED_100), is(true)); - assertThat(getInCrtLeafListValue(ENUM_2, TEN_10), - valueSet.contains(TEN_10), is(true)); - assertThat(getInCrtLeafListValue(ENUM_2, THOUSAND_1000), - valueSet.contains(THOUSAND_1000), is(true)); - } - - /** - * Processes a YAB/YSB request to YTB with a container having leaf value - * being filled in the app object. Checks the constructed YDT tree for - * module and container and leaf. - */ - @Test - public void processModuleWithContainer() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates container object with leaf of decimal type. - Sched sched = new DefaultSched.SchedBuilder() - .predict(getBigDeci(98989)) - .yangSchedOpType( - YtbModuleWithContainerOpParam.OnosYangOpType.DELETE) - .build(); - // Creates module object with the container. - YtbModuleWithContainer contModule = new YtbModuleWithContainerOpParam - .YtbModuleWithContainerBuilder() - .sched(sched) - .yangYtbModuleWithContainerOpType( - YtbModuleWithContainerOpParam.OnosYangOpType.CREATE) - .build(); - - // As YSB or YAB protocol sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(contModule); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - QUERY_CONFIG_REQUEST, registry); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - YdtContextOperationType opType = ((YdtNode) module) - .getYdtContextOperationType(); - - assertThat(getInCrtName(MODULE, MOD_CONT), - module.getName(), is(MOD_CONT)); - assertThat(getInCrtOpType(MODULE, MOD_CONT), opType, is(CREATE)); - - // Get the container from module. - YdtContext container = module.getFirstChild(); - YdtContextOperationType opTypeOfCont = ((YdtNode) container) - .getYdtContextOperationType(); - - assertThat(getInCrtName(CONTAINER, SCHED), - container.getName(), is("sched")); - assertThat(getInCrtOpType(CONTAINER, SCHED), opTypeOfCont, is(DELETE)); - - // Gets leaf from container. - YdtContext leafContext = container.getFirstChild(); - assertThat(getInCrtName(LEAF, PREDICT), - leafContext.getName(), is(PREDICT)); - assertThat(getInCrtLeafValue(PREDICT, PREDICT_VAL), - leafContext.getValue(), is(PREDICT_VAL)); - } - - /** - * Processes a YAB/YSB request to YTB with a list having leaf-list value - * being filled in the app object. Checks the constructed YDT tree for - * module and list and leaf-list. - */ - @Test - public void processModuleWithList() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates multi typedef values. - Find find1 = new Find(true); - Find find2 = new Find(false); - Find find3 = new Find(true); - Find find4 = new Find(false); - - // Creates two lists, with the typedef values added. - List findList1 = new ArrayList<>(); - List findList2 = new ArrayList<>(); - findList1.add(find1); - findList1.add(find2); - findList2.add(find3); - findList2.add(find4); - - // Creates two list contents. - Ytblistlist list1 = new DefaultYtblistlist - .YtblistlistBuilder().prediction(findList1).build(); - Ytblistlist list2 = new DefaultYtblistlist - .YtblistlistBuilder().prediction(findList2).build(); - - List ytbList = new ArrayList<>(); - ytbList.add(list1); - ytbList.add(list2); - - // Creates module having list. - YtbModuleWithList listModule = new YtbModuleWithListOpParam - .YtbModuleWithListBuilder().ytblistlist(ytbList).build(); - - // As YSB or YAB protocol sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(listModule); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - YdtContextOperationType opType = ((YdtNode) module) - .getYdtContextOperationType(); - - assertThat(getInCrtName(MODULE, MOD_LIST), - module.getName(), is(MOD_LIST)); - assertThat(getInCrtOpType(MODULE, MOD_LIST), opType, nullValue()); - - // Gets the first list from module YtbModuleWithList. - YdtContext firstList = module.getFirstChild(); - YdtContextOperationType listOpType = ((YdtNode) firstList) - .getYdtContextOperationType(); - // Checks the contents in the list. - assertThat(getInCrtName(LIST, LIST_LIST), - firstList.getName(), is(LIST_LIST)); - assertThat(getInCrtOpType(LIST, LIST_LIST), listOpType, nullValue()); - - // Gets the contents of the leaf-list in the first list content. - YdtContext leafListInList1 = firstList.getFirstChild(); - - // Evaluates the leaf-list values. - Set leafListValue1 = leafListInList1.getValueSet(); - assertThat(getInCrtName(LEAF_LIST, PREDICTION), - leafListInList1.getName(), is(PREDICTION)); - assertThat(getInCrtLeafListValue(PREDICTION, TRUE), - leafListValue1.contains(TRUE), is(true)); - assertThat(getInCrtLeafListValue(PREDICTION, FALSE), - leafListValue1.contains(FALSE), is(true)); - - // Gets the second list from module YtbModuleWithList. - YdtContext secondList = firstList.getNextSibling(); - - // Gets the contents of the leaf-list in the second list content. - YdtContext leafListInList2 = secondList.getFirstChild(); - // Evaluates the leaf-list values. - Set leafListValue2 = leafListInList2.getValueSet(); - assertThat(getInCrtName(LEAF_LIST, PREDICTION), - leafListInList2.getName(), is(PREDICTION)); - assertThat(getInCrtLeafListValue(PREDICTION, TRUE), - leafListValue2.contains(TRUE), is(true)); - assertThat(getInCrtLeafListValue(PREDICTION, FALSE), - leafListValue2.contains(FALSE), is(true)); - } - - /** - * Processes multi notification under module when request comes for one - * notification event in module. - */ - @Test - public void processMultiNotificationWithContainer() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Sets the bit value. - BitSet bitleaf = new BitSet(); - bitleaf.set(0); - bitleaf.set(1); - - // Creates container with the leaf. - Ytbnot ytbnot = new DefaultYtbnot.YtbnotBuilder().notileaf(bitleaf) - .build(); - // Creates notification with container. - Fortesta testa = new DefaultFortesta.FortestaBuilder() - .ytbnot(ytbnot).build(); - // Invokes event subject class with notification. - YtbMultiNotificationWithContainerEventSubject eventSubject = new - YtbMultiNotificationWithContainerEventSubject(); - eventSubject.fortesta(testa); - // Invokes event class with the event type and the event subject obj. - YtbMultiNotificationWithContainerEvent event = - new YtbMultiNotificationWithContainerEvent( - YtbMultiNotificationWithContainerEvent.Type.FORTESTA, - eventSubject); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtContext ydtContext = treeBuilder.getYdtForNotification( - event, ROOT_NAME, registry); - - // Gets the first module from logical root node. - YdtContext context = ydtContext.getFirstChild(); - YdtContextOperationType opType = ((YdtNode) context) - .getYdtContextOperationType(); - - assertThat(getInCrtName(MODULE, MUL_NOTIFY), context.getName(), - is(MUL_NOTIFY)); - assertThat(getInCrtOpType(MODULE, MUL_NOTIFY), opType, is(NONE)); - - // Gets the notification under module. - YdtContext notify = context.getFirstChild(); - YdtContextOperationType notifyOpType = ((YdtNode) notify) - .getYdtContextOperationType(); - - // Checks the contents in the first notification. - assertThat(getInCrtName(NOTIFICATION, NOTIFY), notify.getName(), - is(NOTIFY)); - assertThat(getInCrtOpType(NOTIFICATION, NOTIFY), notifyOpType, - is(NONE)); - - // Gets the container in notification - YdtContext container = notify.getFirstChild(); - assertThat(getInCrtName(CONTAINER, YTB_NOTIFY_CONT), - container.getName(), is(YTB_NOTIFY_CONT)); - - // Evaluates the leaf values. - YdtContext leafInCont = container.getFirstChild(); - assertThat(getInCrtName(LEAF, NOTIFY_LEAF), leafInCont.getName(), - is(NOTIFY_LEAF)); - assertThat(getInCrtLeafValue(NOTIFY_LEAF, BIT_VAL_1), - leafInCont.getValue(), is(BIT_VAL_1)); - } - - /** - * Processes multi module with list in both the modules and checks the - * YANG data tree building. - */ - @Test - public void processMultiModule() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates list of big integer for leaf-list under list1. - List bigIntegerList = new ArrayList<>(); - bigIntegerList.add(BigInteger.valueOf(1)); - bigIntegerList.add(BigInteger.valueOf(2)); - bigIntegerList.add(BigInteger.valueOf(3)); - // Creates list of big integer for leaf-list under list2. - List bigIntegerList1 = new ArrayList<>(); - bigIntegerList1.add(BigInteger.valueOf(4)); - bigIntegerList1.add(BigInteger.valueOf(5)); - bigIntegerList1.add(BigInteger.valueOf(6)); - - // Creates two list contents. - Ytbmultilist listContent1 = new DefaultYtbmultilist - .YtbmultilistBuilder().check(bigIntegerList).build(); - Ytbmultilist listContent2 = new DefaultYtbmultilist - .YtbmultilistBuilder().check(bigIntegerList1).build(); - - List ytbmultilists = new ArrayList<>(); - ytbmultilists.add(listContent1); - ytbmultilists.add(listContent2); - - // Creates module-a with two list contents created. - YtbMultiModulea modulea = new YtbMultiModuleaOpParam - .YtbMultiModuleaBuilder().ytbmultilist(ytbmultilists).build(); - - // Creates list of string for leaf-list under list1. - List stringList = new ArrayList<>(); - stringList.add(ANT); - stringList.add(ANIMAL); - stringList.add(BIRD); - - // Creates list of string for leaf-list under list2. - List stringList1 = new ArrayList<>(); - stringList1.add(CATCH); - stringList1.add(BALL); - stringList1.add(BAT); - - // Creates two list contents. - Ytbmultilistb listContent3 = new DefaultYtbmultilistb - .YtbmultilistbBuilder().checkin(stringList).build(); - Ytbmultilistb listContent4 = new DefaultYtbmultilistb - .YtbmultilistbBuilder().checkin(stringList1).build(); - - List ytbMultiListb = new ArrayList<>(); - ytbMultiListb.add(listContent3); - ytbMultiListb.add(listContent4); - - // Creates module-b with two list contents created. - YtbMultiModuleb moduleb = new YtbMultiModulebOpParam - .YtbMultiModulebBuilder().ytbmultilistb(ytbMultiListb).build(); - - // As YSB or YAB protocol sets the value for YTB. - List listOfModules = new ArrayList<>(); - listOfModules.add(modulea); - listOfModules.add(moduleb); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - listOfModules, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Checks module-a under root node. - YdtContext moduleA = context.getFirstChild(); - assertThat(getInCrtName(MODULE, MUL_MOD_A), moduleA.getName(), - is(MUL_MOD_A)); - - // Checks list-a in module-a and its respective leaf-list. - YdtContext list1InModuleA = moduleA.getFirstChild(); - assertThat(getInCrtName(LIST, MUL_LIST_A), list1InModuleA.getName(), - is(MUL_LIST_A)); - - YdtContext leafListA = list1InModuleA.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, CHECK), leafListA.getName(), - is(CHECK)); - - Set valueA = leafListA.getValueSet(); - assertThat(getInCrtLeafListValue(CHECK, ONE), valueA.contains(ONE), - is(true)); - assertThat(getInCrtLeafListValue(CHECK, TWO), valueA.contains(TWO), - is(true)); - assertThat(getInCrtLeafListValue(CHECK, THREE), valueA.contains(THREE), - is(true)); - - // Checks list-b in module-a and its respective leaf-list. - YdtContext list2InModuleA = list1InModuleA.getNextSibling(); - assertThat(getInCrtName(LIST, MUL_LIST_A), list2InModuleA.getName(), - is(MUL_LIST_A)); - - YdtContext leafListB = list2InModuleA.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, CHECK), leafListB.getName(), - is(CHECK)); - - Set valueB = leafListB.getValueSet(); - assertThat(getInCrtLeafListValue(CHECK, FOUR), valueB.contains(FOUR), - is(true)); - assertThat(getInCrtLeafListValue(CHECK, FIVE), valueB.contains(FIVE), - is(true)); - assertThat(getInCrtLeafListValue(CHECK, SIX), valueB.contains(SIX), - is(true)); - - // Checks module-b under root node. - YdtContext moduleB = moduleA.getNextSibling(); - assertThat(getInCrtName(MODULE, MUL_MOD_B), moduleB.getName(), - is(MUL_MOD_B)); - - // Checks list-a in module-b and its respective leaf-list. - YdtContext list1InModuleB = moduleB.getFirstChild(); - assertThat(getInCrtName(LIST, MUL_LIST_B), list1InModuleB.getName(), - is(MUL_LIST_B)); - - YdtContext leafListC = list1InModuleB.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, CHECKIN), leafListC.getName(), - is(CHECKIN)); - - Set valueC = leafListC.getValueSet(); - assertThat(getInCrtLeafListValue(CHECKIN, ANT), valueC.contains(ANT), - is(true)); - assertThat(getInCrtLeafListValue(CHECKIN, ANIMAL), - valueC.contains(ANIMAL), is(true)); - assertThat(getInCrtLeafListValue(CHECKIN, BIRD), - valueC.contains(BIRD), is(true)); - - // Checks list-b in module-b and its respective leaf-list. - YdtContext list2InModuleB = list1InModuleB.getNextSibling(); - assertThat(getInCrtName(LIST, MUL_LIST_B), list2InModuleB.getName(), - is(MUL_LIST_B)); - - YdtContext leafListD = list2InModuleB.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, CHECKIN), leafListD.getName(), - is(CHECKIN)); - - Set valueD = leafListD.getValueSet(); - assertThat(getInCrtLeafListValue(CHECKIN, CATCH), - valueD.contains(CATCH), is(true)); - assertThat(getInCrtLeafListValue(CHECKIN, BALL), - valueD.contains(BALL), is(true)); - assertThat(getInCrtLeafListValue(CHECKIN, BAT), - valueD.contains(BAT), is(true)); - } - - /** - * Processes tree building when a list node is having list inside it. - */ - @Test - public void processTreeBuilderForListHavingList() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates two binary leaf-lists for two list app areas. - List destArea1 = new ArrayList<>(); - byte[] arr = new byte[]{1, 6, 3}; - byte[] arr1 = new byte[]{2, 7, 4}; - destArea1.add(arr); - destArea1.add(arr1); - - List destArea2 = new ArrayList<>(); - byte[] arr2 = new byte[]{3, 8, 4}; - byte[] arr3 = new byte[]{5, 6, 1}; - destArea2.add(arr2); - destArea2.add(arr3); - - // Creates two app areas list. - ApplicationAreas appArea1 = new DefaultApplicationAreas - .ApplicationAreasBuilder().destinationAreas(destArea1).build(); - ApplicationAreas appArea2 = new DefaultApplicationAreas - .ApplicationAreasBuilder().destinationAreas(destArea2).build(); - - List applicationAreasList = new ArrayList<>(); - applicationAreasList.add(appArea1); - applicationAreasList.add(appArea2); - - // Adds two lists under the multiplex list for content 1. - Multiplexes mpx1 = new DefaultMultiplexes.MultiplexesBuilder() - .types(TypesEnum.TIME_DIVISION) - .applicationAreas(applicationAreasList).build(); - - // Creates two binary leaf-lists for two list app areas. - List destArea3 = new ArrayList<>(); - byte[] arrB = new byte[]{0, 0, 1}; - byte[] arr1B = new byte[]{1, 0, 0}; - destArea3.add(arrB); - destArea3.add(arr1B); - - List destArea4 = new ArrayList<>(); - byte[] arr2B = new byte[]{7, 7, 7}; - byte[] arr3B = new byte[]{0, 1}; - destArea4.add(arr2B); - destArea4.add(arr3B); - - // Creates two app areas list. - ApplicationAreas appArea3 = new DefaultApplicationAreas - .ApplicationAreasBuilder().destinationAreas(destArea3).build(); - ApplicationAreas appArea4 = new DefaultApplicationAreas - .ApplicationAreasBuilder().destinationAreas(destArea4).build(); - - List applicationAreasListB = new ArrayList<>(); - applicationAreasListB.add(appArea3); - applicationAreasListB.add(appArea4); - - // Adds two lists under the multiplex list for content 2. - Multiplexes mpx2 = new DefaultMultiplexes.MultiplexesBuilder() - .types(TypesEnum.FREQUENCY_DIVISION) - .applicationAreas(applicationAreasListB).build(); - - List multiplexList = new ArrayList<>(); - multiplexList.add(mpx1); - multiplexList.add(mpx2); - - // Sets it in the container carrier. - Carrier carrier = new DefaultCarrier.CarrierBuilder() - .multiplexes(multiplexList).build(); - - YtbTreeBuilderForListHavingList listWithList = new - YtbTreeBuilderForListHavingListOpParam - .YtbTreeBuilderForListHavingListBuilder() - .carrier(carrier).build(); - - // As YSB or YAB protocol sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(listWithList); - - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - QUERY_CONFIG_REQUEST, registry); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(LIST, LIST_WITH_LIST), module.getName(), - is(LIST_WITH_LIST)); - - // Checks the container node under module node. - YdtContext container = module.getFirstChild(); - assertThat(getInCrtName(CONTAINER, CONT_CARRIER), container.getName(), - is(CONT_CARRIER)); - - // Checks the list node with content 1 of multiplex. - YdtContext mtx1 = container.getFirstChild(); - assertThat(getInCrtName(LIST, LIST_MULTIPLEXES), mtx1.getName(), - is(LIST_MULTIPLEXES)); - - // Checks enum leaf under multiplex of content1. - YdtContext enumLeaf1 = mtx1.getFirstChild(); - assertThat(getInCrtName(LEAF, TYPES), enumLeaf1.getName(), is(TYPES)); - assertThat(getInCrtLeafValue(TYPES, TIME_DIVISION), - enumLeaf1.getValue(), is(TIME_DIVISION)); - - // Checks list app area content 1 under multiplex content 1. - YdtContext appAreaList1 = enumLeaf1.getNextSibling(); - assertThat(getInCrtName(LIST, APP_AREA_LIST), appAreaList1.getName(), - is(APP_AREA_LIST)); - - YdtContext leafList1 = appAreaList1.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, DEST_AREA), leafList1.getName(), - is(DEST_AREA)); - Set value1 = leafList1.getValueSet(); - assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_6), - value1.contains(BIN_VAL_6), is(true)); - assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_7), - value1.contains(BIN_VAL_7), is(true)); - - // Checks list app area content 2 under multiplex content 1. - YdtContext appAreaList2 = appAreaList1.getNextSibling(); - assertThat(getInCrtName(LIST, APP_AREA_LIST), appAreaList2.getName(), - is(APP_AREA_LIST)); - - YdtContext leafList2 = appAreaList2.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, DEST_AREA), leafList2.getName(), - is(DEST_AREA)); - Set value2 = leafList2.getValueSet(); - assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_8), - value2.contains(BIN_VAL_8), is(true)); - assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_9), - value2.contains(BIN_VAL_9), is(true)); - - // Checks the list node with content 2 of multiplex. - YdtContext mtx2 = mtx1.getNextSibling(); - assertThat(getInCrtName(LIST, LIST_MULTIPLEXES), mtx2.getName(), - is(LIST_MULTIPLEXES)); - - // Checks enum leaf under multiplex of content2. - YdtContext enumLeaf2 = mtx2.getFirstChild(); - assertThat(getInCrtName(LEAF, TYPES), enumLeaf2.getName(), is(TYPES)); - assertThat(getInCrtLeafValue(TYPES, FREQUENCY_DIV), - enumLeaf2.getValue(), is(FREQUENCY_DIV)); - - // Checks list app area content 1 under multiplex content 2. - YdtContext appAreaList3 = enumLeaf2.getNextSibling(); - assertThat(getInCrtName(LIST, APP_AREA_LIST), appAreaList3.getName(), - is(APP_AREA_LIST)); - - YdtContext leafList3 = appAreaList3.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, DEST_AREA), leafList3.getName(), - is(DEST_AREA)); - Set value3 = leafList3.getValueSet(); - assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_10), - value3.contains(BIN_VAL_10), is(true)); - assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_11), - value3.contains(BIN_VAL_11), is(true)); - - // Checks list app area content 2 under multiplex content 2. - YdtContext appAreaList4 = appAreaList3.getNextSibling(); - assertThat(getInCrtName(LIST, APP_AREA_LIST), appAreaList4.getName(), - is(APP_AREA_LIST)); - - YdtContext leafList4 = appAreaList4.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, DEST_AREA), leafList4.getName(), - is(DEST_AREA)); - Set value4 = leafList4.getValueSet(); - assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_12), - value4.contains(BIN_VAL_12), is(true)); - assertThat(getInCrtLeafListValue(DEST_AREA, BIN_VAL_13), - value4.contains(BIN_VAL_13), is(true)); - } - - /** - * Processes tree building from the derived type of leaf and leaf-list - * having binary and bits . - */ - @Test - public void processTreeBuilderForBinaryAndBits() { - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates a byte array for binary leaf. - byte[] binLeaf = new byte[]{5, 5, 5}; - - // Assigns the value in the chained loop of typedef. - Derivedbinaryb derBinb = new Derivedbinaryb(binLeaf); - Derivedbinarya derBina = new Derivedbinarya(derBinb); - - // Creates bit set for bit leaf. - BitSet bitLeaf = new BitSet(); - bitLeaf.set(1); - bitLeaf.set(100); - - // Assigns the value in the chained loop of typedef. - Derivedbitsb derBitb = new Derivedbitsb(bitLeaf); - Derivedbitsa derBita = new Derivedbitsa(derBitb); - - // Creates a byte array list for binary leaf-list. - byte[] binList1 = new byte[]{9, 9, 0}; - byte[] binList2 = new byte[]{12, 6, 0}; - byte[] binList3 = new byte[]{16, 29, 25}; - - // Assigns the value in the chained loop of typedef. - Derivedbinaryb derBinBList1 = new Derivedbinaryb(binList1); - Derivedbinaryb derBinBList2 = new Derivedbinaryb(binList2); - Derivedbinaryb derBinBList3 = new Derivedbinaryb(binList3); - - Derivedbinarya derBinAList1 = new Derivedbinarya(derBinBList1); - Derivedbinarya derBinAList2 = new Derivedbinarya(derBinBList2); - Derivedbinarya derBinAList3 = new Derivedbinarya(derBinBList3); - - List binAlist = new ArrayList<>(); - binAlist.add(derBinAList1); - binAlist.add(derBinAList2); - binAlist.add(derBinAList3); - - // Creates a bit set list for bit leaf-list. - BitSet bitList1 = new BitSet(); - bitList1.set(1); - BitSet bitList2 = new BitSet(); - bitList2.set(1); - bitList2.set(10); - BitSet bitList3 = new BitSet(); - bitList3.set(1); - bitList3.set(10); - bitList3.set(100); - - // Assigns the value in the chained loop of typedef. - Derivedbitsb bitBlist1 = new Derivedbitsb(bitList1); - Derivedbitsb bitBlist2 = new Derivedbitsb(bitList2); - Derivedbitsb bitBlist3 = new Derivedbitsb(bitList3); - - Derivedbitsa bitAlist1 = new Derivedbitsa(bitBlist1); - Derivedbitsa bitAlist2 = new Derivedbitsa(bitBlist2); - Derivedbitsa bitAlist3 = new Derivedbitsa(bitBlist3); - - List bitAlist = new ArrayList<>(); - bitAlist.add(bitAlist1); - bitAlist.add(bitAlist2); - bitAlist.add(bitAlist3); - - // Creates a module by assigning all the leaf and leaf-list. - YtbDerivedTypeWithBitsAndBinary bitsAndBinary = new - YtbDerivedTypeWithBitsAndBinaryOpParam - .YtbDerivedTypeWithBitsAndBinaryBuilder() - .forbinary(derBina).forbits(derBita) - .forbinarylist(binAlist) - .forbitslist(bitAlist).build(); - - // As YSB or YAB protocol, sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(bitsAndBinary); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(MODULE, MOD_BIT_BIN), module.getName(), - is(MOD_BIT_BIN)); - - // Checks the leaf for binary. - YdtContext binaryLeaf = module.getFirstChild(); - assertThat(getInCrtName(LEAF, FOR_BINARY), binaryLeaf.getName(), - is(FOR_BINARY)); - assertThat(getInCrtLeafValue(FOR_BINARY, BIN_VAL_1), - binaryLeaf.getValue(), is(BIN_VAL_1)); - - // Checks the leaf for bits. - YdtContext bitsLeaf = binaryLeaf.getNextSibling(); - assertThat(getInCrtName(LEAF, FOR_BITS), bitsLeaf.getName(), - is(FOR_BITS)); - assertThat(getInCrtLeafValue(FOR_BITS, BIT_VAL_2), - bitsLeaf.getValue(), is(BIT_VAL_2)); - - // Checks the leaf-list for binary. - YdtContext binaryLeafList = bitsLeaf.getNextSibling(); - assertThat(getInCrtName(LEAF_LIST, FOR_BINARY_LIST), - binaryLeafList.getName(), is(FOR_BINARY_LIST)); - - Set value2 = binaryLeafList.getValueSet(); - assertThat(getInCrtLeafListValue(FOR_BINARY_LIST, BIN_VAL_2), - value2.contains(BIN_VAL_2), is(true)); - assertThat(getInCrtLeafListValue(FOR_BINARY_LIST, BIN_VAL_3), - value2.contains(BIN_VAL_3), is(true)); - assertThat(getInCrtLeafListValue(FOR_BINARY_LIST, BIN_VAL_4), - value2.contains(BIN_VAL_4), is(true)); - - // Checks the leaf-list for bits. - YdtContext bitsLeafList = binaryLeafList.getNextSibling(); - assertThat(getInCrtName(LEAF_LIST, FOR_BITS_LIST), - bitsLeafList.getName(), is(FOR_BITS_LIST)); - Set value3 = bitsLeafList.getValueSet(); - assertThat(getInCrtLeafListValue(FOR_BITS_LIST, BIT_VAL_3), - value3.contains(BIT_VAL_3), is(true)); - assertThat(getInCrtLeafListValue(FOR_BITS_LIST, BIT_VAL_4), - value3.contains(BIT_VAL_4), is(true)); - assertThat(getInCrtLeafListValue(FOR_BITS_LIST, BIT_VAL_5), - value3.contains(BIT_VAL_5), is(true)); - } - - /** - * Processes tree building for the union type. - */ - @Test - public void processYtbUnionType() { - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates union with binary type. - byte[] binary = new byte[]{0, 0, 0}; - ForunionUnion union = new ForunionUnion(binary); - - // Creates module with union. - YtbDerivedTypeWithBitsAndBinary unionType = new - YtbDerivedTypeWithBitsAndBinaryOpParam - .YtbDerivedTypeWithBitsAndBinaryBuilder() - .forunion(union) - .build(); - - // As YSB or YAB protocol, sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(unionType); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and check the tree that is built. - YdtContext rootNode = ydtBuilder.getRootNode(); - YdtContext module = rootNode.getFirstChild(); - YdtContext unionChild = module.getFirstChild(); - assertThat(getInCrtName(LEAF, FOR_UNION), unionChild.getName(), - is(FOR_UNION)); - assertThat(getInCrtLeafValue(FOR_UNION, BIN_VAL_5), - unionChild.getValue(), is(BIN_VAL_5)); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbContextSwitchTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbContextSwitchTest.java deleted file mode 100644 index 5787f62530..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbContextSwitchTest.java +++ /dev/null @@ -1,1216 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ymsietfinettypes.Uri; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.YmsIetfNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.YmsIetfNetworkOpParam; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.DefaultNetworks; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.NetworkId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.Networks; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.NodeId; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.DefaultNetwork; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.Network; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.network.DefaultNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.network.Node; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.network.node.DefaultSupportingNode; -import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ymsietfnetwork.networks.network.node.SupportingNode; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.AugmentedNdNode; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.DefaultAugmentedNdNode; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.augmentedndnode.DefaultTerminationPoint; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.augmentedndnode.TerminationPoint; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.augmentedndnode.terminationpoint.DefaultSupportingTerminationPoint; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.from.another.file.rev20160826.ytbaugmentfromanotherfile.networks.network.node.augmentedndnode.terminationpoint.SupportingTerminationPoint; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput.activatesoftwareimage.output.AugmentedRpcOutput; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput.activatesoftwareimage.output.DefaultAugmentedRpcOutput; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput.activatesoftwareimage.output.augmentedrpcoutput.Selection; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput.activatesoftwareimage.output.augmentedrpcoutput.selection.DefaultValueIn; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput.activatesoftwareimage.output.augmentedrpcoutput.selection.valuein.ValueIn; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput2.activatesoftwareimage.output.AugmentedInputOutput; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput2.activatesoftwareimage.output.DefaultAugmentedInputOutput; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput2.activatesoftwareimage.output.augmentedinputoutput.DefaultFriction; -import org.onosproject.yang.gen.v1.yms.test.ytb.augment.yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput2.activatesoftwareimage.output.augmentedinputoutput.Friction; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.YtbChoiceWithContainerAndLeafList; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.YtbChoiceWithContainerAndLeafListOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.ContentTest; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.CurrentValue; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.DefaultChoiceContainer; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.choicecontainer.ChoiceContainer; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.choicecontainer.choicecontainer.DefaultPredict; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.choicecontainer.choicecontainer.Predict; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.choicecontainer.choicecontainer.predict.DefaultReproduce; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.contenttest.choicecontainer.choicecontainer.predict.Reproduce; -import org.onosproject.yang.gen.v1.yms.test.ytb.choice.with.container.and.leaf.yangautoprefixlist.rev20160826.ytbchoicewithcontainerandleaflist.currentvalue.DefaultYtbAbsent; -import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.ActivateSoftwareImageOutput; -import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.DefaultActivateSoftwareImageOutput; -import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.activatesoftwareimageoutput.DefaultOutputList; -import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.activatesoftwareimageoutput.OutputList; -import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.activatesoftwareimageoutput.outputlist.ContentInside; -import org.onosproject.yang.gen.v1.yms.test.ytb.rpc.response.with.advanced.input.and.output.rev20160826.ytbrpcresponsewithadvancedinputandoutput.activatesoftwareimage.activatesoftwareimageoutput.outputlist.DefaultContentInside; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.YtbSimpleAugment; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.YtbSimpleAugmentOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.Cont1; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.DefaultCont1; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.DefaultCont2; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.cont2.AugmentedCont2; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.cont2.DefaultAugmentedCont2; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.cont2.augmentedcont2.Cont1s; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.cont2.augmentedcont2.DefaultCont1s; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.YtbSimpleChoiceCase; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.YtbSimpleChoiceCaseOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.ytbsimplechoicecase.DefaultYtbFood; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.ytbsimplechoicecase.YtbFood; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.ytbsimplechoicecase.ytbfood.YtbSnack; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.choice.yangautoprefixcase.rev20160826.ytbsimplechoicecase.ytbfood.ytbsnack.DefaultYtbLateNight; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.ytbsimplerpcresponse.rpc.DefaultRpcOutput; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.ytbsimplerpcresponse.rpc.RpcOutput; -import org.onosproject.yms.app.ydt.YangRequestWorkBench; -import org.onosproject.yms.app.ydt.YdtExtendedBuilder; -import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry; -import org.onosproject.yms.ydt.YdtContext; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; -import static org.hamcrest.core.IsNull.notNullValue; -import static org.onosproject.yms.ydt.YdtContextOperationType.NONE; -import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REPLY; -import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST; -import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REPLY; -import static org.onosproject.yms.ydt.YmsOperationType.RPC_REQUEST; - -/** - * Unit test cases for YANG tree builder for context switch for augment, RPC - * and case. - */ -public class YtbContextSwitchTest extends YtbErrMsgAndConstants { - - private static final String RPC_ADV_NAME = "RPCAdvanced"; - private static final String RPC_ADV_NAMESPACE = "RPCAdvancedSpace"; - private static final String RPC_ADV_IO = - "YtbRpcResponseWithAdvancedInputAndOutput"; - private static final String ACT_IMG = "activate-software-image"; - private static final String INPUT = "input"; - private static final String FINAL = "final"; - private static final String AUG_NW_REF_1 = "network-ref-aug1"; - private static final String AUG_NODE_REF_1 = "node-ref-aug1"; - private static final String AUG_TP_REF_1 = "tp-ref-aug-1"; - private static final String AUG_TP_ID_1 = "tp-id-aug-1"; - private static final String AUG_NW_REF_B1 = "network-ref-augb1"; - private static final String AUG_NODE_REF_B1 = "node-ref-augb1"; - private static final String AUG_TP_REF_B1 = "tp-ref-aug-b1"; - private static final String AUG_TP_ID_B1 = "tp-id-aug-1b"; - private static final String NW_REF = "network-ref"; - private static final String NODE_REF = "node-ref"; - private static final String NW_REF_2 = "network-ref2"; - private static final String NODE_REF_3 = "node-ref3"; - private static final String NW_REF_B = "network-ref-b"; - private static final String NODE_REF_B = "node-ref-b"; - private static final String NW_REF_2B = "network-ref2-b"; - private static final String NODE_REF_2B = "node-ref2-b"; - private static final String NODE_REF_3B = "node-ref3-b"; - private static final String CHOC = "choc"; - private static final String CHOICE_CASE = "YtbSimpleChoiceCase"; - private static final String FOOD = "YtbFood"; - private static final String CHOCOLATE = "chocolate"; - private static final String VAL = "val"; - private static final String IND = "ind"; - private static final String CHOICE_ROOT_NAME = "choiceContainerRootName"; - private static final String CHOICE_ROOT_NAMESPACE = - "choiceContainerRootNamespace"; - private static final String CHOICE_CONT = - "YtbChoiceWithContainerAndLeafList"; - private static final String CONT_CHOICE = "choice-container"; - private static final String REPRODUCE = "reproduce"; - private static final String NINETY = "90"; - private static final String HUNDRED = "100"; - private static final String RPC_RT_NAME = "rpcRootName"; - private static final String RPC_RT_NAMESPACE = "rpcRootNameSpace"; - private static final String OUTPUT_LEAF = "output-leaf"; - private static final String FIVE_HUNDRED = "500"; - private static final String OUTPUT_LIST = "output-list"; - private static final String LIST_KEY = "list-key"; - private static final String BIN_VAL_1 = "AAE="; - private static final String CONT_INSIDE = "content_inside"; - private static final String BIN_VAL_2 = "CAk="; - private static final String AVAILABLE = "available"; - private static final String EIGHTY_NINE = "89"; - private static final String NINETY_EIGHT = "98"; - private static final String BIN_VAL_3 = "AAA="; - private static final String SIM_AUG = "simpleAugment"; - private static final String SIM_AUG_NAMESPACE = "simpleAugmentSpace"; - private static final String SIMPLE_AUG = "YtbSimpleAugment"; - private static final String CONT1 = "cont1"; - private static final String CONT2 = "cont2"; - private static final String LEAF4 = "leaf4"; - private static final String CONT1S = "cont1s"; - private static final String INTER_AUG = "inter-file-augment"; - private static final String INTER_AUG_NAMESPACE = - "inter-file-augment-space"; - private static final String IETF_NW = "yms-ietf-network"; - private static final String NWS = "networks"; - private static final String NW = "network"; - private static final String NODE = "node"; - private static final String NODE_ID = "node-id"; - private static final String TERM_POINT = "termination-point"; - private static final String TP_ID = "tp-id"; - private static final String SUP_TERM_POINT = "supporting-termination-point"; - private static final String TP_REF = "tp-ref"; - private static final String SUP_NODE = "supporting-node"; - private static final String KIN1 = "kin1"; - private static final String KIN2 = "kin2"; - - /** - * Creates object as like an application for RPC with list. - * - * @return object of RPC - */ - private List createApplicationBuiltObjectForRpc() { - - // Creates a empty container inside without leaf for list1. - ContentInside inside1 = new DefaultContentInside.ContentInsideBuilder() - .build(); - - // Creates a leaf list-key which is a leaf ref. - byte[] listKey1 = new byte[]{0, 1}; - - // Creates the list content 1. - OutputList output1 = new DefaultOutputList.OutputListBuilder() - .listKey(listKey1).contentInside(inside1).build(); - - // Creates a list of leaf for available. - List avail = new ArrayList<>(); - avail.add((short) 89); - avail.add((short) 98); - - // Adds the leaf list in the inside container. - ContentInside inside2 = new DefaultContentInside.ContentInsideBuilder() - .available(avail).build(); - - // Creates a leaf, list-key which is a leaf ref. - byte[] listKey2 = new byte[]{8, 9}; - - // Creates the list content 2. - OutputList outputList2 = new DefaultOutputList.OutputListBuilder() - .listKey(listKey2).contentInside(inside2).build(); - - // Creates only leaf, list-key which is a leaf ref. - byte[] arr3 = new byte[]{0, 0}; - - // Creates the list content 3. - OutputList outputList3 = new DefaultOutputList.OutputListBuilder() - .listKey(arr3).build(); - - // Adds all the list contents in array list and gives returns it. - List outputLists = new ArrayList<>(); - outputLists.add(output1); - outputLists.add(outputList2); - outputLists.add(outputList3); - return outputLists; - } - - /** - * Builds YANG request work bench for RPC with container input. - * - * @param registry schema registry - * @return YANG request work bench - */ - private YangRequestWorkBench buildYangRequestWorkBenchForRpc( - DefaultYangSchemaRegistry registry) { - - // Creates a request work bench and adds the input child into it. - YangRequestWorkBench workBench = new YangRequestWorkBench( - RPC_ADV_NAME, RPC_ADV_NAMESPACE, RPC_REQUEST, - registry, true); - Set valueList = new HashSet<>(); - valueList.add("800"); - valueList.add("900"); - workBench.addChild(RPC_ADV_IO, null, NONE); - workBench.addChild(ACT_IMG, null, NONE); - workBench.addChild(INPUT, null, NONE); - workBench.addChild(FINAL, null, NONE); - workBench.addLeaf("value", null, valueList); - return workBench; - } - - /** - * Creates an application object for inter file augment. - * - * @return application object - */ - private Object createObjectForInterFileAugment() { - - // Creates leaf value for network-ref. - Uri nwkRef = new Uri(AUG_NW_REF_1); - NetworkId nwIdUri = new NetworkId(nwkRef); - Uri nwkRef2 = new Uri("network-ref-aug2"); - NetworkId nwIdUri2 = new NetworkId(nwkRef2); - - // Creates leaf value for node-ref - Uri nodeRef = new Uri(AUG_NODE_REF_1); - NodeId nodeId = new NodeId(nodeRef); - - Uri nodeRef2 = new Uri("node-ref-aug2"); - NodeId nodeId2 = new NodeId(nodeRef2); - - // Creates support termination list with the above two contents. - SupportingTerminationPoint point1 = - new DefaultSupportingTerminationPoint - .SupportingTerminationPointBuilder() - .networkRef(nwIdUri).nodeRef(nodeId) - .tpRef(AUG_TP_REF_1).build(); - SupportingTerminationPoint point2 = - new DefaultSupportingTerminationPoint - .SupportingTerminationPointBuilder() - .networkRef(nwIdUri2).nodeRef(nodeId2) - .tpRef("tp-ref-aug-2").build(); - - List pointList = new ArrayList<>(); - pointList.add(point1); - pointList.add(point2); - - // Adds the list created to the termination point content1. - TerminationPoint tPoint1 = new DefaultTerminationPoint - .TerminationPointBuilder() - .supportingTerminationPoint(pointList) - .tpId(AUG_TP_ID_1).build(); - - // Creates leaf value for network-ref. - Uri nwkRef3 = new Uri(AUG_NW_REF_B1); - NetworkId nwIdUri3 = new NetworkId(nwkRef3); - Uri nwkRef4 = new Uri("network-ref-augb2"); - NetworkId nwIdUri4 = new NetworkId(nwkRef4); - - // Creates leaf value for node-ref - Uri nodeRef3 = new Uri(AUG_NODE_REF_B1); - NodeId nodeId3 = new NodeId(nodeRef3); - - Uri nodeRef4 = new Uri("node-ref-augb2"); - NodeId nodeId4 = new NodeId(nodeRef4); - - // Creates support termination list with the above two contents. - SupportingTerminationPoint point3 = - new DefaultSupportingTerminationPoint - .SupportingTerminationPointBuilder() - .networkRef(nwIdUri3).nodeRef(nodeId3) - .tpRef(AUG_TP_REF_B1).build(); - SupportingTerminationPoint point4 = - new DefaultSupportingTerminationPoint - .SupportingTerminationPointBuilder() - .networkRef(nwIdUri4).nodeRef(nodeId4) - .tpRef("tp-ref-aug-b2").build(); - - List pointList2 = new ArrayList<>(); - pointList2.add(point3); - pointList2.add(point4); - - // Adds the list created to the termination point content2. - TerminationPoint tPoint2 = new DefaultTerminationPoint - .TerminationPointBuilder() - .supportingTerminationPoint(pointList2) - .tpId(AUG_TP_ID_B1).build(); - - List terminationPointList = new ArrayList<>(); - terminationPointList.add(tPoint1); - terminationPointList.add(tPoint2); - - // Adds all the above contents to the augment. - AugmentedNdNode augment = new DefaultAugmentedNdNode - .AugmentedNdNodeBuilder() - .terminationPoint(terminationPointList) - .build(); - - // Creates leaf value for network-ref in augmented node(ietf-network). - Uri nwRef5 = new Uri(NW_REF); - NetworkId nwIdUri5 = new NetworkId(nwRef5); - - //Creates leaf value for node-ref in augmented node(ietf-network). - Uri nodeRef5 = new Uri(NODE_REF); - NodeId nodeId5 = new NodeId(nodeRef5); - - // Creates supporting node list content 1 with above contents. - SupportingNode supNode1 = new DefaultSupportingNode - .SupportingNodeBuilder().nodeRef(nodeId5) - .networkRef(nwIdUri5).build(); - - // Creates leaf value for network-ref in augmented node(ietf-network). - Uri nwRef6 = new Uri(NW_REF_2); - NetworkId nwIdUri6 = new NetworkId(nwRef6); - - //Creates leaf value for node-ref in augmented node(ietf-network). - Uri nodeRef6 = new Uri("node-ref2"); - NodeId nodeId6 = new NodeId(nodeRef6); - - // Creates supporting node list content 2 with above contents. - SupportingNode supNode2 = new DefaultSupportingNode - .SupportingNodeBuilder() - .nodeRef(nodeId6) - .networkRef(nwIdUri6).build(); - - List supNodeList = new ArrayList<>(); - supNodeList.add(supNode1); - supNodeList.add(supNode2); - - // Creates leaf value for node-id in augmented node(ietf-network). - Uri nodeId1 = new Uri(NODE_REF_3); - NodeId nodeIdForId = new NodeId(nodeId1); - - // Creates node list with content 1 by adding augment also. - DefaultNode.NodeBuilder nodeBuilder = new DefaultNode.NodeBuilder(); - nodeBuilder.addYangAugmentedInfo( - augment, AugmentedNdNode.class); - nodeBuilder.supportingNode(supNodeList); - nodeBuilder.nodeId(nodeIdForId); - Node node1 = nodeBuilder.build(); - - // Creates an augment node without any values set to it. - AugmentedNdNode augmentedNdNode2 = new DefaultAugmentedNdNode - .AugmentedNdNodeBuilder().build(); - - // Creates leaf value for network-ref in augmented node(ietf-network). - Uri nwRef7 = new Uri(NW_REF_B); - NetworkId nwIdUri7 = new NetworkId(nwRef7); - //Creates leaf value for node-ref in augmented node(ietf-network). - Uri nodeRef7 = new Uri(NODE_REF_B); - NodeId nodeId7 = new NodeId(nodeRef7); - - // Creates supporting node list content 1 with above contents. - SupportingNode supNode3 = new DefaultSupportingNode - .SupportingNodeBuilder().nodeRef(nodeId7) - .networkRef(nwIdUri7).build(); - - // Creates leaf value for network-ref in augmented node(ietf-network). - Uri nwRef8 = new Uri(NW_REF_2B); - NetworkId nwIdUri8 = new NetworkId(nwRef8); - - //Creates leaf value for node-ref in augmented node(ietf-network). - Uri nodeRef8 = new Uri(NODE_REF_2B); - NodeId nodeId8 = new NodeId(nodeRef8); - - // Creates supporting node list content 1 with above contents. - SupportingNode supNode4 = new DefaultSupportingNode - .SupportingNodeBuilder() - .nodeRef(nodeId8) - .networkRef(nwIdUri8).build(); - - List supNodeList2 = new ArrayList<>(); - supNodeList2.add(supNode3); - supNodeList2.add(supNode4); - - // Creates leaf value for node-id in augmented node(ietf-network). - Uri nodeIdLeaf = new Uri(NODE_REF_3B); - NodeId nodeIdForId2 = new NodeId(nodeIdLeaf); - - // Creates node list with content 2 by adding empty augment also. - DefaultNode.NodeBuilder nodeBuilder2 = new DefaultNode.NodeBuilder(); - nodeBuilder2.addYangAugmentedInfo( - augmentedNdNode2, AugmentedNdNode.class); - nodeBuilder2.supportingNode(supNodeList2); - nodeBuilder2.nodeId(nodeIdForId2); - Node node2 = nodeBuilder2.build(); - - // Adds both nodes into the list. - List nodeList = new LinkedList<>(); - nodeList.add(node1); - nodeList.add(node2); - - // Adds the list into the network list. - Network nwkList = new DefaultNetwork.NetworkBuilder() - .node(nodeList).build(); - - List networkList = new ArrayList<>(); - networkList.add(nwkList); - - // Adds the network list into networks container. - Networks contNetworks = new DefaultNetworks.NetworksBuilder() - .network(networkList).build(); - - // Adds the container into the module. - YmsIetfNetwork opParam = new YmsIetfNetworkOpParam - .YmsIetfNetworkBuilder() - .networks(contNetworks).build(); - return opParam; - } - - /** - * Processes a simple choice case and builds the YDT. - */ - @Test - public void processSimpleChoiceCase() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates a choice snack with the case late night. - YtbSnack lateNight = new DefaultYtbLateNight.YtbLateNightBuilder() - .chocolate(CHOC).build(); - - // Creates container food with the created case. - YtbFood food = new DefaultYtbFood.YtbFoodBuilder() - .ytbSnack(lateNight).build(); - - // Creates module with the container food. - YtbSimpleChoiceCase choiceCase = new YtbSimpleChoiceCaseOpParam - .YtbSimpleChoiceCaseBuilder().ytbFood(food).build(); - - // As YSB or YAB protocol, sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(choiceCase); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REPLY, registry); - - // Receives YDT context and check the tree that is built. - YdtContext rootNode = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = rootNode.getFirstChild(); - assertThat(getInCrtName(MODULE, CHOICE_CASE), module.getName(), - is(CHOICE_CASE)); - - // Gets the container food from module. - YdtContext container = module.getFirstChild(); - assertThat(getInCrtName(CONTAINER, FOOD), container.getName(), - is(FOOD)); - - // Gets the case-leaf from container - YdtContext caseNode = container.getFirstChild(); - assertThat(getInCrtName(LEAF, CHOCOLATE), caseNode.getName(), - is(CHOCOLATE)); - assertThat(getInCrtLeafValue(CHOCOLATE, CHOC), caseNode.getValue(), - is(CHOC)); - } - - /** - * Processes module with two choices and a choice having node and a - * leaf-list. - */ - @Test - public void processChoiceWithNodeAndLeafList() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates reproduce container for list predict-1. - Reproduce reproduce1 = new DefaultReproduce.ReproduceBuilder() - .yangAutoPrefixCatch((short) 90).build(); - - // Assigns predict-1 with the container. - Predict predict1 = new DefaultPredict.PredictBuilder() - .reproduce(reproduce1).build(); - - // Creates reproduce container for list predict-2. - Reproduce reproduce2 = new DefaultReproduce.ReproduceBuilder() - .yangAutoPrefixCatch((short) 100).build(); - - // Assigns predict-2 with the container. - Predict predict2 = new DefaultPredict.PredictBuilder() - .reproduce(reproduce2).build(); - - List predictList = new ArrayList<>(); - predictList.add(predict1); - predictList.add(predict2); - - // Case container is added to the choice content-test. - ChoiceContainer containerCase = new org.onosproject.yang.gen.v1.yms - .test.ytb.choice.with.container.and.leaf.yangautoprefixlist - .rev20160826.ytbchoicewithcontainerandleaflist.contenttest - .choicecontainer.DefaultChoiceContainer.ChoiceContainerBuilder() - .predict(predictList).build(); - - // Case container is added to the choice content-test. - ContentTest contentTest = new DefaultChoiceContainer - .ChoiceContainerBuilder().choiceContainer(containerCase).build(); - - // Creates string list for leaf-list final. - List stringList = new ArrayList<>(); - stringList.add(VAL); - stringList.add(IND); - - // For choice current value, the leaf list gets added as case. - CurrentValue currentValue = new DefaultYtbAbsent.YtbAbsentBuilder() - .yangAutoPrefixFinal(stringList).build(); - - // Adds choice as child to the module. - YtbChoiceWithContainerAndLeafList choiceWithContainerAndLeafList = - new YtbChoiceWithContainerAndLeafListOpParam - .YtbChoiceWithContainerAndLeafListBuilder() - .contentTest(contentTest).currentValue(currentValue) - .build(); - - // As YSB or YAB protocol, sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(choiceWithContainerAndLeafList); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, CHOICE_ROOT_NAME, CHOICE_ROOT_NAMESPACE, - QUERY_CONFIG_REPLY, registry); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(MODULE, CHOICE_CONT), module.getName(), - is(CHOICE_CONT)); - - // Gets the first choice content under the module, as container. - YdtContext choice1 = module.getFirstChild(); - assertThat(getInCrtName(CONTAINER, CONT_CHOICE), choice1.getName(), - is(CONT_CHOICE)); - - // Gets the first content in the list predict. - YdtContext list1 = choice1.getFirstChild(); - assertThat(getInCrtName(LIST, PREDICT), list1.getName(), is(PREDICT)); - - // Gets the container and its child leaf in the list predict. - YdtContext container1 = list1.getFirstChild(); - assertThat(getInCrtName(CONTAINER, REPRODUCE), container1.getName(), - is(REPRODUCE)); - YdtContext leaf1 = container1.getFirstChild(); - assertThat(getInCrtName(LEAF, CATCH), leaf1.getName(), is(CATCH)); - assertThat(getInCrtLeafValue(CATCH, NINETY), leaf1.getValue(), - is(NINETY)); - - // Gets the second content in the list predict. - YdtContext list2 = list1.getNextSibling(); - assertThat(getInCrtName(LIST, PREDICT), list2.getName(), is(PREDICT)); - - // Gets the container and its child leaf in the list predict. - YdtContext container2 = list2.getFirstChild(); - assertThat(getInCrtName(CONTAINER, REPRODUCE), container2.getName(), - is(REPRODUCE)); - YdtContext leaf2 = container2.getFirstChild(); - assertThat(getInCrtName(LEAF, CATCH), leaf2.getName(), is(CATCH)); - assertThat(getInCrtLeafValue(CATCH, HUNDRED), leaf2.getValue(), - is(HUNDRED)); - - // Gets the second choice content under the module, as leaf-list. - YdtContext choice2 = choice1.getNextSibling(); - assertThat(getInCrtName(LEAF_LIST, FINAL), choice2.getName(), - is(FINAL)); - Set value2 = choice2.getValueSet(); - assertThat(getInCrtLeafListValue(FINAL, VAL), value2.contains(VAL), - is(true)); - assertThat(getInCrtLeafListValue(FINAL, IND), value2.contains(IND), - is(true)); - } - - /** - * Processes RPC response of a simple output with only a leaf content - * inside. - */ - @Test - public void processSimpleRpcResponse() { - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - RpcOutput output = new DefaultRpcOutput.RpcOutputBuilder() - .outputLeaf(500).build(); - - // Creates request work bench of rpc. - YangRequestWorkBench workBench = new YangRequestWorkBench( - RPC_RT_NAME, RPC_RT_NAMESPACE, RPC_REQUEST, registry, true); - workBench.addChild(RPC_NAME, null, NONE); - workBench.addChild(RPC, null, NONE); - workBench.addChild(INPUT, null, NONE); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtForRpcResponse( - output, workBench); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(MODULE, RPC_NAME), module.getName(), - is(RPC_NAME)); - - // Gets the rpc node from the module. - YdtContext rpc = module.getFirstChild(); - assertThat(getInCrtName(RPC, RPC), rpc.getName(), is(RPC)); - - // Gets the output node from the module. - // TODO: Change assert after YANG utils is merged. - YdtContext rpcOutput = rpc.getFirstChild(); - //assertThat(rpcOutputNode.getName(), is("output")); - - YdtContext outputLeaf = rpcOutput.getFirstChild(); - assertThat(getInCrtName(LEAF, OUTPUT_LEAF), outputLeaf.getName(), - is(OUTPUT_LEAF)); - assertThat(getInCrtLeafValue(OUTPUT_LEAF, FIVE_HUNDRED), - outputLeaf.getValue(), is(FIVE_HUNDRED)); - } - - /** - * Processes RPC response of an output defined with list. - */ - @Test - public void processRpcResponseForAdvInputOutput() { - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - List list = createApplicationBuiltObjectForRpc(); - ActivateSoftwareImageOutput output = - new DefaultActivateSoftwareImageOutput - .ActivateSoftwareImageOutputBuilder() - .outputList(list).build(); - - // Creates request work bench of rpc. - YangRequestWorkBench workBench = buildYangRequestWorkBenchForRpc( - registry); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtForRpcResponse( - output, workBench); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(MODULE, RPC_ADV_IO), module.getName(), - is(RPC_ADV_IO)); - - // Gets the rpc node from module. - YdtContext rpc = module.getFirstChild(); - assertThat(getInCrtName(RPC, ACT_IMG), rpc.getName(), is(ACT_IMG)); - - // Gets the output node from the module. - // TODO: Change assert after YANG utils is merged. - YdtContext rpcOutput = rpc.getFirstChild(); - //assertThat(rpcOutputNode.getName(), is("output")); - - // Gets the list content 1 as the node from output. - YdtContext outputList1 = rpcOutput.getFirstChild(); - assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList1.getName(), - is(OUTPUT_LIST)); - - // Gets the leaf key-list from list content1. - YdtContext keyList1 = outputList1.getFirstChild(); - assertThat(getInCrtName(LEAF, LIST_KEY), keyList1.getName(), - is(LIST_KEY)); - assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_1), keyList1.getValue(), - is(BIN_VAL_1)); - - // Gets the content inside container from list content 1. - YdtContext cont1 = keyList1.getNextSibling(); - assertThat(getInCrtName(CONTAINER, CONT_INSIDE), cont1.getName(), - is(CONT_INSIDE)); - - // Gets the list content 2 as the node from output. - YdtContext outputList2 = outputList1.getNextSibling(); - assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList2.getName(), - is(OUTPUT_LIST)); - - // Gets the leaf-list key-list from list content2. - YdtContext keyList2 = outputList2.getFirstChild(); - assertThat(getInCrtName(LEAF, LIST_KEY), keyList2.getName(), - is(LIST_KEY)); - assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_2), keyList2.getValue(), - is(BIN_VAL_2)); - - // Gets the content inside container from list content 2. - YdtContext cont2 = keyList2.getNextSibling(); - assertThat(getInCrtName(CONTAINER, CONT_INSIDE), cont2.getName(), - is(CONT_INSIDE)); - - // Gets the leaf-list available inside container. - YdtContext availLeafList = cont2.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, AVAILABLE), availLeafList.getName(), - is(AVAILABLE)); - Set value1 = availLeafList.getValueSet(); - assertThat(getInCrtLeafListValue(AVAILABLE, EIGHTY_NINE), - value1.contains(EIGHTY_NINE), is(true)); - assertThat(getInCrtLeafListValue(AVAILABLE, NINETY_EIGHT), - value1.contains(NINETY_EIGHT), is(true)); - - // Gets the list content 3. - YdtContext outputList3 = outputList2.getNextSibling(); - assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList3.getName(), - is(OUTPUT_LIST)); - - // Gets the leaf list-key in content 3 of list. - YdtContext keyList3 = outputList3.getFirstChild(); - assertThat(getInCrtName(LEAF, LIST_KEY), keyList3.getName(), - is(LIST_KEY)); - assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_3), keyList3.getValue(), - is(BIN_VAL_3)); - } - - /** - * Processes simple self augment file with leaf and container inside - * augment. - */ - @Test - public void processSimpleAugment() { - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates container cont1s with the leaf. - org.onosproject.yang.gen.v1.yms.test.ytb.simple.augment.rev20160826 - .ytbsimpleaugment.cont1.cont2.augmentedcont2.cont1s - .Cont1s cont1s1 = new org.onosproject.yang.gen.v1.yms.test - .ytb.simple.augment.rev20160826.ytbsimpleaugment.cont1.cont2 - .augmentedcont2.cont1s.DefaultCont1s.Cont1sBuilder().build(); - - // Appends the created container into another container. - Cont1s cont1s = new DefaultCont1s.Cont1sBuilder() - .cont1s(cont1s1).build(); - - // Creates augment with the container and leaf. - AugmentedCont2 augment = new DefaultAugmentedCont2 - .AugmentedCont2Builder().cont1s(cont1s).leaf4(500).build(); - - // Creates for the node which will be getting augmented. - // Creates cont2 where content will be augmented into. - DefaultCont2.Cont2Builder augCont2 = new DefaultCont2 - .Cont2Builder(); - augCont2.addYangAugmentedInfo(augment, AugmentedCont2.class); - - // Creates cont1 where cont2 is added. - Cont1 cont1 = new DefaultCont1.Cont1Builder() - .cont2(augCont2.build()).build(); - - // Creates module with the nodes inside. - YtbSimpleAugment simpleAugment = new YtbSimpleAugmentOpParam - .YtbSimpleAugmentBuilder().cont1(cont1).build(); - - // As YSB or YAB protocol, sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(simpleAugment); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, SIM_AUG, SIM_AUG_NAMESPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(MODULE, SIMPLE_AUG), module.getName(), - is(SIMPLE_AUG)); - - // Gets the cont1 under module. - YdtContext container1 = module.getFirstChild(); - assertThat(getInCrtName(CONTAINER, CONT1), container1.getName(), - is(CONT1)); - - // Gets the cont2 under cont1. - YdtContext container2 = container1.getFirstChild(); - assertThat(getInCrtName(CONTAINER, CONT2), container2.getName(), - is(CONT2)); - - // Gets the leaf4 which was augmented under cont2. - YdtContext leaf4 = container2.getFirstChild(); - assertThat(getInCrtName(LEAF, LEAF4), leaf4.getName(), is(LEAF4)); - assertThat(getInCrtLeafValue(LEAF4, FIVE_HUNDRED), leaf4.getValue(), - is(FIVE_HUNDRED)); - - // Gets the cont1s which was augmented under cont2. - YdtContext container1s = leaf4.getNextSibling(); - assertThat(getInCrtName(CONTAINER, CONT1S), container1s.getName(), - is(CONT1S)); - - // Gets the cont2s which was augmented under cont1s. - YdtContext container2s = container1s.getFirstChild(); - assertThat(getInCrtName(CONTAINER, CONT1S), container2s.getName(), - is(CONT1S)); - } - - /** - * Processes inter file augment with augmented node as list and the - * augment having list. - */ - @Test - public void processInterFileAugment() { - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - Object opParam = createObjectForInterFileAugment(); - - // As YSB or YAB protocol, sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(opParam); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, INTER_AUG, INTER_AUG_NAMESPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Checks the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(MODULE, IETF_NW), module.getName(), - is(IETF_NW)); - - // Checks the container networks from module. - YdtContext nwksCont = module.getFirstChild(); - assertThat(getInCrtName(CONTAINER, NWS), nwksCont.getName(), is(NWS)); - - // Checks the list network from container networks. - YdtContext nwrkList = nwksCont.getFirstChild(); - assertThat(getInCrtName(LIST, NW), nwrkList.getName(), is(NW)); - - // Checks the node list content 1 under network list. - YdtContext node1 = nwrkList.getFirstChild(); - assertThat(getInCrtName(LIST, NODE), node1.getName(), is(NODE)); - - // Checks the node-id leaf for list content 1. - YdtContext nodeId1 = node1.getFirstChild(); - assertThat(getInCrtName(LEAF, NODE_ID), nodeId1.getName(), is(NODE_ID)); - assertThat(getInCrtLeafValue(NODE_ID, NODE_REF_3), nodeId1.getValue(), - is(NODE_REF_3)); - - // Checks termination list 1 under node 1, from augment. - YdtContext terList1 = nodeId1.getNextSibling(); - assertThat(getInCrtName(LIST, TERM_POINT), terList1.getName(), - is(TERM_POINT)); - - // Checks tp-id leaf from termination list content 1. - YdtContext tpId1 = terList1.getFirstChild(); - assertThat(getInCrtName(LEAF, TP_ID), tpId1.getName(), is(TP_ID)); - assertThat(getInCrtLeafValue(TP_ID, AUG_TP_ID_1), tpId1.getValue(), - is(AUG_TP_ID_1)); - - // Checks supporting term point list content1 from term list content 1. - YdtContext supTerm1 = tpId1.getNextSibling(); - assertThat(getInCrtName(LIST, SUP_TERM_POINT), supTerm1.getName(), - is(SUP_TERM_POINT)); - - YdtContext nwkRefSupTerm1 = supTerm1.getFirstChild(); - assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupTerm1.getName(), - is(NW_REF)); - assertThat(getInCrtLeafValue(NW_REF, AUG_NW_REF_1), - nwkRefSupTerm1.getValue(), is(AUG_NW_REF_1)); - - YdtContext nodeRefSupTerm1 = nwkRefSupTerm1.getNextSibling(); - assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupTerm1.getName(), - is(NODE_REF)); - assertThat(getInCrtLeafValue(NODE_REF, AUG_NODE_REF_1), - nodeRefSupTerm1.getValue(), is(AUG_NODE_REF_1)); - - YdtContext tpRefSupTerm1 = nodeRefSupTerm1.getNextSibling(); - assertThat(getInCrtName(LEAF, TP_REF), tpRefSupTerm1.getName(), - is(TP_REF)); - assertThat(getInCrtLeafValue(TP_REF, AUG_TP_REF_1), - tpRefSupTerm1.getValue(), is(AUG_TP_REF_1)); - - // Checks termination list 2 under node 1, from augment. - YdtContext terminationList2 = terList1.getNextSibling(); - assertThat(getInCrtName(LIST, TERM_POINT), terminationList2.getName(), - is(TERM_POINT)); - - YdtContext terList2 = terminationList2.getFirstChild(); - assertThat(getInCrtName(LEAF, TP_ID), terList2.getName(), is(TP_ID)); - assertThat(getInCrtLeafValue(TP_ID, AUG_TP_ID_B1), terList2.getValue(), - is(AUG_TP_ID_B1)); - - // Checks supporting term point list content1 from term list content 2. - YdtContext supTerm2 = terList2.getNextSibling(); - assertThat(getInCrtName(LIST, SUP_TERM_POINT), supTerm2.getName(), - is(SUP_TERM_POINT)); - - YdtContext nwkRefSupTerm2 = supTerm2.getFirstChild(); - assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupTerm2.getName(), - is(NW_REF)); - assertThat(getInCrtLeafValue(NW_REF, AUG_NW_REF_B1), - nwkRefSupTerm2.getValue(), is(AUG_NW_REF_B1)); - - YdtContext nodeRefSupTerm2 = nwkRefSupTerm2.getNextSibling(); - assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupTerm2.getName(), - is(NODE_REF)); - assertThat(getInCrtLeafValue(NODE_REF, AUG_NODE_REF_B1), - nodeRefSupTerm2.getValue(), is(AUG_NODE_REF_B1)); - - YdtContext tpRefSupTerm2 = nodeRefSupTerm2.getNextSibling(); - assertThat(getInCrtName(LEAF, TP_REF), tpRefSupTerm2.getName(), - is(TP_REF)); - assertThat(getInCrtLeafValue(TP_REF, AUG_TP_REF_B1), - tpRefSupTerm2.getValue(), is(AUG_TP_REF_B1)); - - // Checks the content of the supporting node list content 1 in node 1. - YdtContext supNode1 = terminationList2.getNextSibling(); - assertThat(getInCrtName(LIST, SUP_NODE), supNode1.getName(), - is(SUP_NODE)); - - YdtContext nwkRefSupNode1 = supNode1.getFirstChild(); - assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupNode1.getName(), - is(NW_REF)); - assertThat(getInCrtLeafValue(NW_REF, NW_REF), nwkRefSupNode1.getValue(), - is(NW_REF)); - - YdtContext nodeRefSupNode1 = nwkRefSupNode1.getNextSibling(); - assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupNode1.getName(), - is(NODE_REF)); - assertThat(getInCrtLeafValue(NODE_REF, NW_REF), - nwkRefSupNode1.getValue(), is(NW_REF)); - - // Checks the content of the supporting node list content 2 in node 1. - YdtContext supNode2 = supNode1.getNextSibling(); - assertThat(getInCrtName(LIST, SUP_NODE), supNode2.getName(), - is(SUP_NODE)); - - YdtContext nwkRefSupNode2 = supNode2.getFirstChild(); - assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupNode2.getName(), - is(NW_REF)); - assertThat(getInCrtLeafValue(NW_REF, NW_REF_2), - nwkRefSupNode2.getValue(), is(NW_REF_2)); - - YdtContext nodeRefSupNode2 = nwkRefSupNode2.getNextSibling(); - assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupNode2.getName(), - is(NODE_REF)); - assertThat(getInCrtLeafValue(NODE_REF, NW_REF_2), - nwkRefSupNode2.getValue(), is(NW_REF_2)); - - // Checks the node list content 2 under network list. - YdtContext node2 = node1.getNextSibling(); - assertThat(getInCrtName(LIST, NODE), node2.getName(), is(NODE)); - - // Checks the node-id leaf for list content 2. - YdtContext nodeId2 = node2.getFirstChild(); - assertThat(getInCrtName(LEAF, NODE_ID), nodeId2.getName(), is(NODE_ID)); - assertThat(getInCrtLeafValue(NODE_ID, NODE_REF_3B), nodeId2.getValue(), - is(NODE_REF_3B)); - - // Checks supporting term point list content1 from term list content 2. - YdtContext supNode3 = nodeId2.getNextSibling(); - assertThat(getInCrtName(LIST, SUP_NODE), supNode3.getName(), - is(SUP_NODE)); - - YdtContext nwkRefSupNode3 = supNode3.getFirstChild(); - assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupNode3.getName(), - is(NW_REF)); - assertThat(getInCrtLeafValue(NW_REF, NW_REF_B), - nwkRefSupNode3.getValue(), is(NW_REF_B)); - - YdtContext nodeRefSupNode3 = nwkRefSupNode3.getNextSibling(); - assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupNode3.getName(), - is(NODE_REF)); - assertThat(getInCrtLeafValue(NODE_REF, NODE_REF_B), - nodeRefSupNode3.getValue(), is(NODE_REF_B)); - - // Checks supporting term point list content2 from term list content 2. - YdtContext supNode4 = supNode3.getNextSibling(); - assertThat(getInCrtName(LIST, SUP_NODE), supNode4.getName(), - is(SUP_NODE)); - - YdtContext nwkRefSupNode4 = supNode4.getFirstChild(); - assertThat(getInCrtName(LEAF, NW_REF), nwkRefSupNode4.getName(), - is(NW_REF)); - assertThat(getInCrtLeafValue(NW_REF, NW_REF_2B), - nwkRefSupNode4.getValue(), is(NW_REF_2B)); - - YdtContext nodeRefSupNode4 = nwkRefSupNode4.getNextSibling(); - assertThat(getInCrtName(LEAF, NODE_REF), nodeRefSupNode4.getName(), - is(NODE_REF)); - assertThat(getInCrtLeafValue(NODE_REF, NODE_REF_2B), - nodeRefSupNode4.getValue(), is(NODE_REF_2B)); - } - - /** - * Processes inter file augment with rpc output as its target node. - */ - @Test - public void processInterFileAugmentWithRpcInputAsTarget() { - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // Builds RPC request tree in YDT. - YangRequestWorkBench workBench = - buildYangRequestWorkBenchForRpc(registry); - - // Creates augment code object. - - // Creates the list of value in, case value in. - ValueIn valuein1 = new org.onosproject.yang.gen.v1.yms.test.ytb.augment - .yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput - .activatesoftwareimage.output.augmentedrpcoutput.selection - .valuein.DefaultValueIn.ValueInBuilder().kinetic(KIN1) - .build(); - ValueIn valuein2 = new org.onosproject.yang.gen.v1.yms.test.ytb.augment - .yangautoprefixfor.rpc.input.rev20160826.ytbaugmentforrpcinput - .activatesoftwareimage.output.augmentedrpcoutput.selection - .valuein.DefaultValueIn.ValueInBuilder().kinetic(KIN2) - .build(); - - List valueInList = new ArrayList<>(); - valueInList.add(valuein1); - valueInList.add(valuein2); - - // Adds the case value into the choice interface. - Selection selection = new DefaultValueIn.ValueInBuilder() - .valueIn(valueInList).build(); - - // Augment is created for the object. - AugmentedRpcOutput augmentRpcOutput = new DefaultAugmentedRpcOutput - .AugmentedRpcOutputBuilder().selection(selection).build(); - - // Create two list object of friction. - Friction friction1 = new DefaultFriction.FrictionBuilder() - .speed(BigInteger.valueOf(500)).build(); - Friction friction2 = new DefaultFriction.FrictionBuilder() - .speed(BigInteger.valueOf(1000)).build(); - - List fricList = new ArrayList<>(); - fricList.add(friction1); - fricList.add(friction2); - - // Create augment with the friction object created. - AugmentedInputOutput augmentedIO = new DefaultAugmentedInputOutput - .AugmentedInputOutputBuilder().friction(fricList).build(); - - // Creates RPC object. - List outputLists = createApplicationBuiltObjectForRpc(); - - // Adds the augment and the rps output values into the output. - DefaultActivateSoftwareImageOutput - .ActivateSoftwareImageOutputBuilder output = - new DefaultActivateSoftwareImageOutput - .ActivateSoftwareImageOutputBuilder(); - output.addYangAugmentedInfo(augmentRpcOutput, AugmentedRpcOutput.class); - output.addYangAugmentedInfo(augmentedIO, AugmentedInputOutput.class); - output.outputList(outputLists); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtForRpcResponse( - output, workBench); - - // Receives YDT context and check the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Checks the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(MODULE, RPC_ADV_IO), module.getName(), - is(RPC_ADV_IO)); - - // Gets the rpc under module. - YdtContext rpc = module.getFirstChild(); - assertThat(getInCrtName(RPC, ACT_IMG), rpc.getName(), is(ACT_IMG)); - - // Gets the output value under rpc. - // TODO: Change assert after YANG utils is merged. - YdtContext rpcOutputNode = rpc.getFirstChild(); - //assertThat(rpcOutputNode.getName(), is("output")); - - YdtContext firstNode = rpcOutputNode.getFirstChild(); - assertThat(firstNode, notNullValue()); - - YdtContext secondNode = firstNode.getNextSibling(); - assertThat(secondNode, notNullValue()); - - YdtContext thirdNode = secondNode.getNextSibling(); - assertThat(thirdNode, notNullValue()); - - YdtContext fourthNode = thirdNode.getNextSibling(); - assertThat(fourthNode, notNullValue()); - - // Gets the list content 1 as the node from output. - YdtContext outputList1 = fourthNode.getNextSibling(); - assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList1.getName(), - is(OUTPUT_LIST)); - - // Gets the leaf key-list from list content1. - YdtContext keyList1 = outputList1.getFirstChild(); - assertThat(getInCrtName(LEAF, LIST_KEY), keyList1.getName(), - is(LIST_KEY)); - assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_1), keyList1.getValue(), - is(BIN_VAL_1)); - - // Gets the content inside container from list content 1. - YdtContext cont1 = keyList1.getNextSibling(); - assertThat(getInCrtName(CONTAINER, CONT_INSIDE), cont1.getName(), - is(CONT_INSIDE)); - - // Gets the list content 2 as the node from output. - YdtContext outputList2 = outputList1.getNextSibling(); - assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList2.getName(), - is(OUTPUT_LIST)); - - // Gets the leaf-list key-list from list content2. - YdtContext keyList2 = outputList2.getFirstChild(); - assertThat(getInCrtName(LEAF, LIST_KEY), keyList2.getName(), - is(LIST_KEY)); - assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_2), keyList2.getValue(), - is(BIN_VAL_2)); - - // Gets the content inside container from list content 2. - YdtContext cont2 = keyList2.getNextSibling(); - assertThat(getInCrtName(CONTAINER, CONT_INSIDE), cont2.getName(), - is(CONT_INSIDE)); - - // Gets the leaf-list available inside container. - YdtContext availLeafList = cont2.getFirstChild(); - assertThat(getInCrtName(LEAF_LIST, AVAILABLE), availLeafList.getName(), - is(AVAILABLE)); - Set value1 = availLeafList.getValueSet(); - assertThat(getInCrtLeafListValue(AVAILABLE, EIGHTY_NINE), - value1.contains(EIGHTY_NINE), is(true)); - assertThat(getInCrtLeafListValue(AVAILABLE, NINETY_EIGHT), - value1.contains(NINETY_EIGHT), is(true)); - - // Gets the list content 3. - YdtContext outputList3 = outputList2.getNextSibling(); - assertThat(getInCrtName(LIST, OUTPUT_LIST), outputList3.getName(), - is(OUTPUT_LIST)); - - // Gets the leaf list-key in content 3 of list. - YdtContext keyList3 = outputList3.getFirstChild(); - assertThat(getInCrtName(LEAF, LIST_KEY), keyList3.getName(), - is(LIST_KEY)); - assertThat(getInCrtLeafValue(LIST_KEY, BIN_VAL_3), keyList3.getValue(), - is(BIN_VAL_3)); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbErrMsgAndConstants.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbErrMsgAndConstants.java deleted file mode 100644 index 7b82454a90..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbErrMsgAndConstants.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider; - -/** - * Represents the abstract class for ytb test classes having common methods - * and the constants. - */ -public abstract class YtbErrMsgAndConstants { - - /** - * Static attribute of root name. - */ - public static final String ROOT_NAME = "rootName"; - - /** - * Static attribute of root name space. - */ - public static final String ROOT_NAME_SPACE = "rootNameSpace"; - - /** - * Static attribute of module which is YANG name. - */ - public static final String MODULE = "module"; - - /** - * Static attribute of list which is YANG name. - */ - public static final String LIST = "list"; - - /** - * Static attribute of leaf which is YANG name. - */ - public static final String LEAF = "leaf"; - - /** - * Static attribute of leaf-list which is YANG name. - */ - public static final String LEAF_LIST = "leaf-list"; - - /** - * Static attribute of container which is YANG name. - */ - public static final String CONTAINER = "container"; - - /** - * Static attribute of name predict. - */ - public static final String PREDICT = "predict"; - - /** - * Static attribute of name catch. - */ - public static final String CATCH = "catch"; - - /** - * Static attribute of YANG file name. - */ - public static final String RPC_NAME = "YtbSimpleRpcResponse"; - - /** - * Static attribute of name rpc. - */ - public static final String RPC = "rpc"; - public static final String HUNDRED = "hundred"; - /** - * Created a schema node provider, which will register the app. - */ - public TestYangSchemaNodeProvider schemaProvider = - new TestYangSchemaNodeProvider(); - - /** - * Returns the error message for when leaf value doesn't match with the - * expected value. It takes name of leaf and expected value as its - * parameter, to throw the message. - * - * @param name leaf name - * @param value expected value of leaf - * @return error message of leaf value as incorrect - */ - public static String getInCrtLeafValue(String name, String value) { - return "The value of leaf " + name + " is not " + value; - } - - /** - * Returns the error message, when node name doesn't match with the - * expected value. It takes YANG name of the node and the node name as - * parameter, to throw the message. - * - * @param node YANG node name - * @param nodeName node name - * @return error message as the node name is incorrect - */ - public static String getInCrtName(String node, String nodeName) { - return getCapitalCase(node) + "'s name " + nodeName + " is incorrect."; - } - - /** - * Returns the error message, when operation type doesn't match with the - * expected value. It takes YANG name of the node and the node name as - * parameter, to throw the message. - * - * @param node YANG node name - * @param nodeName node name - * @return error message as the operation type is incorrect - */ - public static String getInCrtOpType(String node, String nodeName) { - return "The operation type of " + node + " " + nodeName + " is " + - "incorrect"; - } - - /** - * Returns the error message for when leaf-list value doesn't match with the - * expected value. It takes name of leaf-list and expected value as its - * parameter, to throw the message. - * - * @param name leaf-list name - * @param value value in leaf-list - * @return error message as the value in the leaf-list is incorrect - */ - public static String getInCrtLeafListValue(String name, String value) { - return "The leaf-list " + name + " does not have " + value + " in it."; - } - - /** - * Returns the capital cased first letter of the given string. - * - * @param name string to be capital cased - * @return capital cased string - */ - private static String getCapitalCase(String name) { - return name.substring(0, 1).toUpperCase() + name.substring(1); - } -} diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbInvalidNodeSkipTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbInvalidNodeSkipTest.java deleted file mode 100644 index 42da150c41..0000000000 --- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ytb/YtbInvalidNodeSkipTest.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.yms.app.ytb; - -import org.junit.Test; -import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.YtbDataType; -import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.YtbDataTypeOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.EnumDer1; -import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.EnumDer2; -import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.EnumLeafListUnion; -import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.UnionEnumUnion; -import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.enumder2.EnumDer2Enum; -import org.onosproject.yang.gen.v1.yms.test.ytb.data.type.rev20160826.ytbdatatype.enumleaflistunion.EnumLeafListUnionEnum1; -import org.onosproject.yang.gen.v1.yms.test.ytb.empty.type.rev20160826.YtbEmptyType; -import org.onosproject.yang.gen.v1.yms.test.ytb.empty.type.rev20160826.YtbEmptyTypeOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.empty.type.rev20160826.ytbemptytype.EmpType; -import org.onosproject.yang.gen.v1.yms.test.ytb.empty.type.rev20160826.ytbemptytype.EmpType2; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.YtbSimpleRpcResponse; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.YtbSimpleRpcResponseOpParam; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.ytbsimplerpcresponse.Cumulative; -import org.onosproject.yang.gen.v1.yms.test.ytb.simple.rpc.response.rev20160826.ytbsimplerpcresponse.DefaultCumulative; -import org.onosproject.yms.app.ydt.YdtExtendedBuilder; -import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry; -import org.onosproject.yms.ydt.YdtContext; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; -import static org.hamcrest.core.IsNull.nullValue; -import static org.onosproject.yms.ydt.YmsOperationType.EDIT_CONFIG_REQUEST; - -/** - * Unit test cases for invalid node skip in YANG tree builder. - */ -public class YtbInvalidNodeSkipTest extends YtbErrMsgAndConstants { - - private static final String CUMULATIVE = "cumulative"; - private static final String SUM = "sum"; - private static final String FIVE = "5"; - private static final String TEN_NUM = "10"; - private static final String DATA_TYPE = "YtbDataType"; - private static final String ENUM = "enum"; - private static final String EMPTY = "empty"; - private static final String THOUSAND = "thousand"; - private static final String TEN = "ten"; - private static final String ENUM_LEAF_LIST = "enum-leaf-list"; - private static final String UNION_ENUM = "union-enum"; - private static final String ENUM_LEAF_REF = "leaf-ref-enum"; - private static final String EMPTY_MOD = "YtbEmptyType"; - private static final String EMPTY_REF_LIST = "empty-list-ref"; - private static final String EMPTY_TYPE = "empty-type"; - private static final String EMP_LIST_REF_TYPE = "empty-list-ref-type"; - - /** - * Processes RPC node which is the sibling to the empty current node. - */ - @Test - public void processRpcSiblingWhenNodeIsEmpty() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - Cumulative cumulative1 = new DefaultCumulative.CumulativeBuilder() - .sum((byte) 5).build(); - Cumulative cumulative2 = new DefaultCumulative.CumulativeBuilder() - .sum((byte) 10).build(); - List list = new ArrayList<>(); - list.add(cumulative1); - list.add(cumulative2); - YtbSimpleRpcResponse rpc = new YtbSimpleRpcResponseOpParam - .YtbSimpleRpcResponseBuilder().cumulative(list).build(); - - // As YSB or YAB protocol sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(rpc); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and checks the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(MODULE, RPC_NAME), module.getName(), - is(RPC_NAME)); - - // Gets the first list content of cumulative. - YdtContext list1 = module.getFirstChild(); - assertThat(getInCrtName(LIST, CUMULATIVE), list1.getName(), - is(CUMULATIVE)); - - YdtContext sum1 = list1.getFirstChild(); - assertThat(getInCrtName(LEAF, SUM), sum1.getName(), is(SUM)); - assertThat(getInCrtLeafValue(SUM, FIVE), sum1.getValue(), is(FIVE)); - - // Gets the second list content of cumulative. - YdtContext list2 = list1.getNextSibling(); - assertThat(getInCrtName(LIST, CUMULATIVE), list2.getName(), - is(CUMULATIVE)); - - YdtContext sum2 = list2.getFirstChild(); - assertThat(getInCrtName(LEAF, SUM), sum2.getName(), is(SUM)); - assertThat(getInCrtLeafValue(SUM, TEN_NUM), sum2.getValue(), is(TEN_NUM)); - } - - @Test - public void processEnumDataType() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // Creates the enum hundred for leaf enum. - EnumDer2 der2 = new EnumDer2(EnumDer2Enum.HUNDRED); - EnumDer1 der1 = new EnumDer1(der2); - - // Creates the enum hundred and ten for leaf-list having union. - EnumLeafListUnion union1 = new EnumLeafListUnion(EnumLeafListUnionEnum1 - .HUNDRED); - EnumLeafListUnion union2 = new EnumLeafListUnion(EnumLeafListUnionEnum1 - .TEN); - - List leafList = new ArrayList<>(); - leafList.add(union1); - leafList.add(union2); - - // Creates a leaf having typedef in union, where as the typedef is enum. - UnionEnumUnion enumUnion = new UnionEnumUnion(der1); - - // Creates a leaf-list with leaf-ref pointing to leaf with enum. - EnumDer2 enum2 = new EnumDer2(EnumDer2Enum.THOUSAND); - EnumDer1 enum1 = new EnumDer1(enum2); - EnumDer2 enum4 = new EnumDer2(EnumDer2Enum.HUNDRED); - EnumDer1 enum3 = new EnumDer1(enum4); - - List enumDer1 = new ArrayList<>(); - enumDer1.add(enum1); - enumDer1.add(enum3); - - YtbDataType dataType = new YtbDataTypeOpParam.YtbDataTypeBuilder() - .yangAutoPrefixEnum(der1).enumLeafList(leafList) - .unionEnum(enumUnion).leafRefEnum(enumDer1).build(); - - // As YSB or YAB protocol sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(dataType); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and checks the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(MODULE, DATA_TYPE), module.getName(), - is(DATA_TYPE)); - - // Gets the first list content of cumulative. - YdtContext leafEnum = module.getFirstChild(); - assertThat(getInCrtName(LEAF, ENUM), leafEnum.getName(), is(ENUM)); - assertThat(getInCrtLeafValue(ENUM, HUNDRED), leafEnum.getValue(), - is(HUNDRED)); - - YdtContext unionEnum = leafEnum.getNextSibling(); - assertThat(getInCrtName(LEAF_LIST, UNION_ENUM), unionEnum.getName(), - is(UNION_ENUM)); - assertThat(getInCrtLeafValue(UNION_ENUM, HUNDRED), unionEnum.getValue(), - is(HUNDRED)); - - YdtContext leafListEnum = unionEnum.getNextSibling(); - Set leafListVal = leafListEnum.getValueSet(); - assertThat(getInCrtName(LEAF_LIST, ENUM_LEAF_LIST), - leafListEnum.getName(), is(ENUM_LEAF_LIST)); - assertThat(getInCrtLeafListValue(ENUM_LEAF_LIST, HUNDRED), - leafListVal.contains(HUNDRED), is(true)); - assertThat(getInCrtLeafListValue(ENUM_LEAF_LIST, TEN_NUM), - leafListVal.contains(TEN), is(true)); - - YdtContext leafRef = leafListEnum.getNextSibling(); - Set leafRefVal = leafRef.getValueSet(); - assertThat(getInCrtName(LEAF_LIST, ENUM_LEAF_REF), leafRef.getName(), - is(ENUM_LEAF_REF)); - assertThat(getInCrtLeafListValue(ENUM_LEAF_REF, HUNDRED), - leafRefVal.contains(HUNDRED), is(true)); - assertThat(getInCrtLeafListValue(ENUM_LEAF_REF, TEN_NUM), - leafRefVal.contains(THOUSAND), is(true)); - } - - @Test - public void processEmptyDataType() { - - schemaProvider.processSchemaRegistry(null); - DefaultYangSchemaRegistry registry = schemaProvider - .getDefaultYangSchemaRegistry(); - - // As an application, creates the object. - - // For leaf-list empty-list. - List empList = new ArrayList<>(); - empList.add(false); - empList.add(true); - - // For leaf-list empty-list-ref-type and emp-ref-list. - List empRefList = new ArrayList<>(); - empRefList.add(true); - empRefList.add(false); - - // For leaf empty-type with typedef emp-type - EmpType2 type2 = new EmpType2(true); - EmpType type1 = new EmpType(type2); - - // For leaf-list empty-list-type with typedef emp-type - EmpType2 type4 = new EmpType2(false); - EmpType type3 = new EmpType(type4); - EmpType2 type6 = new EmpType2(true); - EmpType type5 = new EmpType(type6); - - List typeList = new ArrayList<>(); - typeList.add(type3); - typeList.add(type5); - - YtbEmptyType emType = new YtbEmptyTypeOpParam.YtbEmptyTypeBuilder() - .empty(true).emptyList(empList).emptyRef(false) - .emptyListRef(empRefList).emptyType(type1) - .emptyListType(typeList).emptyRefType(false) - .emptyListRefType(empRefList).build(); - - // As YSB or YAB protocol sets the value for YTB. - List objectList = new ArrayList<>(); - objectList.add(emType); - - // Builds YANG tree in YTB. - DefaultYangTreeBuilder treeBuilder = new DefaultYangTreeBuilder(); - YdtExtendedBuilder ydtBuilder = treeBuilder.getYdtBuilderForYo( - objectList, ROOT_NAME, ROOT_NAME_SPACE, - EDIT_CONFIG_REQUEST, registry); - - // Receives YDT context and checks the tree that is built. - YdtContext context = ydtBuilder.getRootNode(); - - // Gets the first module from logical root node. - YdtContext module = context.getFirstChild(); - assertThat(getInCrtName(MODULE, EMPTY_MOD), module.getName(), - is(EMPTY_MOD)); - - // Gets the first list content of cumulative. - YdtContext empty = module.getFirstChild(); - assertThat(getInCrtName(LEAF, EMPTY), empty.getName(), is(EMPTY)); - assertThat(empty.getValue(), nullValue()); - - YdtContext emptyType = empty.getNextSibling(); - assertThat(getInCrtName(LEAF_LIST, EMPTY_TYPE), emptyType.getName(), - is(EMPTY_TYPE)); - assertThat(emptyType.getValue(), nullValue()); - - YdtContext emptyRefList = emptyType.getNextSibling(); - assertThat(getInCrtName(LEAF_LIST, EMPTY_REF_LIST), - emptyRefList.getName(), is(EMPTY_REF_LIST)); - Set valueSet = emptyRefList.getValueSet(); - assertThat(valueSet.isEmpty(), is(true)); - - YdtContext emptyListRefType = emptyRefList.getNextSibling(); - assertThat(getInCrtName(LEAF_LIST, EMP_LIST_REF_TYPE), - emptyListRefType.getName(), is(EMP_LIST_REF_TYPE)); - Set valueSet1 = emptyListRefType.getValueSet(); - assertThat(valueSet1.isEmpty(), is(true)); - } -} diff --git a/apps/yms/ut/src/test/resources/YobTestYangFiles/ip-topology.yang b/apps/yms/ut/src/test/resources/YobTestYangFiles/ip-topology.yang deleted file mode 100644 index ca117b71a9..0000000000 --- a/apps/yms/ut/src/test/resources/YobTestYangFiles/ip-topology.yang +++ /dev/null @@ -1,29 +0,0 @@ - -module yms-ip-topology { - yang-version 1; - namespace urn:ip:topo; - prefix ip-topo; - import yms-topology { - prefix topo; - revision-date "2014-01-01"; - } - revision 2014-01-01 { - description "desc"; - reference "ref"; - } - - augment /topo:node{ - leaf router-id { - type string; - } - leaf router-ip { - type string; - } - } - - augment /topo:node/topo:termination-points/topo:termination-point { - leaf ip-address { - type string; - } - } -} diff --git a/apps/yms/ut/src/test/resources/YobTestYangFiles/topology.yang b/apps/yms/ut/src/test/resources/YobTestYangFiles/topology.yang deleted file mode 100644 index 62c0279862..0000000000 --- a/apps/yms/ut/src/test/resources/YobTestYangFiles/topology.yang +++ /dev/null @@ -1,74 +0,0 @@ - -module yms-topology { - yang-version 1; - namespace urn:topo; - prefix topo; - revision 2014-01-01 { - description "desc"; - reference "ref"; - } - list node { - key "node-id"; - leaf node-id{ - type string; - } - leaf-list node-prop{ - type string; - } - container termination-points{ - leaf number-of-tp { - type int16; - } - list termination-point { - key "tp-id"; - leaf tp-id { - type string; - } - } - } - choice choice1{ - case case1a{ - leaf leaf1a1{ - type string; - } - leaf leaf1a2{ - type string; - } - } - case case1b{ - choice choice1b{ - case case1bi{ - leaf leaf1bia{ - type string; - } - leaf leaf1bib{ - type string; - } - } - case case1bii{ - leaf leaf1biia{ - type string; - } - leaf leaf1biib{ - type string; - } - } - } - } - } - } - - rpc set-node-limit { - input { - leaf node-limit { - type int16; - } - } - } - - notification node-limit-reached { - leaf node-limit { - type int16; - } - } -} diff --git a/apps/yms/ut/src/test/resources/yabTestYangFiles/test.yang b/apps/yms/ut/src/test/resources/yabTestYangFiles/test.yang deleted file mode 100644 index e37bed6690..0000000000 --- a/apps/yms/ut/src/test/resources/yabTestYangFiles/test.yang +++ /dev/null @@ -1,111 +0,0 @@ -module test { - - yang-version 1; - namespace "ydt.test"; - prefix "t6"; - organization "ON-LAB"; - - revision "2016-05-24" { - description "Initial revision."; - } - - container cont1 { - container cont2 { - container cont3 { - leaf leaf1 { - type string; - } - } - } - list list1 { - key leaf2; - leaf leaf2 { - type string; - } - leaf leaf3 { - type string; - } - } - leaf leaf4 { - type string; - } - } - list list2 { - key "leaf5 leaf6"; - leaf leaf5 { - type string; - } - leaf leaf6 { - type string; - } - leaf leaf7 { - type string; - } - leaf-list leaflist8 { - type string; - } - container cont7 { - leaf leaf12 { - type string; - } - } - } - container cont4 { - container cont5 { - leaf leaf9 { - type string; - } - } - } - leaf leaf10 { - type string; - } - - rpc rock-the-house { - input { - leaf zip-code { - type string; - } - } - output { - leaf hello { - type string; - } - } - } - - rpc rock-the-house1 { - input { - leaf leaf13 { - type string; - } - } - } - - rpc rock-the-house2 { - output { - leaf leaf14 { - type string; - } - } - } - - rpc rock-the-house3 { - } - - augment "/cont4" { - container cont6 { - leaf leaf11 { - type string; - } - } - } - - augment "/cont4/cont6" { - container cont7 { - leaf leaf12 { - type string; - } - } - } -} diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/Combined.yang b/apps/yms/ut/src/test/resources/ychTestResourceFiles/Combined.yang deleted file mode 100644 index a9c2f48627..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/Combined.yang +++ /dev/null @@ -1,114 +0,0 @@ -module Combined { - - yang-version 1; - namespace "ych:combined"; - prefix "combined"; - - organization "Huawei India Pvt. Ltd."; - - description "This module defines for purchasing-supervisor."; - - revision "2016-05-24" { - description "Initial revision."; - } - - typedef protocol-version { - type uint8 { - range 1..7; - } - } - - typedef path-id { - type uint32; - default 0; - description - "Identifier of a single path. The identifier does not - carry any semantic meaning beyond uniquely identifying - a path."; - } - - typedef as-num { - type uint32; - default 0; - description - "Identifier of a single path. The identifier does not - carry any semantic meaning beyond uniquely identifying - a path."; - } - - typedef metric { - type uint32; - default 0; - description - "Identifier of a single path. The identifier does not - carry any semantic meaning beyond uniquely identifying - a path."; - } - - container attributes { - container origin { - reference "http://tools.ietf.org/html/rfc4271#section-5.1.1"; - leaf value { - type path-id; - mandatory true; - } - } - container multi-exit-disc { - reference "http://tools.ietf.org/html/rfc4271#section-5.1.4"; - leaf med { - type uint32; - } - } - container local-pref { - reference "http://tools.ietf.org/html/rfc4271#section-5.1.5"; - leaf pref { - type uint32; - } - } - container aigp { - container aigp-tlv { - leaf metric { - type metric; - } - } - } - - list unrecognized-attributes { - key type; - leaf partial { - type boolean; - mandatory true; - } - leaf transitive { - type boolean; - mandatory true; - } - leaf type { - type uint8; - mandatory true; - } - leaf value { - type binary { - length 0..65535; - } - mandatory true; - } - } - - list bgp-parameters { - config false; - list optional-capabilities { - config false; - reference "http://tools.ietf.org/html/rfc5492#section-4"; - container c-parameters { - container as4-bytes-capability { - reference "http://tools.ietf.org/html/rfc6793"; - leaf as-number { - type as-num; - } - } - } - } - } - } -} diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/EmptyContainer.yang b/apps/yms/ut/src/test/resources/ychTestResourceFiles/EmptyContainer.yang deleted file mode 100644 index 92106e9a38..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/EmptyContainer.yang +++ /dev/null @@ -1,19 +0,0 @@ -module EmptyContainer { - - yang-version 1; - - namespace "ych.Empty.Container"; - - prefix "purchasing"; - - organization "ON-LAB"; - - description "This module defines for purchasing-supervisor."; - - revision "2016-05-24" { - description "Initial revision."; - } - - container EmptyContainer { - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/combinedrootname.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/combinedrootname.xml deleted file mode 100644 index 04078f1497..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/combinedrootname.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - 123 - - - 456 - - - 23 - - - - 456 - - - - false - false - 1 - QUJD - - - true - true - 2 - QUJD - - - true - false - 3 - QUJD - - - false - true - 4 - QUJD - - - - - - 11 - - - - - - - 22 - - - - - - - 33 - - - - - - - - - 33 - - - - - - - 33 - - - - - - - 33 - - - - - - - - \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootname.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootname.xml deleted file mode 100644 index 64c25aabe6..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootname.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - abc - - bcd - cde - - abc - - - \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootnameOperationType.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootnameOperationType.xml deleted file mode 100644 index ce63205524..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/configrootnameOperationType.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - abc - - bcd - cde - - abc - - - \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getReply.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/getReply.xml deleted file mode 100644 index 0b836d3e7f..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getReply.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - bcd - - - \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigReply.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigReply.xml deleted file mode 100644 index bf3fc7b5ae..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigReply.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - abc - - \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigemptycontainer.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigemptycontainer.xml deleted file mode 100644 index adc7902aa3..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigemptycontainer.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigrootname.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigrootname.xml deleted file mode 100644 index 0c35df535a..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getconfigrootname.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - abc - - - \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getrootname.xml b/apps/yms/ut/src/test/resources/ychTestResourceFiles/getrootname.xml deleted file mode 100644 index b7fc97d6d2..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/getrootname.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - bcd - - - - \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ychTestResourceFiles/purchasingsupervisor.yang b/apps/yms/ut/src/test/resources/ychTestResourceFiles/purchasingsupervisor.yang deleted file mode 100644 index 29123a82d3..0000000000 --- a/apps/yms/ut/src/test/resources/ychTestResourceFiles/purchasingsupervisor.yang +++ /dev/null @@ -1,43 +0,0 @@ -module ych-purchasingsupervisor { - - yang-version 1; - - namespace "ych.purchasing-supervisor"; - - prefix "purchasing"; - - organization "ON-LAB"; - - description "This module defines for purchasing-supervisor."; - - revision "2016-05-24" { - description "Initial revision."; - } - - container ych-purchasing-supervisor { - leaf ych-purchasing-specialist { - type string; - description "name of the purchasing-specialist person"; - } - - leaf ych-purchasing-support { - type string; - description "name of the support person"; - } - - leaf ych-purchasing-options { - type bits { - bit "option0"; - bit "option1"; - bit "option2"; - bit "option3"; - } - description - "A bit mask that may have 0, 1, many or all options present"; - } - - container ych-is-manager { - presence "If node is present denotes that supervisor is a manager"; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/EmptyLeafList.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/EmptyLeafList.yang deleted file mode 100644 index b6174c71f7..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/EmptyLeafList.yang +++ /dev/null @@ -1,51 +0,0 @@ -module EmptyLeafList { - - yang-version 1; - - namespace "ydt.Empty.leafList"; - - prefix "emptyleaflist"; - - organization "ON-LAB"; - - description "This module defines for empty leaf list."; - - revision "2016-05-24" { - description "Initial revision."; - } - - typedef type-def { - type leafref { - path /l1; - } - } - - leaf l1 { - type empty; - } - - leaf l2 { - type leafref { - path /l1; - } - } - - leaf l3 { - type type-def; - } - - leaf-list list1 { - type empty; - } - - leaf-list list2 { - type leafref { - path /l1; - } - } - - leaf-list list3 { - type type-def; - } - -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang deleted file mode 100644 index d5eafbe59b..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/Hello_ONOS.yang +++ /dev/null @@ -1,57 +0,0 @@ -module Hello_ONOS { - yang-version 1; - namespace "ydt:hello_onos"; - prefix "hello"; - - revision "2016-09-03" { - description "Initial revision of hello model"; - } - - grouping greeting { - leaf name { - type string; - } - - leaf surName { - type string; - } - } - - rpc hello-world { - input { - - // uses greeting; - - leaf name { - type string; - } - - leaf surName { - type string; - } - - leaf inputDefault { - type string; - } - - list stringList { - key "string1 string2"; - unique "string3"; - leaf string1 { - type string; - } - leaf string2 { - type string; - } - leaf string3 { - type string; - } - } - } - output { - leaf greetingOut { - type string; - } - } - } -} diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/Logistics-manager.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/Logistics-manager.yang deleted file mode 100644 index 3cd4321855..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/Logistics-manager.yang +++ /dev/null @@ -1,66 +0,0 @@ -module Logistics-manager { - - yang-version 1; - - namespace "ydt.root"; - - prefix "root"; - - organization "ON-LAB"; - - description "This module defines for organisation."; - - revision "2016-05-24" { - description "Initial revision."; - } - - leaf Customs-supervisor { - type string; - description "name of the customs-supervisor."; - } - - leaf Merchandiser-supervisor { - type string; - description "name of merchandiser-supervisor"; - } - - list Material-supervisor { - key "name"; - leaf name { - type string; - description "name of logistics-supervisor"; - } - - leaf departmentId { - type string; - description "name of department"; - } - } - - container Purchasing-supervisor { - leaf purchasing-specialist { - type string; - description "name of the purchasing-specialist person"; - } - - leaf support { - type string; - description "name of the support person"; - } - } - - leaf-list Warehouse-supervisor { - type string; - description "name of the warehouse-supervisor's"; - } - - leaf trading-supervisor { - type string; - description "name of the trading-supervisor"; - } - - leaf-list employee-id { - type string; - description "list of the employee id"; - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology1.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology1.yang deleted file mode 100644 index fc0eee5e4d..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology1.yang +++ /dev/null @@ -1,66 +0,0 @@ -module augment-topology1 { - - yang-version 1; - - namespace "ydt.augment-topology1"; - - prefix "aug1"; - - import yms-ietf-network { - prefix nd; - } - - import yms-network-topology { - prefix topo; - } - - import augmentNetwork { - prefix aug; - } - - organization "ON-LAB"; - - description "This module defines for augment-topology1 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - augment "/nd:networks/nd:network/topo:link" { - description - "Add augment1 to the link model."; - list augment1 { - key "value1"; - leaf value1 { - type int8; - } - } - } - - augment "/nd:networks/nd:network/nd:node/topo:t-point" + - "/supporting-termination-point" { - description - "Add augment1 to the termination-point model."; - container augment1 { - leaf value1 { - type int8; - } - } - - leaf augment1-leaf { - type string; - } - - } - - augment "/aug:node/aug:cont1s/aug:cont1s" { - description - "Add augment1 to the link model."; - list augment1 { - key "value1"; - leaf value1 { - type int8; - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology2.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology2.yang deleted file mode 100644 index 82a19d7dc4..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology2.yang +++ /dev/null @@ -1,63 +0,0 @@ -module augment-topology2 { - - yang-version 1; - - namespace "ydt.augment-topology2"; - - prefix "aug2"; - - import yms-ietf-network { - prefix nd; - } - - import yms-network-topology { - prefix topo; - } - - organization "ON-LAB"; - - description "This module defines for augment-topology2 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - augment "/nd:networks/nd:network/topo:link" { - description - "Add augment2 to the link model."; - list augment2 { - key "key1 key2"; - leaf key1 { - type int8; - } - leaf key2 { - type int8; - } - } - - leaf-list augment2leafList { - type string; - } - } - - augment "/nd:networks/nd:network/nd:node/topo:t-point/" + - "supporting-termination-point" { - description - "Add augment2 to the supporting-termination-point model."; - container augment2 { - config false; - leaf value2 { - type int8; - } - } - - leaf-list augment2leafList { - type string; - } - - leaf augment2leaf { - type string; - } - - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology3.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology3.yang deleted file mode 100644 index d2c58ce641..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology3.yang +++ /dev/null @@ -1,59 +0,0 @@ -module augment-topology3 { - - yang-version 1; - - namespace "ydt.augment-topology3"; - - prefix "aug3"; - - import yms-ietf-network { - prefix nd; - } - - import augment-topology1 { - prefix aug1; - } - - import augment-topology2 { - prefix aug2; - } - - import yms-network-topology { - prefix topo; - } - - organization "ON-LAB"; - - description "This module defines for augment-topology3 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - augment "/nd:networks/nd:network/topo:link/aug2:augment2" { - description - "Add augment3 to the augment2 model."; - container augment3 { - config false; - leaf value3 { - type int8; - } - } - - leaf augment3leaf { - type string; - } - } - - augment "/nd:networks/nd:network/nd:node/topo:t-point/" + - "supporting-termination-point/aug2:augment2" { - description - "Add augment3 to the augment2 model."; - container augment3 { - config false; - leaf value3 { - type int8; - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology4.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology4.yang deleted file mode 100644 index b8cea93df8..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology4.yang +++ /dev/null @@ -1,58 +0,0 @@ -module augment-topology4 { - - yang-version 1; - - namespace "ydt.augment-topology4"; - - prefix "aug4"; - - import yms-ietf-network { - prefix nd; - } - - import augment-topology1 { - prefix aug1; - } - - import augment-topology2 { - prefix aug2; - } - - import augment-topology3 { - prefix aug3; - } - - import yms-network-topology { - prefix topo; - } - - organization "ON-LAB"; - - description "This module defines for augment-topology4 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" { - description - "Add augment4 to the augment3 model."; - container augment4 { - config false; - leaf value4 { - type int8; - } - } - } - - augment "/nd:networks/nd:network/nd:node/topo:t-point/" + - "supporting-termination-point/aug2:augment2" { - description - "Add augment4leaf to the augment2 model."; - - leaf augment4leaf{ - type string; - } - - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology5.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology5.yang deleted file mode 100644 index a13a688585..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology5.yang +++ /dev/null @@ -1,66 +0,0 @@ -module augment-topology5 { - - yang-version 1; - - namespace "ydt.augment-topology5"; - - prefix "aug5"; - - import yms-ietf-network { - prefix nd; - } - - import augment-topology1 { - prefix aug1; - } - - import augment-topology2 { - prefix aug2; - } - - import augment-topology3 { - prefix aug3; - } - - import augment-topology4 { - prefix aug4; - } - - import yms-network-topology { - prefix topo; - } - - organization "ON-LAB"; - - description "This module defines for augment-topology5 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - augment "/nd:networks/nd:network/topo:link/aug2:augment2" { - description - "Add container to the augment2 model."; - container augment5 { - config false; - leaf value5 { - type int8; - } - } - - leaf-list augment5leafList { - type string; - } - } - - augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" { - description - "Add augment5 to the augment3 model."; - container augment5 { - config false; - leaf value5 { - type int8; - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology6.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology6.yang deleted file mode 100644 index 15bd3d5582..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment-topology6.yang +++ /dev/null @@ -1,73 +0,0 @@ -module augment-topology6 { - - yang-version 1; - - namespace "ydt.augment-topology6"; - - prefix "aug5"; - - import yms-ietf-network { - prefix nd; - } - - import augment-topology1 { - prefix aug1; - } - - import augment-topology2 { - prefix aug2; - } - - import augment-topology3 { - prefix aug3; - } - - import augment-topology4 { - prefix aug4; - } - - import augment-topology5 { - prefix aug5; - } - - import yms-network-topology { - prefix topo; - } - - organization "ON-LAB"; - - description "This module defines for augment-topology6 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3" { - description - "Add augment6 to the augment3 model."; - container augment6 { - config true; - leaf value6 { - type int8; - } - } - } - - augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug3:augment3/" + - "aug5:augment5" { - description - "Add leaf6 to the augment5 model."; - leaf leaf6 { - type string; - } - - } - - augment "/nd:networks/nd:network/topo:link/aug2:augment2/aug5:augment5" { - description - "Add list to the augment5 model."; - leaf-list augment6leafList { - type string; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment2.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment2.yang deleted file mode 100644 index 70d45c4051..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augment2.yang +++ /dev/null @@ -1,32 +0,0 @@ -module augment2 { - - yang-version 1; - - namespace "ydt.augment2"; - - prefix "aug"; - - organization "ON-LAB"; - - description "This module defines for augmentNetwork classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - container aug { - container aug { - leaf aug { - type string; - } - } - } - - augment "/aug:" { - description - "Add container to the augment2 model."; - leaf aug1 { - type string; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentNetwork.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentNetwork.yang deleted file mode 100644 index a769a5e39e..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentNetwork.yang +++ /dev/null @@ -1,36 +0,0 @@ -module augmentNetwork { - - yang-version 1; - - namespace "ydt.augmentNetwork"; - - prefix "aug"; - - organization "ON-LAB"; - - description "This module defines for augmentNetwork classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list node { - key "name"; - leaf name { - type string; - description "name of node"; - } - } - - augment "/node" { - description - "Add container to the node model."; - container cont1s { - container cont1s { - leaf fine { - type string; - } - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence.yang deleted file mode 100644 index aba3c177d0..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence.yang +++ /dev/null @@ -1,23 +0,0 @@ -module augmentSequence { - - yang-version 1; - - namespace "ydt.augmentSequence"; - - prefix "aug"; - - organization "ON-LAB"; - - description "This module defines for augmentSequence classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list l1 { - key leaf1; - leaf leaf1 { - type int8; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence1.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence1.yang deleted file mode 100644 index adaf43f660..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence1.yang +++ /dev/null @@ -1,28 +0,0 @@ -module augmentSequence1 { - - yang-version 1; - - namespace "ydt.augmentSequence1"; - - prefix "sequence1"; - - import augmentSequence { - prefix aug; - } - - organization "ON-LAB"; - - description "This module defines for augmentSequence1 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - augment "/aug:l1" { - container c1 { - leaf leaf2 { - type int8; - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence2.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence2.yang deleted file mode 100644 index f32d50898a..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/augmentSequence2.yang +++ /dev/null @@ -1,28 +0,0 @@ -module augmentSequence2 { - - yang-version 1; - - namespace "ydt.augmentSequence2"; - - prefix "sequence2"; - - import augmentSequence { - prefix aug; - } - - organization "ON-LAB"; - - description "This module defines for augmentSequence2 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - augment "/aug:l1" { - container c2 { - leaf leaf2 { - type int8; - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/binarytest.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/binarytest.yang deleted file mode 100644 index f6db459dc3..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/binarytest.yang +++ /dev/null @@ -1,74 +0,0 @@ -module binarytest { - - yang-version 1; - - namespace "ydt.binarytest"; - - prefix "binarytest"; - - organization "ON-LAB"; - - description "This module defines for binarytest classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list binaryList { - config false; - leaf binary { - type binary; - } - leaf binaryWithRange { - type binary { - length "2 .. 10"; - } - } - leaf binaryWithMultiRange { - type binary { - length "min..10 | 20 | 30..max"; - } - } - } - - typedef percent { - type binary; - } - - leaf name { - type percent; - } - - grouping greeting { - leaf surname { - type binary; - } - } - - container cont1 { - uses greeting; - } - - augment "/cont1" { - leaf lastname { - type binary; - } - } - - container food { - choice snack { - case sportsarena { - leaf pretzel { - type binary; - } - } - } - } - - leaf middlename { - type union { - type int8; - type binary; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/bit.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/bit.yang deleted file mode 100644 index 8b4f0c3587..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/bit.yang +++ /dev/null @@ -1,107 +0,0 @@ -module bit { - - yang-version 1; - - namespace "ydt.bit"; - - prefix "bit"; - - organization "ON-LAB"; - - description "This module defines for bit classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list bitList { - config false; - leaf bit { - type bits { - bit disable-nagle { - position 0; - } - bit auto-sense-speed { - position 1; - } - bit ten-Mb-only { - position 2; - } - } - } - } - - typedef percent { - type bits { - bit bit3 { - position 3; - } - bit bit4 { - position 4; - } - bit bit5 { - position 5; - } - } - } - - leaf name { - type percent; - } - - grouping greeting { - leaf surname { - type bits { - bit bit6 { - position 6; - } - bit bit7 { - position 7; - } - bit bit8 { - position 8; - } - } - } - } - - container cont1 { - uses greeting; - } - - augment "/cont1" { - leaf lastname { - type bits { - bit bit9 { - position 9; - } - bit bit10 { - position 10; - } - bit bit11 { - position 11; - } - } - } - } - - container food { - choice snack { - case sportsarena { - leaf pretzel { - type bits { - bit bit12 { - position 12; - } - bit bit13 { - position 13; - } - bit bit14 { - position 14; - } - } - } - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/bool.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/bool.yang deleted file mode 100644 index 1bb61813b6..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/bool.yang +++ /dev/null @@ -1,23 +0,0 @@ -module bool { - - yang-version 1; - - namespace "ydt.boolean"; - - prefix "bool"; - - organization "ON-LAB"; - - description "This module defines for bool classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list booleanList { - key boolean; - leaf boolean { - type boolean; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/crypto-base.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/crypto-base.yang deleted file mode 100644 index 602b911356..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/crypto-base.yang +++ /dev/null @@ -1,76 +0,0 @@ -module crypto-base { - - yang-version 1; - - namespace "ydt.crypto-base"; - - prefix "crypto"; - - organization "ON-LAB"; - - description "This module defines for crypto-base classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - identity crypto-alg { - description - "Base identity from which all crypto algorithms - are derived."; - } - - identity crypto-alg2 { - base crypto-alg; - } - - identity crypto-alg3 { - base crypto-alg2; - } - - leaf crypto { - type identityref { - base "crypto-alg"; - } - } - - typedef abc { - type identityref { - base "crypto-alg"; - } - } - - leaf-list abc-type { - type abc; - } - - leaf abc-zeunion { - type union { - type identityref { - base "crypto-alg"; - } - type abc; - } - } - - leaf level2 { - type identityref { - base "crypto-alg2"; - } - } - - leaf level3 { - type identityref { - base "crypto-alg3"; - } - } - - leaf level4 { - type union { - type identityref { - base "crypto-alg3"; - } - type abc; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/customssupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/customssupervisor.yang deleted file mode 100644 index 73aa806842..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/customssupervisor.yang +++ /dev/null @@ -1,21 +0,0 @@ -module customssupervisor { - - yang-version 1; - - namespace "ydt.customs-supervisor"; - - prefix "customs"; - - organization "ON-LAB"; - - description "This module defines for customs-supervisor."; - - revision "2016-05-24" { - description "Initial revision."; - } - - leaf supervisor { - type string; - description "name of the customs-supervisor."; - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/decimal64.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/decimal64.yang deleted file mode 100644 index 746c23e323..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/decimal64.yang +++ /dev/null @@ -1,95 +0,0 @@ -module decimal64 { - - yang-version 1; - - namespace "ydt.decimal64"; - - prefix "decimal64"; - - organization "ON-LAB"; - - description "This module defines for decimal64 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - leaf negInt { - type decimal64 { - fraction-digits 2; - } - } - - leaf posInt { - type decimal64 { - fraction-digits 2; - } - } - - leaf negIntWithMinFraction { - type decimal64 { - fraction-digits 1; - } - } - - leaf posIntWithMinFraction { - type decimal64 { - fraction-digits 1; - } - - } - leaf negIntWithMaxFraction { - type decimal64 { - fraction-digits 18; - } - } - - leaf posIntWithMaxFraction { - type decimal64 { - fraction-digits 18; - } - - } - - leaf midIntWithRange { - type decimal64 { - fraction-digits 2; - range "10 .. 100"; - } - } - - leaf minIntWithRange { - type decimal64 { - fraction-digits 2; - range "10 .. 100"; - } - } - - leaf maxIntWithRange { - type decimal64 { - fraction-digits 2; - range "10 .. 100"; - } - } - - list multiRangeValidation { - config false; - leaf decimal { - type decimal64 { - fraction-digits 2; - range "10..40 | 50..100"; - } - } - leaf revDecimal { - type decimal64 { - fraction-digits 2; - range "min .. 3.14 | 10 | 20..max"; - } - } - } - - leaf l1 { - type decimal64 { - fraction-digits 2; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/employeeid.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/employeeid.yang deleted file mode 100644 index be27c70256..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/employeeid.yang +++ /dev/null @@ -1,21 +0,0 @@ -module employeeid { - - yang-version 1; - - namespace "ydt.employee-id"; - - prefix "id"; - - organization "ON-LAB"; - - description "This module defines for employee-id."; - - revision "2016-05-24" { - description "Initial revision."; - } - - leaf-list employeeid { - type string; - description "list of the employee id"; - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/emptydata.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/emptydata.yang deleted file mode 100644 index 33f58b32d5..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/emptydata.yang +++ /dev/null @@ -1,23 +0,0 @@ -module emptydata { - - yang-version 1; - - namespace "ydt.emptydata"; - - prefix "emptydata"; - - organization "ON-LAB"; - - description "This module defines for emptydata classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list emptyList { - config false; - leaf empty { - type empty; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/enumtest.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/enumtest.yang deleted file mode 100644 index a9255c5726..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/enumtest.yang +++ /dev/null @@ -1,27 +0,0 @@ -module enumtest { - - yang-version 1; - - namespace "ydt.enumtest"; - - prefix "enumtest"; - - organization "ON-LAB"; - - description "This module defines for enumtest classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list enumList { - key enumleaf; - leaf enumleaf { - type enumeration { - enum ten { value "10";} - enum hundred { value "100";} - enum thousand { value "1000"; } - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/food.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/food.yang deleted file mode 100644 index 202d11f056..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/food.yang +++ /dev/null @@ -1,39 +0,0 @@ -module food { - - yang-version 1; - - namespace "ydt.food"; - - prefix "foodType"; - - organization "ON-LAB"; - - description "This module defines for food."; - - revision "2016-06-24" { - description "Initial revision."; - } - - container food { - choice snack { - case sportsarena { - - leaf pretzel { - type empty; - } - leaf beer { - type empty; - } - } - case latenight { - leaf chocolate { - type enumeration { - enum dark; - enum milk; - enum first-available; - } - } - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer16.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer16.yang deleted file mode 100644 index 8db77be5a3..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer16.yang +++ /dev/null @@ -1,98 +0,0 @@ -module integer16 { - - yang-version 1; - - namespace "ydt.integer16"; - - prefix "integer16"; - - organization "ON-LAB"; - - description "This module defines for integer16 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list multiRangeValidation { - config false; - leaf integer { - type int16 { - range "10..40 | 50..100"; - } - } - leaf UnInteger { - type uint16 { - range "10..40 | 50..100"; - } - } - - leaf revInteger { - type int16 { - range "min .. 2 | 10 | 20..max"; - } - } - - leaf revUnInteger { - type uint16 { - range "min .. 2 | 10 | 20..max"; - } - } - } - - leaf negInt { - type int16 { - } - } - - leaf posInt { - type int16 { - } - } - - leaf minIntWithRange { - type int16 { - range "10 .. 100"; - } - } - - leaf midIntWithRange { - type int16 { - range "10 .. 100"; - } - } - - leaf maxIntWithRange { - type int16 { - range "10 .. 100"; - } - } - - leaf minUInt { - type uint16 { - } - } - - leaf maxUInt { - type uint16 { - } - } - - leaf minUIntWithRange { - type uint16 { - range "10 .. 100"; - } - } - - leaf midUIntWithRange { - type uint16 { - range "10 .. 100"; - } - } - - leaf maxUIntWithRange { - type uint16 { - range "10 .. 100"; - } - } -} diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer32.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer32.yang deleted file mode 100644 index fb596cfa86..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer32.yang +++ /dev/null @@ -1,98 +0,0 @@ -module integer32 { - - yang-version 1; - - namespace "ydt.integer32"; - - prefix "integer32"; - - organization "ON-LAB"; - - description "This module defines for integer32 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list multiRangeValidation { - config false; - leaf integer { - type int32 { - range "10..40 | 50..100"; - } - } - leaf UnInteger { - type uint32 { - range "10..40 | 50..100"; - } - } - - leaf revInteger { - type int32 { - range "min .. 2 | 10 | 20..max"; - } - } - - leaf revUnInteger { - type uint32 { - range "min .. 2 | 10 | 20..max"; - } - } - } - - leaf negInt { - type int32 { - } - } - - leaf posInt { - type int32 { - } - } - - leaf minIntWithRange { - type int32 { - range "10 .. 100"; - } - } - - leaf midIntWithRange { - type int32 { - range "10 .. 100"; - } - } - - leaf maxIntWithRange { - type int32 { - range "10 .. 100"; - } - } - - leaf minUInt { - type uint32 { - } - } - - leaf maxUInt { - type uint32 { - } - } - - leaf minUIntWithRange { - type uint32 { - range "10 .. 100"; - } - } - - leaf midUIntWithRange { - type uint32 { - range "10 .. 100"; - } - } - - leaf maxUIntWithRange { - type uint32 { - range "10 .. 100"; - } - } -} diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer64.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer64.yang deleted file mode 100644 index 39479c6334..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer64.yang +++ /dev/null @@ -1,98 +0,0 @@ -module integer64 { - - yang-version 1; - - namespace "ydt.integer64"; - - prefix "integer64"; - - organization "ON-LAB"; - - description "This module defines for integer64 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list multiRangeValidation { - config false; - leaf integer { - type int64 { - range "10..40 | 50..100"; - } - } - leaf UnInteger { - type uint64 { - range "10..40 | 50..100"; - } - } - - leaf revInteger { - type int64 { - range "min .. 2 | 10 | 20..max"; - } - } - - leaf revUnInteger { - type uint64 { - range "min .. 2 | 10 | 20..max"; - } - } - } - - leaf negInt { - type int64 { - } - } - - leaf posInt { - type int64 { - } - } - - leaf minIntWithRange { - type int64 { - range "10 .. 100"; - } - } - - leaf midIntWithRange { - type int64 { - range "10 .. 100"; - } - } - - leaf maxIntWithRange { - type int64 { - range "10 .. 100"; - } - } - - leaf minUInt { - type uint64 { - } - } - - leaf maxUInt { - type uint64 { - } - } - - leaf minUIntWithRange { - type uint64 { - range "10 .. 100"; - } - } - - leaf midUIntWithRange { - type uint64 { - range "10 .. 100"; - } - } - - leaf maxUIntWithRange { - type uint64 { - range "10 .. 100"; - } - } -} diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer8.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer8.yang deleted file mode 100644 index e05c23547d..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/integer8.yang +++ /dev/null @@ -1,99 +0,0 @@ -module integer8 { - - yang-version 1; - - namespace "ydt.integer8"; - - prefix "integer8"; - - organization "ON-LAB"; - - description "This module defines for integer8 classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list multiRangeValidation { - config false; - leaf integer { - type int8 { - range "10..40 | 50..100"; - } - } - leaf UnInteger { - type uint8 { - range "10..40 | 50..100"; - } - } - - leaf revInteger { - type int8 { - range "min .. 2 | 10 | 20..max"; - } - } - - leaf revUnInteger { - type uint8 { - range "min .. 2 | 10 | 20..max"; - } - } - } - - - leaf negInt { - type int8 { - } - } - - leaf posInt { - type int8 { - } - } - - leaf minIntWithRange { - type int8 { - range "10 .. 100"; - } - } - - leaf midIntWithRange { - type int8 { - range "10 .. 100"; - } - } - - leaf maxIntWithRange { - type int8 { - range "10 .. 100"; - } - } - - leaf minUInt { - type uint8 { - } - } - - leaf maxUInt { - type uint8 { - } - } - - leaf minUIntWithRange { - type uint8 { - range "10 .. 100"; - } - } - - leaf midUIntWithRange { - type uint8 { - range "10 .. 100"; - } - } - - leaf maxUIntWithRange { - type uint8 { - range "10 .. 100"; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/leafreftest.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/leafreftest.yang deleted file mode 100644 index 5191b7296c..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/leafreftest.yang +++ /dev/null @@ -1,71 +0,0 @@ -module leafreftest { - - yang-version 1; - - namespace "ydt.leafreftest"; - - prefix "uniontest"; - - organization "ON-LAB"; - - description "This module defines for union classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - leaf middlename { - type string; - } - - list leafrefList { - config false; - leaf id { - type leafref { - path "/middlename"; - } - } - } - - typedef percent { - type leafref { - path "/middlename"; - } - } - - leaf name { - type percent; - } - - grouping greeting { - leaf surname { - type leafref { - path "/middlename"; - } - } - } - - container cont1 { - uses greeting; - } - - augment "/cont1" { - leaf lastname { - type leafref { - path "/middlename"; - } - } - } - - container food { - choice snack { - case sportsarena { - leaf pretzel { - type leafref { - path "/middlename"; - } - } - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/logisticsmanager.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/logisticsmanager.yang deleted file mode 100644 index 7198611596..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/logisticsmanager.yang +++ /dev/null @@ -1,16 +0,0 @@ -module logisticsmanager { - - yang-version 1; - - namespace "ydt.logistics-manager"; - - prefix "root"; - - organization "ON-LAB"; - - description "This module defines for logistics-manager."; - - revision "2016-05-24" { - description "Initial revision."; - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/materialsupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/materialsupervisor.yang deleted file mode 100644 index 6ab16eaaa0..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/materialsupervisor.yang +++ /dev/null @@ -1,29 +0,0 @@ -module materialsupervisor { - - yang-version 1; - - namespace "ydt.material-supervisor"; - - prefix "material"; - - organization "ON-LAB"; - - description "This module defines for material-supervisor."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list supervisor { - key "name"; - leaf name { - type string; - description "name of material-supervisor"; - } - - leaf departmentId { - type string; - description "name of department"; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang deleted file mode 100644 index db40c7e461..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/merchandisersupervisor.yang +++ /dev/null @@ -1,21 +0,0 @@ -module merchandisersupervisor { - - yang-version 1; - - namespace "ydt.Merchandiser-supervisor"; - - prefix "merchandiser"; - - organization "ON-LAB"; - - description "This module defines for Merchandiser-supervisor."; - - revision "2016-05-24" { - description "Initial revision."; - } - - leaf supervisor { - type string; - description "name of the Merchandiser-supervisor."; - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang deleted file mode 100644 index a52b4c52d9..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/purchasingsupervisor.yang +++ /dev/null @@ -1,27 +0,0 @@ -module purchasingsupervisor { - - yang-version 1; - - namespace "ydt.purchasing-supervisor"; - - prefix "purchasing"; - - organization "ON-LAB"; - - description "This module defines for purchasing-supervisor."; - - revision "2016-05-24" { - description "Initial revision."; - } - - container supervisor { - leaf purchasing-specialist { - type string; - description "name of the purchasing-specialist person"; - } - leaf support { - type string; - description "name of the support person"; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/rootlist.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/rootlist.yang deleted file mode 100644 index ef5a0a0e02..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/rootlist.yang +++ /dev/null @@ -1,111 +0,0 @@ -module rootlist { - - yang-version 1; - - namespace "ydt.rootlist"; - - prefix "rootlist"; - - organization "ON-LAB"; - - description "This submodule defines for root."; - - revision "2016-06-24" { - description "Initial revision."; - } -/* - +--------------+---------+-------------+ - | substatement | section | cardinality | - +--------------+---------+-------------+ - | anyxml | 7.10 | 0..n | - | choice | 7.9 | 0..n | - | config | 7.19.1 | 0..1 | - | container | 7.5 | 0..n | - | description | 7.19.3 | 0..1 | - | grouping | 7.11 | 0..n | - | if-feature | 7.18.2 | 0..n | - | key | 7.8.2 | 0..1 | - | leaf | 7.6 | 0..n | - | leaf-list | 7.7 | 0..n | - | list | 7.8 | 0..n | - | max-elements | 7.7.4 | 0..1 | - | min-elements | 7.7.3 | 0..1 | - | must | 7.5.3 | 0..n | - | ordered-by | 7.7.5 | 0..1 | - | reference | 7.19.4 | 0..1 | - | status | 7.19.2 | 0..1 | - | typedef | 7.3 | 0..n | - | unique | 7.8.3 | 0..n | - | uses | 7.12 | 0..n | - | when | 7.19.5 | 0..1 | - +--------------+---------+-------------+ -*/ - - list listwithoutcontainer { - key "invalidinterval"; - min-elements 1; //-- comment - leaf invalidinterval { - type "uint16"; - units "seconds"; - description "Interval before a route is declared invalid"; - config true; - mandatory true; - status current; - reference "RFC 6020"; - } - } - - list listwithcontainer { - key "invalid invalid1"; - max-elements 3; - min-elements 1; - reference "list reference"; - unique "invalid"; - leaf-list invalidinterval { - type "uint16"; - units "seconds"; - description "Interval before a route is declared invalid"; - config false; - status current; - reference "RFC 6020"; - } - - container interface { - leaf invalidinterval { - type "uint16"; - units "seconds"; - status current; - mandatory true; - reference "RFC 6020"; - } - - leaf invalid { - type "uint16"; - units "seconds"; - description "Interval before a route is declared invalid"; - default "16"; - status current; - reference "RFC 6020"; - } - - } - - leaf invalid { - type "uint16"; - units "seconds"; - description "Interval before a route is declared invalid"; - mandatory true; - status current; - reference "RFC 6020"; - } - - leaf invalid1 { - type "uint16"; - units "seconds"; - description "Interval before a route is declared invalid"; - mandatory true; - status current; - reference "RFC 6020"; - } - } -} diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang deleted file mode 100644 index a6c8681a01..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/tradingsupervisor.yang +++ /dev/null @@ -1,21 +0,0 @@ -module tradingsupervisor { - - yang-version 1; - - namespace "ydt.trading-supervisor"; - - prefix "trading"; - - organization "ON-LAB"; - - description "This module defines for trading-supervisor."; - - revision "2016-05-24" { - description "Initial revision."; - } - - leaf supervisor { - type string; - description "name of the trading-supervisor"; - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/uniontest.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/uniontest.yang deleted file mode 100644 index 4ab5801818..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/uniontest.yang +++ /dev/null @@ -1,92 +0,0 @@ -module uniontest { - - yang-version 1; - - namespace "ydt.uniontest"; - - prefix "uniontest"; - - organization "ON-LAB"; - - description "This module defines for union classifier."; - - revision "2016-05-24" { - description "Initial revision."; - } - - list unionList { - config false; - leaf id { - type union { - type int8; - type binary; - } - } - } - - typedef percent { - type union { - type int8; - type bits { - bit bit0 { - position 0; - } - bit bit1 { - position 1; - } - bit bit2 { - position 2; - } - } - } - } - - leaf name { - type percent; - } - - grouping greeting { - leaf surname { - type union { - type int8; - type string; - } - } - } - - container cont1 { - uses greeting; - } - - augment "/cont1" { - leaf lastname { - type union { - type int8; - type bits { - bit bit0 { - position 0; - } - bit bit1 { - position 1; - } - bit bit2 { - position 2; - } - } - } - } - } - - container food { - choice snack { - case sportsarena { - leaf pretzel { - type union { - type int8; - type binary; - } - } - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang deleted file mode 100644 index 5145824283..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/warehousesupervisor.yang +++ /dev/null @@ -1,21 +0,0 @@ -module warehousesupervisor { - - yang-version 1; - - namespace "ydt.warehouse-supervisor"; - - prefix "warehouse"; - - organization "ON-LAB"; - - description "This module defines for warehouse-supervisor."; - - revision "2016-05-24" { - description "Initial revision."; - } - - leaf-list supervisor { - type string; - description "name of the warehouse-supervisor's"; - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-inet-types.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-inet-types.yang deleted file mode 100644 index 6b994bb9f9..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-inet-types.yang +++ /dev/null @@ -1,454 +0,0 @@ - module yms-ietf-inet-types { - - yang-version 1; - - namespace - "urn:ietf:params:xml:ns:yang:ietf-inet-types"; - - prefix inet; - - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: David Kessens - - - WG Chair: Juergen Schoenwaelder - - - Editor: Juergen Schoenwaelder - "; - - description - "This module contains a collection of generally useful derived - YANG data types for Internet addresses and related things. - - Copyright (c) 2013 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 6991; see - the RFC itself for full legal notices."; - - revision "2013-07-15" { - description - "This revision adds the following new data types: - - ip-address-no-zone - - ipv4-address-no-zone - - ipv6-address-no-zone"; - reference - "RFC 6991: Common YANG Data Types"; - - } - - revision "2010-09-24" { - description "Initial revision."; - reference - "RFC 6021: Common YANG Data Types"; - - } - - - typedef ip-version { - type enumeration { - enum "unknown" { - value 0; - description - "An unknown or unspecified version of the Internet - protocol."; - } - enum "ipv4" { - value 1; - description - "The IPv4 protocol as defined in RFC 791."; - } - enum "ipv6" { - value 2; - description - "The IPv6 protocol as defined in RFC 2460."; - } - } - description - "This value represents the version of the IP protocol. - - In the value set and its semantics, this type is equivalent - to the InetVersion textual convention of the SMIv2."; - reference - "RFC 791: Internet Protocol - RFC 2460: Internet Protocol, Version 6 (IPv6) Specification - RFC 4001: Textual Conventions for Internet Network Addresses"; - - } - - typedef dscp { - type uint8 { - range "0..63"; - } - description - "The dscp type represents a Differentiated Services Code Point - that may be used for marking packets in a traffic stream. - In the value set and its semantics, this type is equivalent - to the Dscp textual convention of the SMIv2."; - reference - "RFC 3289: Management Information Base for the Differentiated - Services Architecture - RFC 2474: Definition of the Differentiated Services Field - (DS Field) in the IPv4 and IPv6 Headers - RFC 2780: IANA Allocation Guidelines For Values In - the Internet Protocol and Related Headers"; - - } - - typedef ipv6-flow-label { - type uint32 { - range "0..1048575"; - } - description - "The ipv6-flow-label type represents the flow identifier or Flow - Label in an IPv6 packet header that may be used to - discriminate traffic flows. - - In the value set and its semantics, this type is equivalent - to the IPv6FlowLabel textual convention of the SMIv2."; - reference - "RFC 3595: Textual Conventions for IPv6 Flow Label - RFC 2460: Internet Protocol, Version 6 (IPv6) Specification"; - - } - - typedef port-number { - type uint16 { - range "0..65535"; - } - description - "The port-number type represents a 16-bit port number of an - Internet transport-layer protocol such as UDP, TCP, DCCP, or - SCTP. Port numbers are assigned by IANA. A current list of - all assignments is available from . - - Note that the port number value zero is reserved by IANA. In - situations where the value zero does not make sense, it can - be excluded by subtyping the port-number type. - In the value set and its semantics, this type is equivalent - to the InetPortNumber textual convention of the SMIv2."; - reference - "RFC 768: User Datagram Protocol - RFC 793: Transmission Control Protocol - RFC 4960: Stream Control Transmission Protocol - RFC 4340: Datagram Congestion Control Protocol (DCCP) - RFC 4001: Textual Conventions for Internet Network Addresses"; - - } - - typedef as-number { - type uint32; - description - "The as-number type represents autonomous system numbers - which identify an Autonomous System (AS). An AS is a set - of routers under a single technical administration, using - an interior gateway protocol and common metrics to route - packets within the AS, and using an exterior gateway - protocol to route packets to other ASes. IANA maintains - the AS number space and has delegated large parts to the - regional registries. - - Autonomous system numbers were originally limited to 16 - bits. BGP extensions have enlarged the autonomous system - number space to 32 bits. This type therefore uses an uint32 - base type without a range restriction in order to support - a larger autonomous system number space. - - In the value set and its semantics, this type is equivalent - to the InetAutonomousSystemNumber textual convention of - the SMIv2."; - reference - "RFC 1930: Guidelines for creation, selection, and registration - of an Autonomous System (AS) - RFC 4271: A Border Gateway Protocol 4 (BGP-4) - RFC 4001: Textual Conventions for Internet Network Addresses - RFC 6793: BGP Support for Four-Octet Autonomous System (AS) - Number Space"; - - } - - typedef ip-address { - type union { - type ipv4-address; - type ipv6-address; - } - description - "The ip-address type represents an IP address and is IP - version neutral. The format of the textual representation - implies the IP version. This type supports scoped addresses - by allowing zone identifiers in the address format."; - reference - "RFC 4007: IPv6 Scoped Address Architecture"; - - } - - typedef ipv4-address { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\p{N}\p{L}]+)?'; - } - description - "The ipv4-address type represents an IPv4 address in - dotted-quad notation. The IPv4 address may include a zone - index, separated by a % sign. - - The zone index is used to disambiguate identical address - values. For link-local addresses, the zone index will - typically be the interface index number or the name of an - interface. If the zone index is not present, the default - zone of the device will be used. - - The canonical format for the zone index is the numerical - format"; - } - - typedef ipv6-address { - type string { - pattern - '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?'; - pattern - '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?'; - } - description - "The ipv6-address type represents an IPv6 address in full, - mixed, shortened, and shortened-mixed notation. The IPv6 - address may include a zone index, separated by a % sign. - - The zone index is used to disambiguate identical address - values. For link-local addresses, the zone index will - typically be the interface index number or the name of an - interface. If the zone index is not present, the default - zone of the device will be used. - - - - The canonical format of IPv6 addresses uses the textual - representation defined in Section 4 of RFC 5952. The - canonical format for the zone index is the numerical - format as described in Section 11.2 of RFC 4007."; - reference - "RFC 4291: IP Version 6 Addressing Architecture - RFC 4007: IPv6 Scoped Address Architecture - RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - - } - - typedef ip-address-no-zone { - type union { - type ipv4-address-no-zone; - type ipv6-address-no-zone; - } - description - "The ip-address-no-zone type represents an IP address and is - IP version neutral. The format of the textual representation - implies the IP version. This type does not support scoped - addresses since it does not allow zone identifiers in the - address format."; - reference - "RFC 4007: IPv6 Scoped Address Architecture"; - - } - - typedef ipv4-address-no-zone { - type ipv4-address { - pattern '[0-9\.]*'; - } - description - "An IPv4 address without a zone index. This type, derived from - ipv4-address, may be used in situations where the zone is - known from the context and hence no zone index is needed."; - } - - typedef ipv6-address-no-zone { - type ipv6-address { - pattern '[0-9a-fA-F:\.]*'; - } - description - "An IPv6 address without a zone index. This type, derived from - ipv6-address, may be used in situations where the zone is - known from the context and hence no zone index is needed."; - reference - "RFC 4291: IP Version 6 Addressing Architecture - RFC 4007: IPv6 Scoped Address Architecture - RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - - } - - typedef ip-prefix { - type union { - type ipv4-prefix; - type ipv6-prefix; - } - description - "The ip-prefix type represents an IP prefix and is IP - version neutral. The format of the textual representations - implies the IP version."; - } - - typedef ipv4-prefix { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))'; - } - description - "The ipv4-prefix type represents an IPv4 address prefix. - The prefix length is given by the number following the - slash character and must be less than or equal to 32. - - A prefix length value of n corresponds to an IP address - mask that has n contiguous 1-bits from the most - significant bit (MSB) and all other bits set to 0. - - The canonical format of an IPv4 prefix has all bits of - the IPv4 address set to zero that are not part of the - IPv4 prefix."; - } - - typedef ipv6-prefix { - type string { - pattern - '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; - pattern - '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)'; - } - description - "The ipv6-prefix type represents an IPv6 address prefix. - The prefix length is given by the number following the - slash character and must be less than or equal to 128. - - A prefix length value of n corresponds to an IP address - mask that has n contiguous 1-bits from the most - significant bit (MSB) and all other bits set to 0. - - The IPv6 address should have all bits that do not belong - to the prefix set to zero. - - The canonical format of an IPv6 prefix has all bits of - the IPv6 address set to zero that are not part of the - IPv6 prefix. Furthermore, the IPv6 address is represented - as defined in Section 4 of RFC 5952."; - reference - "RFC 5952: A Recommendation for IPv6 Address Text - Representation"; - - } - - typedef domain-name { - type string { - length "1..253"; - pattern - '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)|\.'; - } - description - "The domain-name type represents a DNS domain name. The - name SHOULD be fully qualified whenever possible. - - Internet domain names are only loosely specified. Section - 3.5 of RFC 1034 recommends a syntax (modified in Section - 2.1 of RFC 1123). The pattern above is intended to allow - for current practice in domain name use, and some possible - future expansion. It is designed to hold various types of - domain names, including names used for A or AAAA records - (host names) and other records, such as SRV records. Note - that Internet host names have a stricter syntax (described - in RFC 952) than the DNS recommendations in RFCs 1034 and - 1123, and that systems that want to store host names in - schema nodes using the domain-name type are recommended to - adhere to this stricter standard to ensure interoperability. - - The encoding of DNS names in the DNS protocol is limited - to 255 characters. Since the encoding consists of labels - prefixed by a length bytes and there is a trailing NULL - byte, only 253 characters can appear in the textual dotted - notation. - - The description clause of schema nodes using the domain-name - type MUST describe when and how these names are resolved to - IP addresses. Note that the resolution of a domain-name value - may require to query multiple DNS records (e.g., A for IPv4 - and AAAA for IPv6). The order of the resolution process and - which DNS record takes precedence can either be defined - explicitly or may depend on the configuration of the - resolver. - - Domain-name values use the US-ASCII encoding. Their canonical - format uses lowercase US-ASCII characters. Internationalized - domain names MUST be A-labels as per RFC 5890."; - reference - "RFC 952: DoD Internet Host Table Specification - RFC 1034: Domain Names - Concepts and Facilities - RFC 1123: Requirements for Internet Hosts -- Application - and Support - RFC 2782: A DNS RR for specifying the location of services - (DNS SRV) - RFC 5890: Internationalized Domain Names in Applications - (IDNA): Definitions and Document Framework"; - - } - - typedef host { - type union { - type ip-address; - type domain-name; - } - description - "The host type represents either an IP address or a DNS - domain name."; - } - - typedef uri { - type string; - description - "The uri type represents a Uniform Resource Identifier - (URI) as defined by STD 66. - - Objects using the uri type MUST be in US-ASCII encoding, - and MUST be normalized as described by RFC 3986 Sections - 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary - percent-encoding is removed, and all case-insensitive - characters are set to lowercase except for hexadecimal - digits, which are normalized to uppercase as described in - Section 6.2.2.1. - - The purpose of this normalization is to help provide - unique URIs. Note that this normalization is not - sufficient to provide uniqueness. Two URIs that are - textually distinct after this normalization may still be - equivalent. - - Objects using the uri type may restrict the schemes that - they permit. For example, 'data:' and 'urn:' schemes - might not be appropriate. - - A zero-length URI is not a valid URI. This can be used to - express 'URI absent' where required. - - In the value set and its semantics, this type is equivalent - to the Uri SMIv2 textual convention defined in RFC 5017."; - reference - "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax - RFC 3305: Report from the Joint W3C/IETF URI Planning Interest - Group: Uniform Resource Identifiers (URIs), URLs, - and Uniform Resource Names (URNs): Clarifications - and Recommendations - RFC 5017: MIB Textual Conventions for Uniform Resource - Identifiers (URIs)"; - - } - } // module ietf-inet-types diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-network.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-network.yang deleted file mode 100644 index dc65182218..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-network.yang +++ /dev/null @@ -1,216 +0,0 @@ - module yms-ietf-network { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network"; - prefix nd; - - import yms-ietf-inet-types { - prefix inet; - } - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - revision 2015-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02"; - } - - typedef node-id { - type inet:uri; - description - "Identifier for a node."; - } - - typedef network-id { - type inet:uri; - description - "Identifier for a network."; - } - grouping network-ref { - description - "Contains the information necessary to reference a network, - for example an underlay network."; - leaf network-ref { - type leafref { - path "/nd:networks/nd:network/nd:network-id"; - require-instance false; - } - description - "Used to reference a network, for example an underlay - network."; - } - } - - grouping node-ref { - description - "Contains the information necessary to reference a node."; - leaf node-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/../"+ - "network-ref]/nd:node/nd:node-id"; - require-instance false; - } - description - "Used to reference a node. - Nodes are identified relative to the network they are - contained in."; - } - uses network-ref; - } - - container networks { - description - "Serves as top-level container for a list of networks."; - list network { - key "network-id"; - description - "Describes a network. - A network typically contains an inventory of nodes, - topological information (augmented through - network-topology model), as well as layering - information."; - container network-types { - description - "Serves as an augmentation target. - The network type is indicated through corresponding - presence containers augmented into this container."; - } - leaf network-id { - type network-id; - description - "Identifies a network."; - } - list supporting-network { - key "network-ref"; - description - "An underlay network, used to represent layered network - topologies."; - leaf network-ref { - type leafref { - path "/networks/network/network-id"; - require-instance false; - } - description - "References the underlay network."; - } - } - list node { - key "node-id"; - description - "The inventory of nodes of this network."; - leaf node-id { - type node-id; - description - "Identifies a node uniquely within the containing - network."; - } - list supporting-node { - key "network-ref node-ref"; - description - "Represents another node, in an underlay network, that - this node is supported by. Used to represent layering - structure."; - leaf network-ref { - type leafref { - path "../../../supporting-network/network-ref"; - require-instance false; - } - description - "References the underlay network that the - underlay node is part of."; - } - leaf node-ref { - type leafref { - path "/networks/network/node/node-id"; - require-instance false; - } - description - "References the underlay node itself."; - } - } - } - } - } - container networks-state { - config false; - description - "Serves as top-level container for a list of state information - for networks"; - list network { - key "network-ref"; - description - "Data nodes representing operational data and state of - networks. - An instance is automatically created for every network - in the corresponding list under the networks container."; - uses network-ref; - leaf server-provided { - type boolean; - description - "Indicates whether the information concerning this - particular network is populated by the server - (server-provided true, the general case for network - information discovered from the server), - or whether it is configured by a client - (server-provided true, possible e.g. for - service overlays managed through a controller)."; - } - } - } - } diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-schedule.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-schedule.yang deleted file mode 100644 index 6b278b7310..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-schedule.yang +++ /dev/null @@ -1,64 +0,0 @@ - module yms-ietf-schedule { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-schedule"; - // replace with IANA namespace when assigned - - prefix "sch"; - - import yms-ietf-yang-types { - prefix "yang"; - } - - organization "TBD"; - contact "TBD"; - description - "The model allows time scheduling parameters to be specified."; - - revision "2016-03-01" { - description "Initial revision"; - reference "TBD"; - } - - /* - * Groupings - */ - - grouping schedules { - description - "A list of schedules defining when a particular - configuration takes effect."; - container schedules { - description - "Container of a schedule list defining when a particular - configuration takes effect."; - list schedule { - key "schedule-id"; - description "A list of schedule elements."; - - leaf schedule-id { - type uint32; - description "Identifies the schedule element."; - } - leaf start { - type yang:date-and-time; - description "Start time."; - } - leaf schedule-duration { - type string { - pattern - 'P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?(\d+M)?(\d+S)?'; - } - description "Schedule duration in ISO 8601 format."; - } - leaf repeat-interval { - type string { - pattern - 'R\d*/P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?(\d+M)?' - + '(\d+S)?'; - } - description "Repeat interval in ISO 8601 format."; - } - } - } - } // schedules - } diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-topology.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-topology.yang deleted file mode 100644 index 88156824f1..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-topology.yang +++ /dev/null @@ -1,1112 +0,0 @@ -module yms-ietf-te-topology { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology"; - // replace with IANA namespace when assigned - - prefix "tet"; - - import yms-ietf-inet-types { - prefix "inet"; - } - - import yms-ietf-schedule { - prefix "sch"; - } - - import yms-ietf-te-types { - prefix "te-types"; - } - - import yms-ietf-network { - prefix "nw"; - } - - import yms-network-topology { - prefix "nt"; - } - - organization - "Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - - contact - "WG Web: - WG List: - WG Chair: Lou Berger - - WG Chair: Vishnu Pavan Beeram - - Editor: Xufeng Liu - - Editor: Igor Bryskin - - Editor: Vishnu Pavan Beeram - - Editor: Tarek Saad - - Editor: Himanshu Shah - - Editor: Oscar Gonzalez De Dios - "; - - description "TE topology model"; - - revision "2016-03-17" { - description "Initial revision"; - reference "TBD"; - } - - /* - * Features - */ - - feature configuration-schedule { - description - "This feature indicates that the system supports - configuration scheduling."; - } - - feature te-topology-hierarchy { - description - "This feature indicates that the system allows underlay - and/or overlay TE topology hierarchy."; - } - - feature te-performance-metric { - description - "This feature indicates that the system supports - TE performance metric defined in - RFC7471: OSPF Traffic Engineering (TE) Metric Extensions."; - } - - feature template { - description - "This feature indicates that the system supports - template configuration."; - } - - /* - * Typedefs - */ - typedef performance-metric-normality { - type enumeration { - enum "unknown" { - value 0; - description - "Unknown."; - } - enum "normal" { - value 1; - description - "Normal."; - } - enum "abnormal" { - value 2; - description - "Abnormal. The anomalous bit is set."; - } - } - description - "Indicates whether a performance metric is normal, abnormal, or - unknown."; - reference - "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions."; - } - - typedef te-admin-status { - type enumeration { - enum up { - description - "Enabled."; - } - enum down { - description - "Disabled."; - } - enum testing { - description - "In some test mode."; - } - enum preparing-maintenance { - description - "Resource is disabled in the control plane to prepare for - graceful shutdown for maintenance purposes."; - reference - "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS - Traffic Engineering Networks"; - } - enum maintenance { - description - "Resource is disabled in the data plane for maintenance - purposes."; - } - } - description - "Defines a type representing the administrative status of - a TE resource."; - } - typedef te-global-id { - type uint32; - description - "An identifier to uniquely identify an operator, which can be - either a provider or a client. - The definition of this type is taken from RFC6370 and RFC5003. - This attribute type is used solely to provide a globally - unique context for TE topologies."; - } - - typedef te-link-access-type { - type enumeration { - enum point-to-point { - description - "The link is point-to-point."; - } - enum multi-access { - description - "The link is multi-access, including broacast and NBMA."; - } - } - description - "Defines a type representing the access type of a TE link."; - reference - "RFC3630: Traffic Engineering (TE) Extensions to OSPF - Version 2."; - } - - typedef te-node-id { - type inet:ip-address; - description - "An identifier for a node in a topology. - The identifier is represented as an IPv4 or IPv6 address. - This attribute is mapped to Router ID in - RFC3630, RFC5329, RFC5305, and RFC 6119."; - } - - typedef te-oper-status { - type enumeration { - enum up { - description - "Operational up."; - } - enum down { - description - "Operational down."; - } - enum testing { - description - "In some test mode."; - } - enum unknown { - description - "Status cannot be determined for some reason."; - } - enum preparing-maintenance { - description - "Resource is disabled in the control plane to prepare for - graceful shutdown for maintenance purposes."; - reference - "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS - Traffic Engineering Networks"; - } - enum maintenance { - description - "Resource is disabled in the data plane for maintenance - purposes."; - } - } - description - "Defines a type representing the operational status of - a TE resource."; - } - - typedef te-recovery-status { - type enumeration { - enum normal { - description - "Both the recovery and working spans are fully - allocated and active, data traffic is being - transported over (or selected from) the working - span, and no trigger events are reported."; - } - enum recovery-started { - description - "The recovery action has been started, but not completed."; - } - enum recovery-succeeded { - description - "The recovery action has succeeded. The working span has - reported a failure/degrade condition and the user traffic - is being transported (or selected) on the recovery span."; - } - enum recovery-failed { - description - "The recovery action has failed."; - } - enum reversion-started { - description - "The reversion has started."; - } - enum reversion-failed { - description - "The reversion has failed."; - } - enum recovery-unavailable { - description - "The recovery is unavailable -- either as a result of an - operator Lockout command or a failure condition detected - on the recovery span."; - } - enum recovery-admin { - description - "The operator has issued a command switching the user - traffic to the recovery span."; - } - enum wait-to-restore { - description - "The recovery domain is recovering from a failuer/degrade - condition on the working span that is being controlled by - the Wait-to-Restore (WTR) timer."; - } - } - } - - typedef te-template-name { - type string { - pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; - } - } - - typedef te-topology-event-type { - type enumeration { - enum "add" { - value 0; - } - enum "remove" { - value 1; - } - enum "update" { - value 2; - } - } - } // te-topology-event-type - typedef te-topology-id { - type string { - pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; - } - } - - typedef te-tp-id { - type union { - type uint32; // Unnumbered - type inet:ip-address; // IPv4 or IPv6 address - } - } - - /* - * Identities - */ - - /* - * Groupings - */ - grouping information-source-attributes { - leaf information-source { - type enumeration { - enum "unknown"; - enum "locally-configured"; - enum "ospfv2"; - enum "ospfv3"; - enum "isis"; - enum "system-processed"; - enum "other"; - } - } - container information-source-state { - leaf credibility-preference { - type uint16; - } - container topology { - uses te-topology-ref; - } // topology - leaf routing-instance { - type string; - } // routing-information - } - } // information-source-attributes - - grouping performance-metric-attributes { - leaf unidirectional-delay { - type uint32 { - range 0..16777215; - } - } - leaf unidirectional-min-delay { - type uint32 { - range 0..16777215; - } - } - leaf unidirectional-max-delay { - type uint32 { - range 0..16777215; - } - } - leaf unidirectional-delay-variation { - type uint32 { - range 0..16777215; - } - } - leaf unidirectional-packet-loss { - type decimal64 { - fraction-digits 6; - range "0 .. 50.331642"; - } - } - leaf unidirectional-residual-bandwidth { - type decimal64 { - fraction-digits 2; - } - } - leaf unidirectional-available-bandwidth { - type decimal64 { - fraction-digits 2; - } - } - leaf unidirectional-utilized-bandwidth { - type decimal64 { - fraction-digits 2; - } - } - } // performance-metric-attributes - grouping performance-metric-normality-attributes { - leaf unidirectional-delay { - type performance-metric-normality; - } - leaf unidirectional-min-delay { - type performance-metric-normality; - } - leaf unidirectional-max-delay { - type performance-metric-normality; - } - leaf unidirectional-delay-variation { - type performance-metric-normality; - } - leaf unidirectional-packet-loss { - type performance-metric-normality; - } - leaf unidirectional-residual-bandwidth { - type performance-metric-normality; - } - leaf unidirectional-available-bandwidth { - type performance-metric-normality; - } - leaf unidirectional-utilized-bandwidth { - type performance-metric-normality; - } - } // performance-metric-normality-attributes - - grouping performance-metric-throttle-container { - container performance-metric-throttle { - leaf unidirectional-delay-offset { - type uint32 { - range 0..16777215; - } - } - leaf measure-interval { - type uint32; - default 30; - } - leaf advertisement-interval { - type uint32; - } - leaf suppression-interval { - type uint32 { - range "1 .. max"; - } - default 120; - } - container threshold-out { - uses performance-metric-attributes; - } - container threshold-in { - uses performance-metric-attributes; - } - container threshold-accelerated-advertisement { - uses performance-metric-attributes; - } - } - } // performance-metric-throttle-container - - grouping te-link-augment { - container te { - presence "TE support."; - container config { - uses te-link-config; - } // config - container state { - config false; - uses te-link-config; - uses te-link-state-derived; - } // state - } // te - } // te-link-augment - - grouping te-link-config { - choice bundle-stack-level { - case bundle { - container bundled-links { - list bundled-link { - key "sequence"; - leaf sequence { - type uint32; - } - leaf src-tp-ref { - type leafref { - path "../../../../../../nw:node[nw:node-id = " - + "current()/../../../../../nt:source/" - + "nt:source-node]/" - + "nt:t-point/nt:tp-id"; - require-instance true; - } - } - leaf des-tp-ref { - type leafref { - path "../../../../../../nw:node[nw:node-id = " - + "current()/../../../../../nt:destination/" - + "nt:dest-node]/" - + "nt:t-point/nt:tp-id"; - require-instance true; - } - } - } // list bundled-link - } - } - case component { - container component-links { - list component-link { - key "sequence"; - leaf sequence { - type uint32; - } - leaf src-interface-ref { - type string; - } - leaf des-interface-ref { - type string; - } - } - } - } - } // bundle-stack-level - - leaf-list te-link-template { - if-feature template; - type leafref { - path "../../../../../te/templates/link-template/name"; - } - } - uses te-link-config-attributes; - } // te-link-config - - grouping te-link-config-attributes { - container te-link-attributes { - uses sch:schedules; - leaf access-type { - type te-link-access-type; - } - leaf is-abstract { - type empty; - } - leaf name { - type string; - } - container underlay { - presence - "Indicates the underlay exists for this link."; - uses te-link-underlay-attributes; - } // underlay - leaf admin-status { - type te-admin-status; - description - "The administrative state of the link."; - } - - uses performance-metric-throttle-container; - uses te-link-info-attributes; - } // te-link-attributes - } // te-link-config-attributes - - grouping te-link-info-attributes { - leaf link-index { - type uint64; - } - leaf administrative-group { - type te-types:admin-groups; - } - leaf max-link-bandwidth { - type decimal64 { - fraction-digits 2; - } - } - leaf max-resv-link-bandwidth { - type decimal64 { - fraction-digits 2; - } - } - list unreserved-bandwidth { - key "priority"; - max-elements "8"; - leaf priority { - type uint8 { - range "0..7"; - } - } - leaf bandwidth { - type decimal64 { - fraction-digits 2; - } - } - } - leaf te-default-metric { - type uint32; - } - container performance-metric { - container measurement { - uses performance-metric-attributes; - } - container normality - { - uses performance-metric-normality-attributes; - } - } - leaf link-protection-type { - type enumeration { - enum "unprotected"; - enum "extra-traffic"; - enum "shared"; - enum "1-for-1"; - enum "1-plus-1"; - enum "enhanced"; - } - } - list interface-switching-capability { - key "switching-capability"; - leaf switching-capability { - type identityref { - base te-types:switching-capabilities; - } - } - leaf encoding { - type identityref { - base te-types:lsp-encoding-types; - } - } - list max-lsp-bandwidth { - key "priority"; - max-elements "8"; - leaf priority { - type uint8 { - range "0..7"; - } - } - leaf bandwidth { - type decimal64 { - fraction-digits 2; - } - } - } - container time-division-multiplex-capable { - leaf minimum-lsp-bandwidth { - type decimal64 { - fraction-digits 2; - } - } - leaf indication { - type enumeration { - enum "standard"; - enum "arbitrary"; - } - } - } - list interface-adjustment-capability { - key "upper-sc"; - leaf upper-sc { - type identityref { - base te-types:switching-capabilities; - } - } - leaf upper-encoding { - type identityref { - base te-types:lsp-encoding-types; - } - } - list max-lsp-bandwidth { - key "priority"; - max-elements "8"; - leaf priority { - type uint8 { - range "0..7"; - } - description "Priority."; - } - leaf bandwidth { - type decimal64 { - fraction-digits 2; - } - } - } - } // interface-adjustment-capability - } // interface-switching-capability - container te-srlgs { - leaf-list values { - type te-types:srlg; - } - } - } // te-link-info-attributes - - grouping te-link-state-derived { - leaf oper-status { - type te-oper-status; - } - uses information-source-attributes; - list alt-information-sources { - key "information-source"; - uses information-source-attributes; - uses te-link-info-attributes; - } - container recovery { - leaf restoration-status { - type te-recovery-status; - } - leaf protection-status { - type te-recovery-status; - } - } - container underlay { - uses te-link-state-underlay-attributes; - } - } // te-link-state-derived - grouping te-link-state-underlay-attributes { - leaf dynamic { - type boolean; - } - leaf committed { - type boolean; - } - } // te-link-state-underlay-attributes - - grouping te-link-underlay-attributes { - container underlay-primary-path { - uses te-topology-ref; - list path-element { - key "path-element-id"; - leaf path-element-id { - type uint32; - } - uses te-path-element; - } - } // underlay-primary-path - list underlay-backup-path { - key "index"; - leaf index { - type uint32; - } - uses te-topology-ref; - list path-element { - key "path-element-id"; - leaf path-element-id { - type uint32; - } - uses te-path-element; - } - } // underlay-backup-path - leaf underlay-protection-type { - type uint16; - } - container underlay-trail-src { - uses nt:tp-ref; - } - container underlay-trail-des { - uses nt:tp-ref; - } - } // te-link-underlay-attributes - - grouping te-node-augment { - container te { - presence "TE support."; - leaf te-node-id { - type te-node-id; - } - - container config { - description - "Configuration data."; - uses te-node-config; - } // config - container state { - config false; - description - "Operational state data."; - - uses te-node-config; - uses te-node-state-derived; - } // state - - list tunnel-termination-point { - key "tunnel-tp-id"; - leaf tunnel-tp-id { - type binary; - } - container config { - uses te-node-tunnel-termination-capability; - } - - container state { - config false; - uses te-node-tunnel-termination-capability; - leaf switching-capability { - type identityref { - base te-types:switching-capabilities; - } - } - leaf encoding { - type identityref { - base te-types:lsp-encoding-types; - } - } - } // state - - } // tunnel-termination-point - } // te - } // te-node-augment - - grouping te-node-config { - leaf-list te-node-template { - if-feature template; - type leafref { - path "../../../../../te/templates/node-template/name"; - } - } - uses te-node-config-attributes; - } // te-node-config - - grouping te-node-config-attributes { - container te-node-attributes { - uses sch:schedules; - leaf admin-status { - type te-admin-status; - description - "The administrative state of the link."; - } - uses te-node-connectivity-matrix; - uses te-node-info-attributes; - } // te-node-attributes - } // te-node-config-attributes - - grouping te-node-config-attributes-notification { - container te-node-attributes { - uses sch:schedules; - leaf admin-status { - type te-admin-status; - } - uses te-node-connectivity-matrix-abs; - uses te-node-info-attributes; - } // te-node-attributes - } // te-node-config-attributes-notification - - grouping te-node-config-attributes-template { - container te-node-attributes { - uses sch:schedules; - leaf admin-status { - type te-admin-status; - } - uses te-node-info-attributes; - } // te-node-attributes - } // te-node-config-attributes-template - - grouping te-node-connectivity-matrix { - list connectivity-matrix { - key "id"; - leaf id { - type uint32; - } - container from { - leaf tp-ref { - type leafref { - path "../../../../../../nt:t-point/nt:tp-id"; - } - } - } - container to { - leaf tp-ref { - type leafref { - path "../../../../../../nt:t-point/nt:tp-id"; - } - } - } - leaf is-allowed { - type boolean; - } - } - } // te-node-connectivity-matrix - - grouping te-node-connectivity-matrix-abs { - list connectivity-matrix { - key "id"; - leaf id { - type uint32; - } - container from { - uses nt:tp-ref; - } - container to { - uses nt:tp-ref; - } - leaf is-allowed { - type boolean; - } - } - } // te-node-connectivity-matrix-abs - - grouping te-node-info-attributes { - leaf domain-id { - type uint32; - } - leaf is-abstract { - type empty; - } - leaf name { - type inet:domain-name; - } - leaf-list signaling-address { - type inet:ip-address; - } - container underlay-topology { - if-feature te-topology-hierarchy; - uses te-topology-ref; - } - } // te-node-info-attributes - - grouping te-node-state-derived { - description "Node state attributes in a TE topology."; - leaf oper-status { - type te-oper-status; - } - leaf is-multi-access-dr { - type empty; - } - uses information-source-attributes; - list alt-information-sources { - key "information-source"; - uses information-source-attributes; - uses te-node-connectivity-matrix; - uses te-node-info-attributes; - } - } // te-node-state-derived - - grouping te-node-state-derived-notification { - description "Node state attributes in a TE topology."; - leaf oper-status { - type te-oper-status; - } - leaf is-multi-access-dr { - type empty; - } - uses information-source-attributes; - list alt-information-sources { - key "information-source"; - uses information-source-attributes; - uses te-node-connectivity-matrix-abs; - uses te-node-info-attributes; - } - } // te-node-state-derived-notification - - grouping te-node-tunnel-termination-capability { - list termination-capability { - key "link-tp"; - leaf link-tp { - type leafref { - path "../../../../../nt:t-point/nt:tp-id"; - } - } - } // termination-capability - } // te-node-tunnel-termination-capability - - grouping te-path-element { - uses te-types:explicit-route-subobject; - } // te-path-element - - grouping te-termination-point-augment { - - container te { - presence "TE support."; - - leaf te-tp-id { - type te-tp-id; - mandatory true; - } - - container config { - uses te-termination-point-config; - } // config - container state { - config false; - uses te-termination-point-config; - } // state - } // te - } // te-termination-point-augment - - grouping te-termination-point-config { - uses sch:schedules; - } // te-termination-point-config - - grouping te-topologies-augment { - - container te { - presence "TE support."; - - container templates { - list node-template { - if-feature template; - key "name"; - leaf name { - type te-template-name; - } - uses template-attributes; - uses te-node-config-attributes-template; - } // node-template - - list link-template { - if-feature template; - key "name"; - leaf name { - type te-template-name; - } - uses template-attributes; - uses te-link-config-attributes; - } // link-template - } // templates - } // te - } // te-topologies-augment - - grouping te-topology-augment { - - container te { - presence "TE support."; - leaf provider-id { - type te-global-id; - } - leaf client-id { - type te-global-id; - } - leaf te-topology-id { - type te-topology-id; - mandatory true; - } - - container config { - uses te-topology-config; - } // config - container state { - config false; - uses te-topology-config; - } // state - } // te - } // te-topology-augment - - grouping te-topology-config { - uses sch:schedules; - leaf preference { - type uint8 { - range "1..255"; - } - } - } // te-topology-config - - grouping te-topology-ref { - leaf provider-id-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id = " - + "current()/../network-id-ref]/tet:te/tet:provider-id"; - require-instance false; - } - } - leaf client-id-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id = " - + "current()/../network-id-ref]/tet:te/tet:client-id"; - require-instance false; - } - } - leaf te-topology-id-ref { - type leafref { - path "/nw:networks/nw:network[nw:network-id = " - + "current()/../network-id-ref]/tet:te/tet:te-topology-id"; - require-instance false; - } - } - leaf network-id-ref { - type leafref { - path "/nw:networks/nw:network/nw:network-id"; - require-instance false; - } - } - } // te-topology-ref - - grouping te-topology-type { - container te-topology { - presence "Indicates TE topology."; - } - } // te-topology-type - - grouping template-attributes { - leaf priority { - type uint16; - } - leaf reference-change-policy { - type enumeration { - enum no-action; - enum not-allowed; - enum cascade; - } - } - } // template-attributes - - /* - * Configuration data nodes - */ - augment "/nw:networks/nw:network/nw:network-types" { - uses te-topology-type; - } - - augment "/nw:networks" { - uses te-topologies-augment; - } - - augment "/nw:networks/nw:network" { - uses te-topology-augment; - } - - augment "/nw:networks/nw:network/nw:node" { - uses te-node-augment; - } - - augment "/nw:networks/nw:network/nt:link" { - uses te-link-augment; - } - - augment "/nw:networks/nw:network/nw:node/" - + "nt:t-point" { - uses te-termination-point-augment; - } - - container te-node-event { - leaf event-type { - type te-topology-event-type; - description "Event type."; - } - uses nw:node-ref; - uses te-topology-type; - uses tet:te-node-config-attributes-notification; - uses tet:te-node-state-derived-notification; - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-types.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-types.yang deleted file mode 100644 index 206346b02e..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-te-types.yang +++ /dev/null @@ -1,870 +0,0 @@ - module yms-ietf-te-types { - - namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; - - /* Replace with IANA when assigned */ - prefix "te-types"; - - import yms-ietf-inet-types { - prefix inet; - } - - organization - "IETF Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Lou Berger - - - WG Chair: Vishnu Pavan Beeram - - - Editor: Tarek Saad - - - Editor: Rakesh Gandhi - - - Editor: Vishnu Pavan Beeram - - - Editor: Himanshu Shah - - - Editor: Xufeng Liu - - - Editor: Xia Chen - - - Editor: Raqib Jones - - - Editor: Bin Wen - "; - - description - "This module contains a collection of generally - useful TE specific YANG data type defintions."; - - revision 2016-03-20 { - description "Latest revision of TE generic types"; - reference "RFC3209"; - } - - identity tunnel-type { - description - "Base identity from which specific tunnel types are - derived."; - } - - identity tunnel-p2p { - base tunnel-type; - description - "TE point-to-point tunnel type."; - } - - identity tunnel-p2mp { - base tunnel-type; - description - "TE point-to-multipoint tunnel type."; - } - - identity state-type { - description - "Base identity for TE states"; - } - - identity state-up { - base state-type; - description - "State up"; - } - - identity state-down { - base state-type; - description - "State down"; - } - - identity lsp-prot-type { - description - "Base identity from which LSP protection types are - derived."; - } - - identity lsp-prot-unprotected { - description - "LSP protection 'Unprotected'"; - reference "RFC4872"; - } - - identity lsp-prot-reroute-extra { - description - "LSP protection '(Full) Rerouting'"; - reference "RFC4872"; - } - - identity lsp-prot-reroute { - description - "LSP protection 'Rerouting without Extra-Traffic'"; - reference "RFC4872"; - } - - identity lsp-prot-1-for-n { - description - "LSP protection '1:N Protection with Extra-Traffic'"; - reference "RFC4872"; - } - - identity lsp-prot-unidir-1-to-1 { - description - "LSP protection '1+1 Unidirectional Protection'"; - reference "RFC4872"; - } - - identity lsp-prot-bidir-1-to-1 { - description - "LSP protection '1+1 Bidirectional Protection'"; - reference "RFC4872"; - } - - identity switching-capabilities { - description - "Base identity for interface switching capabilities"; - } - - identity switching-psc1 { - base switching-capabilities; - description - "Packet-Switch Capable-1 (PSC-1)"; - } - - identity switching-evpl { - base switching-capabilities; - description - "Ethernet Virtual Private Line (EVPL)"; - } - - identity switching-l2sc { - base switching-capabilities; - description - "Layer-2 Switch Capable (L2SC)"; - } - - identity switching-tdm { - base switching-capabilities; - description - "Time-Division-Multiplex Capable (TDM)"; - } - - identity switching-otn { - base switching-capabilities; - description - "OTN-TDM capable"; - } - - identity switching-dcsc { - base switching-capabilities; - description - "Data Channel Switching Capable (DCSC)"; - } - identity switching-lsc { - base switching-capabilities; - description - "Lambda-Switch Capable (LSC)"; - } - - identity switching-fsc { - base switching-capabilities; - description - "Fiber-Switch Capable (FSC)"; - } - - identity lsp-encoding-types { - description - "Base identity for encoding types"; - } - - identity lsp-encoding-packet { - base lsp-encoding-types; - description - "Packet LSP encoding"; - } - - identity lsp-encoding-ethernet { - base lsp-encoding-types; - description - "Ethernet LSP encoding"; - } - - identity lsp-encoding-pdh { - base lsp-encoding-types; - description - "ANSI/ETSI LSP encoding"; - } - - identity lsp-encoding-sdh { - base lsp-encoding-types; - description - "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding"; - } - - identity lsp-encoding-digital-wrapper { - base lsp-encoding-types; - description - "Digital Wrapper LSP encoding"; - } - - identity lsp-encoding-lambda { - base lsp-encoding-types; - description - "Lambda (photonic) LSP encoding"; - } - - identity lsp-encoding-fiber { - base lsp-encoding-types; - description - "Fiber LSP encoding"; - } - - identity lsp-encoding-fiber-channel { - base lsp-encoding-types; - description - "FiberChannel LSP encoding"; - } - - identity lsp-encoding-oduk { - base lsp-encoding-types; - description - "G.709 ODUk (Digital Path)LSP encoding"; - } - - identity lsp-encoding-optical-channel { - base lsp-encoding-types; - description - "Line (e.g., 8B/10B) LSP encoding"; - } - - identity lsp-encoding-line { - base lsp-encoding-types; - description - "Line (e.g., 8B/10B) LSP encoding"; - } - - /* TE basic features */ - feature p2mp-te { - description - "Indicates support for P2MP-TE"; - } - - feature frr-te { - description - "Indicates support for TE FastReroute (FRR)"; - } - - feature extended-admin-groups { - description - "Indicates support for TE link extended admin - groups."; - } - - feature named-path-affinities { - description - "Indicates support for named path affinities"; - } - - feature named-extended-admin-groups { - description - "Indicates support for named extended admin groups"; - } - - feature named-srlg-groups { - description - "Indicates support for named SRLG groups"; - } - - feature named-path-constraints { - description - "Indicates support for named path constraints"; - } - - grouping explicit-route-subobject { - description - "The explicit route subobject grouping"; - choice type { - description - "The explicit route subobject type"; - case ipv4-address { - description - "IPv4 address explicit route subobject"; - leaf v4-address { - type inet:ipv4-address; - description - "An IPv4 address. This address is - treated as a prefix based on the - prefix length value below. Bits beyond - the prefix are ignored on receipt and - SHOULD be set to zero on transmission."; - } - leaf v4-prefix-length { - type uint8; - description - "Length in bits of the IPv4 prefix"; - } - leaf v4-loose { - type boolean; - description - "Describes whether the object is loose - if set, or otherwise strict"; - } - } - case ipv6-address { - description - "IPv6 address Explicit Route Object"; - leaf v6-address { - type inet:ipv6-address; - description - "An IPv6 address. This address is - treated as a prefix based on the - prefix length value below. Bits - beyond the prefix are ignored on - receipt and SHOULD be set to zero - on transmission."; - } - leaf v6-prefix-length { - type uint8; - description - "Length in bits of the IPv4 prefix"; - } - leaf v6-loose { - type boolean; - description - "Describes whether the object is loose - if set, or otherwise strict"; - } - } - case as-number { - leaf as-number { - type uint16; - description "AS number"; - } - description - "Autonomous System explicit route subobject"; - } - case unnumbered-link { - leaf router-id { - type inet:ip-address; - description - "A router-id address"; - } - leaf interface-id { - type uint32; - description "The interface identifier"; - } - description - "Unnumbered link explicit route subobject"; - reference - "RFC3477: Signalling Unnumbered Links in - RSVP-TE"; - } - case label { - leaf value { - type uint32; - description "the label value"; - } - description - "The Label ERO subobject"; - } - /* AS domain sequence..? */ - } - } - - grouping record-route-subobject { - description - "The record route subobject grouping"; - choice type { - description - "The record route subobject type"; - case ipv4-address { - leaf v4-address { - type inet:ipv4-address; - description - "An IPv4 address. This address is - treated as a prefix based on the prefix - length value below. Bits beyond the - prefix are ignored on receipt and - SHOULD be set to zero on transmission."; - } - leaf v4-prefix-length { - type uint8; - description - "Length in bits of the IPv4 prefix"; - } - leaf v4-flags { - type uint8; - description - "IPv4 address sub-object flags"; - reference "RFC3209"; - } - } - case ipv6-address { - leaf v6-address { - type inet:ipv6-address; - description - "An IPv6 address. This address is - treated as a prefix based on the - prefix length value below. Bits - beyond the prefix are ignored on - receipt and SHOULD be set to zero - on transmission."; - } - leaf v6-prefix-length { - type uint8; - description - "Length in bits of the IPv4 prefix"; - } - leaf v6-flags { - type uint8; - description - "IPv6 address sub-object flags"; - reference "RFC3209"; - } - } - case label { - leaf value { - type uint32; - description "the label value"; - } - leaf flags { - type uint8; - description - "Label sub-object flags"; - reference "RFC3209"; - } - description - "The Label ERO subobject"; - } - } - } - - identity route-usage-type { - description - "Base identity for route usage"; - } - - identity route-include-ero { - base route-usage-type; - description - "Include ERO from route"; - } - - identity route-exclude-ero { - base route-usage-type; - description - "Exclude ERO from route"; - } - - identity route-exclude-srlg { - base route-usage-type; - description - "Exclude SRLG from route"; - } - - identity path-metric-type { - description - "Base identity for path metric type"; - } - - identity path-metric-te { - base path-metric-type; - description - "TE path metric"; - } - - identity path-metric-igp { - base path-metric-type; - description - "IGP path metric"; - } - - identity path-tiebreaker-type { - description - "Base identity for path tie-breaker type"; - } - - identity path-tiebreaker-minfill { - base path-tiebreaker-type; - description - "Min-Fill LSP path placement"; - } - - identity path-tiebreaker-maxfill { - base path-tiebreaker-type; - description - "Max-Fill LSP path placement"; - } - - identity path-tiebreaker-randoom { - base path-tiebreaker-type; - description - "Random LSP path placement"; - } - - identity bidir-provisioning-mode { - description - "Base identity for bidirectional provisioning - mode."; - } - - identity bidir-provisioning-single-sided { - base bidir-provisioning-mode; - description - "Single-sided bidirectional provioning mode"; - } - - identity bidir-provisioning-double-sided { - base bidir-provisioning-mode; - description - "Double-sided bidirectional provioning mode"; - } - - identity bidir-association-type { - description - "Base identity for bidirectional association type"; - } - - identity bidir-assoc-corouted { - base bidir-association-type; - description - "Co-routed bidirectional association type"; - } - - identity bidir-assoc-non-corouted { - base bidir-association-type; - description - "Non co-routed bidirectional association type"; - } - - identity resource-affinities-type { - description - "Base identity for resource affinities"; - } - - identity resource-aff-include-all { - base resource-affinities-type; - description - "The set of attribute filters associated with a - tunnel all of which must be present for a link - to be acceptable"; - } - - identity resource-aff-include-any { - base resource-affinities-type; - description - "The set of attribute filters associated with a - tunnel any of which must be present for a link - to be acceptable"; - } - - identity resource-aff-exclude-any { - base resource-affinities-type; - description - "The set of attribute filters associated with a - tunnel any of which renders a link unacceptable"; - } - - typedef admin-group { - type binary { - length 32; - } - description - "Administrative group/Resource class/Color."; - } - - typedef extended-admin-group { - type binary; - description - "Extended administrative group/Resource class/Color."; - } - - typedef admin-groups { - type union { - type admin-group; - type extended-admin-group; - } - description "TE administrative group derived type"; - } - - typedef srlg { - type uint32; - description "SRLG type"; - } - - identity path-computation-srlg-type { - description - "Base identity for SRLG path computation"; - } - - identity srlg-ignore { - base path-computation-srlg-type; - description - "Ignores SRLGs in path computation"; - } - - identity srlg-strict { - base path-computation-srlg-type; - description - "Include strict SRLG check in path computation"; - } - - identity srlg-preferred { - base path-computation-srlg-type; - description - "Include preferred SRLG check in path computation"; - } - - identity srlg-weighted { - base path-computation-srlg-type; - description - "Include weighted SRLG check in path computation"; - } - - typedef te-metric { - type uint32; - description - "TE link metric"; - } - - typedef topology-id { - type string { - pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; - } - description - "An identifier for a topology."; - } - - /** - * TE tunnel generic groupings - **/ - - /* Tunnel path selection parameters */ - grouping tunnel-path-selection { - description - "Tunnel path selection properties grouping"; - container path-selection { - description - "Tunnel path selection properties container"; - leaf topology { - type te-types:topology-id; - description - "The tunnel path is computed using the specific - topology identified by this identifier"; - } - leaf cost-limit { - type uint32 { - range "1..4294967295"; - } - description - "The tunnel path cost limit."; - } - leaf hop-limit { - type uint8 { - range "1..255"; - } - description - "The tunnel path hop limit."; - } - leaf metric-type { - type identityref { - base path-metric-type; - } - default path-metric-te; - description - "The tunnel path metric type."; - } - leaf tiebreaker-type { - type identityref { - base path-tiebreaker-type; - } - default path-tiebreaker-maxfill; - description - "The tunnel path computation tie breakers."; - } - leaf ignore-overload { - type boolean; - description - "The tunnel path can traverse overloaded node."; - } - uses tunnel-path-affinities; - uses tunnel-path-srlgs; - } - } - - grouping tunnel-path-affinities { - description - "Path affinities grouping"; - container tunnel-path-affinities { - if-feature named-path-affinities; - description - "Path affinities container"; - choice style { - description - "Path affinities representation style"; - case values { - leaf value { - type uint32 { - range "0..4294967295"; - } - description - "Affinity value"; - } - leaf mask { - type uint32 { - range "0..4294967295"; - } - description - "Affinity mask"; - } - } - case named { - list constraints { - key "usage"; - leaf usage { - type identityref { - base resource-affinities-type; - } - description "Affinities usage"; - } - container constraint { - description - "Container for named affinities"; - list affinity-names { - key "name"; - leaf name { - type string; - description - "Affinity name"; - } - description - "List of named affinities"; - } - } - description - "List of named affinity constraints"; - } - } - } - } - } - - grouping tunnel-path-srlgs { - description - "Path SRLG properties grouping"; - container tunnel-path-srlgs { - description - "Path SRLG properties container"; - choice style { - description - "Type of SRLG representation"; - case values { - leaf usage { - type identityref { - base route-exclude-srlg; - } - description "SRLG usage"; - } - leaf-list values { - type te-types:srlg; - description "SRLG value"; - } - } - case named { - list constraints { - key "usage"; - leaf usage { - type identityref { - base route-exclude-srlg; - } - description "SRLG usage"; - } - container constraint { - description - "Container for named SRLG list"; - list srlg-names { - key "name"; - leaf name { - type string; - description - "The SRLG name"; - } - description - "List named SRLGs"; - } - } - description - "List of named SRLG constraints"; - } - } - } - } - } - - grouping tunnel-bidir-assoc-properties { - description - "TE tunnel associated bidirectional properties - grouping"; - container bidirectional { - description - "TE tunnel associated bidirectional attributes."; - container association { - description - "Tunnel bidirectional association properties"; - leaf id { - type uint16; - description - "The TE tunnel association identifier."; - } - leaf source { - type inet:ip-address; - description - "The TE tunnel association source."; - } - leaf global-source { - type inet:ip-address; - description - "The TE tunnel association global - source."; - } - leaf type { - type identityref { - base bidir-association-type; - } - default bidir-assoc-non-corouted; - description - "The TE tunnel association type."; - } - leaf provisioing { - type identityref { - base bidir-provisioning-mode; - } - description - "Describes the provisioning model of the - associated bidirectional LSP"; - reference - "draft-ietf-teas-mpls-tp-rsvpte-ext- - associated-lsp, section-3.2"; - } - } - } - } - /*** End of TE tunnel groupings ***/ - - /** - * TE interface generic groupings - **/ - } diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-yang-types.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-yang-types.yang deleted file mode 100644 index bc248a68fa..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-ietf-yang-types.yang +++ /dev/null @@ -1,490 +0,0 @@ - module yms-ietf-yang-types { - - yang-version 1; - - namespace - "urn:ietf:params:xml:ns:yang:ietf-yang-types"; - - prefix yang; - - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: David Kessens - - - WG Chair: Juergen Schoenwaelder - - - Editor: Juergen Schoenwaelder - "; - - description - "This module contains a collection of generally useful derived - YANG data types. - - Copyright (c) 2013 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 6991; see - the RFC itself for full legal notices."; - - revision "2013-07-15" { - description - "This revision adds the following new data types: - - yang-identifier - - hex-string - - uuid - - dotted-quad"; - reference - "RFC 6991: Common YANG Data Types"; - - } - - revision "2010-09-24" { - description "Initial revision."; - reference - "RFC 6021: Common YANG Data Types"; - - } - - - typedef counter32 { - type uint32; - description - "The counter32 type represents a non-negative integer - that monotonically increases until it reaches a - maximum value of 2^32-1 (4294967295 decimal), when it - wraps around and starts increasing again from zero. - - Counters have no defined 'initial' value, and thus, a - single value of a counter has (in general) no information - content. Discontinuities in the monotonically increasing - value normally occur at re-initialization of the - management system, and at other times as specified in the - description of a schema node using this type. If such - other times can occur, for example, the creation of - a schema node of type counter32 at times other than - re-initialization, then a corresponding schema node - should be defined, with an appropriate type, to indicate - the last discontinuity. - - The counter32 type should not be used for configuration - schema nodes. A default statement SHOULD NOT be used in - combination with the type counter32. - - In the value set and its semantics, this type is equivalent - to the Counter32 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - - } - - typedef zero-based-counter32 { - type counter32; - default "0"; - description - "The zero-based-counter32 type represents a counter32 - that has the defined 'initial' value zero. - - A schema node of this type will be set to zero (0) on creation - and will thereafter increase monotonically until it reaches - a maximum value of 2^32-1 (4294967295 decimal), when it - wraps around and starts increasing again from zero. - - Provided that an application discovers a new schema node - of this type within the minimum time to wrap, it can use the - 'initial' value as a delta. It is important for a management - station to be aware of this minimum time and the actual time - between polls, and to discard data if the actual time is too - long or there is no defined minimum time. - - In the value set and its semantics, this type is equivalent - to the ZeroBasedCounter32 textual convention of the SMIv2."; - reference - "RFC 4502: Remote Network Monitoring Management Information - Base Version 2"; - - } - - typedef counter64 { - type uint64; - description - "The counter64 type represents a non-negative integer - that monotonically increases until it reaches a - maximum value of 2^64-1 (18446744073709551615 decimal), - when it wraps around and starts increasing again from zero. - - Counters have no defined 'initial' value, and thus, a - single value of a counter has (in general) no information - content. Discontinuities in the monotonically increasing - value normally occur at re-initialization of the - management system, and at other times as specified in the - description of a schema node using this type. If such - other times can occur, for example, the creation of - a schema node of type counter64 at times other than - re-initialization, then a corresponding schema node - should be defined, with an appropriate type, to indicate - the last discontinuity. - - The counter64 type should not be used for configuration - schema nodes. A default statement SHOULD NOT be used in - combination with the type counter64. - - In the value set and its semantics, this type is equivalent - to the Counter64 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - - } - - typedef zero-based-counter64 { - type counter64; - default "0"; - description - "The zero-based-counter64 type represents a counter64 that - has the defined 'initial' value zero. - - - - - A schema node of this type will be set to zero (0) on creation - and will thereafter increase monotonically until it reaches - a maximum value of 2^64-1 (18446744073709551615 decimal), - when it wraps around and starts increasing again from zero. - - Provided that an application discovers a new schema node - of this type within the minimum time to wrap, it can use the - 'initial' value as a delta. It is important for a management - station to be aware of this minimum time and the actual time - between polls, and to discard data if the actual time is too - long or there is no defined minimum time. - - In the value set and its semantics, this type is equivalent - to the ZeroBasedCounter64 textual convention of the SMIv2."; - reference - "RFC 2856: Textual Conventions for Additional High Capacity - Data Types"; - - } - - typedef gauge32 { - type uint32; - description - "The gauge32 type represents a non-negative integer, which - may increase or decrease, but shall never exceed a maximum - value, nor fall below a minimum value. The maximum value - cannot be greater than 2^32-1 (4294967295 decimal), and - the minimum value cannot be smaller than 0. The value of - a gauge32 has its maximum value whenever the information - being modeled is greater than or equal to its maximum - value, and has its minimum value whenever the information - being modeled is smaller than or equal to its minimum value. - If the information being modeled subsequently decreases - below (increases above) the maximum (minimum) value, the - gauge32 also decreases (increases). - - In the value set and its semantics, this type is equivalent - to the Gauge32 type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - - } - - typedef gauge64 { - type uint64; - description - "The gauge64 type represents a non-negative integer, which - may increase or decrease, but shall never exceed a maximum - value, nor fall below a minimum value. The maximum value - cannot be greater than 2^64-1 (18446744073709551615), and - the minimum value cannot be smaller than 0. The value of - a gauge64 has its maximum value whenever the information - being modeled is greater than or equal to its maximum - value, and has its minimum value whenever the information - being modeled is smaller than or equal to its minimum value. - If the information being modeled subsequently decreases - below (increases above) the maximum (minimum) value, the - gauge64 also decreases (increases). - - In the value set and its semantics, this type is equivalent - to the CounterBasedGauge64 SMIv2 textual convention defined - in RFC 2856"; - reference - "RFC 2856: Textual Conventions for Additional High Capacity - Data Types"; - - } - - typedef object-identifier { - type string { - pattern - '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))(\.(0|([1-9]\d*)))*'; - } - description - "The object-identifier type represents administratively - assigned names in a registration-hierarchical-name tree. - - Values of this type are denoted as a sequence of numerical - non-negative sub-identifier values. Each sub-identifier - value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers - are separated by single dots and without any intermediate - whitespace. - - The ASN.1 standard restricts the value space of the first - sub-identifier to 0, 1, or 2. Furthermore, the value space - of the second sub-identifier is restricted to the range - 0 to 39 if the first sub-identifier is 0 or 1. Finally, - the ASN.1 standard requires that an object identifier - has always at least two sub-identifiers. The pattern - captures these restrictions. - - Although the number of sub-identifiers is not limited, - module designers should realize that there may be - implementations that stick with the SMIv2 limit of 128 - sub-identifiers. - - This type is a superset of the SMIv2 OBJECT IDENTIFIER type - since it is not restricted to 128 sub-identifiers. Hence, - this type SHOULD NOT be used to represent the SMIv2 OBJECT - IDENTIFIER type; the object-identifier-128 type SHOULD be - used instead."; - reference - "ISO9834-1: Information technology -- Open Systems - Interconnection -- Procedures for the operation of OSI - Registration Authorities: General procedures and top - arcs of the ASN.1 Object Identifier tree"; - - } - - typedef object-identifier-128 { - type object-identifier { - pattern '\d*(\.\d*){1,127}'; - } - description - "This type represents object-identifiers restricted to 128 - sub-identifiers. - - In the value set and its semantics, this type is equivalent - to the OBJECT IDENTIFIER type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - - } - - typedef yang-identifier { - type string { - length "1..max"; - pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; - pattern - '.|..|[^xX].*|.[^mM].*|..[^lL].*'; - } - description - "A YANG identifier string as defined by the 'identifier' - rule in Section 12 of RFC 6020. An identifier must - start with an alphabetic character or an underscore - followed by an arbitrary sequence of alphabetic or - numeric characters, underscores, hyphens, or dots. - - A YANG identifier MUST NOT start with any possible - combination of the lowercase or uppercase character - sequence 'xml'."; - reference - "RFC 6020: YANG - A Data Modeling Language for the Network - Configuration Protocol (NETCONF)"; - - } - - typedef date-and-time { - type string { - pattern - '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[\+\-]\d{2}:\d{2})'; - } - description - "The date-and-time type is a profile of the ISO 8601 - standard for representation of dates and times using the - Gregorian calendar. The profile is defined by the - date-time production in Section 5.6 of RFC 3339. - - The date-and-time type is compatible with the dateTime XML - schema type with the following notable exceptions: - - (a) The date-and-time type does not allow negative years. - - (b) The date-and-time time-offset -00:00 indicates an unknown - time zone (see RFC 3339) while -00:00 and +00:00 and Z - all represent the same time zone in dateTime. - - (c) The canonical format (see below) of data-and-time values - differs from the canonical format used by the dateTime XML - schema type, which requires all times to be in UTC using - the time-offset 'Z'. - - This type is not equivalent to the DateAndTime textual - convention of the SMIv2 since RFC 3339 uses a different - separator between full-date and full-time and provides - higher resolution of time-secfrac. - - The canonical format for date-and-time values with a known time - zone uses a numeric time zone offset that is calculated using - the device's configured known offset to UTC time. A change of - the device's offset to UTC time will cause date-and-time values - to change accordingly. Such changes might happen periodically - in case a server follows automatically daylight saving time - (DST) time zone offset changes. The canonical format for - date-and-time values with an unknown time zone (usually - referring to the notion of local time) uses the time-offset - -00:00."; - reference - "RFC 3339: Date and Time on the Internet: Timestamps - RFC 2579: Textual Conventions for SMIv2 - XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; - - } - - typedef timeticks { - type uint32; - description - "The timeticks type represents a non-negative integer that - represents the time, modulo 2^32 (4294967296 decimal), in - hundredths of a second between two epochs. When a schema - node is defined that uses this type, the description of - the schema node identifies both of the reference epochs. - - In the value set and its semantics, this type is equivalent - to the TimeTicks type of the SMIv2."; - reference - "RFC 2578: Structure of Management Information Version 2 - (SMIv2)"; - - } - - typedef timestamp { - type timeticks; - description - "The timestamp type represents the value of an associated - timeticks schema node at which a specific occurrence - happened. The specific occurrence must be defined in the - description of any schema node defined using this type. When - the specific occurrence occurred prior to the last time the - associated timeticks attribute was zero, then the timestamp - value is zero. Note that this requires all timestamp values - to be reset to zero when the value of the associated timeticks - attribute reaches 497+ days and wraps around to zero. - - The associated timeticks schema node must be specified - in the description of any schema node using this type. - - In the value set and its semantics, this type is equivalent - to the TimeStamp textual convention of the SMIv2."; - reference - "RFC 2579: Textual Conventions for SMIv2"; - - } - - typedef phys-address { - type string { - pattern - '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; - } - description - "Represents media- or physical-level addresses represented - as a sequence octets, each octet represented by two hexadecimal - numbers. Octets are separated by colons. The canonical - representation uses lowercase characters. - - In the value set and its semantics, this type is equivalent - to the PhysAddress textual convention of the SMIv2."; - reference - "RFC 2579: Textual Conventions for SMIv2"; - - } - - typedef mac-address { - type string { - pattern - '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; - } - description - "The mac-address type represents an IEEE 802 MAC address. - The canonical representation uses lowercase characters. - - In the value set and its semantics, this type is equivalent - to the MacAddress textual convention of the SMIv2."; - reference - "IEEE 802: IEEE Standard for Local and Metropolitan Area - Networks: Overview and Architecture - RFC 2579: Textual Conventions for SMIv2"; - - } - - typedef xpath1.0 { - type string; - description - "This type represents an XPATH 1.0 expression. - - When a schema node is defined that uses this type, the - description of the schema node MUST specify the XPath - context in which the XPath expression is evaluated."; - reference - "XPATH: XML Path Language (XPath) Version 1.0"; - - } - - typedef hex-string { - type string { - pattern - '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; - } - description - "A hexadecimal string with octets represented as hex digits - separated by colons. The canonical representation uses - lowercase characters."; - } - - typedef uuid { - type string { - pattern - '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; - } - description - "A Universally Unique IDentifier in the string representation - defined in RFC 4122. The canonical representation uses - lowercase characters. - - The following is an example of a UUID in string representation: - f81d4fae-7dec-11d0-a765-00a0c91e6bf6 - "; - reference - "RFC 4122: A Universally Unique IDentifier (UUID) URN - Namespace"; - - } - - typedef dotted-quad { - type string { - pattern - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; - } - description - "An unsigned 32-bit number expressed in the dotted-quad - notation, i.e., four octets written as decimal numbers - and separated with the '.' (full stop) character."; - } - } // module ietf-yang-types - diff --git a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-network-topology.yang b/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-network-topology.yang deleted file mode 100644 index 4700365d51..0000000000 --- a/apps/yms/ut/src/test/resources/ydtTestYangFiles/yms-network-topology.yang +++ /dev/null @@ -1,304 +0,0 @@ - module yms-network-topology { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology"; - prefix lnk; - - import yms-ietf-inet-types { - prefix inet; - } - import yms-ietf-network { - prefix nd; - } - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for network topology, - augmenting the base network model with links to connect nodes, - as well as termination points to terminate links on nodes. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - revision 2015-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02."; - } - - typedef link-id { - type inet:uri; - description - "An identifier for a link in a topology. - The identifier SHOULD be chosen such that the same link in a - real network topology will always be identified through the - same identifier, even if the model is instantiated in - separate datastores. An implementation MAY choose to capture - semantics in the identifier, for example to indicate the type - of link and/or the type of topology that the link is a part - of."; - } - - typedef tp-id { - type inet:uri; - description - "An identifier for termination points on a node. - The identifier SHOULD be chosen such that the same TP in a - real network topology will always be identified through the - same identifier, even if the model is instantiated in - separate datastores. An implementation MAY choose to capture - semantics in the identifier, for example to indicate the type - of TP and/or the type of node and topology that the TP is a - part of."; - } - grouping link-ref { - description - "References a link in a specific network."; - leaf link-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/../"+ - "network-ref]/lnk:link/lnk:link-id"; - require-instance false; - } - description - "A type for an absolute reference a link instance. - (This type should not be used for relative references. - In such a case, a relative path should be used instead.)"; - } - uses nd:network-ref; - } - - grouping tp-ref { - description - "References a termination point in a specific node."; - leaf tp-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/../"+ - "network-ref]/nd:node[nd:node-id=current()/../"+ - "node-ref]/lnk:t-point/lnk:tp-id"; - require-instance false; - } - description - "A type for an absolute reference to a termination point. - (This type should not be used for relative references. - In such a case, a relative path should be used instead.)"; - } - uses nd:node-ref; - } - - augment "/nd:networks/nd:network" { - description - "Add links to the network model."; - list link { - key "link-id"; - description - "A Network Link connects a by Local (Source) node and - a Remote (Destination) Network Nodes via a set of the - nodes' termination points. - As it is possible to have several links between the same - source and destination nodes, and as a link could - potentially be re-homed between termination points, to - ensure that we would always know to distinguish between - links, every link is identified by a dedicated link - identifier. - Note that a link models a point-to-point link, not a - multipoint link. - Layering dependencies on links in underlay topologies are - not represented as the layering information of nodes and of - termination points is sufficient."; - container source { - description - "This container holds the logical source of a particular - link."; - leaf source-node { - type leafref { - path "../../../nd:node/nd:node-id"; - } - mandatory true; - description - "Source node identifier, must be in same topology."; - } - leaf source-tp { - type leafref { - path "../../../nd:node[nd:node-id=current()/../"+ - "source-node]/t-point/tp-id"; - } - description - "Termination point within source node that terminates - the link."; - } - } - container destination { - description - "This container holds the logical destination of a - particular link."; - leaf dest-node { - type leafref { - path "../../../nd:node/nd:node-id"; - } - mandatory true; - description - "Destination node identifier, must be in the same - network."; - } - leaf dest-tp { - type leafref { - path "../../../nd:node[nd:node-id=current()/../"+ - "dest-node]/t-point/tp-id"; - } - description - "Termination point within destination node that - terminates the link."; - } - } - leaf link-id { - type link-id; - description - "The identifier of a link in the topology. - A link is specific to a topology to which it belongs."; - } - list supporting-link { - key "network-ref link-ref"; - description - "Identifies the link, or links, that this link - is dependent on."; - leaf network-ref { - type leafref { - path "../../../nd:supporting-network/nd:network-ref"; - require-instance false; - } - description - "This leaf identifies in which underlay topology - supporting link is present."; - } - leaf link-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/"+ - "../network-ref]/link/link-id"; - require-instance false; - } - description - "This leaf identifies a link which is a part - of this link's underlay. Reference loops, in which - a link identifies itself as its underlay, either - directly or transitively, are not allowed."; - } - } - } - - leaf link-id { - type link-id; - description - "The identifier of a link in the topology. - A link is specific to a topology to which it belongs."; - } - } - augment "/nd:networks/nd:network/nd:node" { - description - "Augment termination points which terminate links. - Termination points can ultimately be mapped to interfaces."; - list t-point { - key "tp-id"; - description - "A termination point can terminate a link. - Depending on the type of topology, a termination point - could, for example, refer to a port or an interface."; - leaf tp-id { - type tp-id; - description - "Termination point identifier."; - } - list supporting-termination-point { - key "network-ref node-ref tp-ref"; - description - "The leaf list identifies any termination points that - the termination point is dependent on, or maps onto. - Those termination points will themselves be contained - in a supporting node. - This dependency information can be inferred from - the dependencies between links. For this reason, - this item is not separately configurable. Hence no - corresponding constraint needs to be articulated. - The corresponding information is simply provided by the - implementing system."; - leaf network-ref { - type leafref { - path "../../../nd:supporting-node/nd:network-ref"; - require-instance false; - } - description - "This leaf identifies in which topology the - supporting termination point is present."; - } - leaf node-ref { - type leafref { - path "../../../nd:supporting-node/nd:node-ref"; - require-instance false; - } - description - "This leaf identifies in which node the supporting - termination point is present."; - } - leaf tp-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/"+ - "../network-ref]/nd:node[nd:node-id=current()/../"+ - "node-ref]/t-point/tp-id"; - require-instance false; - } - description - "Reference to the underlay node, must be in a - different topology"; - } - } - } - } - } diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/CheckWithNamespace.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/CheckWithNamespace.yang deleted file mode 100644 index 7e5726e0d5..0000000000 --- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/CheckWithNamespace.yang +++ /dev/null @@ -1,80 +0,0 @@ - module check { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network4:check:namespace"; - prefix nd; - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - revision 2015-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02"; - } - - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } -} diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/norev.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/norev.yang deleted file mode 100644 index 23eaabadea..0000000000 --- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/norev.yang +++ /dev/null @@ -1,85 +0,0 @@ - module ietf-network4 { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network4"; - prefix nd; - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - notification network-up { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - notification network-down { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - -} diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev.yang deleted file mode 100644 index ab0cffa920..0000000000 --- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev.yang +++ /dev/null @@ -1,95 +0,0 @@ - module ietf-network4 { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network4"; - prefix nd; - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - revision 2015-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02"; - } - - notification network-up { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - notification network-down { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - -} diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev2.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev2.yang deleted file mode 100644 index f7c9a16595..0000000000 --- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev2.yang +++ /dev/null @@ -1,95 +0,0 @@ - module ietf-network4 { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network4"; - prefix nd; - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - revision 2016-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02"; - } - - notification network-up { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - notification network-down { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - -} diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev3.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev3.yang deleted file mode 100644 index f4abc06142..0000000000 --- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev3.yang +++ /dev/null @@ -1,95 +0,0 @@ - module ietf-network4 { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network4"; - prefix nd; - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - revision 2014-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02"; - } - - notification network-up { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - notification network-down { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - -} diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev4.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev4.yang deleted file mode 100644 index 9352fb4412..0000000000 --- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/multiRevisions/withrev4.yang +++ /dev/null @@ -1,76 +0,0 @@ - module ietf-network4 { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network4"; - prefix nd; - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - revision 2017-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02"; - } - - container network { - leaf ip { - type int32; - } - } - -} diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr1.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr1.yang deleted file mode 100644 index a58e99d451..0000000000 --- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr1.yang +++ /dev/null @@ -1,95 +0,0 @@ - module ietf-network1 { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network1"; - prefix nd; - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - revision 2015-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02"; - } - - notification network-up { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - notification network-down { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - -} diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr2.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr2.yang deleted file mode 100644 index c241068e70..0000000000 --- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withNotification/ysr2.yang +++ /dev/null @@ -1,95 +0,0 @@ - module ietf-network2 { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network2"; - prefix nd; - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - revision 2015-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02"; - } - - notification network-up { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - notification network-down { - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - } - -} diff --git a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withoutNotification/ysr3.yang b/apps/yms/ut/src/test/resources/ysrTestYangFiles/withoutNotification/ysr3.yang deleted file mode 100644 index 0e86062196..0000000000 --- a/apps/yms/ut/src/test/resources/ysrTestYangFiles/withoutNotification/ysr3.yang +++ /dev/null @@ -1,81 +0,0 @@ - module ietf-network3 { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:ietf-network3"; - prefix nd; - - organization - "IETF I2RS (Interface to the Routing System) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Susan Hares - - - WG Chair: Jeffrey Haas - - - Editor: Alexander Clemm - - - Editor: Jan Medved - - - Editor: Robert Varga - - - Editor: Tony Tkacik - - - Editor: Nitin Bahadur - - - Editor: Hariharan Ananthakrishnan - "; - - description - "This module defines a common base model for a collection - of nodes in a network. Node definitions are further used - in network topologies and inventories. - - Copyright (c) 2015 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of - draft-ietf-i2rs-yang-network-topo-02; - see the RFC itself for full legal notices. - - NOTE TO RFC EDITOR: Please replace above reference to - draft-ietf-i2rs-yang-network-topo-02 with RFC - number when published (i.e. RFC xxxx)."; - - revision 2015-12-08 { - description - "Initial revision. - NOTE TO RFC EDITOR: Please replace the following reference - to draft-ietf-i2rs-yang-network-topo-02 with - RFC number when published (i.e. RFC xxxx)."; - reference - "draft-ietf-i2rs-yang-network-topo-02"; - } - - container networks { - leaf id { - type int32; - } - container network { - leaf ip-address { - type int32; - } - } - } - -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput.yang deleted file mode 100644 index 2e8d1b30f9..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput.yang +++ /dev/null @@ -1,20 +0,0 @@ -module YtbAugmentForRpcInput { - yang-version 1; - namespace "yms:test:ytb:augment:for:rpc:input"; - prefix "sch"; - import YtbRpcResponseWithAdvancedInputAndOutput { - prefix rpc; - } - revision "2016-08-26"; - - augment "/rpc:activate-software-image/rpc:output/" { - choice selection { - list value-in { - key "kinetic"; - leaf kinetic { - type "string"; - } - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput2.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput2.yang deleted file mode 100644 index af59b47b7e..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentForRpcInput2.yang +++ /dev/null @@ -1,17 +0,0 @@ -module YtbAugmentForRpcInput2 { - yang-version 1; - namespace "yms:test:ytb:augment:for:rpc:input"; - prefix "sch"; - import YtbRpcResponseWithAdvancedInputAndOutput { - prefix input; - } - revision "2016-08-26"; - augment "/input:activate-software-image/input:output/" { - list friction { - key "speed"; - leaf speed { - type uint64; - } - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentFromAnotherFile.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentFromAnotherFile.yang deleted file mode 100644 index 990bf55803..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbAugmentFromAnotherFile.yang +++ /dev/null @@ -1,41 +0,0 @@ -module YtbAugmentFromAnotherFile { - yang-version 1; - namespace "yms:test:ytb:augment:from:another:file"; - prefix "sch"; - import yms-ietf-network { - prefix nd; - } - revision "2016-08-26"; - - augment "/nd:networks/nd:network/nd:node" { - list termination-point { - key "tp-id"; - leaf tp-id { - type string; - } - list supporting-termination-point { - key "network-ref node-ref tp-ref"; - leaf network-ref { - type leafref { - path "../../../nd:supporting-node/nd:network-ref"; - require-instance false; - } - } - leaf node-ref { - type leafref { - path "../../../nd:supporting-node/nd:node-ref"; - require-instance false; - } - } - leaf tp-ref { - type leafref { - path "/nd:networks/nd:network[nd:network-id=current()/"+ - "../network-ref]/nd:node[nd:node-id=current()/../"+ - "node-ref]/termination-point/tp-id"; - require-instance false; - } - } - } - } - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbChoiceWithContainerAndLeafList.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbChoiceWithContainerAndLeafList.yang deleted file mode 100644 index 9ae462ee90..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbChoiceWithContainerAndLeafList.yang +++ /dev/null @@ -1,76 +0,0 @@ -module YtbChoiceWithContainerAndLeafList { - yang-version 1; - namespace "yms:test:ytb:choice:with:container:and:leaf:list"; - prefix "sch"; - revision "2016-08-26"; - leaf refer { - type binary; - } - rpc invalid1 { - input { - leaf value { - type string; - } - } - output { - leaf value { - type string; - } - } - } - choice content-test { - leaf-list list-items { - type leafref { - path "/refer"; - } - } - container choice-container { - list predict { - config "false"; - container reproduce { - leaf catch { - type int16; - } - } - } - } - case valid { - list validlistincase { - config "false"; - leaf validity { - type int32; - } - } - } - case invalid { - leaf create-invalid { - type uint16; - } - } - } - notification invalid { - leaf value { - type string; - } - } - notification invalid2 { - list node { - config false; - leaf value { - type string; - } - } - } - choice current-value { - case ytb-present { - leaf-list represent { - type uint32; - } - } - case ytb-absent { - leaf-list final { - type instance-identifier; - } - } - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDataType.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDataType.yang deleted file mode 100644 index 3d2e7c8070..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDataType.yang +++ /dev/null @@ -1,48 +0,0 @@ -module YtbDataType { - yang-version 1; - namespace "yms:test:ytb:data:type"; - prefix "data"; - revision "2016-08-26"; - // Enum with all combinations. - typedef enum-der-1 { - type enum-der-2; - } - typedef enum-der-2 { - type enumeration { - enum ten { value "10";} - enum hundred { value "100";} - enum thousand { value "1000"; } - } - } - leaf enum { - type enum-der-1; - } - leaf-list enum-leaf-list { - type union { - type uint64; - type enumeration { - enum ten { value "10";} - enum hundred { value "100";} - enum thousand { value "1000"; } - } - } - } - leaf union-enum { - type union { - type enumeration { - enum ten { value "10";} - enum hundred { value "100";} - enum thousand { value "1000"; } - } - type enum-der-1; - } - } - leaf-list leaf-ref-enum { - type leafref { - path "/enum"; - } - } - - - -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDerivedTypeWithBitsAndBinary.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDerivedTypeWithBitsAndBinary.yang deleted file mode 100644 index 1ca30a4db6..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbDerivedTypeWithBitsAndBinary.yang +++ /dev/null @@ -1,56 +0,0 @@ -module YtbDerivedTypeWithBitsAndBinary { - yang-version 1; - namespace "yms:test:ytb:derived:type:with:bits:and:binary"; - prefix "sch"; - revision "2016-08-26"; - - typedef derivedbinarya { - type derivedbinaryb; - } - - typedef derivedbinaryb { - type binary; - } - - typedef derivedbitsa { - type derivedbitsb; - } - - typedef derivedbitsb { - type bits { - bit index { - position 1; - } - bit name { - position 10; - } - bit signature { - position 100; - } - } - } - - leaf forbinary { - type derivedbinarya; - } - - leaf forbits { - type derivedbitsa; - } - - leaf-list forbinarylist { - type derivedbinarya; - } - - leaf-list forbitslist { - type derivedbitsa; - } - - leaf forunion { - type union { - type binary; - type int8; - } - } -} - diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbEmptyType.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbEmptyType.yang deleted file mode 100644 index 8fcb277a37..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbEmptyType.yang +++ /dev/null @@ -1,45 +0,0 @@ -module YtbEmptyType { - yang-version 1; - namespace "yms:test:ytb:empty:type"; - prefix "data"; - revision "2016-08-26"; - typedef emp-type { - type emp-type2; - } - typedef emp-type2 { - type empty; - } - typedef emp-type3 { - type leafref { - path "/empty"; - } - } - leaf empty { - type empty; - } - leaf-list empty-list { - type empty; - } - leaf empty-ref { - type leafref { - path "/empty"; - } - } - leaf-list empty-list-ref { - type leafref { - path "/empty-list"; - } - } - leaf empty-type { - type emp-type; - } - leaf-list empty-list-type { - type emp-type; - } - leaf empty-ref-type { - type emp-type3; - } - leaf-list empty-list-ref-type { - type emp-type3; - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbIetfSchedule.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbIetfSchedule.yang deleted file mode 100644 index 84c908b2b5..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbIetfSchedule.yang +++ /dev/null @@ -1,29 +0,0 @@ -module YtbIetfSchedule { - yang-version 1; - namespace "yms:test:ytb:module:with:leaf:ietfschedule"; - prefix "sch"; - revision "2016-08-26"; - leaf time { - type int8; - } - leaf enum1 { - type enumeration { - enum ten { value "10";} - enum hundred { value "100";} - enum thousand { value "1000"; } - } - } - leaf-list enum2 { - type enumeration { - enum ten-10 { value "10";} - enum hundred-100 { value "100";} - enum thousand-1000 { value "1000"; } - } - } - container monitor { - leaf check { - type uint8; - } - } -} - diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithContainer.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithContainer.yang deleted file mode 100644 index d611bee272..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithContainer.yang +++ /dev/null @@ -1,13 +0,0 @@ -module YtbModuleWithContainer { - yang-version 1; - namespace "yms:test:ytb:module:with:container"; - prefix "sch"; - revision "2016-08-26"; - container sched { - leaf predict { - type decimal64 { - fraction-digits 2; - } - } - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithLeafList.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithLeafList.yang deleted file mode 100644 index 3d023840db..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithLeafList.yang +++ /dev/null @@ -1,9 +0,0 @@ -module YtbModuleWithLeafList { - yang-version 1; - namespace "yms:test:ytb:module:with:leaflist"; - prefix "sch"; - revision "2016-08-26"; - leaf-list time { - type int64; - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithList.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithList.yang deleted file mode 100644 index 297a8f4ea5..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbModuleWithList.yang +++ /dev/null @@ -1,15 +0,0 @@ -module YtbModuleWithList { - yang-version 1; - namespace "yms:test:ytb:module:with:list"; - prefix "sch"; - revision "2016-08-26"; - list ytblistlist { - config false; - leaf-list prediction { - type find; - } - } - typedef find { - type boolean; - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModulea.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModulea.yang deleted file mode 100644 index 523f400632..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModulea.yang +++ /dev/null @@ -1,12 +0,0 @@ -module YtbMultiModulea { - yang-version 1; - namespace "yms:test:ytb:multi:module:a"; - prefix "sch"; - revision "2016-08-26"; - list ytbmultilist { - config false; - leaf-list check { - type uint64; - } - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModuleb.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModuleb.yang deleted file mode 100644 index 7c2c2571e8..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiModuleb.yang +++ /dev/null @@ -1,12 +0,0 @@ -module YtbMultiModuleb { - yang-version 1; - namespace "yms:test:ytb:multi:module:b"; - prefix "sch"; - revision "2016-08-26"; - list ytbmultilistb { - config false; - leaf-list checkin { - type string; - } - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiNotificationWithContainer.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiNotificationWithContainer.yang deleted file mode 100644 index 9a66110177..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbMultiNotificationWithContainer.yang +++ /dev/null @@ -1,31 +0,0 @@ -module YtbMultiNotificationWithContainer { - yang-version 1; - namespace "yms:test:ytb:multi:notification:with:container"; - prefix "sch"; - revision "2016-08-26"; - notification fortesta { - container ytbnot { - leaf notileaf { - type bits { - bit leaf1 { - position 0; - } - bit leaf2 { - position 1; - } - } - } - } - } - list cumulative { - key "sum"; - leaf sum { - type int8; - } - } - notification fortestb { - leaf-list notileaflist { - type empty; - } - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbRpcResponseWithAdvancedInputAndOutput.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbRpcResponseWithAdvancedInputAndOutput.yang deleted file mode 100644 index c9f708ee5f..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbRpcResponseWithAdvancedInputAndOutput.yang +++ /dev/null @@ -1,39 +0,0 @@ -module YtbRpcResponseWithAdvancedInputAndOutput { - yang-version 1; - namespace "yms:test:ytb:rpc:response:with:advanced:input:and:output"; - prefix "sch"; - revision "2016-08-26"; - leaf refer { - type binary; - } - rpc activate-software-image { - input { - container final { - leaf-list value { - type uint16; - } - } - } - output { - list output-list { - key "list-key"; - leaf list-key { - type leafref { - path "/refer"; - } - } - container content_inside { - leaf-list available { - type int16; - } - } - } - } - } - list cumulative { - key "sum"; - leaf sum { - type int8; - } - } -} \ No newline at end of file diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleAugment.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleAugment.yang deleted file mode 100644 index 919d5ed780..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleAugment.yang +++ /dev/null @@ -1,26 +0,0 @@ -module YtbSimpleAugment { - yang-version 1; - namespace "yms:test:ytb:simple:augment"; - prefix "sch"; - revision "2016-08-26"; - container cont1 { - container cont2 { - leaf fine { - type string; - } - } - } - - augment /cont1/cont2 { - leaf leaf4 { - type int32; - } - container cont1s { - container cont1s { - leaf fine { - type string; - } - } - } - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleChoiceCase.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleChoiceCase.yang deleted file mode 100644 index 818d04e326..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleChoiceCase.yang +++ /dev/null @@ -1,23 +0,0 @@ -module YtbSimpleChoiceCase { - yang-version 1; - namespace "yms:test:ytb:simple:choice:case"; - prefix "sch"; - revision "2016-08-26"; - container YtbFood { - choice YtbSnack { - case ytb-sports-arena { - leaf pretzel { - type string; - } - leaf beer { - type string; - } - } - case ytb-late-night { - leaf chocolate { - type string; - } - } - } - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleRpcResponse.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleRpcResponse.yang deleted file mode 100644 index 7aaa50f618..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbSimpleRpcResponse.yang +++ /dev/null @@ -1,26 +0,0 @@ -module YtbSimpleRpcResponse { - yang-version 1; - namespace "yms:test:ytb:simple:rpc:response"; - prefix "sch"; - revision "2016-08-26"; - container ytb-rpc-cont { - leaf vary { - type uint8; - } - } - rpc rpc { - input { - } - output { - leaf output-leaf { - type uint32; - } - } - } - list cumulative { - key "sum"; - leaf sum { - type int8; - } - } -} diff --git a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbTreeBuilderForListHavingList.yang b/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbTreeBuilderForListHavingList.yang deleted file mode 100644 index bd58e306bc..0000000000 --- a/apps/yms/ut/src/test/resources/ytbTestYangFiles/YtbTreeBuilderForListHavingList.yang +++ /dev/null @@ -1,26 +0,0 @@ -module YtbTreeBuilderForListHavingList { - yang-version 1; - namespace "yms:test:ytb:tree:builder:for:list:having:list"; - prefix "sch"; - revision "2016-08-26"; - container carrier { - list multiplexes { - key "types"; - list application-areas { - config false; - leaf-list destination-areas { - type binary; - } - } - leaf types { - type enumeration { - enum space-division; - enum frequency-division; - enum time-division { - value 3; - } - } - } - } - } -} diff --git a/models/huawei/BUILD b/models/huawei/BUILD deleted file mode 100644 index 93be622ee9..0000000000 --- a/models/huawei/BUILD +++ /dev/null @@ -1,7 +0,0 @@ -load("//tools/build/bazel:yang.bzl", "yang_model") - -yang_model( - app_name = "org.onosproject.models.huawei", - custom_registrator = True, - title = "Huawei YANG Models", -) diff --git a/models/huawei/src/main/java/org/onosproject/HuaweiModelRegistrator.java b/models/huawei/src/main/java/org/onosproject/HuaweiModelRegistrator.java deleted file mode 100644 index ea5e7cce17..0000000000 --- a/models/huawei/src/main/java/org/onosproject/HuaweiModelRegistrator.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.models.huawei; - -import com.google.common.collect.ImmutableMap; -import org.osgi.service.component.annotations.Component; -import org.onosproject.yang.AbstractYangModelRegistrator; -import org.onosproject.yang.gen.v1.nebgpcomm.rev20141225.NeBgpcomm; -import org.onosproject.yang.gen.v1.nebgpcommtype.rev20141225.NeBgpcommType; -import org.onosproject.yang.gen.v1.nel3vpnapi.rev20141225.NeL3VpnApi; -import org.onosproject.yang.gen.v1.nel3vpncomm.rev20141225.NeL3Vpncomm; -import org.onosproject.yang.gen.v1.nel3vpncommtype.rev20141225.NeL3VpncommType; -import org.onosproject.yang.gen.v1.netnlm.rev20141225.NeTnlm; -import org.onosproject.yang.gen.v1.netnlmtype.rev20141225.NeTnlmType; -import org.onosproject.yang.model.DefaultYangModuleId; -import org.onosproject.yang.model.YangModuleId; -import org.onosproject.yang.runtime.AppModuleInfo; -import org.onosproject.yang.runtime.DefaultAppModuleInfo; - -import java.util.HashMap; -import java.util.Map; - -/** - * Representation of huawei model registrator which registers huawei device - * models. - */ -@Component(immediate = true) -public class HuaweiModelRegistrator extends AbstractYangModelRegistrator { - - private static final String MODEL_VERSION = "2014-12-25"; - - /** - * Creates L3VPN model registrator. - */ - public HuaweiModelRegistrator() { - super(HuaweiModelRegistrator.class, getAppInfo()); - } - - private static Map getAppInfo() { - Map appInfo = new HashMap<>(); - appInfo.put(new DefaultYangModuleId("ne-bgpcomm", MODEL_VERSION), - new DefaultAppModuleInfo(NeBgpcomm.class, null)); - appInfo.put(new DefaultYangModuleId("ne-bgpcomm-type", MODEL_VERSION), - new DefaultAppModuleInfo(NeBgpcommType.class, null)); - appInfo.put(new DefaultYangModuleId("ne-l3vpn-api", MODEL_VERSION), - new DefaultAppModuleInfo(NeL3VpnApi.class, null)); - appInfo.put(new DefaultYangModuleId("ne-l3vpncomm", MODEL_VERSION), - new DefaultAppModuleInfo(NeL3Vpncomm.class, null)); - appInfo.put(new DefaultYangModuleId("ne-l3vpncomm-type", MODEL_VERSION), - new DefaultAppModuleInfo(NeL3VpncommType.class, null)); - appInfo.put(new DefaultYangModuleId("ne-tnlm", MODEL_VERSION), - new DefaultAppModuleInfo(NeTnlm.class, null)); - appInfo.put(new DefaultYangModuleId("ne-tnlm-type", MODEL_VERSION), - new DefaultAppModuleInfo(NeTnlmType.class, null)); - return ImmutableMap.copyOf(appInfo); - } -} diff --git a/models/huawei/src/main/java/org/onosproject/package-info.java b/models/huawei/src/main/java/org/onosproject/package-info.java deleted file mode 100644 index 0169ca5cbb..0000000000 --- a/models/huawei/src/main/java/org/onosproject/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * Huawei YANG models. - */ -package org.onosproject.models.huawei; diff --git a/models/huawei/src/main/yang/ne-bgpcomm-type@2014-12-25.yang b/models/huawei/src/main/yang/ne-bgpcomm-type@2014-12-25.yang deleted file mode 100644 index 28f98e49ff..0000000000 --- a/models/huawei/src/main/yang/ne-bgpcomm-type@2014-12-25.yang +++ /dev/null @@ -1,115 +0,0 @@ -/* -WARNING: -This yang model is just for fuction ONOS opensource project demo purpose only, -And is subject to change in future, Huawei does not commit provide compatibilty -in commercial product. -*/ -module ne-bgpcomm-type { - namespace "ne-bgpcomm-type"; - prefix bgpcomm-type; - organization "Huawei Technologies Co., Ltd"; - contact "Huawei Industrial Base - Bantian, Longgang - Shenzhen 518129 - People's Republic of China - Website: http://www.huawei.com - Email: support@huawei.com"; - description "ne-bgpcomm-type yang"; - revision "2014-12-25" { - description "Initial version"; - } - typedef bgpcommImRouteProtocol { - type enumeration { - enum "direct" { - value 0; - description "direct:"; - } - enum "ospf" { - value 1; - description "ospf:"; - } - enum "isis" { - value 2; - description "isis:"; - } - enum "static" { - value 3; - description "static:"; - } - enum "rip" { - value 4; - description "rip:"; - } - enum "ospfv3" { - value 5; - description "ospfv3:"; - } - enum "ripng" { - value 6; - description "ripng:"; - } - enum "unr" { - value 7; - description "unr:"; - } - enum "op-route" { - value 8; - description "op-route:"; - } - } - description ""; - } - typedef bgpcommPrefixType { - type enumeration { - enum "ipv4uni" { - value 0; - description "ipv4uni:"; - } - enum "ipv4multi" { - value 1; - description "ipv4multi:"; - } - enum "ipv4vpn" { - value 2; - description "ipv4vpn:"; - } - enum "ipv6uni" { - value 3; - description "ipv6uni:"; - } - enum "ipv6vpn" { - value 4; - description "ipv6vpn:"; - } - enum "ipv4flow" { - value 5; - description "ipv4flow:"; - } - enum "l2vpnad" { - value 6; - description "l2vpnad:"; - } - enum "mvpn" { - value 7; - description "mvpn:"; - } - enum "evpn" { - value 8; - description "evpn:"; - } - enum "ipv4vpnmcast" { - value 9; - description "ipv4vpnmcast:"; - } - enum "ls" { - value 10; - description "ls:"; - } - enum "mdt" { - value 11; - description "mdt:"; - } - } - description ""; - } -} diff --git a/models/huawei/src/main/yang/ne-bgpcomm@2014-12-25.yang b/models/huawei/src/main/yang/ne-bgpcomm@2014-12-25.yang deleted file mode 100644 index b0bb113a54..0000000000 --- a/models/huawei/src/main/yang/ne-bgpcomm@2014-12-25.yang +++ /dev/null @@ -1,77 +0,0 @@ -/* -WARNING: -This yang model is just for fuction ONOS opensource project demo purpose only, -And is subject to change in future, Huawei does not commit provide compatibilty -in commercial product. -*/ -module ne-bgpcomm { - namespace "ne-bgpcomm"; - prefix bgpcomm; - import ne-bgpcomm-type { - prefix bgpcomm-type; - } - organization "Huawei Technologies Co., Ltd"; - contact "Huawei Industrial Base - Bantian, Longgang - Shenzhen 518129 - People's Republic of China - Website: http://www.huawei.com - Email: support@huawei.com"; - description "ne-bgpcomm yang"; - revision "2014-12-25" { - description "Initial version"; - } - - container devices { - list device { - key deviceid; - leaf deviceid { - type string; - } - container bgp { - container bgpcomm { - description ""; - container bgpVrfs { - description ""; - list bgpVrf { - key "vrfName"; - description "BGP instance class"; - leaf vrfName { - description "Specifies the name of the VPN in stance. - It is a string of 1 to 31 case-sensitive characters."; - type string; - } - container bgpVrfAFs { - description ""; - list bgpVrfAF { - key "afType"; - description "IPv4 unicast Address family class for - BGP instance"; - leaf afType { - type "bgpcomm-type:bgpcommPrefixType"; - description "Address family"; - } - container importRoutes { - description ""; - list importRoute { - key "importProtocol importProcessId"; - description "Import route class"; - leaf importProtocol { - type "bgpcomm-type:bgpcommImRouteProtocol"; - description "Specifies the protocol from - which routes are imported."; - } - leaf importProcessId { - type "string"; - } - } - } - } - } - } - } - } - } - } - } -} diff --git a/models/huawei/src/main/yang/ne-l3vpn-api@2014-12-25.yang b/models/huawei/src/main/yang/ne-l3vpn-api@2014-12-25.yang deleted file mode 100644 index 5320617b3c..0000000000 --- a/models/huawei/src/main/yang/ne-l3vpn-api@2014-12-25.yang +++ /dev/null @@ -1,85 +0,0 @@ -/* -WARNING: -This yang model is just for fuction ONOS opensource project demo purpose only, -And is subject to change in future, Huawei does not commit provide compatibilty -in commercial product. -*/ -module ne-l3vpn-api { - namespace "ne-l3vpn-api"; - prefix l3vpn-api; - import ne-l3vpncomm-type { - prefix l3vpncomm-type; - } - import ne-l3vpncomm { - prefix l3vpncomm; - } - organization "Huawei Technologies Co., Ltd"; - contact "Huawei Industrial Base - Bantian, Longgang - Shenzhen 518129 - People's Republic of China - Website: http://www.huawei.com - Email: support@huawei.com"; - description "VRP V800R010 Schema"; - revision "2014-12-25" { - reference "Huawei VRPV8 Schema"; - } - container devices { - list device { - key deviceid; - leaf deviceid { - type string; - } - container l3vpn { - container l3vpncomm { - container l3vpnInstances { - description ""; - list l3vpnInstance { - key "vrfName"; - leaf vrfName { - type string; - } - leaf vrfDescription { - type string; - } - uses l3vpncomm:l3vpnIfs; - container vpnInstAFs { - description ""; - list vpnInstAF { - key "afType"; - description "Address family"; - leaf afType { - type "l3vpncomm-type:l3vpncommonL3vpnPrefixType"; - description "Address family"; - } - leaf vrfRD { - when "vrfName != '_public_'"; - type "string"; - description "route-distinguisher."; - } - leaf tnlPolicyName { - type "string"; - } - container vpnTargets { - description ""; - list vpnTarget { - must "vrfName != '_public_' and vpnTarget = '0'"; - key "vrfRTValue vrfRTType"; - description "L3vpn vpntarget configure class"; - leaf vrfRTValue { - type "string"; - } - leaf vrfRTType { - type "l3vpncomm-type:l3vpncommonVrfRtType"; - } - } - } - } - } - } - } - } - } - } - } -} diff --git a/models/huawei/src/main/yang/ne-l3vpncomm-type@2014-12-25.yang b/models/huawei/src/main/yang/ne-l3vpncomm-type@2014-12-25.yang deleted file mode 100644 index 3bc62f2653..0000000000 --- a/models/huawei/src/main/yang/ne-l3vpncomm-type@2014-12-25.yang +++ /dev/null @@ -1,53 +0,0 @@ -/* -WARNING: -This yang model is just for fuction ONOS opensource project demo purpose only, -And is subject to change in future, Huawei does not commit provide compatibilty -in commercial product. -*/ -module ne-l3vpncomm-type { - namespace "l3vpn-comm-type"; - prefix l3vpncomm-type; - organization "Huawei Technologies Co., Ltd"; - contact "Huawei Industrial Base - Bantian, Longgang - Shenzhen 518129 - People's Republic of China - Website: http://www.huawei.com - Email: support@huawei.com"; - description ""; - revision "2014-12-25" { - description "Initial version"; - } - typedef l3vpncommonL3vpnPrefixType { - type enumeration { - enum "ipv4uni" { - value 0; - description "ipv4uni:"; - } - enum "ipv6uni" { - value 1; - description "ipv6uni:"; - } - } - description ""; - } - typedef l3vpncommonVrfRtType { - type enumeration { - enum "export_extcommunity" { - value 0; - description "export-extcommunity:"; - } - enum "import_extcommunity" { - value 1; - description "import-extcommunity:"; - } - } - description ""; - } - typedef ipv4Address { - type string { - length "0..255"; - pattern "((([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))"; - } - } -} diff --git a/models/huawei/src/main/yang/ne-l3vpncomm@2014-12-25.yang b/models/huawei/src/main/yang/ne-l3vpncomm@2014-12-25.yang deleted file mode 100644 index b03c382f52..0000000000 --- a/models/huawei/src/main/yang/ne-l3vpncomm@2014-12-25.yang +++ /dev/null @@ -1,49 +0,0 @@ -/* -WARNING: -This yang model is just for fuction ONOS opensource project demo purpose only, -And is subject to change in future, Huawei does not commit provide compatibilty -in commercial product. -*/ -module ne-l3vpncomm { - namespace "ne-l3vpn-comm"; - prefix "l3vpncomm"; - import ne-l3vpncomm-type { - prefix l3vpncomm-type; - } - organization "Huawei Technologies Co., Ltd"; - contact "Huawei Industrial Base - Bantian, Longgang - Shenzhen 518129 - People's Republic of China - Website: http://www.huawei.com - Email: support@huawei.com"; - description ""; - revision "2014-12-25" { - description "Initial version"; - } - grouping l3vpnIfs { - container l3vpnIfs { - description ""; - list l3vpnIf { - key "ifName"; - description "interface Name."; - leaf ifName { - type string; - description "interface Name"; - } - leaf ipv4Addr { - when "subnetMask != null"; - mandatory "true"; - type "l3vpncomm-type:ipv4Address"; - description "Interface Address."; - } - leaf subnetMask { - when "ipv4Addr != null"; - mandatory "true"; - type "l3vpncomm-type:ipv4Address"; - description "Interface address mask."; - } - } - } - } -} diff --git a/models/huawei/src/main/yang/ne-tnlm-type@2014-12-25.yang b/models/huawei/src/main/yang/ne-tnlm-type@2014-12-25.yang deleted file mode 100644 index 8dac8e8fe4..0000000000 --- a/models/huawei/src/main/yang/ne-tnlm-type@2014-12-25.yang +++ /dev/null @@ -1,30 +0,0 @@ -/* -WARNING: -This yang model is just for fuction ONOS opensource project demo purpose only, -And is subject to change in future, Huawei does not commit provide compatibilty -in commercial product. -*/ -module ne-tnlm-type { - namespace "ne-tnlm-type"; - prefix tnlm-type; - organization "Huawei Technologies Co., Ltd"; - contact "Huawei Industrial Base - Bantian, Longgang - Shenzhen 518129 - People's Republic of China - Website: http://www.huawei.com - Email: support@huawei.com"; - description "VRP V800R010 Schema"; - - revision "2014-12-25" { - reference "Huawei VRPV8 Schema"; - } - - typedef tnlmbaseTnlPolicyType { - type enumeration { - enum invalid; - enum tnlSelectSeq; - enum tnlBinding; - } - } -} \ No newline at end of file diff --git a/models/huawei/src/main/yang/ne-tnlm@2014-12-25.yang b/models/huawei/src/main/yang/ne-tnlm@2014-12-25.yang deleted file mode 100644 index 73796f4024..0000000000 --- a/models/huawei/src/main/yang/ne-tnlm@2014-12-25.yang +++ /dev/null @@ -1,71 +0,0 @@ -/* -WARNING: -This yang model is just for fuction ONOS opensource project demo purpose only, -And is subject to change in future, Huawei does not commit provide compatibilty -in commercial product. -*/ -module ne-tnlm { - namespace "ne-tnlm"; - prefix tnlm; - - import ne-l3vpncomm-type { - prefix l3vpncomm-type; - } - import ne-tnlm-type { - prefix tnlmtype; - } - organization "Huawei Technologies Co., Ltd"; - contact "Huawei Industrial Base - Bantian, Longgang - Shenzhen 518129 - People's Republic of China - Website: http://www.huawei.com - Email: support@huawei.com"; - description "VRP V800R010 Schema"; - revision "2014-12-25" { - reference "Huawei VRPV8 Schema"; - } - container devices { - list device { - key deviceid; - leaf deviceid { - type string; - } - container tnlm { - container tunnelPolicys { - list tunnelPolicy { - key tnlPolicyName; - leaf tnlPolicyName { - type string; - } - leaf tnlPolicyType { - type tnlmtype:tnlmbaseTnlPolicyType; - } - container tpNexthops { - list tpNexthop { - key nexthopIPaddr; - leaf nexthopIPaddr { - type "l3vpncomm-type:ipv4Address"; - } - leaf tnlPolicyName { - type string; - } - container tpTunnels { - list tpTunnel { - key "tunnelName"; - leaf autoTunnel { - type boolean; - } - leaf tunnelName { - type string; - } - } - } - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/models/l3vpn/BUILD b/models/l3vpn/BUILD deleted file mode 100644 index d7b0870f76..0000000000 --- a/models/l3vpn/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("//tools/build/bazel:yang.bzl", "yang_model") - -COMPILE_DEPS = [ - "//models/common:onos-models-common", -] - -APPS = [ - "org.onosproject.models.common", -] - -yang_model( - app_name = "org.onosproject.models.l3vpn", - custom_registrator = True, - required_apps = APPS, - title = "L3VPN YANG Models", - deps = COMPILE_DEPS, -) diff --git a/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/L3VpnModelRegistrator.java b/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/L3VpnModelRegistrator.java deleted file mode 100644 index 1c3cd64a3e..0000000000 --- a/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/L3VpnModelRegistrator.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.models.l3vpn; - -import com.google.common.collect.ImmutableMap; -import org.osgi.service.component.annotations.Component; -import org.onosproject.yang.AbstractYangModelRegistrator; -import org.onosproject.yang.gen.v1.ietfbgpl3vpn.rev20160909.IetfBgpL3Vpn; -import org.onosproject.yang.gen.v1.ietfinterfaces.rev20140508.IetfInterfaces; -import org.onosproject.yang.gen.v1.ietfip.rev20140616.IetfIp; -import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.IetfL3VpnSvc; -import org.onosproject.yang.gen.v1.ietfnetworkinstance.rev20160623.IetfNetworkInstance; -import org.onosproject.yang.gen.v1.l3vpnsvcext.rev20160730.L3VpnSvcExt; -import org.onosproject.yang.model.DefaultYangModuleId; -import org.onosproject.yang.model.YangModuleId; -import org.onosproject.yang.runtime.AppModuleInfo; -import org.onosproject.yang.runtime.DefaultAppModuleInfo; - -import java.util.HashMap; -import java.util.Map; - -/** - * Representation of L3VPN model registrator which registers L3VPN service - * model. - */ -@Component(immediate = true) -public class L3VpnModelRegistrator extends AbstractYangModelRegistrator { - - /** - * Creates L3VPN model registrator. - */ - public L3VpnModelRegistrator() { - super(L3VpnModelRegistrator.class, getAppInfo()); - } - - private static Map getAppInfo() { - Map appInfo = new HashMap<>(); - appInfo.put(new DefaultYangModuleId("ietf-l3vpn-svc", "2016-07-30"), - new DefaultAppModuleInfo(IetfL3VpnSvc.class, null)); - appInfo.put(new DefaultYangModuleId("l3vpn-svc-ext", "2016-07-30"), - new DefaultAppModuleInfo(L3VpnSvcExt.class, null)); - appInfo.put(new DefaultYangModuleId("ietf-interfaces", "2014-05-08"), - new DefaultAppModuleInfo(IetfInterfaces.class, null)); - appInfo.put(new DefaultYangModuleId("ietf-bgp-l3vpn", "2016-09-09"), - new DefaultAppModuleInfo(IetfBgpL3Vpn.class, null)); - appInfo.put(new DefaultYangModuleId("ietf-ip", "2014-06-16"), - new DefaultAppModuleInfo(IetfIp.class, null)); - appInfo.put(new DefaultYangModuleId("ietf-network-instance", - "2016-06-23"), - new DefaultAppModuleInfo(IetfNetworkInstance.class, null)); - return ImmutableMap.copyOf(appInfo); - } -} diff --git a/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/package-info.java b/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/package-info.java deleted file mode 100644 index 55e1dbb584..0000000000 --- a/models/l3vpn/src/main/java/org/onosproject/models/l3vpn/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2017-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * L3vpn YANG models. - */ -package org.onosproject.models.l3vpn; diff --git a/models/l3vpn/src/main/yang/ietf-bgp-l3vpn@2016-09-09.yang b/models/l3vpn/src/main/yang/ietf-bgp-l3vpn@2016-09-09.yang deleted file mode 100644 index 276a59fc72..0000000000 --- a/models/l3vpn/src/main/yang/ietf-bgp-l3vpn@2016-09-09.yang +++ /dev/null @@ -1,723 +0,0 @@ -module ietf-bgp-l3vpn { - namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-l3vpn"; - // replace with IANA namespace when assigned - prefix l3vpn ; - - import ietf-network-instance { - prefix ni; - revision-date 2016-06-23; - } - - import ietf-interfaces { - prefix if; - } - -// TODO: TBD for bgp-info -// import ietf-bgp { -// prefix bgp; -// revision-date 2016-06-21; -// } - - organization - "IETF BGP Enabled Services WG"; - - contact - "BESS working group - bess@ietf.org"; - description - "This YANG module defines a YANG data model to configure and - manage BGP Layer3 VPNs. It augments the IETF bgp yang model - and IETF network instance model to add L3VPN specific - configuration and operational knobs. - - - Terms and Acronyms - - AF : Address Family - - AS : Autonomous System - - ASBR : Autonomous Systems Border Router - - BGP (bgp) : Border Gateway Protocol - - CE : Customer Edge - - IP (ip) : Internet Protocol - - IPv4 (ipv4):Internet Protocol Version 4 - - IPv6 (ipv6): Internet Protocol Version 6 - - L3VPN: Layer 3 VPN - - PE : Provider Edge - - RT : Route Target - - RD : Route Distinguisher - - VPN : Virtual Private Network - - VRF : Virtual Routing and Forwarding - - "; - - revision 2016-09-09 { - description - "Initial revision."; - reference - "RFC XXXX: A YANG Data Model for BGP L3VPN config management"; - } - - //RD - grouping route-distinguisher-params { - description "BGP route distinguisher"; - container route-distinguisher { - description "Route distinguisher value as per RFC4364"; - container config { - description - "Configuration parameters for route distinguisher"; - leaf rd { - type string; - description "Route distinguisher value as per RFC4364"; - } - } - container state { - config "false" ; - description - "State information for route distinguisher"; - leaf rd { - type string; - description "Route distinguisher value"; - } - } - } - } - - //Label mode - typedef bgp-label-mode { - type enumeration { - enum per-ce { - description "Allocate labels per CE"; - } - enum per-route { - description "Allocate labels per prefix"; - } - enum per-vpn { - description "Allocate labels per VRF"; - } - } - description "BGP label allocation mode"; - } - - //Fwding mode - typedef fwd-mode-type { - type enumeration { - enum mpls { - description "Forwarding mode mpls"; - } - } - description - "Enable forwarding mode under ASBR facing interface"; - } - - grouping forwarding-mode { - description "Forwarding mode of interface for ASBR scenario"; - container forwarding-mode { - description "Forwarding mode of interface for ASBR scenario"; - container config { - description "Configuration of Forwarding mode"; - leaf forwarding-mode { - type fwd-mode-type; - description "Forwarding mode for this interface"; - } - } - container state { - config "false"; - description "State information of Forwarding mode"; - leaf forwarding-mode { - type fwd-mode-type; - description "Forwarding mode for this interface"; - } - } - } - } - - grouping label-security { - description "Mpls label security for ASBR option B scenario"; - container mpls-label-security { - description "MPLS label secruity"; - container config { - description "Configuration parameters"; - leaf rpf { - type boolean; - description "Enable MPLS label security rpf on interface"; - } - } - container state { - config "false"; - description "State information"; - leaf rpf { - type boolean; - description "MPLS label security rpf on interface"; - } - } - } - } - - - //per VPN instance table limit under BGP - grouping prefix-limit { - description - "The prefix limit command sets a limit on the maximum - number of prefixes supported in the existing VPN - instance, preventing the PE from importing excessive - VPN route prefixes. - "; - - leaf prefix-limit-number { - type uint32 { - range "1..4294967295"; - } - description - "Specifies the maximum number of prefixes supported in the - VPN instance IPv4 or IPv6 address family."; - } - - choice prefix-limit-action { - description "."; - case enable-alert-percent { - leaf alert-percent-value { - type uint8 { - range "1..100"; - } - description - "Specifies the proportion of the alarm threshold to the - maximum number of prefixes."; - } - leaf route-unchanged { - type boolean; - default "false"; - description - "Indicates that the routing table remains unchanged. - By default, route-unchanged is not configured. When - the number of prefixes in the routing table is - greater than the value of the parameter number, - routes are processed as follows: - (1)If route-unchanged is configured, routes in the - routing table remain unchanged. - (2)If route-unchanged is not configured, all routes - in the routing table are deleted and then - re-added."; - } - } - case enable-simple-alert { - leaf simple-alert { - type boolean; - default "false"; - description - "Indicates that when the number of VPN route prefixes - exceeds number, prefixes can still join the VPN - routing table and alarms are displayed."; - } - } - } - } - - grouping vpn-pfx-limit { - description "Per VPN instance table limit under BGP"; - container vpn-prefix-limit { - description "Prefix limit for this table"; - container config { - description "Config parameters"; - uses prefix-limit; - } - container state { - config "false"; - description "State parameters"; - uses prefix-limit; - } - } - } - - grouping route-target-set { - description - "Extended community route-target set "; - list rts { - key "rt" ; - description - "List of route-targets" ; - leaf rt { - type string { - pattern '([0-9]+:[0-9]+)'; - } - description "Route target extended community as per RFC4360"; - } - leaf rt-type { - type enumeration { - enum import { - description "Route target is for import routes"; - } - enum export { - description "Route target is for export routes"; - } - enum both { - description - "Route target is for both import and export routes"; - } - } - description "Route target type"; - } - } - leaf route-policy { - type string; - description - "Reference to the policy containing set of routes. - TBD: leafref to policy entry in IETF policy model"; - } - } - - grouping import-from-gbl { - description "Import from global routing table"; - leaf enable { - type boolean; - description "Enable"; - } - leaf advertise-as-vpn { - type boolean; - description - "Advertise routes imported from global table as VPN routes"; - } - leaf route-policy { - type string; - description "Route policy as filter for importing routes"; - } - - leaf bgp-valid-route { - type boolean; - description - "Enable all valid routes (including non-best paths) to be - candidate for import"; - } - - leaf protocol { - type enumeration { - enum ALL { - value "0"; - description "ALL:"; - } - enum Direct { - value "1"; - description "Direct:"; - } - enum OSPF { - value "2"; - description "OSPF:"; - } - enum ISIS { - value "3"; - description "ISIS:"; - } - enum Static { - value "4"; - description "Static:"; - } - enum RIP { - value "5"; - description "RIP:"; - } - enum BGP { - value "6"; - description "BGP:"; - } - enum OSPFV3 { - value "7"; - description "OSPFV3:"; - } - enum RIPNG { - value "8"; - description "RIPNG:"; - } - } - description - "Specifies the protocol from which routes are imported. - At present, In the IPv4 unicast address family view, - the protocol can be IS-IS,static, direct and BGP."; - } - - leaf instance { - type string; - description - "Specifies the instance id of the protocol"; - } - } - grouping global-imports { - description "Grouping for imports from global routing table"; - container import-from-global { - description "Import from global routing table"; - container config { - description "Configuration"; - uses import-from-gbl; - } - container state { - config "false"; - description "State"; - uses import-from-gbl; - } - } - } - - - grouping export-to-gbl { - description "Export routes to default VRF"; - leaf enable { - type boolean; - description "Enable"; - } - } - - grouping global-exports { - description "Grouping for exports routes to global table"; - container export-to-global { - description "Export to global routing table"; - container config { - description "Configuration"; - uses export-to-gbl; - } - container state { - config "false"; - description "State"; - uses export-to-gbl; - } - } - } - - grouping route-target-params { - description "Grouping to specify rules for route import and export"; - container route-targets { - description - "Set of route-targets to match for import and export routes - to/from VRF"; - container config { - description - "Configuration of route targets"; - uses route-target-set ; - } - container state { - config "false" ; - description - "State information for route targets"; - uses route-target-set ; - } - } - } - - grouping route-tbl-limit-params { - description "Grouping for VPN table prefix limit config"; - leaf routing-table-limit-number { - type uint32 { - range "1..4294967295"; - } - description - "Specifies the maximum number of routes supported by a - VPN instance. "; - } - - choice routing-table-limit-action { - description "."; - case enable-alert-percent { - leaf alert-percent-value { - type uint8 { - range "1..100"; - } - description - "Specifies the percentage of the maximum number of - routes. When the maximum number of routes that join - the VPN instance is up to the value - (number*alert-percent)/100, the system prompts - alarms. The VPN routes can be still added to the - routing table, but after the number of routes - reaches number, the subsequent routes are - dropped."; - } - } - case enable-simple-alert { - leaf simple-alert { - type boolean; - description - "Indicates that when VPN routes exceed number, routes - can still be added into the routing table, but the - system prompts alarms. - However, after the total number of VPN routes and - network public routes reaches the unicast route limit - specified in the License, the subsequent VPN routes - are dropped."; - } - } - } - } - - grouping routing-tbl-limit { - description "."; - container routing-table-limit { - description - "The routing-table limit command sets a limit on the maximum - number of routes that the IPv4 or IPv6 address family of a - VPN instance can support. - By default, there is no limit on the maximum number of - routes that the IPv4 or IPv6 address family of a VPN - instance can support, but the total number of private - network and public network routes on a device cannot - exceed the allowed maximum number of unicast routes."; - container config { - description "Config parameters"; - uses route-tbl-limit-params; - } - container state { - config "false"; - description "State parameters"; - uses route-tbl-limit-params; - } - } - } - - // Tunnel policy parameters - grouping tunnel-params { - description "Tunnel parameters"; - container tunnel-params { - description "Tunnel config parameters"; - container config { - description "configuration parameters"; - leaf tunnel-policy { - type string; - description - "Tunnel policy name."; - } - } - container state { - config "false"; - description "state parameters"; - leaf tunnel-policy { - type string; - description - "Tunnel policy name."; - } - } - } - } - - // Grouping for the L3vpn specific parameters under VRF - // (network-instance) - grouping l3vpn-vrf-params { - description "Specify route filtering rules for import/export"; - container ipv4 { - description - "Specify route filtering rules for import/export"; - container unicast { - description - "Specify route filtering rules for import/export"; - uses route-target-params; - uses global-imports; - uses global-exports; - uses routing-tbl-limit; - uses tunnel-params; - } - } - container ipv6 { - description - "Ipv6 address family specific rules for import/export"; - container unicast { - description "Ipv6 unicast address family"; - uses route-target-params; - uses global-imports; - uses global-exports; - uses routing-tbl-limit; - uses tunnel-params; - } - } - } - - grouping bgp-label-mode { - description "MPLS/VPN label allocation mode"; - container config { - description - "Configuration parameters for label allocation mode"; - leaf label-mode { - type bgp-label-mode; - description "Label allocation mode"; - } - } - container state { - config "false" ; - description "State information for label allocation mode"; - leaf label-mode { - type bgp-label-mode; - description "Label allocation mode"; - } - } - } - - grouping retain-route-targets { - description "Grouping for route target accept"; - container retain-route-targets { - description "Control route target acceptance behavior for ASBRs"; - container config { - description - "Configuration parameters for retaining route targets"; - leaf all { - type empty; - description "Disable filtering of all route-targets"; - } - leaf route-policy { - type string; - description "Filter routes as per filter policy name - TBD: leafref to IETF routing policy model"; - } - } - container state { - config "false" ; - description "State information for retaining route targets"; - leaf all { - type empty; - description "Disable filtering of all route-targets"; - } - leaf route-policy { - type string; - description "Filter routes as per filter policy name"; - } - } - } - } - - grouping nexthop-opts { - description "Next hop control options for inter-as route exchange"; - leaf next-hop-self { - type boolean; - description - "Set nexthop of the route to self when advertising routes"; - } - leaf next-hop-unchanged { - type boolean; - description "Enforce no nexthop change when advertising routes"; - } - } - - grouping asbr-nexthop-options { - description "Nexthop parameters for inter-as VPN options "; - container nexthop-options { - description "Nexthop related options for inter-as options"; - container config { - description "Configuration parameters for nexthop options"; - uses nexthop-opts; - } - container state { - config "false"; - description "State information for nexthop options" ; - uses nexthop-opts; - } - } - } - - // - // VRF specific parameters. - // RD and RTs and route import-export rules are added under - // network instance container in network instance model, hence - // per VRF scoped - augment "/ni:devices/ni:device/ni:network-instances/ni:network-instance" { - description - "Augment network instance for per VRF L3vpn parameters"; - container l3vpn { - //Enable this check once network instance model has - //identify defined for VRF type - //when "../type='rt:vrf-network-instance'" { - // description - // "This container is only valid for vrf routing instance."; - //} - description "Configuration of L3VPN specific parameters"; - - uses route-distinguisher-params; - uses l3vpn-vrf-params ; - } - } - - // bgp mpls forwarding enable required for inter-as option AB. - augment "/if:devices/if:device/if:interfaces/if:interface" { - description - "BGP mpls forwarding mode configuration on interface for - ASBR scenario"; - uses forwarding-mode ; - uses label-security; - } - - // - // BGP Specific Paramters - // - - // - // Retain route-target for inter-as option ASBR knob. - // vpn prefix limits - // vpnv4/vpnv6 address-family only. - //augment "/bgp:bgp/bgp:global/bgp:afi-safis/" + - // "bgp:afi-safi/bgp:l3vpn-ipv4-unicast" { - // description "Retain route targets for ASBR scenario"; - // uses retain-route-targets; - // uses vpn-pfx-limit; - // } - - // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" + - // "bgp:afi-safi/bgp:l3vpn-ipv6-unicast" { - // description "Retain route targets for ASBR scenario"; - // uses retain-route-targets; - // uses vpn-pfx-limit; - // } - - // Label allocation mode configuration. Certain AFs only. - // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" + - // "bgp:afi-safi/bgp:ipv4-unicast" { - // description - // "Augment BGP global AF mode for label allocation mode - // configuration"; - // uses bgp-label-mode ; - // uses routing-tbl-limit; - // } - - // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" + - // "bgp:afi-safi/bgp:ipv6-unicast" { - // description - // "Augment BGP global AF mode for label allocation mode - // configuration"; - // uses bgp-label-mode ; - // uses routing-tbl-limit; - // } - - - // Nexthop options for the inter-as ASBR peering. - // augment "/bgp:bgp/bgp:neighbors/bgp:neighbor" { - // description - // "Augment BGP NBR mode with nexthop options for inter-as ASBRs"; - // uses asbr-nexthop-options; - // } - - // augment "/bgp:bgp/bgp:peer-groups/bgp:peer-group" { - // description - // "Augment BGP peer-group mode with nexthop options for inter-as - // ASBRs"; - // uses asbr-nexthop-options; - // } - - // augment "/bgp:bgp/bgp:neighbors/bgp:neighbor/" + - // "bgp:afi-safis/bgp:afi-safi" { - // description - // "Augment BGP NBR AF mode with nexthop options for inter-as - // ASBRs"; - // uses asbr-nexthop-options; - // } - - // augment "/bgp:bgp/bgp:peer-groups/bgp:peer-group/" + - // "bgp:afi-safis/bgp:afi-safi" { - // description - // "Augment BGP peer-group AF mode with nexthop options for inter-as - // ASBRs"; - // uses asbr-nexthop-options; - // } -} diff --git a/models/l3vpn/src/main/yang/ietf-interfaces@2014-05-08.yang b/models/l3vpn/src/main/yang/ietf-interfaces@2014-05-08.yang deleted file mode 100644 index 2171a5aec3..0000000000 --- a/models/l3vpn/src/main/yang/ietf-interfaces@2014-05-08.yang +++ /dev/null @@ -1,704 +0,0 @@ -module ietf-interfaces { - - namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; - prefix if; - - import ietf-yang-types { - prefix yang; - } - - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Thomas Nadeau - - - WG Chair: Juergen Schoenwaelder - - - Editor: Martin Bjorklund - "; - - description - "This module contains a collection of YANG definitions for - managing network interfaces. - - Copyright (c) 2014 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 7223; see - the RFC itself for full legal notices."; - revision 2014-05-08 { - description - "Initial revision."; - reference - "RFC 7223: A YANG Data Model for Interface Management"; - } - - /* - * Typedefs - */ - - typedef interface-ref { - type leafref { - path "/if:devices/if:device/if:interfaces/if:interface/if:name"; - } - description - "This type is used by data models that need to reference - configured interfaces."; - } - - typedef interface-state-ref { - type leafref { - path "/if:devices/if:device/if:interfaces-state/if:interface/if:name"; - } - description - "This type is used by data models that need to reference - the operationally present interfaces."; - } - - /* - * Identities - */ - - identity interface-type { - description - "Base identity from which specific interface types are - derived."; - } - - /* - * Features - */ - - feature arbitrary-names { - description - "This feature indicates that the device allows user-controlled - interfaces to be named arbitrarily."; - } - feature pre-provisioning { - description - "This feature indicates that the device supports - pre-provisioning of interface configuration, i.e., it is - possible to configure an interface whose physical interface - hardware is not present on the device."; - } - - feature if-mib { - description - "This feature indicates that the device implements - the IF-MIB."; - reference - "RFC 2863: The Interfaces Group MIB"; - } - - /* - * Configuration data nodes - */ - container devices { - list device { - key deviceid; - leaf deviceid { - type string; - } - container interfaces { - description - "Interface configuration parameters."; - - list interface { - key "name"; - - description - "The list of configured interfaces on the device. - The operational state of an interface is available - in the /interfaces-state/interface list. If the - configuration of a system-controlled interface - cannot be used by the system (e.g., the interface - hardware present does not match the interface type), - then the configuration is not applied to the - system-controlled interface shown in the of a - /interfaces-state/interface list. If the configuration - user-controlled interface cannot be used by the system, - the configured interface is not instantiated in the - /interfaces-state/interface list."; - - leaf name { - type string; - description - "The name of the interface. - - A device MAY restrict the allowed values for - this leaf, possibly depending on the type of the - interface. For system-controlled interfaces, - this leaf is the device-specific name of the - interface. The 'config false' list - /interfaces-state/interface contains the - currently existing interfaces on the device. - - If a client tries to create configuration for a - system-controlled interface that is not present - in the /interfaces-state/interface list, the - server MAY reject the request if the - implementation does not support pre-provisioning - of interfaces or if the name refers to an - interface that can never exist in the system. A - NETCONF server MUST reply with an rpc-error with - the error-tag 'invalid-value' in this case. - - If the device supports pre-provisioning of - interface configuration, the 'pre-provisioning' - feature is advertised. - - If the device allows arbitrarily named - user-controlled interfaces, the - 'arbitrary-names' feature is advertised. - - When a configured user-controlled interface is - created by the system, it is instantiated with - the same name in the /interface-state/interface - list."; - } - - leaf description { - type string; - description - "A textual description of the interface. - - A server implementation MAY map this leaf to the - ifAlias MIB object. Such an implementation - needs touse some mechanism to handle the - differences in sizeand characters allowed - between this leaf and ifAlias.The definition of - such a mechanism is outside the scope of this - document. - - Since ifAlias is defined to be stored in - non-volatile storage, the MIB implementation - MUST map ifAlias to the value of 'description' - in the persistently stored datastore. - - Specifically, if the device supports ':startup', - when ifAlias is read the device MUST return the - value of 'description' in the 'startup' - datastore, and when it is written, it MUST be - written to the 'running' and 'startup' - datastores. Note that it is up to the - implementation to decide whether to modify this - single leaf in 'startup' or perform an implicit - copy-config from 'running' to 'startup'. - - If the device does not support ':startup', - ifAlias MUST be mapped to the 'description' leaf - in the 'running' datastore."; - reference - "RFC 2863: The Interfaces Group MIB - ifAlias"; - } - - leaf type { - type identityref { - base interface-type; - } - mandatory true; - description - "The type of the interface. - - When an interface entry is created, a server MAY - initialize the type leaf with a valid value, e.g., - if it is possible to derive the type from the name - of the interface. - - If a client tries to set the type of an - interface to a value that can never be used by - the system, e.g., if the type is not supported - or if the type does not match the name of the - interface, the server MUST reject the request. A - NETCONF server MUST reply with an rpc-error with - the error-tag 'invalid-value' in this case."; - reference - "RFC 2863: The Interfaces Group MIB - ifType"; - } - - leaf enabled { - type boolean; - default "true"; - description - "This leaf contains the configured, desired state - of the interface. - - Systems that implement the IF-MIB use the value - of this leaf in the 'running' datastore to set - IF-MIB.ifAdminStatus to 'up' or 'down' after an - ifEntry has been initialized, as described in - RFC 2863. Changes in this leaf in the 'running' - datastore are reflected in ifAdminStatus, but if - ifAdminStatus is changed over SNMP, this leaf is - not affected."; - reference - "RFC 2863: The Interfaces Group MIB - - ifAdminStatus"; - } - - leaf link-up-down-trap-enable { - if-feature if-mib; - type enumeration { - enum enabled { - value 1; - } - enum disabled { - value 2; - } - } - description - "Controls whether linkUp/linkDown SNMP - notifications should be generated for this - interface. - - If this node is not configured, the value 'enabled' - is operationally used by the server for - interfaces that do not operate on top of any - other interface (i.e., there are no - 'lower-layer-if' entries), and 'disabled' - otherwise."; - reference - "RFC 2863: The Interfaces Group MIB - - ifLinkUpDownTrapEnable"; - } - } - } - /* - * Operational state data nodes - */ - - container interfaces-state { - config false; - description - "Data nodes for the operational state of interfaces."; - - list interface { - key "name"; - description - "The list of interfaces on the device. - - System-controlled interfaces created by the system are - always present in this list, whether they are configured or - not."; - - leaf name { - type string; - description - "The name of the interface. - - A server implementation MAY map this leaf to the ifName - MIB object. Such an implementation needs to use some - mechanism to handle the differences in size and characters - allowed between this leaf and ifName. The definition of - such a mechanism is outside the scope of this document."; - reference - "RFC 2863: The Interfaces Group MIB - ifName"; - } - - leaf type { - type identityref { - base interface-type; - } - mandatory true; - description - "The type of the interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifType"; - } - - leaf admin-status { - if-feature if-mib; - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - description - "Not ready to pass packets and not in some test mode."; - } - enum testing { - value 3; - description - "In some test mode."; - } - } - mandatory true; - description - "The desired state of the interface. - - This leaf has the same read semantics as ifAdminStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - - leaf oper-status { - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - description - "The interface does not pass any packets."; - } - enum testing { - value 3; - description - "In some test mode. No operational packets can - be passed."; - } - enum unknown { - value 4; - description - "Status cannot be determined for some reason."; - } - enum dormant { - value 5; - description - "Waiting for some external event."; - } - enum not-present { - value 6; - description - "Some component (typically hardware) is missing."; - } - enum lower-layer-down { - value 7; - description - "Down due to state of lower-layer interface(s)."; - } - } - mandatory true; - description - "The current operational state of the interface. - - This leaf has the same semantics as ifOperStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifOperStatus"; - } - - leaf last-change { - type yang:date-and-time; - description - "The time the interface entered its current operational - state. If the current state was entered prior to the - last re-initialization of the local network management - subsystem, then this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifLastChange"; - } - - leaf if-index { - if-feature if-mib; - type int32 { - range "1..2147483647"; - } - mandatory true; - description - "The ifIndex value for the ifEntry represented by this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifIndex"; - } - - leaf phys-address { - type yang:phys-address; - description - "The interface's address at its protocol sub-layer. For - example, for an 802.x interface, this object normally - contains a Media Access Control (MAC) address. The - interface's media-specific modules must define the bit - - and byte ordering and the format of the value of this - object. For interfaces that do not have such an address - (e.g., a serial line), this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; - } - - leaf-list higher-layer-if { - type interface-state-ref; - description - "A list of references to interfaces layered on top of this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - - leaf-list lower-layer-if { - type interface-state-ref; - description - "A list of references to interfaces layered underneath this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - - leaf speed { - type yang:gauge64; - units "bits/second"; - description - "An estimate of the interface's current bandwidth in bits - per second. For interfaces that do not vary in - bandwidth or for those where no accurate estimation can - be made, this node should contain the nominal bandwidth. - For interfaces that have no concept of bandwidth, this - node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - - ifSpeed, ifHighSpeed"; - } - container statistics { - description - "A collection of interface-related statistics objects."; - - leaf discontinuity-time { - type yang:date-and-time; - mandatory true; - description - "The time on the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - - leaf in-octets { - type yang:counter64; - description - "The total number of octets received on the interface, - including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; - } - - leaf in-unicast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were not addressed to a - multicast or broadcast address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; - } - leaf in-broadcast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a broadcast - address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInBroadcastPkts"; - } - - leaf in-multicast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a multicast - address at this sub-layer. For a MAC-layer protocol, - this includes both Group and Functional addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInMulticastPkts"; - } - - leaf in-discards { - type yang:counter32; - description - "The number of inbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being deliverable to a higher-layer - protocol. One possible reason for discarding such a - packet could be to free up buffer space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInDiscards"; - } - - leaf in-errors { - type yang:counter32; - description - "For packet-oriented interfaces, the number of inbound - packets that contained errors preventing them from being - deliverable to a higher-layer protocol. For character- - oriented or fixed-length interfaces, the number of - inbound transmission units that contained errors - preventing them from being deliverable to a higher-layer - protocol. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInErrors"; - } - - leaf in-unknown-protos { - type yang:counter32; - description - "For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } - leaf out-octets { - type yang:counter64; - description - "The total number of octets transmitted out of the - interface, including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; - } - - leaf out-unicast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were not addressed - to a multicast or broadcast address at this sub-layer, - including those that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; - } - - leaf out-broadcast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - broadcast address at this sub-layer, including those - that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutBroadcastPkts"; - } - leaf out-multicast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - multicast address at this sub-layer, including those - that were discarded or not sent. For a MAC-layer - protocol, this includes both Group and Functional - addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutMulticastPkts"; - } - - leaf out-discards { - type yang:counter32; - description - "The number of outbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being transmitted. One possible reason - for discarding such a packet could be to free up buffer - space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; - } - - leaf out-errors { - type yang:counter32; - description - "For packet-oriented interfaces, the number of outbound - packets that could not be transmitted because of errors. - For character-oriented or fixed-length interfaces, the - number of outbound transmission units that could not be - transmitted because of errors. - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutErrors"; - } - } - } - } - } - } - } \ No newline at end of file diff --git a/models/l3vpn/src/main/yang/ietf-ip@2014-06-16.yang b/models/l3vpn/src/main/yang/ietf-ip@2014-06-16.yang deleted file mode 100644 index 0446258e40..0000000000 --- a/models/l3vpn/src/main/yang/ietf-ip@2014-06-16.yang +++ /dev/null @@ -1,740 +0,0 @@ -module ietf-ip { - - yang-version 1; - - namespace - "urn:ietf:params:xml:ns:yang:ietf-ip"; - - prefix ip; - - import ietf-interfaces { - prefix if; - } - import ietf-inet-types { - prefix inet; - } - import ietf-yang-types { - prefix yang; - } - - organization - "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; - - contact - "WG Web: - WG List: - - WG Chair: Thomas Nadeau - - - WG Chair: Juergen Schoenwaelder - - - Editor: Martin Bjorklund - "; - - description - "This module contains a collection of YANG definitions for - configuring IP implementations. - - Copyright (c) 2014 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 7277; see - the RFC itself for full legal notices."; - - revision "2014-06-16" { - description "Initial revision."; - reference - "RFC 7277: A YANG Data Model for IP Management"; - - } - - feature ipv4-non-contiguous-netmasks { - description - "Indicates support for configuring non-contiguous - subnet masks."; - } - - feature ipv6-privacy-autoconf { - description - "Indicates support for Privacy Extensions for Stateless Address - Autoconfiguration in IPv6."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6"; - } - - typedef ip-address-origin { - type enumeration { - enum "other" { - value 0; - description - "None of the following."; - } - enum "static" { - value 1; - description - "Indicates that the address has been statically - configured - for example, using NETCONF or a Command Line - Interface."; - } - enum "dhcp" { - value 2; - description - "Indicates an address that has been assigned to this - system by a DHCP server."; - } - enum "link-layer" { - value 3; - description - "Indicates an address created by IPv6 stateless - autoconfiguration that embeds a link-layer address in its - interface identifier."; - } - enum "random" { - value 4; - description - "Indicates an address chosen by the system at - - random, e.g., an IPv4 address within 169.254/16, an - RFC 4941 temporary address, or an RFC 7217 semantically - opaque address."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6 - RFC 7217: A Method for Generating Semantically Opaque - Interface Identifiers with IPv6 Stateless - Address Autoconfiguration (SLAAC)"; - } - } - description - "The origin of an address."; - } - - typedef neighbor-origin { - type enumeration { - enum "other" { - value 0; - description - "None of the following."; - } - enum "static" { - value 1; - description - "Indicates that the mapping has been statically - configured - for example, using NETCONF or a Command Line - Interface."; - } - enum "dynamic" { - value 2; - description - "Indicates that the mapping has been dynamically resolved - using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery - protocol."; - } - } - description - "The origin of a neighbor entry."; - } - - augment /if:devices/if:device/if:interfaces/if:interface { - description - "Parameters for configuring IP on interfaces. - - If an interface is not capable of running IP, the server - must not allow the client to configure these parameters."; - container ipv4 { - presence - "Enables IPv4 unless the 'enabled' leaf - (which defaults to 'true') is set to 'false'"; - description - "Parameters for the IPv4 address family."; - leaf enabled { - type boolean; - default true; - description - "Controls whether IPv4 is enabled or disabled on this - interface. When IPv4 is enabled, this interface is - connected to an IPv4 stack, and the interface can send - and receive IPv4 packets."; - } - - leaf forwarding { - type boolean; - default false; - description - "Controls IPv4 packet forwarding of datagrams received by, - but not addressed to, this interface. IPv4 routers - forward datagrams. IPv4 hosts do not (except those - source-routed via the host)."; - } - - leaf mtu { - type uint16 { - range "68..max"; - } - units "octets"; - description - "The size, in octets, of the largest IPv4 packet that the - interface will send and receive. - - The server may restrict the allowed values for this leaf, - depending on the interface's type. - - If this leaf is not configured, the operationally used MTU - depends on the interface's type."; - reference - "RFC 791: Internet Protocol"; - - } - - list address { - key "ip"; - description - "The list of configured IPv4 addresses on the interface."; - leaf ip { - type inet:ipv4-address-no-zone; - description - "The IPv4 address on the interface."; - } - - choice subnet { - mandatory true; - description - "The subnet can be specified as a prefix-length, or, - if the server supports non-contiguous netmasks, as - a netmask."; - leaf prefix-length { - type uint8 { - range "0..32"; - } - description - "The length of the subnet prefix."; - } - leaf netmask { - if-feature ipv4-non-contiguous-netmasks; - type yang:dotted-quad; - description - "The subnet specified as a netmask."; - } - } // choice subnet - } // list address - - list neighbor { - key "ip"; - description - "A list of mappings from IPv4 addresses to - link-layer addresses. - - Entries in this list are used as static entries in the - ARP Cache."; - reference - "RFC 826: An Ethernet Address Resolution Protocol"; - - leaf ip { - type inet:ipv4-address-no-zone; - description - "The IPv4 address of the neighbor node."; - } - - leaf link-layer-address { - type yang:phys-address; - mandatory true; - description - "The link-layer address of the neighbor node."; - } - } // list neighbor - } // container ipv4 - - container ipv6 { - presence - "Enables IPv6 unless the 'enabled' leaf - (which defaults to 'true') is set to 'false'"; - description - "Parameters for the IPv6 address family."; - leaf enabled { - type boolean; - default true; - description - "Controls whether IPv6 is enabled or disabled on this - interface. When IPv6 is enabled, this interface is - connected to an IPv6 stack, and the interface can send - and receive IPv6 packets."; - } - - leaf forwarding { - type boolean; - default false; - description - "Controls IPv6 packet forwarding of datagrams received by, - but not addressed to, this interface. IPv6 routers - forward datagrams. IPv6 hosts do not (except those - source-routed via the host)."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - Section 6.2.1, IsRouter"; - - } - - leaf mtu { - type uint32 { - range "1280..max"; - } - units "octets"; - description - "The size, in octets, of the largest IPv6 packet that the - interface will send and receive. - - The server may restrict the allowed values for this leaf, - depending on the interface's type. - - If this leaf is not configured, the operationally used MTU - depends on the interface's type."; - reference - "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification - Section 5"; - - } - - list address { - key "ip"; - description - "The list of configured IPv6 addresses on the interface."; - leaf ip { - type inet:ipv6-address-no-zone; - description - "The IPv6 address on the interface."; - } - - leaf prefix-length { - type uint8 { - range "0..128"; - } - mandatory true; - description - "The length of the subnet prefix."; - } - } // list address - - list neighbor { - key "ip"; - description - "A list of mappings from IPv6 addresses to - link-layer addresses. - - Entries in this list are used as static entries in the - Neighbor Cache."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; - - leaf ip { - type inet:ipv6-address-no-zone; - description - "The IPv6 address of the neighbor node."; - } - - leaf link-layer-address { - type yang:phys-address; - mandatory true; - description - "The link-layer address of the neighbor node."; - } - } // list neighbor - - leaf dup-addr-detect-transmits { - type uint32; - default 1; - description - "The number of consecutive Neighbor Solicitation messages - sent while performing Duplicate Address Detection on a - tentative address. A value of zero indicates that - Duplicate Address Detection is not performed on - tentative addresses. A value of one indicates a single - transmission with no follow-up retransmissions."; - reference - "RFC 4862: IPv6 Stateless Address Autoconfiguration"; - - } - - container autoconf { - description - "Parameters to control the autoconfiguration of IPv6 - addresses, as described in RFC 4862."; - reference - "RFC 4862: IPv6 Stateless Address Autoconfiguration"; - - leaf create-global-addresses { - type boolean; - default true; - description - "If enabled, the host creates global addresses as - described in RFC 4862."; - reference - "RFC 4862: IPv6 Stateless Address Autoconfiguration - Section 5.5"; - - } - - leaf create-temporary-addresses { - if-feature ipv6-privacy-autoconf; - type boolean; - default false; - description - "If enabled, the host creates temporary addresses as - described in RFC 4941."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6"; - - } - - leaf temporary-valid-lifetime { - if-feature ipv6-privacy-autoconf; - type uint32; - units "seconds"; - default 604800; - description - "The time period during which the temporary address - is valid."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6 - - TEMP_VALID_LIFETIME"; - - } - - leaf temporary-preferred-lifetime { - if-feature ipv6-privacy-autoconf; - type uint32; - units "seconds"; - default 86400; - description - "The time period during which the temporary address is - preferred."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6 - - TEMP_PREFERRED_LIFETIME"; - - } - } // container autoconf - } // container ipv6 - } - - augment /if:devices/if:device/if:interfaces-state/if:interface { - description - "Data nodes for the operational state of IP on interfaces."; - container ipv4 { - presence - "Present if IPv4 is enabled on this interface"; - config false; - description - "Interface-specific parameters for the IPv4 address family."; - leaf forwarding { - type boolean; - description - "Indicates whether IPv4 packet forwarding is enabled or - disabled on this interface."; - } - - leaf mtu { - type uint16 { - range "68..max"; - } - units "octets"; - description - "The size, in octets, of the largest IPv4 packet that the - interface will send and receive."; - reference - "RFC 791: Internet Protocol"; - - } - - list address { - key "ip"; - description - "The list of IPv4 addresses on the interface."; - leaf ip { - type inet:ipv4-address-no-zone; - description - "The IPv4 address on the interface."; - } - - choice subnet { - description - "The subnet can be specified as a prefix-length, or, - if the server supports non-contiguous netmasks, as - a netmask."; - leaf prefix-length { - type uint8 { - range "0..32"; - } - description - "The length of the subnet prefix."; - } - leaf netmask { - if-feature ipv4-non-contiguous-netmasks; - type yang:dotted-quad; - description - "The subnet specified as a netmask."; - } - } // choice subnet - - leaf origin { - type ip-address-origin; - description - "The origin of this address."; - } - } // list address - - list neighbor { - key "ip"; - description - "A list of mappings from IPv4 addresses to - link-layer addresses. - - This list represents the ARP Cache."; - reference - "RFC 826: An Ethernet Address Resolution Protocol"; - - leaf ip { - type inet:ipv4-address-no-zone; - description - "The IPv4 address of the neighbor node."; - } - - leaf link-layer-address { - type yang:phys-address; - description - "The link-layer address of the neighbor node."; - } - - leaf origin { - type neighbor-origin; - description - "The origin of this neighbor entry."; - } - } // list neighbor - } // container ipv4 - - container ipv6 { - presence - "Present if IPv6 is enabled on this interface"; - config false; - description - "Parameters for the IPv6 address family."; - leaf forwarding { - type boolean; - default false; - description - "Indicates whether IPv6 packet forwarding is enabled or - disabled on this interface."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - Section 6.2.1, IsRouter"; - - } - - leaf mtu { - type uint32 { - range "1280..max"; - } - units "octets"; - description - "The size, in octets, of the largest IPv6 packet that the - interface will send and receive."; - reference - "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification - Section 5"; - - } - - list address { - key "ip"; - description - "The list of IPv6 addresses on the interface."; - leaf ip { - type inet:ipv6-address-no-zone; - description - "The IPv6 address on the interface."; - } - - leaf prefix-length { - type uint8 { - range "0..128"; - } - mandatory true; - description - "The length of the subnet prefix."; - } - - leaf origin { - type ip-address-origin; - description - "The origin of this address."; - } - - leaf status { - type enumeration { - enum "preferred" { - value 0; - description - "This is a valid address that can appear as the - destination or source address of a packet."; - } - enum "deprecated" { - value 1; - description - "This is a valid but deprecated address that should - no longer be used as a source address in new - communications, but packets addressed to such an - address are processed as expected."; - } - enum "invalid" { - value 2; - description - "This isn't a valid address, and it shouldn't appear - as the destination or source address of a packet."; - } - enum "inaccessible" { - value 3; - description - "The address is not accessible because the interface - to which this address is assigned is not - operational."; - } - enum "unknown" { - value 4; - description - "The status cannot be determined for some reason."; - } - enum "tentative" { - value 5; - description - "The uniqueness of the address on the link is being - verified. Addresses in this state should not be - used for general communication and should only be - used to determine the uniqueness of the address."; - } - enum "duplicate" { - value 6; - description - "The address has been determined to be non-unique on - the link and so must not be used."; - } - enum "optimistic" { - value 7; - description - "The address is available for use, subject to - restrictions, while its uniqueness on a link is - being verified."; - } - } - description - "The status of an address. Most of the states correspond - to states from the IPv6 Stateless Address - Autoconfiguration protocol."; - reference - "RFC 4293: Management Information Base for the - Internet Protocol (IP) - - IpAddressStatusTC - RFC 4862: IPv6 Stateless Address Autoconfiguration"; - - } - } // list address - - list neighbor { - key "ip"; - description - "A list of mappings from IPv6 addresses to - link-layer addresses. - - This list represents the Neighbor Cache."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; - - leaf ip { - type inet:ipv6-address-no-zone; - description - "The IPv6 address of the neighbor node."; - } - - leaf link-layer-address { - type yang:phys-address; - description - "The link-layer address of the neighbor node."; - } - - leaf origin { - type neighbor-origin; - description - "The origin of this neighbor entry."; - } - - leaf is-router { - type empty; - description - "Indicates that the neighbor node acts as a router."; - } - - leaf state { - type enumeration { - enum "incomplete" { - value 0; - description - "Address resolution is in progress, and the link-layer - address of the neighbor has not yet been - determined."; - } - enum "reachable" { - value 1; - description - "Roughly speaking, the neighbor is known to have been - reachable recently (within tens of seconds ago)."; - } - enum "stale" { - value 2; - description - "The neighbor is no longer known to be reachable, but - until traffic is sent to the neighbor no attempt - should be made to verify its reachability."; - } - enum "delay" { - value 3; - description - "The neighbor is no longer known to be reachable, and - traffic has recently been sent to the neighbor. - Rather than probe the neighbor immediately, however, - delay sending probes for a short while in order to - give upper-layer protocols a chance to provide - reachability confirmation."; - } - enum "probe" { - value 4; - description - "The neighbor is no longer known to be reachable, and - unicast Neighbor Solicitation probes are being sent - to verify reachability."; - } - } - description - "The Neighbor Unreachability Detection state of this - entry."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - Section 7.3.2"; - - } - } // list neighbor - } // container ipv6 - } - } // module ietf-ip - diff --git a/models/l3vpn/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang b/models/l3vpn/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang deleted file mode 100644 index dbd60dc36b..0000000000 --- a/models/l3vpn/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang +++ /dev/null @@ -1,2599 +0,0 @@ -module ietf-l3vpn-svc { - - namespace "urn:ietf:params:xml:ns:yang:ietf-l3vpn-svc"; - - prefix l3vpn-svc; - - import ietf-inet-types { - prefix inet; - } - - import ietf-yang-types { - prefix yang; - } - - organization - "IETF L3SM Working Group"; - - contact - "WG List: <mailto:l3sm@ietf.org> - - Editor: - - "; - - description - "The YANG module defines a generic service configuration - model for Layer 3 VPN common across all of the vendor - implementations."; - - revision 2016-07-30 { - description - "Eliminated warnings"; - reference - "draft-ietf-l3sm-l3vpn-service-yang-11"; - } - - revision 2016-07-05 { - description - "Draft text update"; - reference - "draft-ietf-l3sm-l3vpn-service-yang-11"; - } - revision 2016-06-27 { - description - " - * Removed templates - * Add site-network-access-type - * Add a leaf number-of-dynamic-address in case - of pe-dhcp addressing; - - "; - reference "draft-ietf-l3sm-l3vpn-service-yang-10"; - } - revision 2016-06-10 { - description - "Add site-vpn-flavor NNI"; - reference "draft-ietf-l3sm-l3vpn-service-yang-09"; - } - revision 2016-06-09 { - description - "Traffic protection moved to site level. - Decouple operational-requirements in two containers. - "; - reference "draft-ietf-l3sm-l3vpn-service-yang-08"; - } - revision 2016-06-06 { - description - "Set config false to actual-site-start and stop - Add a container before cloud-access list - Add a container before authorized-sites list - Add a container before denied-sites list - Modified access-diversity modeling - Replacing type placement diversity by an identity"; - reference "draft-ietf-l3sm-l3vpn-service-yang-07"; - } - revision 2016-04-19 { - description - "* remove reference to core routing model : - created new address family identities - * added features - * Modified bearer parameters - * Modified union for ipv4/ipv6 addresses to ip-address - type - * Add BSR parameters for multicast - * Add applications matching for QoS classification - "; - reference "draft-ietf-l3sm-l3vpn-service-yang-06"; - } - revision 2016-04-05 { - description - " - * Added linecard diverse for site diversity - * Added a new diversity enum in placement-diversity : none - * Added state to site location - - "; - reference ""; - } - revision 2016-03-11 { - description - " - * Modify VPN policy and creating a vpn-policy-list - * Add VPN policy reference and VPN ID reference - under site-network-access - "; - reference "draft-ietf-l3sm-l3vpn-service-yang-05"; - } - revision 2016-01-04 { - description - " - * Add extranet-vpn container in vpn-svc - * Creating top level containers - * Refine groupings - * Added site-vpn-flavor - "; - reference "draft-ietf-l3sm-l3vpn-service-yang-03"; - } - revision 2016-01-04 { - description - " - * qos-profile moved to choice - * vpn leaf moved to vpn-id in vpn-policy - * added ordered-by user to qos classification list - * moved traffic protection to access availability - * creating a choice in matching filter for VPN policy - * added dot1p matching field in flow-definition - "; - reference ""; - } - revision 2015-12-07 { - description - " - * A site is now a collection of site-accesses. - This was introduced to support M to N availability. - * Site-availability has been removed, replaced by - availability parameters under site-accesses - * Added transport-constraints within vpn-svc - "; - reference "draft-ietf-l3sm-l3vpn-service-yang-02"; - } - revision 2015-11-03 { - description " - * Add ToS support in match-flow - * nexthop in cascaded lan as mandatory - * customer-specific-info deleted and moved to routing - protocols - * customer-lan-connection modified : need prefix and CE address - * add choice in managing PE-CE addressing - * Simplifying traffic protection - "; - reference ""; - } - revision 2015-09-10 { - description " - * Refine groupings for vpn-svc - * Removed name in vpn-svc - * id in vpn-svc moved to string - * Rename id in vpn-svc to vpn-id - * Changed key of vpn-svc list to vpn-id - * Add DSCP support in flow definition - "; - reference ""; - } - revision 2015-08-07 { - description - " - Multicast : - * Removed ACL from security - * Add FW for site and cloud access - "; - reference ""; - } - revision 2015-08-05 { - description - " - Multicast : - * Removed anycast-rp identity as discovery mechanism - * Added rp-group mappings for multicast - * Added flag for provider managed RP. - "; - reference ""; - } - revision 2015-08-03 { - description - " * Creating multiple reusable groupings - * Added mpls leaf in vpn-svc for carrier's carrier case - * Modify identity single to single-site - * Modify site-type to site-role and also child identities. - * Creating OAM container under site and moved BFD in. - * Creating flow-definition grouping to be reused - in ACL, QoS ... - * Simplified VPN policy. - * Adding multicast static group to RP mappings. - * Removed native-vpn and site-role from global site - cfg, now managed within the VPN policy. - * Creating a separate list for site templates. - "; - reference "draft-ietf-l3sm-l3vpn-service-yang-01"; - } - revision 2015-07-02 { - reference "draft-ietf-l3sm-l3vpn-service-yang-00"; - } - revision 2015-04-24 { - description " - * Add encryption parameters - * Adding holdtime for BFD. - * Add postal address in location - "; - reference "draft-lstd-l3sm-l3vpn-service-yang-00"; - } - revision 2015-02-05 { - description "Initial revision."; - reference "draft-l3vpn-service-yang-00"; - } - - /* Features */ - - feature cloud-access { - description - "Allow VPN to connect to a Cloud Service - provider."; - } - feature multicast { - description - "Enables multicast capabilities in a VPN"; - } - feature ipv4 { - description - "Enables IPv4 support in a VPN"; - } - feature ipv6 { - description - "Enables IPv6 support in a VPN"; - } - feature carrierscarrier { - description - "Enables support of carrier's carrier"; - } - feature traffic-engineering { - description - "Enables support of transport constraint."; - } - feature traffic-engineering-multicast { - description - "Enables support of transport constraint - for multicast."; - } - feature extranet-vpn { - description - "Enables support of extranet VPNs"; - } - feature site-diversity { - description - "Enables support of site diversity constraints"; - } - feature encryption { - description - "Enables support of encryption"; - } - feature qos { - description - "Enables support of Class of Services"; - } - feature qos-custom { - description - "Enables support of custom qos profile"; - } - feature rtg-bgp { - description - "Enables support of BGP routing protocol."; - } - feature rtg-rip { - description - "Enables support of RIP routing protocol."; - } - feature rtg-ospf { - description - "Enables support of OSPF routing protocol."; - } - feature rtg-ospf-sham-link { - description - "Enables support of OSPF sham-links."; - } - feature rtg-vrrp { - description - "Enables support of VRRP routing protocol."; - } - feature fast-reroute { - description - "Enables support of Fast Reroute."; - } - feature bfd { - description - "Enables support of BFD."; - } - feature always-on { - description - "Enables support for always-on access - constraint."; - } - feature requested-type { - description - "Enables support for requested-type access - constraint."; - } - feature bearer-reference { - description - "Enables support for bearer-reference access - constraint."; - } - - /* Typedefs */ - - typedef svc-id { - type string; - description - "Defining a type of service component - identificators."; - } - - typedef template-id { - type string; - description - "Defining a type of service template - identificators."; - } - - /* Identities */ - - identity site-network-access-type { - description - "Base identity for site-network-access type"; - } - identity point-to-point { - base site-network-access-type; - description - "Identity for point-to-point connection"; - } - identity multipoint { - base site-network-access-type; - description - "Identity for multipoint connection - Example : ethernet broadcast segment"; - } - identity placement-diversity { - description - "Base identity for site placement - constraints"; - } - identity pe-diverse { - base placement-diversity; - description - "Identity for PE diversity"; - } - identity pop-diverse { - base placement-diversity; - description - "Identity for POP diversity"; - } - identity linecard-diverse { - base placement-diversity; - description - "Identity for linecard diversity"; - } - identity same-pe { - base placement-diversity; - description - "Identity for having sites connected - on the same PE"; - } - identity same-bearer { - base placement-diversity; - description - "Identity for having sites connected - using the same bearer"; - } - identity customer-application { - description - "Base identity for customer application"; - } - identity web { - base customer-application; - description - "Identity for web application (e.g. HTTP,HTTPS)"; - } - identity mail { - base customer-application; - description - "Identity for mail applications"; - } - identity file-transfer { - base customer-application; - description - "Identity for file transfer applications ( - e.g. FTP, SFTP, ...)"; - } - identity database { - base customer-application; - description - "Identity for database applications"; - } - identity social { - base customer-application; - description - "Identity for social network applications"; - } - identity games { - base customer-application; - description - "Identity for gaming applications"; - } - identity p2p { - base customer-application; - description - "Identity for peer to peer applications"; - } - identity network-management { - base customer-application; - description - "Identity for management applications (e.g. telnet - syslog, snmp ...)"; - } - identity voice { - base customer-application; - description - "Identity for voice applications"; - } - identity video { - base customer-application; - description - "Identity for video conference applications"; - } - identity address-family { - description - "Base identity for an address family."; - } - identity ipv4 { - base address-family; - description - "Identity for IPv4 address family."; - } - identity ipv6 { - base address-family; - description - "Identity for IPv6 address family."; - } - identity site-vpn-flavor { - description - "Base identity for the site VPN service flavor."; - } - identity site-vpn-flavor-single { - base site-vpn-flavor; - description - "Base identity for the site VPN service flavor. - Used when the site belongs to only one VPN."; - } - identity site-vpn-flavor-multi { - base site-vpn-flavor; - description - "Base identity for the site VPN service flavor. - Used when a logical connection of a site - belongs to multiple VPNs."; - } - identity site-vpn-flavor-sub { - base site-vpn-flavor; - description - "Base identity for the site VPN service flavor. - Used when a site has multiple logical connections. - Each of the connection may belong to different - multiple VPNs."; - } - identity site-vpn-flavor-nni { - base site-vpn-flavor; - description - "Base identity for the site VPN service flavor. - Used to describe a NNI option A connection."; - } - identity transport-constraint { - description - "Base identity for transport constraint."; - } - identity tc-latency { - base transport-constraint; - description - "Base identity for transport constraint - based on latency."; - } - identity tc-jitter { - base transport-constraint; - description - "Base identity for transport constraint - based on jitter."; - } - identity tc-bandwidth { - base transport-constraint; - description - "Base identity for transport constraint - based on bandwidth."; - } - identity tc-path-diversity { - base transport-constraint; - description - "Base identity for transport constraint - based on path diversity."; - } - identity tc-site-diversity { - base transport-constraint; - description - "Base identity for transport constraint - based on site diversity."; - } - identity management { - description - "Base identity for site management scheme."; - } - identity co-managed { - base management; - description - "Base identity for comanaged site."; - } - identity customer-managed { - base management; - description - "Base identity for customer managed site."; - } - identity provider-managed { - base management; - description - "Base identity for provider managed site."; - } - identity address-allocation-type { - description - "Base identity for address-allocation-type - for PE-CE link."; - } - identity pe-dhcp { - base address-allocation-type; - description - "PE router provides DHCP service to CE."; - } - identity static-address { - base address-allocation-type; - description - "PE-CE addressing is static."; - } - identity slaac { - base address-allocation-type; - description - "Use IPv6 SLAAC."; - } - identity site-role { - description - "Base identity for site type."; - } - identity any-to-any-role { - base site-role; - description - "Site in a any to any IPVPN."; - } - identity spoke-role { - base site-role; - description - "Spoke Site in a Hub & Spoke IPVPN."; - } - identity hub-role { - base site-role; - description - "Hub Site in a Hub & Spoke IPVPN."; - } - identity vpn-topology { - description - "Base identity for VPN topology."; - } - identity any-to-any { - base vpn-topology; - description - "Identity for any to any VPN topology."; - } - identity hub-spoke { - base vpn-topology; - description - "Identity for Hub'n'Spoke VPN topology."; - } - identity hub-spoke-disjoint { - base vpn-topology; - description - "Identity for Hub'n'Spoke VPN topology - where Hubs cannot talk between each other."; - } - identity multicast-tree-type { - description - "Base identity for multicast tree type."; - } - identity ssm-tree-type { - base multicast-tree-type; - description - "Identity for SSM tree type."; - } - identity asm-tree-type { - base multicast-tree-type; - description - "Identity for ASM tree type."; - } - identity bidir-tree-type { - base multicast-tree-type; - description - "Identity for BiDir tree type."; - } - identity multicast-rp-discovery-type { - description - "Base identity for rp discovery type."; - } - identity auto-rp { - base multicast-rp-discovery-type; - description - "Base identity for auto-rp discovery type."; - } - identity static-rp { - base multicast-rp-discovery-type; - description - "Base identity for static type."; - } - identity bsr-rp { - base multicast-rp-discovery-type; - description - "Base identity for BDR discovery type."; - } - identity routing-protocol-type { - description - "Base identity for routing-protocol type."; - } - identity ospf { - base routing-protocol-type; - description - "Identity for OSPF protocol type."; - } - identity bgp { - base routing-protocol-type; - description - "Identity for BGP protocol type."; - } - identity static { - base routing-protocol-type; - description - "Identity for static routing protocol type."; - } - identity rip { - base routing-protocol-type; - description - "Identity for RIP protocol type."; - } - identity rip-ng { - base routing-protocol-type; - description - "Identity for RIPng protocol type."; - } - identity vrrp { - base routing-protocol-type; - description - "Identity for VRRP protocol type. - This is to be used when LAn are directly connected - to provider Edge routers."; - } - identity direct { - base routing-protocol-type; - description - "Identity for direct protocol type. - ."; - } - identity protocol-type { - description - "Base identity for protocol field type."; - } - identity tcp { - base protocol-type; - description - "TCP protocol type."; - } - identity udp { - base protocol-type; - description - "UDP protocol type."; - } - identity icmp { - base protocol-type; - description - "icmp protocol type."; - } - identity icmp6 { - base protocol-type; - description - "icmp v6 protocol type."; - } - identity gre { - base protocol-type; - description - "GRE protocol type."; - } - identity ipip { - base protocol-type; - description - "IPinIP protocol type."; - } - identity hop-by-hop { - base protocol-type; - description - "Hop by Hop IPv6 header type."; - } - identity routing { - base protocol-type; - description - "Routing IPv6 header type."; - } - identity esp { - base protocol-type; - description - "ESP header type."; - } - identity ah { - base protocol-type; - description - "AH header type."; - } - - /* Groupings */ - - grouping vpn-service-cloud-access { - container cloud-accesses { - list cloud-access { - if-feature cloud-access; - key cloud-identifier; - - leaf cloud-identifier { - type string; - description - "Identification of cloud service. Local - admin meaning."; - } - container authorized-sites { - list authorized-site { - key site-id; - - leaf site-id { - type leafref { - path "/l3vpn-svc/sites/site/site-id"; - } - description - "Site ID."; - } - description - "List of authorized sites."; - } - description - "Configuration of authorized sites"; - } - container denied-sites { - list denied-site { - key site-id; - - leaf site-id { - type leafref { - path "/l3vpn-svc/sites/site/site-id"; - } - description - "Site ID."; - } - description - "List of denied sites."; - } - description - "Configuration of denied sites"; - } - leaf nat-enabled { - type boolean; - description - "Control if NAT is required or not."; - } - leaf customer-nat-address { - type inet:ipv4-address; - description - "NAT address to be used in case of public - or shared cloud. - This is to be used in case customer is providing - the public address."; - } - description - "Cloud access configuration."; - } - description - "Container for cloud access configurations"; - } - description - "grouping for vpn cloud definition"; - } - - grouping multicast-rp-group-cfg { - choice group-format { - case startend { - leaf group-start { - type inet:ip-address; - description - "First group address."; - } - leaf group-end { - type inet:ip-address; - description - "Last group address."; - } - } - case singleaddress { - leaf group-address { - type inet:ip-address; - description - "Group address"; - } - } - description - "Choice for group format."; - } - description - "Definition of groups for - RP to group mapping."; - } - - grouping vpn-service-multicast { - container multicast { - if-feature multicast; - leaf enabled { - type boolean; - default false; - description - "Enable multicast."; - } - container customer-tree-flavors { - list tree-flavor { - key type; - - leaf type { - type identityref { - base multicast-tree-type; - } - description - "Type of tree to be used."; - } - description - "List of tree flavors."; - } - description - "Type of trees used by customer."; - } - container rp { - container rp-group-mappings { - list rp-group-mapping { - key "id"; - - leaf id { - type uint16; - description - "Unique identifier for the mapping."; - } - container provider-managed { - leaf enabled { - type boolean; - default false; - description - "Set to true, if the RP must be a - provider - managed node. - Set to false, if it is a customer - managed node."; - } - - leaf rp-redundancy { - when "../enabled = 'true'" { - description - "Relevant when RP - is provider managed."; - } - type boolean; - default false; - description - "If true, redundancy - mechanism for RP is required."; - } - leaf optimal-traffic-delivery { - when "../enabled = 'true'" { - description - "Relevant when RP - is provider managed."; - } - type boolean; - default false; - description - "If true, SP must ensure - that traffic uses an optimal path."; - } - description - "Parameters for provider managed RP."; - } - - leaf rp-address { - when "../provider-managed/enabled='false'" { - description - "Relevant when RP - is provider managed."; - } - type inet:ip-address; - description - "Defines the address of the - RendezvousPoint. - Used if RP is customer managed."; - } - - container groups { - list group { - key id; - - leaf id { - type uint16; - description - "Identifier for the group."; - } - uses multicast-rp-group-cfg; - description - "List of groups."; - } - description - "Multicast groups associated with RP."; - } - - description - "List of RP to group mappings."; - } - description - "RP to group mappings."; - } - container rp-discovery { - leaf rp-discovery-type { - type identityref { - base multicast-rp-discovery-type; - } - default static-rp; - description - "Type of RP discovery used."; - } - container bsr-candidates { - when "../rp-discovery-type='bsr-rp'" { - description - "Only applicable if discovery type - is BSR-RP"; - } - list bsr-candidate { - key address; - - leaf address { - type inet:ip-address; - description - "Address of BSR candidate"; - } - - description - "List of customer BSR candidates"; - } - description - "Customer BSR candidates address"; - } - description - "RP discovery parameters"; - } - - description - "RendezvousPoint parameters."; - } - description - "Multicast global parameters for the VPN service."; - } - description - "grouping for multicast vpn definition"; - } - - grouping vpn-service-mpls { - leaf carrierscarrier { - if-feature carrierscarrier; - type boolean; - default false; - description - "The VPN is using Carrier's Carrier, - and so MPLS is required."; - } - description - "grouping for mpls CsC definition"; - } - - grouping customer-location-info { - container location { - leaf address { - type string; - description - "Address (number and street) - of the site."; - - } - leaf zip-code { - type string; - description - "ZIP code of the site."; - } - leaf state { - type string; - description - "State of the site. - This leaf can also be used - to describe a region - for country who does not have - states. - "; - } - leaf city { - type string; - description - "City of the site."; - } - leaf country-code { - type string; - description - "Country of the site."; - } - description - "Location of the site."; - } - description - "This grouping defines customer location - parameters"; - } - - grouping site-diversity { - container site-diversity { - if-feature site-diversity; - - container groups { - list group { - key group-id; - - leaf group-id { - type string; - description - "Group-id the site - is belonging to"; - } - description - "List of group-id"; - } - description - "Groups the site - is belonging to. - All site network accesses will - inherit those group values."; - } - description - "Diversity constraint type."; - } - description - "This grouping defines site diversity - parameters"; - } - - grouping access-diversity { - container access-diversity { - if-feature site-diversity; - container groups { - list group { - key group-id; - - leaf group-id { - type string; - description - "Group-id the site network access - is belonging to"; - } - description - "List of group-id"; - } - description - "Groups the site network access - is belonging to"; - } - container constraints { - list constraint { - key constraint-type; - - leaf constraint-type { - type identityref { - base placement-diversity; - } - description - "Diversity constraint type."; - } - container target { - choice target-flavor { - case id { - list group { - key group-id; - - leaf group-id { - type string; - description - "The constraint will apply - against this particular - group-id"; - } - description - "List of groups"; - } - } - case all-accesses { - leaf all-other-accesses { - type empty; - description - "The constraint will apply - against all other site network - access - of this site"; - } - } - case all-groups { - leaf all-other-groups { - type empty; - description - "The constraint will apply - against all other groups the - customer - is managing"; - } - } - description - "Choice for the group definition"; - } - description - "The constraint will apply against - this list of groups"; - } - description - "List of constraints"; - } - description - "Constraints for placing this site - network access"; - } - - description - "Diversity parameters."; - } - description - "This grouping defines access diversity - parameters"; - } - - grouping operational-requirements { - leaf requested-site-start { - type yang:date-and-time; - description - "Optional leaf indicating requested date - and time - when the service at a particular site is - expected - to start"; - } - - leaf requested-site-stop { - type yang:date-and-time; - description - "Optional leaf indicating requested date - and time - when the service at a particular site is - expected - to stop"; - } - description - "This grouping defines some operational parameters - parameters"; - } - - grouping operational-requirements-ops { - leaf actual-site-start { - type yang:date-and-time; - config false; - description - "Optional leaf indicating actual date - and time - when the service at a particular site - actually - started"; - } - leaf actual-site-stop { - type yang:date-and-time; - config false; - description - "Optional leaf indicating actual date - and time - when the service at a particular site - actually - stopped"; - } - description - "This grouping defines some operational parameters - parameters"; - } - - grouping flow-definition { - container match-flow { - leaf dscp { - type uint8 { - range "0 .. 63"; - } - description - "DSCP value."; - } - leaf tos { - type uint8 { - range "0 .. 254"; - } - description - "TOS value."; - } - leaf dot1p { - type uint8 { - range "0 .. 7"; - } - description - "802.1p matching."; - } - leaf ipv4-src-prefix { - type inet:ipv4-prefix; - description - "Match on IPv4 src address."; - } - leaf ipv6-src-prefix { - type inet:ipv6-prefix; - description - "Match on IPv6 src address."; - } - leaf ipv4-dst-prefix { - type inet:ipv4-prefix; - description - "Match on IPv4 dst address."; - } - leaf ipv6-dst-prefix { - type inet:ipv6-prefix; - description - "Match on IPv6 dst address."; - } - leaf l4-src-port { - type uint16; - description - "Match on layer 4 src port."; - } - leaf l4-dst-port { - type uint16; - description - "Match on layer 4 dst port."; - } - leaf protocol-field { - type union { - type uint8; - type identityref { - base protocol-type; - } - } - description - "Match on IPv4 protocol or - Ipv6 Next Header - field."; - } - - description - "Describe flow matching - criterions."; - } - description - "Flow definition based on criteria."; - } - - grouping site-service-basic { - leaf svc-input-bandwidth { - type uint32; - units bps; - description - "From the PE perspective, the service input - bandwidth of the connection."; - } - leaf svc-output-bandwidth { - type uint32; - units bps; - description - "From the PE perspective, the service output - bandwidth of the connection."; - } - leaf svc-mtu { - type uint16; - units bytes; - description - "MTU at service level. - If the service is IP, - it refers to the IP MTU."; - } - description - "Defines basic service parameters for a site."; - } - - grouping site-protection { - container traffic-protection { - if-feature fast-reroute; - leaf enabled { - type boolean; - description - "Enables - traffic protection of access link."; - } - - description - "Fast reroute service parameters - for the site."; - } - description - "Defines protection service parameters for a site."; - } - - grouping site-service-mpls { - container carrierscarrier { - if-feature carrierscarrier; - leaf signalling-type { - type enumeration { - enum "ldp" { - description - "Use LDP as signalling - protocol between PE and CE."; - } - enum "bgp" { - description - "Use BGP 3107 as signalling - protocol between PE and CE. - In this case, bgp must be also - configured - as routing-protocol. - "; - } - } - description - "MPLS signalling type."; - } - description - "This container is used when customer provides - MPLS based services. - This is used in case of Carrier's - Carrier."; - } - description - "Defines MPLS service parameters for a site."; - } - - grouping site-service-qos-profile { - container qos { - if-feature qos; - container qos-classification-policy { - list rule { - key id; - ordered-by user; - - leaf id { - type uint16; - description - "ID of the rule."; - } - - choice match-type { - case match-flow { - uses flow-definition; - } - case match-application { - leaf match-application { - type identityref { - base customer-application; - } - description - "Defines the application - to match."; - } - } - description - "Choice for classification"; - } - - leaf target-class-id { - type string; - description - "Identification of the - class of service. - This identifier is internal to - the administration."; - } - - description - "List of marking rules."; - } - description - "Need to express marking rules ..."; - } - container qos-profile { - - choice qos-profile { - description - "Choice for QoS profile. - Can be standard profile or custom."; - case standard { - leaf profile { - type string; - description - "QoS profile to be used"; - } - } - case custom { - container classes { - if-feature qos-custom; - list class { - key class-id; - - leaf class-id { - type string; - description - "Identification of the - class of service. - This identifier is internal to - the administration."; - } - leaf rate-limit { - type uint8; - units percent; - description - "To be used if class must - be rate - limited. Expressed as - percentage of the svc-bw."; - } - leaf priority-level { - type uint8; - description - "Defines the level of the - class in - term of priority queueing. - The higher the level is the - higher - is the priority."; - } - leaf guaranteed-bw-percent { - type uint8; - units percent; - description - "To be used to define the - guaranteed - BW in percent of the svc-bw - available at the priority-level."; - } - description - "List of class of services."; - } - description - "Container for - list of class of services."; - } - - } - - } - description - "Qos profile configuration."; - } - description - "QoS configuration."; - } - description - "This grouping defines QoS parameters - for a site"; - - } - - grouping site-security-authentication { - container authentication { - description - "Authentication parameters"; - } - description - "This grouping defines authentication - parameters - for a site"; - } - - grouping site-security-encryption { - container encryption { - if-feature encryption; - leaf enabled { - type boolean; - description - "If true, access encryption is required."; - } - leaf layer { - type enumeration { - enum layer2 { - description - "Encryption will occur at layer2."; - } - enum layer3 { - description - "IPSec is requested."; - } - } - description - "Layer on which encryption is applied."; - } - container encryption-profile { - choice profile { - case provider-profile { - leaf profile-name { - type string; - description - "Name of the SP profile - to be applied."; - } - } - case customer-profile { - leaf algorithm { - type string; - description - "Encryption algorithm to - be used."; - } - choice key-type { - case psk { - leaf preshared-key { - type string; - description - "Key coming from - customer."; - } - } - case pki { - - } - description - "Type of keys to be used."; - } - } - description - "Choice of profile."; - } - description - "Profile of encryption to be applied."; - } - description - "Encryption parameters."; - } - description - "This grouping defines encryption parameters - for a site"; - } - - grouping site-attachment-bearer { - container bearer { - container requested-type { - if-feature requested-type; - leaf requested-type { - type string; - description - "Type of requested bearer Ethernet, DSL, - Wireless ... - Operator specific."; - } - leaf strict { - type boolean; - default false; - description - "define if the requested-type is a preference - or a strict requirement."; - } - description - "Container for requested type."; - } - leaf always-on { - if-feature always-on; - type boolean; - default true; - description - "Request for an always on access type. - This means no Dial access type for - example."; - } - leaf bearer-reference { - if-feature bearer-reference; - type string; - description - "This is an internal reference for the - service provider. - Used "; - } - description - "Bearer specific parameters. - To be augmented."; - } - description - "Defines physical properties of - a site attachment."; - } - - grouping site-routing { - container routing-protocols { - list routing-protocol { - key type; - - leaf type { - type identityref { - base routing-protocol-type; - } - description - "Type of routing protocol."; - } - - - container ospf { - when "../type = 'ospf'" { - description - "Only applies - when protocol is OSPF."; - } - if-feature rtg-ospf; - leaf-list address-family { - type identityref { - base address-family; - } - description - "Address family to be activated."; - } - leaf area-address { - type yang:dotted-quad; - description - "Area address."; - } - leaf metric { - type uint16; - description - "Metric of PE-CE link."; - } - container sham-links { - if-feature rtg-ospf-sham-link; - list sham-link { - key target-site; - - leaf target-site { - type svc-id; - description - "Target site for the sham link - connection. - The site is referred through it's ID."; - } - leaf metric { - type uint16; - description - "Metric of the sham link."; - } - description - "Creates a shamlink with another - site"; - } - description - "List of Sham links"; - } - description - "OSPF specific configuration."; - } - - container bgp { - - when "../type = 'bgp'" { - description - "Only applies when - protocol is BGP."; - } - if-feature rtg-bgp; - leaf autonomous-system { - type uint32; - description - "AS number."; - } - leaf-list address-family { - type identityref { - base address-family; - } - description - "Address family to be activated."; - } - description - "BGP specific configuration."; - } - container static { - when "../type = 'static'" { - description - "Only applies when protocol - is static."; - } - - container cascaded-lan-prefixes { - list ipv4-lan-prefixes { - if-feature ipv4; - key "lan next-hop"; - - leaf lan { - type inet:ipv4-prefix; - description - "Lan prefixes."; - } - leaf lan-tag { - type string; - description - "Internal tag to be used in vpn - policies."; - } - leaf next-hop { - type inet:ipv4-address; - description - "Nexthop address to use at customer - side."; - } - description " - List of LAN prefixes for - the site. - "; - } - list ipv6-lan-prefixes { - if-feature ipv6; - key "lan next-hop"; - - leaf lan { - type inet:ipv6-prefix; - description - "Lan prefixes."; - } - leaf lan-tag { - type string; - description - "Internal tag to be used - in vpn policies."; - } - leaf next-hop { - type inet:ipv6-address; - description - "Nexthop address to use at - customer side."; - } - description " - List of LAN prefixes for the site. - "; - } - description - "LAN prefixes from the customer."; - } - description - "Static routing - specific configuration."; - } - container rip { - - when "../type = 'rip'" { - description - "Only applies when - protocol is RIP."; - } - if-feature rtg-rip; - leaf-list address-family { - type identityref { - base address-family; - } - description - "Address family to be - activated."; - } - - description - "RIP routing specific - configuration."; - } - - - container vrrp { - - when "../type = 'vrrp'" { - description - "Only applies when - protocol is VRRP."; - } - if-feature rtg-vrrp; - leaf-list address-family { - type identityref { - base address-family; - } - description - "Address family to be activated."; - } - description - "VRRP routing specific configuration."; - } - - - description - "List of routing protocols used - on the site. - Need to be augmented."; - } - description - "Defines routing protocols."; - } - description - "Grouping for routing protocols."; - } - - grouping site-attachment-ip-connection { - container ip-connection { - container ipv4 { - if-feature ipv4; - leaf address-allocation-type { - type identityref { - base address-allocation-type; - } - - default "static-address"; - description - "Defines how addresses are allocated. - "; - } - - leaf number-of-dynamic-address { - when - "../address-allocation-type = 'pe-dhcp'" - { - description - "Only applies when - protocol allocation type is static"; - } - type uint8; - default 1; - description - "Describes the number of IP addresses the - customer requires"; - } - container addresses { - when - "../address-allocation-type = 'static-address'" { - description - "Only applies when - protocol allocation type is static"; - } - leaf provider-address { - type inet:ipv4-address; - description - "Provider side address."; - } - leaf customer-address { - type inet:ipv4-address; - description - "Customer side address."; - } - leaf mask { - type uint8 { - range "0..32"; - } - description - "Subnet mask expressed - in bits"; - } - description - "Describes IP addresses used"; - } - description - "IPv4 specific parameters"; - - } - container ipv6 { - if-feature ipv6; - leaf address-allocation-type { - type identityref { - base address-allocation-type; - } - default "static-address"; - description - "Defines how addresses are allocated. - "; - } - leaf number-of-dynamic-address { - when - "../address-allocation-type = 'pe-dhcp'" { - description - "Only applies when - protocol allocation type is static"; - } - type uint8; - default 1; - description - "Describes the number of IP addresses the - customer requires"; - } - container addresses { - when - "../address-allocation-type = 'static-address'" { - description - "Only applies when - protocol allocation type is static"; - } - leaf provider-address { - type inet:ipv6-address; - description - "Provider side address."; - } - leaf customer-address { - type inet:ipv6-address; - description - "Customer side address."; - } - leaf mask { - type uint8 { - range "0..128"; - - } - description - "Subnet mask expressed - in bits"; - } - description - "Describes IP addresses used"; - } - - description - "IPv6 specific parameters"; - - } - container oam { - container bfd { - if-feature bfd; - leaf bfd-enabled { - type boolean; - description - "BFD activation"; - } - - choice holdtime { - case profile { - leaf profile-name { - type string; - description - "Service provider well - known profile."; - } - description - "Service provider well - known profile."; - } - case fixed { - leaf fixed-value { - type uint32; - units msec; - description - "Expected holdtime - expressed - in msec."; - } - } - description - "Choice for holdtime flavor."; - } - description - "Container for BFD."; - } - description - "Define the OAM used on the connection."; - } - description - "Defines connection parameters."; - } - description - "This grouping defines IP connection parameters."; - } - - grouping site-service-multicast { - container multicast { - if-feature multicast; - leaf multicast-site-type { - type enumeration { - enum receiver-only { - description - "The site has only receivers."; - } - enum source-only { - description - "The site has only sources."; - } - enum source-receiver { - description - "The site has both - sources & receivers."; - } - } - default "source-receiver"; - description - "Type of multicast site."; - } - container multicast-transport-protocol { - leaf ipv4 { - if-feature ipv4; - type boolean; - default true; - description - "Enables ipv4 multicast transport"; - } - leaf ipv6 { - if-feature ipv6; - type boolean; - default false; - description - "Enables ipv6 multicast transport"; - } - description - "Defines protocol to transport multicast."; - } - leaf protocol-type { - type enumeration { - enum host { - description - " - Hosts are directly connected - to the provider network. - Host protocols like IGMP, MLD - are required. - "; - } - enum router { - description - " - Hosts are behind a customer router. - PIM will be implemented. - "; - } - enum both { - description - "Some Hosts are behind a customer - router and some others are directly - connected to the provider network. - Both host and routing protocols must be - used. Typically IGMP and PIM will be - implemented. - "; - } - } - default "both"; - description - "Multicast protocol type to be used - with the customer site."; - } - - description - "Multicast parameters for the site."; - } - description - "Multicast parameters for the site."; - } - - grouping site-management { - container management { - leaf type { - type identityref { - base management; - } - description - "Management type of the connection."; - } - leaf management-transport { - type identityref { - base address-family; - } - description - "Transport protocol used for management."; - } - leaf address { - type inet:ip-address; - description - "Management address"; - } - - description - "Management configuration"; - } - description - "Management parameters for the site."; - } - - grouping site-vpn-flavor-profile { - leaf site-vpn-flavor { - type identityref { - base site-vpn-flavor; - } - default site-vpn-flavor-single; - description - "Defines if the site - is a single VPN site, or multiVPN or ..."; - } - description - "Grouping for site-vpn-flavor."; - } - - grouping site-vpn-policy { - container vpn-policy-list { - list vpn-policy { - key vpn-policy-id; - - leaf vpn-policy-id { - type svc-id; - description - "Unique identifier for - the VPN policy."; - } - - list entries { - key id; - - leaf id { - type svc-id; - description - "Unique identifier for - the policy entry."; - } - container filter { - choice lan { - case lan-prefix { - container lan-prefixes { - list ipv4-lan-prefixes { - if-feature ipv4; - key lan; - - leaf lan { - type inet:ipv4-prefix; - description - "Lan prefixes."; - } - description " - List of LAN prefixes - for the site. - "; - } - list ipv6-lan-prefixes { - if-feature ipv6; - key lan; - - leaf lan { - type inet:ipv6-prefix; - description - "Lan prefixes."; - } - description " - List of LAN prefixes - for the site. - "; - } - description - "LAN prefixes from the customer."; - } - } - case lan-tag { - leaf-list lan-tag { - type string; - description - "List of lan-tags to be matched."; - } - } - description - "Choice for LAN matching type"; - } - description - "If used, it permit to split site LANs - among multiple VPNs. - If no filter used, all the LANs will be - part of the same VPNs with the same - role."; - } - container vpn { - leaf vpn-id { - type leafref { - path "/l3vpn-svc/vpn-services/vpn-svc/vpn-id"; - } - mandatory true; - description - "Reference to an IPVPN."; - } - leaf site-role { - type identityref { - base site-role; - } - mandatory true; - description - "Role of the site in the IPVPN."; - } - description - "List of VPNs the LAN is associated to."; - } - description - "List of entries for export policy."; - } - description - "List of VPN policies."; - } - description - "VPN policy."; - } - description - "VPN policy parameters for the site."; - } - - grouping site-maximum-routes { - container maximum-routes { - list address-family { - key af; - - leaf af { - type identityref { - base address-family; - } - description - "Address-family."; - } - leaf maximum-routes { - type uint32; - description - "Maximum prefixes the VRF can - accept for this - address-family."; - } - description - "List of address families."; - } - - description - "Define maximum-routes for the VRF."; - } - description - "Define maximum-routes for the site."; - } - - grouping site-security { - container security { - uses site-security-authentication; - uses site-security-encryption; - - description - "Site specific security parameters."; - } - description - "Grouping for security parameters."; - } - - grouping site-service { - container service { - uses site-service-basic; - uses site-service-qos-profile; - uses site-service-mpls; - uses site-service-multicast; - - description - "Service parameters on the attachement."; - } - description - "Grouping for service parameters."; - } - - grouping transport-constraint-profile { - list constraint-list { - key constraint-type; - - leaf constraint-type { - type identityref { - base transport-constraint; - } - description - "Constraint type to be applied."; - } - leaf constraint-opaque-value { - type string; - description - "Opaque value that can be used to - specify constraint parameters."; - } - description - "List of constraints"; - } - description - "Grouping for transport constraint."; - } - - grouping transport-constraints { - container transport-constraints { - if-feature traffic-engineering; - container unicast-transport-constraints { - list constraint { - key constraint-id; - - leaf constraint-id { - type svc-id; - description - "Defines an ID for the constraint - rule."; - } - - leaf site1 { - type svc-id; - description - "The ID refers to one site end."; - } - leaf site2 { - type svc-id; - description - "The ID refers to the other - site end."; - } - uses transport-constraint-profile; - description - "List of constraints. - Constraints are bidirectional."; - } - description - "Unicast transport constraints."; - } - container multicast-transport-constraints { - if-feature traffic-engineering-multicast; - list constraint { - key constraint-id; - - leaf constraint-id { - type svc-id; - description - "Defines an ID for the constraint - rule."; - } - - leaf src-site { - type svc-id; - description - "The ID refers to source site."; - } - leaf dst-site { - type svc-id; - description - "The ID refers to the receiver - site."; - } - uses transport-constraint-profile; - description - "List of constraints. - Constraints are unidirectional."; - } - description - "Multicast transport constraints."; - } - description - "transport constraints."; - } - description - "Grouping for transport constraints - description."; - } - - grouping vpn-extranet { - container extranet-vpns { - if-feature extranet-vpn; - list extranet-vpn { - key vpn-id; - - leaf vpn-id { - type svc-id; - description - "Identifies the target VPN"; - } - leaf local-sites-role { - type identityref { - base site-role; - } - description - "This describes the role of the - local sites in the target VPN topology."; - } - description - "List of extranet VPNs the local - VPN is attached to."; - } - description - "Container for extranet vpn cfg."; - } - description - "grouping for extranet VPN configuration. - Extranet provides a way to interconnect all sites - from two VPNs in a easy way."; - } - - grouping site-attachment-availability { - container availability { - leaf access-priority { - type uint32; - default 1; - description - "Defines the priority for the access. - The highest the priority value is, - the highest the - preference of the access is."; - } - description - "Availability parameters - (used for multihoming)"; - } - description - "Defines site availability parameters."; - } - - grouping access-vpn-policy { - container vpn-attachment { - choice attachment-flavor { - case vpn-policy-id { - leaf vpn-policy-id { - type leafref { - path "/l3vpn-svc/sites/site/"+ - "vpn-policy-list/vpn-policy/"+ - "vpn-policy-id"; - } - description - "Reference to a VPN policy."; - } - } - case vpn-id { - leaf vpn-id { - type leafref { - path "/l3vpn-svc/vpn-services"+ - "/vpn-svc/vpn-id"; - } - description - "Reference to a VPN."; - } - leaf site-role { - type identityref { - base site-role; - } - mandatory true; - description - "Role of the site in the IPVPN."; - } - } - mandatory true; - description - "Choice for VPN attachment flavor."; - } - description - "Defines VPN attachment of a site."; - } - description - "Defines the VPN attachment rules - for a site logical access."; - } - - grouping vpn-svc-cfg { - leaf vpn-id { - type svc-id; - description - "VPN identifier. Local administration meaning."; - } - leaf customer-name { - type string; - description - "Name of the customer."; - } - leaf topology { - type identityref { - base vpn-topology; - } - default "any-to-any"; - description - "VPN topology."; - } - - uses vpn-service-cloud-access; - uses vpn-service-multicast; - uses vpn-service-mpls; - uses transport-constraints; - uses vpn-extranet; - - description - "grouping for vpn-svc configuration."; - } - - grouping site-top-level-cfg { - uses operational-requirements; - uses customer-location-info; - uses site-diversity; - uses site-management; - uses site-vpn-policy; - uses site-vpn-flavor-profile; - uses site-maximum-routes; - uses site-security; - uses site-service; - uses site-protection; - uses site-routing; - - description - "Grouping for site top level cfg."; - } - - grouping site-network-access-top-level-cfg { - leaf site-network-access-type { - type identityref { - base site-network-access-type; - } - default "point-to-point"; - description - "Describes the type of connection, e.g. : - point-to-point or multipoint"; - } - uses access-diversity; - uses site-attachment-bearer; - uses site-attachment-ip-connection; - uses site-security; - uses site-service; - uses site-routing; - uses site-attachment-availability; - uses access-vpn-policy; - - description - "Grouping for site network access - top level cfg."; - } - - /* Main blocks */ - - container l3vpn-svc { - container vpn-services { - list vpn-svc { - key vpn-id; - - uses vpn-svc-cfg; - - description " - List of VPN services. - - "; - } - description - "top level container - for the VPN services."; - } - - container sites { - list site { - key site-id; - - leaf site-id { - type svc-id; - description - "Identifier of the site."; - } - - uses site-top-level-cfg; - uses operational-requirements-ops; - - container site-network-accesses { - list site-network-access { - key site-network-access-id; - - leaf site-network-access-id { - type svc-id; - description - "Identifier for the access"; - } - uses site-network-access-top-level-cfg; - - description - "List of accesses for a site."; - } - description - "List of accesses for a site."; - } - - description "List of sites."; - } - description - "Container for sites"; - } - - description - "Main container for L3VPN service configuration."; - } -} \ No newline at end of file diff --git a/models/l3vpn/src/main/yang/ietf-network-instance@2016-06-23.yang b/models/l3vpn/src/main/yang/ietf-network-instance@2016-06-23.yang deleted file mode 100644 index 57eebdc406..0000000000 --- a/models/l3vpn/src/main/yang/ietf-network-instance@2016-06-23.yang +++ /dev/null @@ -1,241 +0,0 @@ -module ietf-network-instance { - - yang-version "1"; - - // namespace - namespace "urn:ietf:params:xml:ns:yang:ietf-network-instance"; - - prefix "ni"; - - // import some basic types - import ietf-interfaces { - prefix if; - } - - import ietf-ip { - prefix ip; - } - - // meta - organization "IETF Routing Area Working Group (rtgwg)"; - - contact - "Routing Area Working Group - "; - - - description - "This module is used to support multiple network instances - within a single physical or virtual device. Network - instances are commonly know as VRFs (virtual routing - and forwarding) and VSIs (virtual switching instances)."; - - revision "2016-06-23" { - description - "Initial revision."; - reference "RFC TBD"; - } - - // extension statements - - feature bind-network-instance-name { - description - "Network Instance to which an interface instance is bound"; - } - - // identity statements - - identity network-instance-type { - description - "Base identity from which identities describing - network instance types are derived."; - } - - identity ipv4-interface-protocol-type { - description - "Base identity for derivation of IPv4 interface - protocols"; - } - - identity ipv6-interface-protocol-type { - description - "Base identity for derivation of IPv6 interface - protocols"; - } - - // typedef statements - - // grouping statements - - grouping interface-ip-common { - description - "interface-specific configuration for IP interfaces, IPv4 and - IPv6"; - - } - - grouping ipv4-interface-protocols { - container ipv4-interface-protocols { - list ipv4-interface-protocol { - key "type"; - leaf type { - type identityref { - base ipv4-interface-protocol-type; - } - mandatory true; - description - "ARP, ICMP, VRRP, DHCP Client, etc."; - } - description - "List of IPv4 protocols configured - on an interface"; - } - description - "Container for list of IPv4 protocols configured - on an interface"; - } - description - "Grouping for IPv4 protocols configured on an interface"; - } - - grouping ipv6-interface-protocols { - description - "Grouping for IPv6 protocols configured on - an interface."; - container ipv6-interface-protocols { - description - "Container for list of IPv6 protocols configured - on an interface."; - list ipv6-interface-protocol { - key "type"; - description - "List of IPv6 protocols configured - on an interface"; - leaf type { - type identityref { - base ipv6-interface-protocol-type; - } - mandatory true; - description - "ND, ICMPv6, VRRP, DHCPv6 Client, etc."; - } - } - } - } - - grouping network-instance-policy { - description - "Network instance policies such as route - distinguisher, route targets, VPLS ID and neighbor, - Ethernet ID, etc. "; - reference - "RFC 4364 - BGP/MPLS Virtual Private Networks (VPNs) - RFC 6074 - Provisioning, Auto-Discovery, and Signaling - in Layer 2 Virtual Private Networks (L2VPNs) - RFC 7432 - BGP MPLS-Based Ethernet VPN"; - container network-instance-policy { - description "Network Instance Policy -- details TBD"; - } - } - - // top level device definition statements - container devices { - list device { - key deviceid; - leaf deviceid { - type string; - } - container network-instances { - description "Network instances each of which have - and protocol instantiations. For layer 3, - this consistent with the routing-instance - definition in ietf-routing"; - reference "draft-ietf-netmod-routing-cfg"; - list network-instance { - key name; - description "List of network-instances"; - leaf name { - type string; - description "device scoped - identifier for the network - instance"; - } - leaf type { - type identityref { - base network-instance-type; - } - description - "The network instance type -- details TBD - Likely types include core, L3-VRF, VPLS, - L2-cross-connect, L2-VSI, etc."; - } - leaf enabled { - type boolean; - default "true"; - description - "Flag indicating whether or not the network - instance is enabled."; - } - leaf description { - type string; - description - "Description of the network instance - and its intended purpose"; - } - uses network-instance-policy; - // leaf root { - // type schema-mount; - // description "Root for models supported per - // network instance"; - // } - } - } - } - } - - // augment statements - augment "/if:devices/if:device/if:interfaces/if:interface" { - description - "Add a node for the identification of the logical network - instance (which is within the interface's identified logical - network element) associated with the IP information - configured on an interface"; - - leaf bind-network-instance-name { - type string; - description - "Network Instance to which an interface is bound"; - } - } - - augment "/if:devices/if:device/if:interfaces/if:interface/ip:ipv4" { - description - "Add a node for the identification of the logical - network instance (which is within the interface's - identified physical or virtual device) associated with - the IP information configured on an interface"; - - leaf bind-network-instance-name { - type string; - description - "Network Instance to which IPv4 interface is bound"; - - } - } - - augment "/if:devices/if:device/if:interfaces/if:interface/ip:ipv6" { - description - "Add a node for the identification of the logical - network instance (which is within the interface's - identified physical or virtual device) associated with - the IP information configured on an interface"; - - leaf bind-network-instance-name { - type string; - description - "Network Instance to which IPv6 interface is bound"; - - } - } - // rpc statements - // notification statements - } \ No newline at end of file diff --git a/models/l3vpn/src/main/yang/l3vpn-svc-ext@2016-07-30.yang b/models/l3vpn/src/main/yang/l3vpn-svc-ext@2016-07-30.yang deleted file mode 100644 index e3fecb63d6..0000000000 --- a/models/l3vpn/src/main/yang/l3vpn-svc-ext@2016-07-30.yang +++ /dev/null @@ -1,362 +0,0 @@ -module l3vpn-svc-ext { - yang-version 1; - namespace "urn:ietf:params:xml:ns:yang:l3vpn:svc:ext"; - prefix "l3vpn-svc-ext"; - - import ietf-inet-types { prefix inet; } - import ietf-l3vpn-svc { prefix l3vpn; } - - revision 2016-07-30 { - description - "Eliminated warnings"; - } - - revision "2016-07-20" { - description "Initial revision of extended l3vpn yang model"; - } - - typedef short-as-number { - type inet:as-number { - range 0..65535; - } - } - - typedef route-distinguisher { - reference "https://tools.ietf.org/html/rfc4364#section-4.2"; - type union { - type rd-ipv4; - type rd-as; - type rd-as2; - } - } - - typedef rd-ipv4 { - type string { - /* IPv4 : 2B number */ - pattern '((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))' - + ':' - + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|' - + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|' - + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])'; - } - } - - typedef rd-as { - type string { - /* 2B AS : 4B number */ - pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|' - + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|' - + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])' - + ':' - + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|' - + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|' - + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' - + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' - + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' - + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|' - + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|' - + '42949672[0-8][0-9]|429496729[0-5])'; - } - } - - typedef rd-as2 { - type string { - /* 4B AS : 2B number */ - pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|' - + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|' - + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' - + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' - + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|' - + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|' - + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|' - + '42949672[0-8][0-9]|429496729[0-5])' - + ':' - + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|' - + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|' - + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])'; - } - } - - identity tc-demanded-tunnel { - base l3vpn:transport-constraint; - description "on-demand tunnel."; - } - - grouping class-profile { - list qos-class { - key class-id; - leaf class-id { - type string; - description - "Identification of the - class of service. - This identifier is internal to - the administration."; - } - leaf rate-limit { - type uint8; - units percent; - description - "To be used if class must - be rate - limited. Expressed as - percentage of the svc-bw."; - } - leaf priority-level { - type uint8; - description - "Defines the level of the - class in - term of priority queueing. - The higher the level is the - higher - is the priority."; - } - leaf guaranteed-bw-percent { - type uint8; - units percent; - description - "To be used to define the - guaranteed - BW in percent of the svc-bw - available at the priority-level."; - } - description - "List of class of services."; - } - } - - augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:service/l3vpn:qos/l3vpn:qos-profile/l3vpn:qos-profile" { - case custom-unicom { - container inbound-classes { - uses class-profile; - } - container outbound-classes { - uses class-profile; - } - } - } - - grouping bearer-attachment-grouping { - container bearer-attachment { - leaf pe-name { - type string; - } - leaf pe-mgmt-ip { - type inet:ipv4-address; - } - description "attached PE"; - } - } - - augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:bearer" { - uses bearer-attachment-grouping; - } - - grouping requested-type-grouping { - container requested-type-profile { - choice requested-type-choice { - case dot1q-case { - container dot1q { - leaf physical-if { - description "physical interface name."; - type string; - } - leaf vlan-id { - type uint16 { - range "1..4096"; - } - } - } - } - case physical-case { - container physical { - leaf physical-if { - description "physical interface name."; - type string; - } - } - } - } - leaf circuit-id { - description "circuit description for PE-CE port."; - type string; - } - } - } - - augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:bearer/l3vpn:requested-type" { - uses requested-type-grouping; - } - - grouping bfd-grouping { - leaf bfd-enabled { - type boolean; - description - "BFD activation"; - } - choice holdtime { - case profile { - leaf profile-name { - type string; - description - "Service provider well - known profile."; - } - description - "Service provider well - known profile."; - } - case fixed { - leaf fixed-value { - type uint32; - units msec; - description - "Expected holdtime - expressed - in msec."; - } - } - case dynamic { - container dynamic-value { - leaf interval { - type uint16; - units msec; - default 500; - } - leaf multiplier { - type uint16; - default 3; - } - description - "interval * multiplier is - timeout value."; - } - } - } - } - - grouping bgp-profile { - leaf as-override { - type boolean; - default false; - } - container soo { - leaf soo-enabled { - type boolean; - } - leaf soo-value { - type string; - } - } - container password { - leaf password-enabled { - type boolean; - } - leaf password-value { - type string; - } - } - container bgp-timer { - leaf keep-alive { - type uint16; - default 60; - units "seconds"; - } - leaf hold-time { - type uint16; - default 180; - units "seconds"; - } - } - container bfd { - uses bfd-grouping; - } - } - - augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:routing-protocols/l3vpn:routing-protocol/l3vpn:bgp" { - uses bgp-profile; - } - - augment "/l3vpn:l3vpn-svc/l3vpn:vpn-services/l3vpn:vpn-svc/l3vpn:transport-constraints/l3vpn:unicast-transport-constraints/l3vpn:constraint/l3vpn:constraint-list" { - leaf constraint-opaque-value2 { - type string; - description - "Opaque value that can be used to - specify constraint parameters."; - } - } - - grouping route-ipv4-extended-community { - reference "http://tools.ietf.org/html/rfc4360"; - leaf global-administrator { - type inet:ipv4-address; - } - leaf local-administrator { - type uint16; - } - } - - grouping extended-community { - choice extended-community { - reference "http://tools.ietf.org/html/rfc4360#section-4"; - default route-target-extended-community-case; - case route-target-extended-community-case { - container route-target-extended-community { - leaf global-administrator { - type short-as-number; - } - leaf local-administrator { - type uint32; - } - } - } - case route-target-ipv4-case { - container route-target-ipv4 { - uses route-ipv4-extended-community; - } - } - case route-target-extended-community-case2 { - container route-target-extended-community2 { - leaf global-administrator { - type uint32; - } - leaf local-administrator { - type uint16; - } - } - } - } - } - - grouping rdrt-profile { - choice site-role { - case custom-case { - container custom { - list import-rt { - key imrt-id; - leaf imrt-id { - type string; - } - uses extended-community; - } - list export-rt { - key exrt-id; - leaf exrt-id { - type string; - } - uses extended-community; - } - leaf rd { - type route-distinguisher; - } - } - } - } - } - - augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:vpn-attachment" { - uses rdrt-profile; - } -} \ No newline at end of file diff --git a/protocols/isis/api/BUILD b/protocols/isis/api/BUILD deleted file mode 100644 index 9e01912940..0000000000 --- a/protocols/isis/api/BUILD +++ /dev/null @@ -1,7 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [ - "@io_netty_netty//jar", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisController.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisController.java deleted file mode 100644 index 225371751f..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisController.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import com.fasterxml.jackson.databind.JsonNode; -import org.onosproject.isis.controller.topology.IsisLinkListener; -import org.onosproject.isis.controller.topology.IsisRouterListener; - -import java.util.List; -import java.util.Set; - -/** - * Representation of an ISIS controller. - */ -public interface IsisController { - - /** - * Registers a listener for router meta events. - * - * @param isisRouterListener ISIS router listener instance - */ - void addRouterListener(IsisRouterListener isisRouterListener); - - /** - * Unregisters a router listener. - * - * @param isisRouterListener ISIS router listener instance - */ - void removeRouterListener(IsisRouterListener isisRouterListener); - - /** - * Updates configuration of processes. - * - * @param processesNode json node represents process - */ - void updateConfig(JsonNode processesNode); - - /** - * Gets the all configured processes. - * - * @return list of process instances - */ - List allConfiguredProcesses(); - - /** - * Registers a listener for ISIS message events. - * - * @param listener the listener to notify - */ - void addLinkListener(IsisLinkListener listener); - - /** - * Unregisters a link listener. - * - * @param listener the listener to unregister - */ - void removeLinkListener(IsisLinkListener listener); - - /** - * Gets the list of listeners registered for router events. - * - * @return list of listeners - */ - Set listener(); - - /** - * Gets the list of listeners registered for link events. - * - * @return list of listeners - */ - Set linkListener(); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterface.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterface.java deleted file mode 100644 index 0ff30cb9cf..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterface.java +++ /dev/null @@ -1,321 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import org.jboss.netty.channel.Channel; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; - -import java.util.Set; - -/** - * Representation of an ISIS interface. - */ -public interface IsisInterface { - - /** - * Returns interface index. - * - * @return interface index - */ - int interfaceIndex(); - - /** - * Sets interface index. - * - * @param interfaceIndex interface index - */ - void setInterfaceIndex(int interfaceIndex); - - /** - * Returns the interface IP address. - * - * @return interface IP address - */ - Ip4Address interfaceIpAddress(); - - /** - * Sets the interface IP address. - * - * @param interfaceIpAddress interface IP address interface IP address - */ - void setInterfaceIpAddress(Ip4Address interfaceIpAddress); - - /** - * Returns the network mask. - * - * @return network mask - */ - byte[] networkMask(); - - /** - * Sets the network mask. - * - * @param networkMask network mask - */ - void setNetworkMask(byte[] networkMask); - - /** - * Sets the interface MAC address. - * - * @param interfaceMacAddress interface MAC address - */ - void setInterfaceMacAddress(MacAddress interfaceMacAddress); - - /** - * Returns the neighbors list. - * - * @return neighbors list - */ - Set neighbors(); - - /** - * Sets intermediate system name. - * - * @param intermediateSystemName intermediate system name - */ - void setIntermediateSystemName(String intermediateSystemName); - - /** - * Returns system ID. - * - * @return systemID system ID - */ - String systemId(); - - /** - * Sets system ID. - * - * @param systemId system ID - */ - void setSystemId(String systemId); - - /** - * Returns LAN ID. - * - * @return LAN ID - */ - String l1LanId(); - - /** - * Sets LAN ID. - * - * @param lanId LAN ID - */ - void setL1LanId(String lanId); - - /** - * Returns LAN ID. - * - * @return LAN ID - */ - String l2LanId(); - - /** - * Sets LAN ID. - * - * @param lanId LAN ID - */ - void setL2LanId(String lanId); - - /** - * Sets ID length. - * - * @param idLength ID length - */ - void setIdLength(int idLength); - - /** - * Sets max area addresses. - * - * @param maxAreaAddresses max area addresses - */ - void setMaxAreaAddresses(int maxAreaAddresses); - - /** - * Returns reserved packet circuit type. - * - * @return reserved packet circuit type - */ - int reservedPacketCircuitType(); - - /** - * Sets reserved packet circuit type. - * - * @param reservedPacketCircuitType reserved packet circuit type - */ - void setReservedPacketCircuitType(int reservedPacketCircuitType); - - /** - * Returns point to point or broadcast. - * - * @return 1 if point to point, 2 broadcast - */ - IsisNetworkType networkType(); - - /** - * Sets point to point. - * - * @param networkType point to point - */ - void setNetworkType(IsisNetworkType networkType); - - /** - * Returns area address. - * - * @return area address - */ - String areaAddress(); - - /** - * Sets area address. - * - * @param areaAddress area address - */ - void setAreaAddress(String areaAddress); - - /** - * Sets area length. - * - * @param areaLength area length - */ - void setAreaLength(int areaLength); - - /** - * Returns holding time. - * - * @return holding time - */ - int holdingTime(); - - /** - * Sets holding time. - * - * @param holdingTime holding time - */ - void setHoldingTime(int holdingTime); - - /** - * Returns priority. - * - * @return priority - */ - int priority(); - - /** - * Sets priority. - * - * @param priority priority - */ - void setPriority(int priority); - - /** - * Returns hello interval. - * - * @return hello interval - */ - public int helloInterval(); - - /** - * Sets hello interval. - * - * @param helloInterval hello interval - */ - void setHelloInterval(int helloInterval); - - /** - * Starts the hello timer which sends hello packet every configured seconds. - * - * @param channel netty channel instance - */ - void startHelloSender(Channel channel); - - /** - * Stops the hello timer which sends hello packet every configured seconds. - */ - void stopHelloSender(); - - /** - * Processes an ISIS message which is received on this interface. - * - * @param isisMessage ISIS message instance - * @param isisLsdb ISIS LSDB instance - * @param channel channel instance - */ - void processIsisMessage(IsisMessage isisMessage, IsisLsdb isisLsdb, Channel channel); - - /** - * Returns the interface state. - * - * @return interface state - */ - IsisInterfaceState interfaceState(); - - /** - * Sets the interface state. - * - * @param interfaceState the interface state - */ - void setInterfaceState(IsisInterfaceState interfaceState); - - /** - * Returns the LSDB instance. - * - * @return LSDB instance - */ - IsisLsdb isisLsdb(); - - /** - * Returns intermediate system name. - * - * @return intermediate system name - */ - String intermediateSystemName(); - - /** - * Returns the ISIS neighbor instance if exists. - * - * @param isisNeighborMac mac address of the neighbor router - * @return ISIS neighbor instance if exists else null - */ - IsisNeighbor lookup(MacAddress isisNeighborMac); - - /** - * Returns circuit ID. - * - * @return circuit ID - */ - String circuitId(); - - /** - * Sets circuit ID. - * - * @param circuitId circuit ID - */ - void setCircuitId(String circuitId); - - /** - * Removes neighbor from the interface neighbor map. - * - * @param isisNeighbor ISIS neighbor instance - */ - void removeNeighbor(IsisNeighbor isisNeighbor); - - /** - * Removes all the neighbors. - */ - void removeNeighbors(); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterfaceState.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterfaceState.java deleted file mode 100644 index 893851895a..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisInterfaceState.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; - -/** - * Enum represents ISIS Interface state. - */ -public enum IsisInterfaceState { - /** - * Represents interface is in "up" state. - */ - UP(0), - /** - * Represents interface is in "initial" state. - */ - INITIAL(1), - /** - * Represents interface is in "down" state. - */ - DOWN(2); - - // Reverse lookup table - private static final Map LOOKUP = new HashMap<>(); - - // Populate the lookup table on loading time - static { - for (IsisInterfaceState isisInterfaceState : EnumSet.allOf(IsisInterfaceState.class)) { - LOOKUP.put(isisInterfaceState.value(), isisInterfaceState); - } - } - - private int value; - - /** - * Creates an instance of ISIS interface type. - * - * @param value represents ISIS interface type - */ - private IsisInterfaceState(int value) { - this.value = value; - } - - /** - * Gets the enum instance from type value - reverse lookup purpose. - * - * @param interfaceStateTypeValue interface state type value - * @return ISIS interface state type instance - */ - public static IsisInterfaceState get(int interfaceStateTypeValue) { - return LOOKUP.get(interfaceStateTypeValue); - } - - /** - * Gets the value representing interface state type. - * - * @return value represents interface state type - */ - public int value() { - return value; - } -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdb.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdb.java deleted file mode 100644 index 8480cb642a..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdb.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import java.util.List; -import java.util.Map; - -/** - * Representation of an ISIS link state database. - */ -public interface IsisLsdb { - - /** - * Returns the ISIS LSDB. - * - * @return ISIS LSDB - */ - IsisLsdb isisLsdb(); - - /** - * Initializes LSDB. - */ - void initializeDb(); - - /** - * Returns the LSDB LSP key. - * - * @param systemId system ID - * @return LSP key - */ - String lspKey(String systemId); - - /** - * Returns the sequence number. - * - * @param lspType L1 or L2 LSP - * @return sequence number - */ - int lsSequenceNumber(IsisPduType lspType); - - /** - * Finds the LSP from LSDB. - * - * @param pduType L1 or L2 LSP - * @param lspId LSP ID - * @return LSP wrapper object - */ - LspWrapper findLsp(IsisPduType pduType, String lspId); - - /** - * Installs a new self-originated LSA in LSDB. - * Return true if installing was successful else false. - * - * @param lsPdu PDU instance - * @param isSelfOriginated true if self originated else false - * @param isisInterface ISIS interface instance - * @return true if successfully added - */ - boolean addLsp(IsisMessage lsPdu, boolean isSelfOriginated, IsisInterface isisInterface); - - /** - * Checks received LSP is latest, same or old. - * - * @param receivedLsp received LSP - * @param lspFromDb existing LSP - * @return "latest", "old" or "same" - */ - String isNewerOrSameLsp(IsisMessage receivedLsp, IsisMessage lspFromDb); - - /** - * Returns all LSPs (L1 and L2). - * - * @param excludeMaxAgeLsp exclude the max age LSPs - * @return List of LSPs - */ - List allLspHeaders(boolean excludeMaxAgeLsp); - - /** - * Deletes the given LSP. - * - * @param lsp LSP instance - */ - void deleteLsp(IsisMessage lsp); - - /** - * Gets the neighbor database information. - * - * @return neighbor database information - */ - Map getL1Db(); - - /** - * Gets the neighbor database information. - * - * @return neighbor database information - */ - Map getL2Db(); - - /** - * Sets the level 1 link state sequence number. - * - * @param l1LspSeqNo link state sequence number - */ - void setL1LspSeqNo(int l1LspSeqNo); - - /** - * Sets the level 2 link state sequence number. - * - * @param l2LspSeqNo link state sequence number - */ - void setL2LspSeqNo(int l2LspSeqNo); - /** - * Removes topology information when neighbor down. - * - * @param neighbor ISIS neighbor instance - * @param isisInterface ISIS interface instance - */ - void removeTopology(IsisNeighbor neighbor, IsisInterface isisInterface); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdbAge.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdbAge.java deleted file mode 100644 index 2d768c687d..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLsdbAge.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -/** - * Representation of an ISIS link state database aging. - */ -public interface IsisLsdbAge { - - /** - * Starts the aging timer thread which gets invokes every second. - */ - void startDbAging(); - - /** - * Returns the age counter. - * - * @return age counter - */ - int ageCounter(); - - /** - * Returns the age counter rollover. - * - * @return age counter rollover - */ - int ageCounterRollOver(); - - /** - * Returns the bin number. - * - * @param x can be either age or ageCounter - * @return bin number - */ - int age2Bin(int x); - - /** - * Returns the LSP bin instance. - * - * @param binKey key to search - * @return LSP bin instance - */ - IsisLspBin getLspBin(int binKey); - - /** - * Adds LSP to bin. - * - * @param binNumber key to store in bin - * @param lspBin LSP bin instance - */ - void addLspBin(int binNumber, IsisLspBin lspBin); - - /** - * Removes LSP from bin. - * - * @param lspWrapper LSP wrapper instance - */ - void removeLspFromBin(LspWrapper lspWrapper); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLspBin.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLspBin.java deleted file mode 100644 index 4c88d882b2..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisLspBin.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import java.util.Map; - -/** - * Representation of an ISIS LSP bin which is part of LSP aging process. - */ -public interface IsisLspBin { - - /** - * Returns all the LSPs in the bin. - * - * @return all LSPs in the bin - */ - Map listOfLsp(); - - /** - * Adds LSP to bin for aging. - * - * @param lspKey key to add the LSP - * @param lspWrapper LSP wrapper instance - */ - void addIsisLsp(String lspKey, LspWrapper lspWrapper); - - /** - * Removes LSP from bin. - * - * @param lspKey LSP key - * @param lspWrapper LSP wrapper instance - */ - void removeIsisLsp(String lspKey, LspWrapper lspWrapper); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisMessage.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisMessage.java deleted file mode 100644 index de823f2303..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisMessage.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.MacAddress; - -/** - * Representation of an ISIS Message. - */ -public interface IsisMessage { - - /** - * Returns the interface index on which the message received. - * - * @return interface index on which the message received - */ - int interfaceIndex(); - - /** - * Sets the interface index on which the message received. - * - * @param interfaceIndex interface index on which the message received - */ - void setInterfaceIndex(int interfaceIndex); - - /** - * Returns the interface mac address on which the message received. - * - * @return interface mac address on which the message received - */ - MacAddress interfaceMac(); - - /** - * Sets the interface mac address on which the message received. - * - * @param interfaceMac mac address on which the message received - */ - void setInterfaceMac(MacAddress interfaceMac); - - /** - * Returns the mac address of the message sender. - * - * @return mac address of the message sender - */ - MacAddress sourceMac(); - - /** - * Sets the mac address of the message sender. - * - * @param sourceMac mac address of the message sender - */ - void setSourceMac(MacAddress sourceMac); - - /** - * Returns the type of ISIS PDU. - * - * @return ISIS PDU type instance - */ - IsisPduType isisPduType(); - - /** - * Reads from channel buffer and initializes the type of PDU. - * - * @param channelBuffer channel buffer instance - */ - void readFrom(ChannelBuffer channelBuffer); - - /** - * Returns IsisMessage as byte array. - * - * @return ISIS message as bytes - */ - byte[] asBytes(); -} diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNeighbor.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNeighbor.java deleted file mode 100644 index 170f874d08..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNeighbor.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import org.onlab.packet.MacAddress; - -/** - * Representation of an ISIS neighbor. - */ -public interface IsisNeighbor { - - /** - * Returns the MAC address of neighbor. - * - * @return MAC address of neighbor - */ - MacAddress neighborMacAddress(); - - /** - * Returns the neighbor interface state. - * - * @return neighbor interface state - */ - IsisInterfaceState interfaceState(); - - /** - * Sets the neighbor interface state. - * - * @param interfaceState the neighbor interface state - */ - void setNeighborState(IsisInterfaceState interfaceState); - - /** - * Sets the LAN ID. - * - * @param l1LanId LAN ID - */ - void setL1LanId(String l1LanId); - - /** - * Sets the LAN ID. - * - * @param l2LanId LAN ID - */ - void setL2LanId(String l2LanId); - - /** - * Returns neighbor system ID. - * - * @return neighbor system ID - */ - String neighborSystemId(); - - /** - * Returns neighbor circuit ID. - * - * @return neighbor circuit ID - */ - byte localCircuitId(); - - /** - * Returns neighbor extended circuit ID. - * - * @return neighbor extended circuit ID - */ - int localExtendedCircuitId(); - - /** - * Sets neighbor extended circuit ID. - * - * @param localExtendedCircuitId neighbor extended circuit ID - */ - void setLocalExtendedCircuitId(int localExtendedCircuitId); - - /** - * Returns Holding time of neighbor. - * - * @return Holding time of neighbor - */ - int holdingTime(); - - /** - * Sets Holding time of neighbor. - * - * @param holdingTime Holding time of neighbor - */ - void setHoldingTime(int holdingTime); - - /** - * Starts the inactivity timer for this neighbor. - */ - void startInactivityTimeCheck(); - - /** - * Stops the inactivity timer. - */ - void stopInactivityTimeCheck(); - - /** - * Stops the holding time check timer. - */ - void stopHoldingTimeCheck(); - - /** - * Returns router type. - * - * @return router type - */ - IsisRouterType routerType(); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNetworkType.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNetworkType.java deleted file mode 100644 index 7e21f3f769..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisNetworkType.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; - -/** - * Represents ISIS network types. - */ -public enum IsisNetworkType { - /** - * Represents point-to-point network. - */ - P2P(1), - /** - * Represents broadcast network. - */ - BROADCAST(2); - // Reverse lookup table - private static final Map LOOKUP = new HashMap<>(); - - // Populate the lookup table on loading time - static { - for (IsisNetworkType isisNetworkType : EnumSet.allOf(IsisNetworkType.class)) { - LOOKUP.put(isisNetworkType.value(), isisNetworkType); - } - } - - private int value; - - /** - * Creates an instance of ISIS network type. - * - * @param value represents ISIS network type - */ - private IsisNetworkType(int value) { - this.value = value; - } - - /** - * Gets the enum instance from type value - reverse lookup purpose. - * - * @param isisNetworkTypeValue interface network type value - * @return ISIS interface network type instance - */ - public static IsisNetworkType get(int isisNetworkTypeValue) { - return LOOKUP.get(isisNetworkTypeValue); - } - - /** - * Gets the value representing network type. - * - * @return value represents network type - */ - public int value() { - return value; - } -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisPduType.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisPduType.java deleted file mode 100644 index 0169529141..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisPduType.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; - -/** - * Representation of ISIS PDU types. - */ -public enum IsisPduType { - - /** - * Represents Level-1 LAN hello packet. - */ - L1HELLOPDU(15), - /** - * Represents Level-2 LAN hello packet. - */ - L2HELLOPDU(16), - /** - * Represents point-to-point hello packet. - */ - P2PHELLOPDU(17), - /** - * Represents Level-1 link state packet. - */ - L1LSPDU(18), - /** - * Represents Level-2 link state packet. - */ - L2LSPDU(20), - /** - * Represents Level-1 complete sequence number packet. - */ - L1CSNP(24), - /** - * Represents Level-2 complete sequence number packet. - */ - L2CSNP(25), - /** - * Represents Level-1 partial sequence number packet. - */ - L1PSNP(26), - /** - * Represents Level-2 partial sequence number packet. - */ - L2PSNP(27); - - // Reverse lookup table - private static final Map LOOKUP = new HashMap<>(); - - // Populate the lookup table on loading time - static { - for (IsisPduType isisPduType : EnumSet.allOf(IsisPduType.class)) { - LOOKUP.put(isisPduType.value(), isisPduType); - } - } - - private int value; - - /** - * Creates an instance of ISIS PDU type. - * - * @param value represents ISIS PDU type - */ - private IsisPduType(int value) { - this.value = value; - } - - /** - * Gets the enum instance from type value - reverse lookup purpose. - * - * @param pduTypeValue PDU type value - * @return ISIS PDU type instance - */ - public static IsisPduType get(int pduTypeValue) { - return LOOKUP.get(pduTypeValue); - } - - /** - * Gets the value representing PDU type. - * - * @return value represents PDU type - */ - public int value() { - return value; - } -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisProcess.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisProcess.java deleted file mode 100644 index 2f11c961fd..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisProcess.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import java.util.List; - -/** - * Representation of an ISIS process. - */ -public interface IsisProcess { - - /** - * Returns process ID. - * - * @return process ID - */ - public String processId(); - - /** - * Sets process ID. - * - * @param processId process ID - */ - void setProcessId(String processId); - - /** - * Sets list of ISIS interfaces. - * - * @param isisInterfaceList list of ISIS interface details - */ - void setIsisInterfaceList(List isisInterfaceList); - - /** - * Returns list of ISIS interface details. - * - * @return list of ISIS interface details - */ - List isisInterfaceList(); -} diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisRouterType.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisRouterType.java deleted file mode 100644 index 1a4ada9b0e..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/IsisRouterType.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; - -/** - * Representation of ISIS router types. - */ -public enum IsisRouterType { - /** - * Represents ISIS L1 router. - */ - L1(1), - /** - * Represents ISIS L2 router. - */ - L2(2), - /** - * Represents ISIS L1/L2 router. - */ - L1L2(3); - // Reverse lookup table - private static final Map LOOKUP = new HashMap<>(); - - // Populate the lookup table on loading time - static { - for (IsisRouterType isisRouterType : EnumSet.allOf(IsisRouterType.class)) { - LOOKUP.put(isisRouterType.value(), isisRouterType); - } - } - - private int value; - - /** - * Creates an instance of ISIS router type. - * - * @param value represents ISIS router type - */ - private IsisRouterType(int value) { - this.value = value; - } - - /** - * Gets the enum instance from type value - reverse lookup purpose. - * - * @param routerTypeValue router type value - * @return ISIS router type instance - */ - public static IsisRouterType get(int routerTypeValue) { - return LOOKUP.get(routerTypeValue); - } - - /** - * Gets the value representing router type. - * - * @return value represents router type - */ - public int value() { - return value; - } -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/LspWrapper.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/LspWrapper.java deleted file mode 100644 index 9d5f124969..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/LspWrapper.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller; - -/** - * Representation of a LSP wrapper. - */ -public interface LspWrapper { - - /** - * Returns bin number into which the LSP wrapper is put for aging process. - * - * @return bin number - */ - int binNumber(); - - /** - * Sets bin number into which the LSP wrapper is put for aging process. - * - * @param binNumber bin number - */ - void setBinNumber(int binNumber); - - /** - * Checks the contained LSP is self originated or not. - * - * @return true if self originated else false - */ - boolean isSelfOriginated(); - - /** - * Sets the contained LSP is self originated or not. - * - * @param selfOriginated true if self originated else false - */ - void setSelfOriginated(boolean selfOriginated); - - /** - * Returns the LSP type. - * - * @return LSP type - */ - IsisPduType lspType(); - - /** - * Returns the LSPs remaining life time. - * - * @return LSPs remaining life time. - */ - int remainingLifetime(); - - /** - * Returns the age counter value when LSP was received. - * - * @return age counter value when LSP was received - */ - int ageCounterWhenReceived(); - - /** - * Returns the age counter roll over value when LSP was added to wrapper instance. - * - * @return age counter roll over value when LSP was added to wrapper instance - */ - int ageCounterRollOverWhenAdded(); - - /** - * Returns the LSP instance stored in wrapper. - * - * @return LSP instance stored in wrapper - */ - IsisMessage lsPdu(); - - /** - * Sets LSPs remaining life time. - * - * @param remainingLifetime LSPs remaining life time - */ - void setRemainingLifetime(int remainingLifetime); - - /** - * Returns the age of LSP when received. - * - * @return age of LSP when received - */ - int lspAgeReceived(); - - /** - * Returns the LSP processing string. - * - * @return lsp processing value for switch case - */ - String lspProcessing(); - - /** - * Returns ISIS interface instance. - * - * @return ISIS interface instance - */ - IsisInterface isisInterface(); - - /** - * Returns the current LSP age. - * - * @return LSP age - */ - int currentAge(); - - /** - * Sets the LSP processing string based on LSP to process. - * - * @param lspProcessing "refreshLsp" or "maxageLsp" based on LSP to process - */ - void setLspProcessing(String lspProcessing); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/package-info.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/package-info.java deleted file mode 100644 index 27b70158da..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS controller. - */ -package org.onosproject.isis.controller; \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/DeviceInformation.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/DeviceInformation.java deleted file mode 100644 index 68ae75bf33..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/DeviceInformation.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.topology; - -import org.onlab.packet.Ip4Address; - -/** - * Representation of an ISIS device information. - */ -public interface DeviceInformation { - - /** - * Gets system id. - * - * @return system id - */ - String systemId(); - - /** - * Sets system id. - * - * @param systemId system id - */ - void setSystemId(String systemId); - - /** - * Gets interface ids. - * - * @return interface ids - */ - Ip4Address interfaceId(); - - /** - * Sets interface id. - * - * @param interfaceId interface id - */ - void setInterfaceId(Ip4Address interfaceId); - - /** - * Gets area id. - * - * @return area id - */ - String areaId(); - - /** - * Sets area id. - * - * @param areaId area id - */ - void setAreaId(String areaId); - - /** - * Gets device information is already created or not. - * - * @return true if device information is already created else false - */ - boolean isAlreadyCreated(); - - /** - * Sets device information is already created or not. - * - * @param alreadyCreated true if device information is already created else false - */ - void setAlreadyCreated(boolean alreadyCreated); - - /** - * Gets device is dis or not. - * - * @return true if device is dis else false - */ - boolean isDis(); - - /** - * Sets device is dis or not. - * - * @param dis true if device is dr else false - */ - void setDis(boolean dis); - - /** - * Gets neighbor id. - * - * @return neighbor id - */ - String neighborId(); - - /** - * Sets neighbor id. - * - * @param neighborId neighbor id - */ - void setNeighborId(String neighborId); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisAgent.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisAgent.java deleted file mode 100644 index 07b0f150ab..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisAgent.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.controller.topology; - -/** - * Representation of an ISIS agent. - * It is responsible for keeping track of the current set of routers - * connected to the system. - */ -public interface IsisAgent { - /** - * Adds a router that has just connected to the system. - * - * @param isisRouter the router id to add - * @return true if added, false otherwise - */ - boolean addConnectedRouter(IsisRouter isisRouter); - - /** - * Removes the router which got disconnected from the system. - * - * @param isisRouter the router id to remove - */ - void removeConnectedRouter(IsisRouter isisRouter); - - /** - * Notifies that got a packet of link from network and need do processing. - * - * @param isisLink link instance - */ - void addLink(IsisLink isisLink); - - /** - * Notifies that got a packet of link from network and need do processing. - * - * @param isisLink link instance - */ - void deleteLink(IsisLink isisLink); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLink.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLink.java deleted file mode 100644 index ff8e532ed8..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLink.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.topology; - -import org.onlab.packet.Ip4Address; - -/** - * Abstraction of an ISIS Link. - */ -public interface IsisLink { - - /** - * Returns the remote system ID. - * - * @return remote system ID - */ - String remoteSystemId(); - - /** - * Returns the local system ID. - * - * @return local system ID - */ - String localSystemId(); - - /** - * Returns IP address of the interface. - * - * @return IP address of the interface - */ - Ip4Address interfaceIp(); - - /** - * Returns IP address of the neighbor. - * - * @return IP address of the neighbor - */ - Ip4Address neighborIp(); - - /** - * Returns the link TED details. - * - * @return linkTed link TED - */ - IsisLinkTed linkTed(); - - /** - * Sets remote system ID. - * - * @param remoteSystemId remote system ID - */ - void setRemoteSystemId(String remoteSystemId); - - /** - * Sets local system ID. - * - * @param localSystemId remote system ID - */ - void setLocalSystemId(String localSystemId); - - /** - * Sets IP address of the interface. - * - * @param interfaceIp IP address of the interface - */ - void setInterfaceIp(Ip4Address interfaceIp); - - /** - * Sets IP address of the neighbor. - * - * @param neighborIp IP address of the neighbor - */ - void setNeighborIp(Ip4Address neighborIp); - - /** - * Sets the link TED information. - * - * @param linkTed link TED - */ - void setLinkTed(IsisLinkTed linkTed); -} diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkListener.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkListener.java deleted file mode 100644 index abf0b82ce2..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkListener.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.topology; - -/** - * Abstraction of an ISIS link listener. - */ -public interface IsisLinkListener { - - /** - * Notifies that we got a link from network. - * - * @param isisLink link instance - */ - void addLink(IsisLink isisLink); - - /** - * Notifies that a link got removed from network. - * - * @param isisLink link instance - */ - void deleteLink(IsisLink isisLink); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkTed.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkTed.java deleted file mode 100644 index 8e1461dceb..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkTed.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.topology; - -import org.onlab.packet.Ip4Address; -import org.onlab.util.Bandwidth; - -import java.util.List; - -/** - * Representation of ISIS link traffic engineering parameters. - */ -public interface IsisLinkTed { - - /** - * Gets the administrative group. - * - * @return administrative group - */ - int administrativeGroup(); - - /** - * Sets the administrative group. - * - * @param administrativeGroup administrative group - */ - void setAdministrativeGroup(int administrativeGroup); - - /** - * Provides the IPv4 interface address. - * - * @return IPv4 interface address - */ - Ip4Address ipv4InterfaceAddress(); - - /** - * Sets the IPv4 interface address. - * - * @param interfaceAddress IPv4 interface address - */ - void setIpv4InterfaceAddress(Ip4Address interfaceAddress); - - /** - * Provides the IPv4 neighbor address. - * - * @return IPv4 neighbor address - */ - Ip4Address ipv4NeighborAddress(); - - /** - * Sets the IPv4 neighbor address. - * - * @param neighborAddress IPv4 neighbor address - */ - void setIpv4NeighborAddress(Ip4Address neighborAddress); - - /** - * Gets the maximum link bandwidth. - * - * @return maximum link bandwidth - */ - Bandwidth maximumLinkBandwidth(); - - /** - * Sets the maximum link bandwidth. - * - * @param bandwidth maximum link bandwidth - */ - void setMaximumLinkBandwidth(Bandwidth bandwidth); - - /** - * Provides max bandwidth that can be reservable on the link. - * - * @return max bandwidth reservable - */ - Bandwidth maximumReservableLinkBandwidth(); - - /** - * Sets max bandwidth that can be reservable on the link. - * - * @param bandwidth max bandwidth that can be reservable on the link - */ - void setMaximumReservableLinkBandwidth(Bandwidth bandwidth); - - /** - * Amount of bandwidth unreserved on the link. - * - * @return unreserved bandwidth - */ - List unreservedBandwidth(); - - /** - * Sets the bandwidth unreserved on the link. - * - * @param bandwidth bandwidth unreserved - */ - void setUnreservedBandwidth(List bandwidth); - - /** - * Provides Traffic Engineering metric for the link. - * - * @return Traffic Engineering Default metric - */ - long teDefaultMetric(); - - /** - * Sets Traffic Engineering metric for the link. - * - * @param teMetric Traffic Engineering Default metric for the link - */ - void setTeDefaultMetric(long teMetric); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouter.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouter.java deleted file mode 100644 index 7823ae4bbb..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouter.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.topology; - -import org.onlab.packet.Ip4Address; - -/** - * Abstraction of an ISIS Router. - */ -public interface IsisRouter { - - /** - * Returns system ID for the router. - * - * @return system ID of the router - */ - String systemId(); - - /** - * Returns IP address of the interface. - * - * @return IP address of the interface - */ - Ip4Address interfaceId(); - - /** - * Gets IP address of the interface. - * - * @param interfaceId IP address of the interface - */ - void setInterfaceId(Ip4Address interfaceId); - - /** - * Sets system ID of the Router. - * - * @param systemId system ID of the router - */ - void setSystemId(String systemId); - - /** - * Gets neighbours ID. - * - * @return neighbour ID - */ - Ip4Address neighborRouterId(); - - /** - * Sets the neighbour Id. - * - * @param neighbourId neighbour Id - */ - void setNeighborRouterId(Ip4Address neighbourId); - - /** - * Gets if the router id DIS or not. - * - * @return true if the router is DIS else false - */ - boolean isDis(); - - /** - * Sets if the router id DIS or not. - * - * @param dis true if the router is DIS else false - */ - void setDis(boolean dis); -} diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterId.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterId.java deleted file mode 100644 index e45b659e21..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterId.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.controller.topology; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Represents an ISIS router id. - */ -public class IsisRouterId { - - private static final String SCHEME = "l3"; - private static final long UNKNOWN = 0; - private final String ipAddress; - - /** - * Creates an instance of ISIS router id. - * - * @param ipAddress IP address of the router - */ - public IsisRouterId(String ipAddress) { - this.ipAddress = ipAddress; - } - - /** - * Creates an instance from ip address. - * - * @param ipAddress IP address - * @return ISIS router id instance - */ - public static IsisRouterId isisRouterId(String ipAddress) { - return new IsisRouterId(ipAddress); - } - - /** - * Creates ISIS router id instance from the URI. - * - * @param uri device URI - * @return ISIS router id instance - */ - public static IsisRouterId isisRouterId(URI uri) { - checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme"); - return new IsisRouterId(uri.getSchemeSpecificPart()); - } - - /** - * Returns device URI from the given router id. - * - * @param isisRouterId router id instance - * @return device URI - */ - public static URI uri(IsisRouterId isisRouterId) { - return uri(isisRouterId.ipAddress()); - } - - /** - * Returns device URI from the given IP address. - * - * @param ipAddress device IP address - * @return device URI - */ - public static URI uri(String ipAddress) { - try { - return new URI(SCHEME, ipAddress, null); - } catch (URISyntaxException e) { - return null; - } - } - - /** - * Returns the IP address. - * - * @return IP address - */ - public String ipAddress() { - return ipAddress; - } - - @Override - public String toString() { - return ipAddress; - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof IsisRouterId)) { - return false; - } - - IsisRouterId otherIsisRouterId = (IsisRouterId) other; - return Objects.equals(ipAddress, otherIsisRouterId.ipAddress); - } - - @Override - public int hashCode() { - return Objects.hash(ipAddress); - } -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterListener.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterListener.java deleted file mode 100644 index d42b23ecb4..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisRouterListener.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.topology; - -/** - * Abstraction of an ISIS Router Listener. - * Allows for providers interested in switch events to be notified. - */ -public interface IsisRouterListener { - - /** - * Notifies that a router is added. - * - * @param isisRouter ISIS router instance - */ - void routerAdded(IsisRouter isisRouter); - - /** - * Notifies that a router is removed. - * - * @param isisRouter ISIS router instance - */ - void routerRemoved(IsisRouter isisRouter); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/LinkInformation.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/LinkInformation.java deleted file mode 100644 index 573e5eff8d..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/LinkInformation.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.topology; - -import org.onlab.packet.Ip4Address; - -/** - * Representation of an ISIS link information. - */ -public interface LinkInformation { - - /** - * Gets link id. - * - * @return link id - */ - String linkId(); - - /** - * Sets link id. - * - * @param linkId link id - */ - void setLinkId(String linkId); - - /** - * Gets whether link information is already created or not. - * - * @return true if link information is already created else false - */ - boolean isAlreadyCreated(); - - /** - * Sets link information is already created or not. - * - * @param alreadyCreated true if link information is already created else false - */ - void setAlreadyCreated(boolean alreadyCreated); - - - /** - * Returns link destination ID. - * - * @return link destination ID - */ - String linkDestinationId(); - - /** - * Sets link destination id. - * - * @param linkDestinationId link destination id - */ - void setLinkDestinationId(String linkDestinationId); - - /** - * Gets link source id. - * - * @return link source id - */ - String linkSourceId(); - - /** - * Sets link source id. - * - * @param linkSourceId link source id - */ - void setLinkSourceId(String linkSourceId); - - /** - * Gets interface ip address. - * - * @return interface ip address - */ - Ip4Address interfaceIp(); - - /** - * Sets interface ip address. - * - * @param interfaceIp interface ip address - */ - void setInterfaceIp(Ip4Address interfaceIp); - - /** - * Gets neighbor ip address. - * - * @return neighbor ip address - */ - Ip4Address neighborIp(); - - /** - * Sets neighbor ip address. - * - * @param neighborIp neighbor ip address - */ - void setNeighborIp(Ip4Address neighborIp); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/TopologyForDeviceAndLink.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/TopologyForDeviceAndLink.java deleted file mode 100644 index 3a61b2b49c..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/TopologyForDeviceAndLink.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.topology; - -import java.util.Map; - -/** - * Represents IP topology for ISIS device and link details. - */ -public interface TopologyForDeviceAndLink { - - /** - * Gets the device information. - * - * @return device information - */ - Map deviceInformationMap(); - - /** - * Sets the device information. - * - * @param key system ID of the device as key - * @param deviceInformationMap device information instance - */ - void setDeviceInformationMap(String key, DeviceInformation deviceInformationMap); - - /** - * Gets the link information. - * - * @return link information - */ - Map linkInformationMap(); - - /** - * Sets link information. - * - * @param key system ID of the device as key - * @param linkInformationMap link information instance - */ - void setLinkInformationMap(String key, LinkInformation linkInformationMap); - - /** - * Removes link information. - * - * @param key key used to remove from map - */ - void removeLinkInformationMap(String key); - - /** - * Removes device information. - * - * @param key key used to remove from map - */ - void removeDeviceInformationMap(String key); - - /** - * Removes links from linkInformationMap. - * - * @param linkId ID - */ - void removeLinks(String linkId); - - /** - * Gets deviceInformation as map. - * - * @return deviceInformationMap to delete from core - */ - Map deviceInformationMapToDelete(); - - /** - * Sets deviceInformation as map. - * - * @param key key used to add in map - * @param deviceInformationMapToDelete device information to delete from map - */ - void setDeviceInformationMapToDelete(String key, DeviceInformation deviceInformationMapToDelete); - - /** - * Removes Device Information from deviceInformationMapToDelete. - * - * @param key key to remove from map - */ - void removeDeviceInformationMapFromDeleteMap(String key); - - /** - * Gets deviceInformation as map for Point-To-Point. - * - * @return deviceInformationMap - */ - Map deviceInformationMapForPointToPoint(); - - /** - * Sets deviceInformation as map for Point-To-Point.. - * - * @param key key to add to map - * @param deviceInformationMap device information map - */ - void setDeviceInformationMapForPointToPoint(String key, DeviceInformation deviceInformationMap); - - /** - * Gets linkInformation as map for PointToPoint. - * - * @return linkInformationMap - */ - Map linkInformationMapForPointToPoint(); - - /** - * Sets linkInformation as map for PointToPoint. - * - * @param key key to add link information to map - * @param linkInformationMap link information to add - */ - void setLinkInformationMapForPointToPoint(String key, LinkInformation linkInformationMap); -} \ No newline at end of file diff --git a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/package-info.java b/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/package-info.java deleted file mode 100644 index cc563b8fe2..0000000000 --- a/protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS topology provider. - */ -package org.onosproject.isis.controller.topology; \ No newline at end of file diff --git a/protocols/isis/ctl/BUILD b/protocols/isis/ctl/BUILD deleted file mode 100644 index 950f04368f..0000000000 --- a/protocols/isis/ctl/BUILD +++ /dev/null @@ -1,9 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [ - "@io_netty_netty//jar", - "//protocols/isis/api:onos-protocols-isis-api", - "//protocols/isis/isisio:onos-protocols-isis-isisio", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/Controller.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/Controller.java deleted file mode 100644 index 381109eb5f..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/Controller.java +++ /dev/null @@ -1,598 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import org.jboss.netty.bootstrap.ClientBootstrap; -import org.jboss.netty.channel.AdaptiveReceiveBufferSizePredictor; -import org.jboss.netty.channel.ChannelFuture; -import org.jboss.netty.channel.ChannelFutureListener; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.FixedReceiveBufferSizePredictorFactory; -import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onlab.packet.TpPort; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisNetworkType; -import org.onosproject.isis.controller.IsisProcess; -import org.onosproject.isis.controller.IsisRouterType; -import org.onosproject.isis.controller.topology.IsisAgent; -import org.onosproject.isis.controller.topology.IsisLink; -import org.onosproject.isis.controller.topology.IsisRouter; -import org.onosproject.isis.io.util.IsisConstants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.NetworkInterface; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -import static org.onlab.util.Tools.groupedThreads; - -/** - * Representation of an ISIS controller. - */ -public class Controller { - protected static final int BUFFER_SIZE = 4 * 1024 * 1024; - private static final Logger log = LoggerFactory.getLogger(Controller.class); - private static final int RETRY_INTERVAL = 4; - private final int peerWorkerThreads = 16; - byte[] configPacket = null; - private List processes = null; - private IsisChannelHandler isisChannelHandler; - private NioClientSocketChannelFactory peerExecFactory; - private ClientBootstrap peerBootstrap = null; - private TpPort isisPort = TpPort.tpPort(IsisConstants.SPORT); - private ScheduledExecutorService connectExecutor = null; - private int connectRetryCounter = 0; - private int connectRetryTime; - private ScheduledFuture future = null; - private IsisAgent agent; - - /** - * Deactivates ISIS controller. - */ - public void isisDeactivate() { - disconnectExecutor(); - processes = null; - if (peerExecFactory != null) { - peerExecFactory.shutdown(); - } - } - - /** - * Sets ISIS agent. - * - * @param agent ISIS agent instance - */ - public void setAgent(IsisAgent agent) { - this.agent = agent; - } - - - /** - * Updates the processes configuration. - * - * @param jsonNode json node instance - */ - public void updateConfig(JsonNode jsonNode) { - log.debug("Controller::UpdateConfig called"); - configPacket = new byte[IsisConstants.CONFIG_LENGTH]; - byte numberOfInterface = 0; // number of interfaces to configure - - configPacket[0] = (byte) 0xFF; // its a conf packet - identifier - List isisProcesses = getConfig(jsonNode); - for (IsisProcess isisProcess : isisProcesses) { - log.debug("IsisProcessDetails : " + isisProcess); - for (IsisInterface isisInterface : isisProcess.isisInterfaceList()) { - DefaultIsisInterface isisInterfaceImpl = (DefaultIsisInterface) isisInterface; - log.debug("IsisInterfaceDetails : " + isisInterface); - numberOfInterface++; - configPacket[2 * numberOfInterface] = (byte) isisInterfaceImpl.interfaceIndex(); - if (isisInterface.networkType() == IsisNetworkType.BROADCAST && - isisInterfaceImpl.reservedPacketCircuitType() == IsisRouterType.L1.value()) { - configPacket[(2 * numberOfInterface) + 1] = (byte) 0; - } else if (isisInterface.networkType() == IsisNetworkType.BROADCAST && - isisInterfaceImpl.reservedPacketCircuitType() == IsisRouterType.L2.value()) { - configPacket[(2 * numberOfInterface) + 1] = (byte) 1; - } else if (isisInterface.networkType() == IsisNetworkType.P2P) { - configPacket[(2 * numberOfInterface) + 1] = (byte) 2; - } else if (isisInterface.networkType() == IsisNetworkType.BROADCAST && - isisInterfaceImpl.reservedPacketCircuitType() == IsisRouterType.L1L2.value()) { - configPacket[(2 * numberOfInterface) + 1] = (byte) 3; - } - } - } - configPacket[1] = numberOfInterface; - //First time configuration - if (processes == null) { - if (!isisProcesses.isEmpty()) { - processes = isisProcesses; - connectPeer(); - } - } else { - isisChannelHandler.updateInterfaceMap(isisProcesses); - //Send the config packet - isisChannelHandler.sentConfigPacket(configPacket); - } - } - - /** - * Initializes the netty client channel connection. - */ - private void initConnection() { - if (peerBootstrap != null) { - return; - } - peerBootstrap = createPeerBootStrap(); - - peerBootstrap.setOption("reuseAddress", true); - peerBootstrap.setOption("tcpNoDelay", true); - peerBootstrap.setOption("keepAlive", true); - peerBootstrap.setOption("receiveBufferSize", Controller.BUFFER_SIZE); - peerBootstrap.setOption("receiveBufferSizePredictorFactory", - new FixedReceiveBufferSizePredictorFactory( - Controller.BUFFER_SIZE)); - peerBootstrap.setOption("receiveBufferSizePredictor", - new AdaptiveReceiveBufferSizePredictor(64, 1024, 65536)); - peerBootstrap.setOption("child.keepAlive", true); - peerBootstrap.setOption("child.tcpNoDelay", true); - peerBootstrap.setOption("child.sendBufferSize", Controller.BUFFER_SIZE); - peerBootstrap.setOption("child.receiveBufferSize", Controller.BUFFER_SIZE); - peerBootstrap.setOption("child.receiveBufferSizePredictorFactory", - new FixedReceiveBufferSizePredictorFactory( - Controller.BUFFER_SIZE)); - peerBootstrap.setOption("child.reuseAddress", true); - - isisChannelHandler = new IsisChannelHandler(this, processes); - ChannelPipelineFactory pfact = new IsisPipelineFactory(isisChannelHandler); - peerBootstrap.setPipelineFactory(pfact); - } - - /** - * Creates peer boot strap. - * - * @return client bootstrap instance - */ - private ClientBootstrap createPeerBootStrap() { - - if (peerWorkerThreads == 0) { - peerExecFactory = new NioClientSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/isis", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/isis", "worker-%d"))); - return new ClientBootstrap(peerExecFactory); - } else { - peerExecFactory = new NioClientSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/isis", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/isis", "worker-%d")), - peerWorkerThreads); - return new ClientBootstrap(peerExecFactory); - } - } - - /** - * Gets all configured processes. - * - * @return all configured processes - */ - public List getAllConfiguredProcesses() { - return processes; - } - - /** - * Gets the list of processes configured. - * - * @param json posted json - * @return list of processes configured - */ - private List getConfig(JsonNode json) { - List isisProcessesList = new ArrayList<>(); - JsonNode jsonNodes = json; - if (jsonNodes == null) { - return isisProcessesList; - } - jsonNodes.forEach(jsonNode -> { - List interfaceList = new ArrayList<>(); - for (JsonNode jsonNode1 : jsonNode.path(IsisConstants.INTERFACE)) { - IsisInterface isisInterface = new DefaultIsisInterface(); - String index = jsonNode1.path(IsisConstants.INTERFACEINDEX).asText(); - if (isPrimitive(index)) { - int input = Integer.parseInt(index); - if (input < 1 || input > 255) { - log.debug("Wrong interface index: {}", index); - continue; - } - isisInterface.setInterfaceIndex(Integer.parseInt(index)); - } else { - log.debug("Wrong interface index {}", index); - continue; - } - Ip4Address ipAddress = getInterfaceIp(isisInterface.interfaceIndex()); - if (ipAddress != null && !ipAddress.equals(IsisConstants.DEFAULTIP)) { - isisInterface.setInterfaceIpAddress(ipAddress); - } else { - log.debug("Wrong interface index {}. No matching interface in system.", index); - continue; - } - MacAddress macAddress = getInterfaceMac(isisInterface.interfaceIndex()); - if (macAddress != null) { - isisInterface.setInterfaceMacAddress(macAddress); - } else { - log.debug("Wrong interface index {}. No matching interface in system.", index); - continue; - } - String mask = getInterfaceMask(isisInterface.interfaceIndex()); - if (mask != null) { - try { - isisInterface.setNetworkMask(InetAddress.getByName(mask).getAddress()); - } catch (UnknownHostException e) { - log.debug("Wrong interface index {}. Error while getting network mask.", index); - } - } else { - log.debug("Wrong interface index {}. Error while getting network mask.", index); - continue; - } - isisInterface.setIntermediateSystemName(jsonNode1 - .path(IsisConstants.INTERMEDIATESYSTEMNAME) - .asText()); - String systemId = jsonNode1.path(IsisConstants.SYSTEMID).asText(); - if (isValidSystemId(systemId)) { - isisInterface.setSystemId(systemId); - } else { - log.debug("Wrong systemId: {} for interface index {}.", systemId, index); - continue; - } - String circuitType = jsonNode1.path(IsisConstants.RESERVEDPACKETCIRCUITTYPE).asText(); - if (isPrimitive(circuitType)) { - int input = Integer.parseInt(circuitType); - if (input < 1 || input > 3) { - log.debug("Wrong ReservedPacketCircuitType: {} for interface index {}.", circuitType, index); - continue; - } - isisInterface.setReservedPacketCircuitType(input); - } else { - log.debug("Wrong ReservedPacketCircuitType: {} for interface index {}.", circuitType, index); - continue; - } - String networkType = jsonNode1.path(IsisConstants.NETWORKTYPE).asText(); - if (isPrimitive(networkType)) { - int input = Integer.parseInt(networkType); - if (input < 1 || input > 2) { - log.debug("Wrong networkType: {} for interface index {}.", networkType, index); - continue; - } - isisInterface.setNetworkType(IsisNetworkType.get(input)); - } else { - log.debug("Wrong networkType: {} for interface index {}.", networkType, index); - continue; - } - String areaAddress = jsonNode1.path(IsisConstants.AREAADDRESS).asText(); - if (isPrimitive(areaAddress)) { - if (areaAddress.length() > 7) { - log.debug("Wrong areaAddress: {} for interface index {}.", areaAddress, index); - continue; - } - isisInterface.setAreaAddress(areaAddress); - } else { - log.debug("Wrong areaAddress: {} for interface index {}.", areaAddress, index); - continue; - } - String circuitId = jsonNode1.path(IsisConstants.CIRCUITID).asText(); - if (isPrimitive(circuitId)) { - int input = Integer.parseInt(circuitId); - if (input < 1) { - log.debug("Wrong circuitId: {} for interface index {}.", circuitId, index); - continue; - } - isisInterface.setCircuitId(circuitId); - } else { - log.debug("Wrong circuitId: {} for interface index {}.", circuitId, index); - continue; - } - String holdingTime = jsonNode1.path(IsisConstants.HOLDINGTIME).asText(); - if (isPrimitive(holdingTime)) { - int input = Integer.parseInt(holdingTime); - if (input < 1 || input > 255) { - log.debug("Wrong holdingTime: {} for interface index {}.", holdingTime, index); - continue; - } - isisInterface.setHoldingTime(input); - } else { - log.debug("Wrong holdingTime: {} for interface index {}.", holdingTime, index); - continue; - } - String helloInterval = jsonNode1.path(IsisConstants.HELLOINTERVAL).asText(); - if (isPrimitive(helloInterval)) { - int interval = Integer.parseInt(helloInterval); - if (interval > 0 && interval <= 255) { - isisInterface.setHelloInterval(interval); - } else { - log.debug("Wrong hello interval: {} for interface index {}.", helloInterval, index); - continue; - } - } else { - log.debug("Wrong hello interval: {} for interface index {}.", helloInterval, index); - continue; - } - interfaceList.add(isisInterface); - } - if (!interfaceList.isEmpty()) { - IsisProcess process = new DefaultIsisProcess(); - process.setProcessId(jsonNode.path(IsisConstants.PROCESSESID).asText()); - process.setIsisInterfaceList(interfaceList); - isisProcessesList.add(process); - } - }); - - return isisProcessesList; - } - - /** - * Returns interface MAC by index. - * - * @param interfaceIndex interface index - * @return interface IP by index - */ - private MacAddress getInterfaceMac(int interfaceIndex) { - MacAddress macAddress = null; - try { - NetworkInterface networkInterface = NetworkInterface.getByIndex(interfaceIndex); - macAddress = MacAddress.valueOf(networkInterface.getHardwareAddress()); - } catch (Exception e) { - log.debug("Error while getting Interface IP by index"); - return macAddress; - } - - return macAddress; - } - - /** - * Returns interface IP by index. - * - * @param interfaceIndex interface index - * @return interface IP by index - */ - private Ip4Address getInterfaceIp(int interfaceIndex) { - Ip4Address ipAddress = null; - try { - NetworkInterface networkInterface = NetworkInterface.getByIndex(interfaceIndex); - Enumeration ipAddresses = networkInterface.getInetAddresses(); - while (ipAddresses.hasMoreElements()) { - InetAddress address = (InetAddress) ipAddresses.nextElement(); - if (!address.isLinkLocalAddress()) { - ipAddress = Ip4Address.valueOf(address.getAddress()); - break; - } - } - } catch (Exception e) { - log.debug("Error while getting Interface IP by index"); - return IsisConstants.DEFAULTIP; - } - return ipAddress; - } - - /** - * Returns interface MAC by index. - * - * @param interfaceIndex interface index - * @return interface IP by index - */ - private String getInterfaceMask(int interfaceIndex) { - String subnetMask = null; - try { - Ip4Address ipAddress = getInterfaceIp(interfaceIndex); - NetworkInterface networkInterface = NetworkInterface.getByInetAddress( - InetAddress.getByName(ipAddress.toString())); - Enumeration ipAddresses = networkInterface.getInetAddresses(); - int index = 0; - while (ipAddresses.hasMoreElements()) { - InetAddress address = (InetAddress) ipAddresses.nextElement(); - if (!address.isLinkLocalAddress()) { - break; - } - index++; - } - int prfLen = networkInterface.getInterfaceAddresses().get(index).getNetworkPrefixLength(); - int shft = 0xffffffff << (32 - prfLen); - int oct1 = ((byte) ((shft & 0xff000000) >> 24)) & 0xff; - int oct2 = ((byte) ((shft & 0x00ff0000) >> 16)) & 0xff; - int oct3 = ((byte) ((shft & 0x0000ff00) >> 8)) & 0xff; - int oct4 = ((byte) (shft & 0x000000ff)) & 0xff; - subnetMask = oct1 + "." + oct2 + "." + oct3 + "." + oct4; - } catch (Exception e) { - log.debug("Error while getting Interface network mask by index"); - return subnetMask; - } - return subnetMask; - } - - /** - * Checks if primitive or not. - * - * @param value input value - * @return true if number else false - */ - private boolean isPrimitive(String value) { - boolean status = true; - value = value.trim(); - if (value.length() < 1) { - return false; - } - for (int i = 0; i < value.length(); i++) { - char c = value.charAt(i); - if (!Character.isDigit(c)) { - status = false; - break; - } - } - - return status; - } - - /** - * Checks if system id is valid or not. - * - * @param value input value - * @return true if valid else false - */ - private boolean isValidSystemId(String value) { - value = value.trim(); - boolean status = true; - if (value.length() != 14) { - return false; - } - for (int i = 0; i < value.length(); i++) { - char c = value.charAt(i); - if (!Character.isDigit(c)) { - if (!((i == 4 || i == 9) && c == '.')) { - status = false; - break; - } - } - } - - return status; - } - - /** - * Disconnects the executor. - */ - public void disconnectExecutor() { - if (connectExecutor != null) { - future.cancel(true); - connectExecutor.shutdownNow(); - connectExecutor = null; - } - } - - /** - * Connects to peer. - */ - public void connectPeer() { - scheduleConnectionRetry(this.connectRetryTime); - } - - /** - * Retry connection with exponential back-off mechanism. - * - * @param retryDelay retry delay - */ - private void scheduleConnectionRetry(long retryDelay) { - if (connectExecutor == null) { - connectExecutor = Executors.newSingleThreadScheduledExecutor(); - } - future = connectExecutor.schedule(new ConnectionRetry(), retryDelay, TimeUnit.MINUTES); - } - - /** - * Adds device details. - * - * @param isisRouter ISIS router instance - */ - public void addDeviceDetails(IsisRouter isisRouter) { - agent.addConnectedRouter(isisRouter); - } - - /** - * Removes device details. - * - * @param isisRouter Isis router instance - */ - public void removeDeviceDetails(IsisRouter isisRouter) { - agent.removeConnectedRouter(isisRouter); - } - - /** - * Adds link details. - * - * @param isisLink ISIS link instance - */ - public void addLinkDetails(IsisLink isisLink) { - agent.addLink(isisLink); - } - - /** - * Removes link details. - * - * @param isisLink ISIS link instance - */ - public void removeLinkDetails(IsisLink isisLink) { - agent.deleteLink(isisLink); - } - - /** - * Returns the isisAgent instance. - * - * @return agent - */ - public IsisAgent agent() { - return this.agent; - } - - /** - * Implements ISIS connection and manages connection to peer with back-off mechanism in case of failure. - */ - class ConnectionRetry implements Runnable { - @Override - public void run() { - log.debug("Connect to peer {}", IsisConstants.SHOST); - initConnection(); - isisChannelHandler.sentConfigPacket(configPacket); - InetSocketAddress connectToSocket = new InetSocketAddress(IsisConstants.SHOST, isisPort.toInt()); - try { - peerBootstrap.connect(connectToSocket).addListener(new ChannelFutureListener() { - @Override - public void operationComplete(ChannelFuture future) throws Exception { - if (!future.isSuccess()) { - connectRetryCounter++; - log.error("Connection failed, ConnectRetryCounter {} remote host {}", connectRetryCounter, - IsisConstants.SHOST); - /* - * Reconnect to peer on failure is exponential till 4 mins, later on retry after every 4 - * mins. - */ - if (connectRetryTime < RETRY_INTERVAL) { - connectRetryTime = (connectRetryTime != 0) ? connectRetryTime * 2 : 1; - } - scheduleConnectionRetry(connectRetryTime); - } else { - //Send the config packet - isisChannelHandler.sentConfigPacket(configPacket); - connectRetryCounter++; - log.info("Connected to remote host {}, Connect Counter {}", IsisConstants.SHOST, - connectRetryCounter); - disconnectExecutor(); - - return; - } - } - }); - } catch (Exception e) { - log.info("Connect peer exception : " + e.toString()); - disconnectExecutor(); - } - } - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java deleted file mode 100644 index 1f17969430..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.Sets; -import org.onosproject.isis.controller.IsisController; -import org.onosproject.isis.controller.IsisProcess; -import org.onosproject.isis.controller.topology.IsisAgent; -import org.onosproject.isis.controller.topology.IsisLink; -import org.onosproject.isis.controller.topology.IsisLinkListener; -import org.onosproject.isis.controller.topology.IsisRouter; -import org.onosproject.isis.controller.topology.IsisRouterListener; -import org.onosproject.net.driver.DriverService; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -/** - * Represents ISIS controller implementation. - */ -@Component(immediate = true, service = IsisController.class) -public class DefaultIsisController implements IsisController { - - private static final Logger log = LoggerFactory.getLogger(DefaultIsisController.class); - private final Controller controller = new Controller(); - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DriverService driverService; - protected Set isisRouterListener = new HashSet<>(); - protected Set isisLinkListener = Sets.newHashSet(); - protected IsisAgent agent = new InternalDeviceConfig(); - - @Activate - public void activate() { - log.debug("ISISControllerImpl activate"); - controller.setAgent(agent); - } - - @Deactivate - public void deactivate() { - controller.isisDeactivate(); - log.debug("ISISControllerImpl deActivate"); - } - - @Override - public void addRouterListener(IsisRouterListener listener) { - if (!isisRouterListener.contains(listener)) { - this.isisRouterListener.add(listener); - } - } - - @Override - public void removeRouterListener(IsisRouterListener listener) { - this.isisRouterListener.remove(listener); - } - - @Override - public void addLinkListener(IsisLinkListener listener) { - isisLinkListener.add(listener); - } - - @Override - public void removeLinkListener(IsisLinkListener listener) { - isisLinkListener.remove(listener); - } - - @Override - public Set listener() { - return isisRouterListener; - } - - @Override - public Set linkListener() { - return isisLinkListener; - } - - @Override - public List allConfiguredProcesses() { - List processes = controller.getAllConfiguredProcesses(); - return processes; - } - - @Override - public void updateConfig(JsonNode jsonNode) { - log.debug("updateConfig::IsisList::processes::{}", jsonNode); - try { - controller.updateConfig(jsonNode); - } catch (Exception e) { - log.debug("Error::updateConfig::{}", e.getMessage()); - } - } - - /** - * Notifier for internal ISIS device and link changes. - */ - private class InternalDeviceConfig implements IsisAgent { - @Override - public boolean addConnectedRouter(IsisRouter isisRouter) { - for (IsisRouterListener l : listener()) { - l.routerAdded(isisRouter); - } - return true; - } - - @Override - public void removeConnectedRouter(IsisRouter isisRouter) { - for (IsisRouterListener l : listener()) { - l.routerRemoved(isisRouter); - } - } - - @Override - public void addLink(IsisLink isisLink) { - for (IsisLinkListener l : linkListener()) { - l.addLink(isisLink); - } - } - - @Override - public void deleteLink(IsisLink isisLink) { - for (IsisLinkListener l : linkListener()) { - l.deleteLink(isisLink); - } - } - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java deleted file mode 100644 index 2c2aa1a856..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java +++ /dev/null @@ -1,1130 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.jboss.netty.channel.Channel; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisInterfaceState; -import org.onosproject.isis.controller.IsisLsdb; -import org.onosproject.isis.controller.IsisMessage; -import org.onosproject.isis.controller.IsisNeighbor; -import org.onosproject.isis.controller.IsisNetworkType; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.controller.IsisRouterType; -import org.onosproject.isis.controller.LspWrapper; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.pdu.Csnp; -import org.onosproject.isis.io.isispacket.pdu.HelloPdu; -import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu; -import org.onosproject.isis.io.isispacket.pdu.Psnp; -import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.LspEntriesTlv; -import org.onosproject.isis.io.isispacket.tlv.LspEntry; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.isispacket.tlv.TlvType; -import org.onosproject.isis.io.util.IsisConstants; -import org.onosproject.isis.io.util.IsisUtil; -import org.onosproject.isis.io.util.LspGenerator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -/** - * Representation of an ISIS interface. - */ -public class DefaultIsisInterface implements IsisInterface { - private static final Logger log = LoggerFactory.getLogger(DefaultIsisInterface.class); - boolean flagValue = false; - private int interfaceIndex; - private Ip4Address interfaceIpAddress; - private byte[] networkMask; - private MacAddress interfaceMacAddress; - private String intermediateSystemName; - private String systemId; - private String l1LanId = IsisConstants.DEFAULTLANID; - private String l2LanId = IsisConstants.DEFAULTLANID; - private int idLength; - private int maxAreaAddresses; - private int reservedPacketCircuitType; - private IsisNetworkType networkType; - private String areaAddress; - private int areaLength; - private int holdingTime; - private int priority; - private String circuitId; - private int helloInterval; - private Map neighborList = new ConcurrentHashMap<>(); - private IsisHelloPduSender isisHelloPduSender = null; - private ScheduledExecutorService exServiceHello = null; - private IsisInterfaceState interfaceState = IsisInterfaceState.DOWN; - private IsisLsdb isisLsdb = null; - private List allConfiguredInterfaceIps = null; - private Channel channel; - private boolean helloSenderStarted = false; - - /** - * Returns ISIS LSDB instance. - * - * @return ISIS LSDB instance - */ - public IsisLsdb isisLsdb() { - return isisLsdb; - } - - /** - * Sets all configured interface IPs. - * - * @param allConfiguredInterfaces all configured interface IPs - */ - public void setAllConfiguredInterfaceIps(List allConfiguredInterfaces) { - allConfiguredInterfaceIps = allConfiguredInterfaces; - } - - /** - * Removes neighbor from the interface neighbor map. - * - * @param isisNeighbor ISIS neighbor instance - */ - public void removeNeighbor(IsisNeighbor isisNeighbor) { - log.debug("Neighbor removed - {}", isisNeighbor.neighborMacAddress()); - isisNeighbor.stopHoldingTimeCheck(); - isisNeighbor.stopInactivityTimeCheck(); - neighborList.remove(isisNeighbor.neighborMacAddress()); - } - - /** - * Removes all the neighbors. - */ - public void removeNeighbors() { - Set neighbors = neighbors(); - for (MacAddress mac : neighbors) { - removeNeighbor(lookup(mac)); - log.debug("Neighbor removed - {}", mac); - } - neighborList.clear(); - } - - /** - * Returns the ISIS neighbor instance if exists. - * - * @param isisNeighborMac mac address of the neighbor router - * @return ISIS neighbor instance if exists else null - */ - public IsisNeighbor lookup(MacAddress isisNeighborMac) { - return neighborList.get(isisNeighborMac); - } - - /** - * Returns the neighbors list. - * - * @return neighbors list - */ - public Set neighbors() { - return neighborList.keySet(); - } - - /** - * Returns channel instance. - * - * @return channel instance - */ - public Channel channel() { - return channel; - } - - /** - * Returns interface index. - * - * @return interface index - */ - public int interfaceIndex() { - return interfaceIndex; - } - - /** - * Set interface index. - * - * @param interfaceIndex interface index - */ - public void setInterfaceIndex(int interfaceIndex) { - this.interfaceIndex = interfaceIndex; - } - - /** - * Returns the interface IP address. - * - * @return interface IP address - */ - public Ip4Address interfaceIpAddress() { - return interfaceIpAddress; - } - - /** - * Sets the interface IP address. - * - * @param interfaceIpAddress interfaceIpAddress interface IP address - */ - public void setInterfaceIpAddress(Ip4Address interfaceIpAddress) { - this.interfaceIpAddress = interfaceIpAddress; - } - - /** - * Returns the network mask. - * - * @return network mask - */ - public byte[] networkMask() { - return networkMask; - } - - /** - * Sets the network mask. - * - * @param networkMask network mask - */ - public void setNetworkMask(byte[] networkMask) { - this.networkMask = networkMask; - } - - /** - * Returns the interface mac address. - * - * @return interface mac address - */ - public MacAddress getInterfaceMacAddress() { - return interfaceMacAddress; - } - - /** - * Sets the interface mac address. - * - * @param interfaceMacAddress interface mac address - */ - public void setInterfaceMacAddress(MacAddress interfaceMacAddress) { - this.interfaceMacAddress = interfaceMacAddress; - } - - /** - * Returns intermediate system name. - * - * @return intermediate system name - */ - public String intermediateSystemName() { - return intermediateSystemName; - } - - /** - * Sets intermediate system name. - * - * @param intermediateSystemName intermediate system name - */ - public void setIntermediateSystemName(String intermediateSystemName) { - this.intermediateSystemName = intermediateSystemName; - } - - /** - * Returns system ID. - * - * @return system ID - */ - public String systemId() { - return systemId; - } - - /** - * Sets system ID. - * - * @param systemId system ID - */ - public void setSystemId(String systemId) { - this.systemId = systemId; - } - - /** - * Returns LAN ID. - * - * @return LAN ID - */ - public String l1LanId() { - return l1LanId; - } - - /** - * Sets LAN ID. - * - * @param l1LanId LAN ID - */ - public void setL1LanId(String l1LanId) { - this.l1LanId = l1LanId; - } - - /** - * Returns LAN ID. - * - * @return LAN ID - */ - public String l2LanId() { - return l2LanId; - } - - /** - * Sets LAN ID. - * - * @param l2LanId LAN ID - */ - public void setL2LanId(String l2LanId) { - this.l2LanId = l2LanId; - } - - /** - * Returns ID length. - * - * @return ID length - */ - public int getIdLength() { - - return ((idLength == 0) ? 6 : idLength); - } - - /** - * Sets ID length. - * - * @param idLength ID length - */ - public void setIdLength(int idLength) { - this.idLength = idLength; - } - - /** - * Returns max area addresses. - * - * @return max area addresses - */ - public int getMaxAreaAddresses() { - - return maxAreaAddresses; - } - - /** - * Sets area max addresses. - * - * @param maxAreaAddresses max area addresses - */ - public void setMaxAreaAddresses(int maxAreaAddresses) { - this.maxAreaAddresses = maxAreaAddresses; - } - - /** - * Returns reserved packet circuit type. - * - * @return reserved packet circuit type - */ - public int reservedPacketCircuitType() { - return reservedPacketCircuitType; - } - - /** - * Sets reserved packet circuit type. - * - * @param reservedPacketCircuitType reserved packet circuit type - */ - public void setReservedPacketCircuitType(int reservedPacketCircuitType) { - this.reservedPacketCircuitType = reservedPacketCircuitType; - } - - /** - * Returns point to point. - * - * @return point to point - */ - public IsisNetworkType networkType() { - return networkType; - } - - /** - * Sets point to point or broadcast. - * - * @param networkType point to point or broadcast - */ - public void setNetworkType(IsisNetworkType networkType) { - this.networkType = networkType; - } - - /** - * Returns area address. - * - * @return area address - */ - public String areaAddress() { - return areaAddress; - } - - /** - * Sets area address. - * - * @param areaAddress area address - */ - public void setAreaAddress(String areaAddress) { - this.areaAddress = areaAddress; - } - - /** - * Returns area length. - * - * @return area length - */ - public int getAreaLength() { - return areaLength; - } - - /** - * Sets area length. - * - * @param areaLength area length - */ - public void setAreaLength(int areaLength) { - this.areaLength = areaLength; - } - - /** - * Returns holding time. - * - * @return holding time - */ - public int holdingTime() { - return holdingTime; - } - - /** - * Sets holding time. - * - * @param holdingTime holding time - */ - public void setHoldingTime(int holdingTime) { - this.holdingTime = holdingTime; - } - - /** - * Returns priority. - * - * @return priority - */ - public int priority() { - return priority; - } - - /** - * Sets priority. - * - * @param priority priority - */ - public void setPriority(int priority) { - this.priority = priority; - } - - /** - * Returns hello interval. - * - * @return hello interval - */ - public int helloInterval() { - return helloInterval; - } - - /** - * Sets hello interval. - * - * @param helloInterval hello interval - */ - public void setHelloInterval(int helloInterval) { - this.helloInterval = helloInterval; - } - - /** - * Returns the interface state. - * - * @return interface state - */ - public IsisInterfaceState interfaceState() { - return interfaceState; - } - - /** - * Sets the interface state. - * - * @param interfaceState the interface state - */ - public void setInterfaceState(IsisInterfaceState interfaceState) { - this.interfaceState = interfaceState; - } - - /** - * Returns the circuit ID. - * - * @return circuit ID - */ - public String circuitId() { - return circuitId; - } - - /** - * Sets the circuit ID. - * - * @param circuitId circuit ID - */ - public void setCircuitId(String circuitId) { - this.circuitId = circuitId; - } - - /** - * Processes received ISIS message. - * When an ISIS message received it is handed over to this method. - * Based on the type of the ISIS message received it will be handed over - * to corresponding message handler methods. - * - * @param isisMessage received ISIS message - * @param isisLsdb ISIS LSDB instance - * @param channel channel - */ - public void processIsisMessage(IsisMessage isisMessage, IsisLsdb isisLsdb, Channel channel) { - log.debug("IsisInterfaceImpl::processIsisMessage...!!!"); - this.channel = channel; - - if (isisMessage.sourceMac().equals(interfaceMacAddress)) { - log.debug("Received our own message {}...!!!", isisMessage.isisPduType()); - return; - } - - if (isisMessage.isisPduType() == IsisPduType.P2PHELLOPDU && networkType.equals(IsisNetworkType.BROADCAST)) { - return; - } else if ((isisMessage.isisPduType() == IsisPduType.L1HELLOPDU || - isisMessage.isisPduType() == IsisPduType.L2HELLOPDU) - && networkType.equals(IsisNetworkType.P2P)) { - return; - } - - if (this.isisLsdb == null) { - this.isisLsdb = isisLsdb; - } - - switch (isisMessage.isisPduType()) { - case L1HELLOPDU: - case L2HELLOPDU: - processL1L2HelloPduMessage(isisMessage, channel); - break; - case P2PHELLOPDU: - processP2pHelloPduMessage(isisMessage, channel); - break; - case L1LSPDU: - case L2LSPDU: - processLsPduMessage(isisMessage, channel); - break; - case L1CSNP: - case L2CSNP: - processCsnPduMessage(isisMessage, channel); - break; - case L1PSNP: - case L2PSNP: - processPsnPduMessage(isisMessage, channel); - break; - default: - log.debug("Unknown packet to process...!!!"); - break; - } - } - - /** - * Validates the received message. - * - * @param helloPdu ISIS message instance - * @return true if valid ISIS message else false - */ - public boolean validateHelloMessage(HelloPdu helloPdu) { - boolean isValid = false; - - if ((helloPdu.circuitType() == IsisRouterType.L1.value() && - reservedPacketCircuitType == IsisRouterType.L2.value()) || - (helloPdu.circuitType() == IsisRouterType.L2.value() && - reservedPacketCircuitType == IsisRouterType.L1.value())) { - return false; - } - - //Local InterfaceAddress TLV and compare with the IP Interface address and check if they are in same subnet - List interfaceIpAddresses = helloPdu.interfaceIpAddresses(); - Ip4Address neighborIp = (helloPdu.interfaceIpAddresses() != null) ? - interfaceIpAddresses.get(0) : Ip4Address.valueOf("0.0.0.0"); - if (!IsisUtil.sameNetwork(interfaceIpAddress, neighborIp, networkMask)) { - return false; - } - - //Verify if it's in same area, Areas which the router belongs to - if (helloPdu.circuitType() == IsisRouterType.L1.value()) { - List areas = helloPdu.areaAddress(); - for (String area : areas) { - if (areaAddress.equals(area)) { - isValid = true; - } - } - } else if (helloPdu.circuitType() == IsisRouterType.L2.value() || - helloPdu.circuitType() == IsisRouterType.L1L2.value()) { - isValid = true; - } - - return isValid; - } - - /** - * Checks neighbor presents in the list or not. - * - * @param neighborMac neighbor MAc address - * @return true if neighbor exist else false - */ - - private boolean isNeighborInList(MacAddress neighborMac) { - return neighborList.containsKey(neighborMac); - } - - /** - * Adds neighbor in the list. - * - * @param neighbor neighbor MAC address - * @return true if neighbor exist else false - */ - private void addNeighbouringRouter(IsisNeighbor neighbor) { - neighborList.put(neighbor.neighborMacAddress(), neighbor); - } - - /** - * Returns neighbor presents in the list. - * - * @param neighborMac neighbor MAc address - * @return neighbor instance - */ - private IsisNeighbor neighbouringRouter(MacAddress neighborMac) { - return neighborList.get(neighborMac); - } - - /** - * Processes the L1 or L2 hello message. - * - * @param isisMessage hello message instance - * @param channel channel instance - */ - public void processL1L2HelloPduMessage(IsisMessage isisMessage, Channel channel) { - log.debug("Enters processL1L2HelloPduMessage ...!!!"); - log.debug("IsisInterfaceImpl::processHelloMessage...!!!"); - - L1L2HelloPdu helloPacket = (L1L2HelloPdu) isisMessage; - log.debug("IsisInterfaceImpl::processHelloMessage::Interface Type {} ISISInterfaceState {} ", - networkType, interfaceState); - - //If validate the area, network and max address - if (!validateHelloMessage(helloPacket)) { - return; - } - - //Get the neighbor - IsisNeighbor neighbor = neighbouringRouter(isisMessage.sourceMac()); - //Neighbor is not in list - if (!isNeighborInList(isisMessage.sourceMac())) { - neighbor = new DefaultIsisNeighbor(helloPacket, this); - addNeighbouringRouter(neighbor); - } - - neighbor.setHoldingTime(helloPacket.holdingTime()); - neighbor.stopInactivityTimeCheck(); - neighbor.startInactivityTimeCheck(); - - //Assign the DIS - String lanId = helloPacket.lanId(); - - if (IsisPduType.L1HELLOPDU == helloPacket.isisPduType()) { - buildUpdateAndSendSelfGeneratedLspIfDisChange(l1LanId, lanId, channel, - IsisRouterType.get(helloPacket.circuitType())); - l1LanId = lanId; - neighbor.setL1LanId(lanId); - //if a change in lanid - } else if (IsisPduType.L2HELLOPDU == helloPacket.isisPduType()) { - buildUpdateAndSendSelfGeneratedLspIfDisChange(l2LanId, lanId, channel, - IsisRouterType.get(helloPacket.circuitType())); - l2LanId = lanId; - neighbor.setL2LanId(lanId); - } - - //Check in neighbors list our MAC address present - List neighbors = helloPacket.neighborList(); - if (neighbors != null) { - for (MacAddress macAddress : neighbors) { - if (interfaceMacAddress.equals(macAddress)) { - neighbor.setNeighborState(IsisInterfaceState.UP); - //Build Self LSP add in LSDB and sent it. - buildStoreAndSendSelfGeneratedLspIfNotExistInDb(channel, - IsisRouterType.get(helloPacket.circuitType())); - break; - } - } - } - } - - /** - * Builds and store and send self generated LSP. - * - * @param channel netty channel instance - */ - private void buildStoreAndSendSelfGeneratedLspIfNotExistInDb(Channel channel, IsisRouterType neighborRouterType) { - this.channel = channel; - //Check our LSP is present in DB. else create a self LSP and store it and sent it - String lspKey = isisLsdb.lspKey(systemId); - LspWrapper wrapper = null; - if (reservedPacketCircuitType == IsisRouterType.L1.value()) { - wrapper = isisLsdb.findLsp(IsisPduType.L1LSPDU, lspKey); - if (wrapper == null) { - LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L1LSPDU, allConfiguredInterfaceIps); - isisLsdb.addLsp(lsp, true, this); - sendLsp(lsp, channel); - } - } else if (reservedPacketCircuitType == IsisRouterType.L2.value()) { - wrapper = isisLsdb.findLsp(IsisPduType.L2LSPDU, lspKey); - if (wrapper == null) { - LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L2LSPDU, allConfiguredInterfaceIps); - isisLsdb.addLsp(lsp, true, this); - sendLsp(lsp, channel); - } - } else if (reservedPacketCircuitType == IsisRouterType.L1L2.value()) { - if ((neighborRouterType == IsisRouterType.L1 || neighborRouterType == IsisRouterType.L1L2)) { - - wrapper = isisLsdb.findLsp(IsisPduType.L1LSPDU, lspKey); - if (wrapper == null) { - LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L1LSPDU, - allConfiguredInterfaceIps); - isisLsdb.addLsp(lsp, true, this); - sendLsp(lsp, channel); - } - } - - if ((neighborRouterType == IsisRouterType.L2 || neighborRouterType == IsisRouterType.L1L2)) { - wrapper = isisLsdb.findLsp(IsisPduType.L2LSPDU, lspKey); - if (wrapper == null) { - LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L2LSPDU, - allConfiguredInterfaceIps); - isisLsdb.addLsp(lsp, true, this); - sendLsp(lsp, channel); - } - } - } - } - - /** - * Builds and update in DB and send self generated LSP. - * - * @param previousLanId previous DIS ID - * @param latestLanId latest DIS ID - * @param channel netty channel instance - */ - private void buildUpdateAndSendSelfGeneratedLspIfDisChange(String previousLanId, - String latestLanId, Channel channel, - IsisRouterType neighborRouterType) { - this.channel = channel; - //If DIS change then build and sent LSP - if (!previousLanId.equals(latestLanId)) { - //Create a self LSP and Update it in DB and sent it - String lspKey = isisLsdb.lspKey(systemId); - if (reservedPacketCircuitType == IsisRouterType.L1.value()) { - LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L1LSPDU, allConfiguredInterfaceIps); - isisLsdb.addLsp(lsp, true, this); - sendLsp(lsp, channel); - } else if (reservedPacketCircuitType == IsisRouterType.L2.value() && - (neighborRouterType == IsisRouterType.L2 || neighborRouterType == IsisRouterType.L1L2)) { - LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L2LSPDU, allConfiguredInterfaceIps); - isisLsdb.addLsp(lsp, true, this); - sendLsp(lsp, channel); - } else if (reservedPacketCircuitType == IsisRouterType.L1L2.value()) { - //L1 LSPDU - if (neighborRouterType == IsisRouterType.L1 || neighborRouterType == IsisRouterType.L1L2) { - LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L1LSPDU, allConfiguredInterfaceIps); - isisLsdb.addLsp(lsp, true, this); - sendLsp(lsp, channel); - } - //L1 LSPDU - if (neighborRouterType == IsisRouterType.L2 || neighborRouterType == IsisRouterType.L1L2) { - LsPdu lsp = new LspGenerator().getLsp(this, lspKey, IsisPduType.L2LSPDU, allConfiguredInterfaceIps); - isisLsdb.addLsp(lsp, true, this); - sendLsp(lsp, channel); - } - } - } - - } - - /** - * Sends LS PDU message to channel. - * - * @param lsp LS PDU message instance - * @param channel channel instance - */ - private void sendLsp(LsPdu lsp, Channel channel) { - byte[] lspBytes = lsp.asBytes(); - lspBytes = IsisUtil.addLengthAndMarkItInReserved(lspBytes, IsisConstants.LENGTHPOSITION, - IsisConstants.LENGTHPOSITION + 1, - IsisConstants.RESERVEDPOSITION); - lspBytes = IsisUtil.addChecksum(lspBytes, IsisConstants.CHECKSUMPOSITION, - IsisConstants.CHECKSUMPOSITION + 1); - //write to the channel - if (channel != null && channel.isConnected() && channel.isOpen()) { - channel.write(IsisUtil.framePacket(lspBytes, interfaceIndex)); - } - } - - /** - * Processes P2P hello message. - * - * @param isisMessage hello message instance - * @param channel channel instance - */ - public void processP2pHelloPduMessage(IsisMessage isisMessage, Channel channel) { - log.debug("Enters processP2pHelloPduMessage ...!!!"); - P2PHelloPdu helloPacket = (P2PHelloPdu) isisMessage; - - log.debug("IsisInterfaceImpl::processHelloMessage::Interface Type {} OSPFInterfaceState {} ", - networkType, interfaceState); - - //validate the area, network and max address - if (!validateHelloMessage(helloPacket)) { - return; - } - - IsisNeighbor neighbor = null; - List tlvs = ((P2PHelloPdu) isisMessage).tlvs(); - AdjacencyStateTlv stateTlv = null; - for (IsisTlv tlv : tlvs) { - if (tlv instanceof AdjacencyStateTlv) { - stateTlv = (AdjacencyStateTlv) tlv; - break; - } - } - - if (stateTlv == null) { - neighbor = neighbouringRouter(isisMessage.sourceMac()); - if (neighbor == null) { - neighbor = new DefaultIsisNeighbor(helloPacket, this); - addNeighbouringRouter(neighbor); - } - neighbor.setNeighborState(IsisInterfaceState.DOWN); - buildStoreAndSendSelfGeneratedLspIfNotExistInDb(channel, IsisRouterType.get(helloPacket.circuitType())); - } else if (stateTlv.adjacencyType() == IsisInterfaceState.DOWN.value()) { - neighbor = neighbouringRouter(isisMessage.sourceMac()); - if (neighbor == null) { - neighbor = new DefaultIsisNeighbor(helloPacket, this); - addNeighbouringRouter(neighbor); - } - neighbor.setLocalExtendedCircuitId(stateTlv.localCircuitId()); - } else if (stateTlv.adjacencyType() == IsisInterfaceState.INITIAL.value()) { - //Neighbor already present in the list - neighbor = neighbouringRouter(isisMessage.sourceMac()); - if (neighbor == null) { - neighbor = new DefaultIsisNeighbor(helloPacket, this); - addNeighbouringRouter(neighbor); - } - neighbor.setNeighborState(IsisInterfaceState.INITIAL); - neighbor.setLocalExtendedCircuitId(stateTlv.localCircuitId()); - //interfaceState = IsisInterfaceState.UP; - } else if (stateTlv.adjacencyType() == IsisInterfaceState.UP.value()) { - //Build Self LSP add in LSDB and sent it. - neighbor = neighbouringRouter(isisMessage.sourceMac()); - neighbor.setNeighborState(IsisInterfaceState.UP); - neighbor.setLocalExtendedCircuitId(stateTlv.localCircuitId()); - buildStoreAndSendSelfGeneratedLspIfNotExistInDb(channel, IsisRouterType.get(helloPacket.circuitType())); - } - if (neighbor == null) { - log.debug("neighbor object is null!!!!"); - return; - } - - neighbor.setHoldingTime(helloPacket.holdingTime()); - neighbor.stopInactivityTimeCheck(); - neighbor.startInactivityTimeCheck(); - } - - /** - * Processes LS PDU message. - * - * @param isisMessage LS pdu message instance - * @param channel channel instance - */ - public void processLsPduMessage(IsisMessage isisMessage, Channel channel) { - log.debug("Enters processLsPduMessage ...!!!"); - IsisNeighbor neighbor = neighbouringRouter(isisMessage.sourceMac()); - if (networkType == IsisNetworkType.BROADCAST && neighbor == null) { - return; - } - - LsPdu lsPdu = (LsPdu) isisMessage; - LspWrapper wrapper = isisLsdb.findLsp(lsPdu.isisPduType(), lsPdu.lspId()); - if (wrapper == null || isisLsdb.isNewerOrSameLsp(lsPdu, wrapper.lsPdu()).equalsIgnoreCase("latest")) { - if (wrapper != null) { // verify if the LSA - is your own LSA - get system ID and compare LSP - String lspKey = isisLsdb.lspKey(systemId); - if (lsPdu.lspId().equals(lspKey)) { - lsPdu.setSequenceNumber(lsPdu.sequenceNumber() + 1); - if (lsPdu.pduType() == IsisPduType.L1LSPDU.value()) { - // setting the ls sequence number - isisLsdb.setL1LspSeqNo(lsPdu.sequenceNumber()); - } else if (lsPdu.pduType() == IsisPduType.L2LSPDU.value()) { - // setting the ls sequence number - isisLsdb.setL2LspSeqNo(lsPdu.sequenceNumber()); - } - isisLsdb.addLsp(lsPdu, true, this); - sendLsp(lsPdu, channel); - } else { - isisLsdb.addLsp(lsPdu, false, this); - } - - - } else { - //not exist in the database or latest, then add it in database - isisLsdb.addLsp(lsPdu, false, this); - } - } - - //If network type is P2P, acknowledge with a PSNP - if (networkType() == IsisNetworkType.P2P) { - IsisPduType psnpType = null; - if (IsisPduType.get(lsPdu.pduType()) == IsisPduType.L1LSPDU) { - psnpType = IsisPduType.L1PSNP; - } else if (IsisPduType.get(lsPdu.pduType()) == IsisPduType.L2LSPDU) { - psnpType = IsisPduType.L2PSNP; - } - IsisHeader isisHeader = new LspGenerator().getHeader(psnpType); - Psnp psnp = new Psnp(isisHeader); - psnp.setSourceId(lspKeyP2P(this.systemId)); - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.LSPENTRY.value()); - tlvHeader.setTlvLength(0); - LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader); - LspEntry lspEntry = new LspEntry(); - lspEntry.setLspChecksum(lsPdu.checkSum()); - lspEntry.setLspId(lsPdu.lspId()); - lspEntry.setLspSequenceNumber(lsPdu.sequenceNumber()); - lspEntry.setRemainingTime(lsPdu.remainingLifeTime()); - lspEntriesTlv.addLspEntry(lspEntry); - psnp.addTlv(lspEntriesTlv); - - //write it to channel buffer. - byte[] psnpBytes = psnp.asBytes(); - psnpBytes = IsisUtil.addLengthAndMarkItInReserved(psnpBytes, IsisConstants.LENGTHPOSITION, - IsisConstants.LENGTHPOSITION + 1, - IsisConstants.RESERVEDPOSITION); - flagValue = false; - //write to the channel - if (channel != null && channel.isConnected() && channel.isOpen()) { - channel.write(IsisUtil.framePacket(psnpBytes, interfaceIndex)); - } - } - } - - /** - * Processes PSN PDU message. - * Checks for self originated LSP entries in PSNP message and sends the missing LSP. - * - * @param isisMessage PSN PDU message instance - * @param channel channel instance - */ - public void processPsnPduMessage(IsisMessage isisMessage, Channel channel) { - log.debug("Enters processPsnPduMessage ...!!!"); - //If adjacency not formed don't process. - IsisNeighbor neighbor = neighbouringRouter(isisMessage.sourceMac()); - if (networkType == IsisNetworkType.BROADCAST && neighbor == null) { - return; - } - - Psnp psnPacket = (Psnp) isisMessage; - List isisTlvs = psnPacket.getAllTlv(); - Iterator iterator = isisTlvs.iterator(); - while (iterator.hasNext()) { - IsisTlv isisTlv = (IsisTlv) iterator.next(); - if (isisTlv instanceof LspEntriesTlv) { - LspEntriesTlv lspEntriesTlv = (LspEntriesTlv) isisTlv; - List lspEntryList = lspEntriesTlv.lspEntry(); - Iterator lspEntryListIterator = lspEntryList.iterator(); - while (lspEntryListIterator.hasNext()) { - LspEntry lspEntry = (LspEntry) lspEntryListIterator.next(); - String lspKey = lspEntry.lspId(); - LspWrapper lspWrapper = isisLsdb.findLsp(psnPacket.isisPduType(), lspKey); - if (lspWrapper != null) { - if (lspWrapper.isSelfOriginated()) { - //Sent the LSP - sendLsp((LsPdu) lspWrapper.lsPdu(), channel); - } - } - } - } - } - } - - /** - * Processes CSN PDU message. - * - * @param isisMessage CSN PDU message instance - * @param channel channel instance - */ - public void processCsnPduMessage(IsisMessage isisMessage, Channel channel) { - log.debug("Enters processCsnPduMessage ...!!!"); - IsisNeighbor neighbor = neighbouringRouter(isisMessage.sourceMac()); - if (networkType == IsisNetworkType.BROADCAST && neighbor == null) { - return; - } - - Csnp csnPacket = (Csnp) isisMessage; - IsisPduType psnPduType = (IsisPduType.L2CSNP.equals(csnPacket.isisPduType())) ? - IsisPduType.L2PSNP : IsisPduType.L1PSNP; - IsisPduType lsPduType = (IsisPduType.L2CSNP.equals(csnPacket.isisPduType())) ? - IsisPduType.L2LSPDU : IsisPduType.L1LSPDU; - - List lspEntryRequestList = new ArrayList<>(); - boolean selfOriginatedFound = false; - List isisTlvs = csnPacket.getAllTlv(); - Iterator iterator = isisTlvs.iterator(); - while (iterator.hasNext()) { - IsisTlv isisTlv = (IsisTlv) iterator.next(); - if (isisTlv instanceof LspEntriesTlv) { - LspEntriesTlv lspEntriesTlv = (LspEntriesTlv) isisTlv; - List lspEntryList = lspEntriesTlv.lspEntry(); - Iterator lspEntryListIterator = lspEntryList.iterator(); - while (lspEntryListIterator.hasNext()) { - LspEntry lspEntry = (LspEntry) lspEntryListIterator.next(); - String lspKey = lspEntry.lspId(); - LspWrapper lspWrapper = isisLsdb.findLsp(lsPduType, lspKey); - if (lspWrapper != null) { - LsPdu lsPdu = (LsPdu) lspWrapper.lsPdu(); - if (lspWrapper.isSelfOriginated()) { - selfOriginatedFound = true; - if (lspEntry.lspSequenceNumber() < lsPdu.sequenceNumber()) { - sendLsp(lsPdu, channel); - } - } else { - if (lsPdu.sequenceNumber() < lspEntry.lspSequenceNumber()) { - lspEntryRequestList.add(lspEntry); - flagValue = true; - } - } - } else { - lspEntryRequestList.add(lspEntry); - flagValue = true; - } - } - } - } - if (flagValue) { - sendPsnPduMessage(lspEntryRequestList, psnPduType, channel); - lspEntryRequestList.clear(); - } - - if (!selfOriginatedFound) { - String lspKey = isisLsdb.lspKey(systemId); - LspWrapper wrapper = isisLsdb.findLsp(lsPduType, lspKey); - if (wrapper != null) { - sendLsp((LsPdu) wrapper.lsPdu(), channel); - } - } - } - - /** - * Sends the partial sequence number PDU. - * - * @param lspEntryRequestList list of lsp entry request - * @param isisPduType intermediate system PDU type - * @param channel netty channel instance - */ - private void sendPsnPduMessage(List lspEntryRequestList, IsisPduType isisPduType, Channel channel) { - IsisHeader isisHeader = new LspGenerator().getHeader(isisPduType); - Psnp psnp = new Psnp(isisHeader); - psnp.setSourceId(lspKeyP2P(this.systemId)); - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.LSPENTRY.value()); - tlvHeader.setTlvLength(0); - LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader); - for (LspEntry lspEntry : lspEntryRequestList) { - lspEntry.setLspChecksum(0); - lspEntry.setLspSequenceNumber(0); - lspEntry.setRemainingTime(0); - lspEntriesTlv.addLspEntry(lspEntry); - } - psnp.addTlv(lspEntriesTlv); - //write it to channel buffer. - byte[] psnpBytes = psnp.asBytes(); - psnpBytes = IsisUtil.addLengthAndMarkItInReserved(psnpBytes, IsisConstants.LENGTHPOSITION, - IsisConstants.LENGTHPOSITION + 1, - IsisConstants.RESERVEDPOSITION); - flagValue = false; - //write to the channel - if (channel != null && channel.isConnected() && channel.isOpen()) { - channel.write(IsisUtil.framePacket(psnpBytes, interfaceIndex)); - } - } - - /** - * Gets the LSP key. - * - * @param systemId system ID - * @return key - */ - public String lspKeyP2P(String systemId) { - StringBuilder lspKey = new StringBuilder(); - lspKey.append(systemId); - lspKey.append(".00"); - return lspKey.toString(); - } - - /** - * Starts the hello timer which sends hello packet every configured seconds. - * - * @param channel netty channel instance - */ - public void startHelloSender(Channel channel) { - log.debug("IsisInterfaceImpl::startHelloSender"); - if (!helloSenderStarted) { - isisHelloPduSender = new IsisHelloPduSender(channel, this); - exServiceHello = Executors.newSingleThreadScheduledExecutor(); - final ScheduledFuture helloHandle = - exServiceHello.scheduleAtFixedRate(isisHelloPduSender, 0, - helloInterval, TimeUnit.SECONDS); - helloSenderStarted = true; - } - } - - /** - * Stops the hello timer which sends hello packet every configured seconds. - */ - public void stopHelloSender() { - log.debug("IsisInterfaceImpl::stopHelloSender"); - exServiceHello.shutdown(); - helloSenderStarted = false; - } -} diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisNeighbor.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisNeighbor.java deleted file mode 100644 index 4b5e9384b5..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisNeighbor.java +++ /dev/null @@ -1,399 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisInterfaceState; -import org.onosproject.isis.controller.IsisNeighbor; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.controller.IsisRouterType; -import org.onosproject.isis.io.isispacket.pdu.HelloPdu; -import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; -import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu; -import org.onosproject.isis.io.util.IsisConstants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -/** - * Representation of an ISIS neighbor. - * The first thing an ISIS router must do is find its neighbors and form adjacency. - * Each neighbor that the router finds will be represented by this class. - */ -public class DefaultIsisNeighbor implements IsisNeighbor { - private static final Logger log = LoggerFactory.getLogger(DefaultIsisNeighbor.class); - private String neighborAreaId; - private String neighborSystemId; - private Ip4Address interfaceIp; - private MacAddress neighborMacAddress; - private volatile int holdingTime; - private int neighborDownInterval; - private IsisRouterType routerType; - private String l1LanId; - private String l2LanId; - private byte localCircuitId; - private int localExtendedCircuitId; - private IsisInterfaceState neighborState = IsisInterfaceState.INITIAL; - private InternalInactivityTimeCheck inActivityTimeCheckTask; - private ScheduledExecutorService exServiceInActivity; - private InternalHoldingTimeCheck holdingTimeCheckTask; - private ScheduledExecutorService exServiceHoldingTimeCheck; - private boolean inActivityTimerScheduled = false; - private IsisInterface isisInterface; - - /** - * Creates an instance of ISIS neighbor. - * - * @param helloMessage hello message instance - * @param isisInterface ISIS interface instance - */ - public DefaultIsisNeighbor(HelloPdu helloMessage, IsisInterface isisInterface) { - this.neighborMacAddress = helloMessage.sourceMac(); - List areaAddresses = helloMessage.areaAddress(); - this.neighborAreaId = (areaAddresses != null) ? areaAddresses.get(0) : ""; - this.neighborSystemId = helloMessage.sourceId(); - List interfaceIpAddresses = helloMessage.interfaceIpAddresses(); - this.interfaceIp = (helloMessage.interfaceIpAddresses() != null) ? - interfaceIpAddresses.get(0) : IsisConstants.DEFAULTIP; - this.holdingTime = helloMessage.holdingTime(); - neighborDownInterval = holdingTime; - this.routerType = IsisRouterType.get(helloMessage.circuitType()); - if (helloMessage instanceof L1L2HelloPdu) { - if (IsisPduType.L1HELLOPDU == helloMessage.isisPduType()) { - l1LanId = ((L1L2HelloPdu) helloMessage).lanId(); - } else if (IsisPduType.L2HELLOPDU == helloMessage.isisPduType()) { - l2LanId = ((L1L2HelloPdu) helloMessage).lanId(); - } - } else if (helloMessage instanceof P2PHelloPdu) { - this.localCircuitId = ((P2PHelloPdu) helloMessage).localCircuitId(); - } - this.isisInterface = isisInterface; - startHoldingTimeCheck(); - log.debug("Neighbor added - {}", neighborMacAddress); - } - - /** - * Returns local extended circuit ID. - * - * @return local extended circuit ID - */ - public int localExtendedCircuitId() { - return localExtendedCircuitId; - } - - /** - * Sets local extended circuit ID. - * - * @param localExtendedCircuitId neighbor extended circuit ID - */ - public void setLocalExtendedCircuitId(int localExtendedCircuitId) { - this.localExtendedCircuitId = localExtendedCircuitId; - } - - /** - * Returns neighbor area ID. - * - * @return neighbor area ID - */ - public String neighborAreaId() { - return neighborAreaId; - } - - /** - * Sets neighbor area ID. - * - * @param neighborAreaId neighbor area ID - */ - public void setNeighborAreaId(String neighborAreaId) { - this.neighborAreaId = neighborAreaId; - } - - /** - * Returns neighbor system ID. - * - * @return neighbor system ID - */ - public String neighborSystemId() { - return neighborSystemId; - } - - /** - * Sets neighbor system ID. - * - * @param neighborSystemId neighbor system ID - */ - public void setNeighborSystemId(String neighborSystemId) { - this.neighborSystemId = neighborSystemId; - } - - /** - * Returns interface IP. - * - * @return interface IP - */ - public Ip4Address interfaceIp() { - return interfaceIp; - } - - /** - * Sets interface IP. - * - * @param interfaceIp IP - */ - public void setInterfaceIp(Ip4Address interfaceIp) { - this.interfaceIp = interfaceIp; - } - - /** - * Returns neighbor mac address. - * - * @return neighborMacAddress neighbor mac address - */ - public MacAddress neighborMacAddress() { - return neighborMacAddress; - } - - /** - * Sets neighbor mac address. - * - * @param neighborMacAddress mac address - */ - public void setNeighborMacAddress(MacAddress neighborMacAddress) { - this.neighborMacAddress = neighborMacAddress; - } - - /** - * Returns holding time. - * - * @return holding time - */ - public int holdingTime() { - return holdingTime; - } - - /** - * Sets holding time. - * - * @param holdingTime holding time - */ - public void setHoldingTime(int holdingTime) { - this.holdingTime = holdingTime; - } - - /** - * Returns router type. - * - * @return router type - */ - public IsisRouterType routerType() { - return routerType; - } - - /** - * Sets router type. - * - * @param routerType router type - */ - public void setRouterType(IsisRouterType routerType) { - this.routerType = routerType; - } - - /** - * Returns L1 lan ID. - * - * @return L1 lan ID - */ - public String l1LanId() { - return l1LanId; - } - - /** - * Sets L1 lan ID. - * - * @param l1LanId L1 lan ID - */ - public void setL1LanId(String l1LanId) { - this.l1LanId = l1LanId; - } - - /** - * Returns L2 lan ID. - * - * @return L2 lan ID - */ - public String l2LanId() { - return l2LanId; - } - - /** - * Sets L2 lan ID. - * - * @param l2LanId L2 lan ID - */ - public void setL2LanId(String l2LanId) { - this.l2LanId = l2LanId; - } - - /** - * Gets the neighbor interface state. - * - * @return neighbor interface state - */ - public IsisInterfaceState interfaceState() { - return neighborState; - } - - /** - * Sets the neighbor interface state. - * - * @param neighborState the neighbor interface state - */ - public void setNeighborState(IsisInterfaceState neighborState) { - this.neighborState = neighborState; - } - - /** - * Returns local circuit ID. - * - * @return local circuit ID - */ - public byte localCircuitId() { - return localCircuitId; - } - - /** - * Sets local circuit ID. - * - * @param localCircuitId local circuit ID - */ - public void setLocalCircuitId(byte localCircuitId) { - this.localCircuitId = localCircuitId; - } - - /** - * Returns neighbor state. - * - * @return neighbor state - */ - public IsisInterfaceState neighborState() { - return neighborState; - } - - /** - * Starts the holding time check timer. - */ - public void startHoldingTimeCheck() { - log.debug("IsisNeighbor::startHoldingTimeCheck"); - holdingTimeCheckTask = new InternalHoldingTimeCheck(); - exServiceHoldingTimeCheck = Executors.newSingleThreadScheduledExecutor(); - exServiceHoldingTimeCheck.scheduleAtFixedRate(holdingTimeCheckTask, 1, - 1, TimeUnit.SECONDS); - } - - /** - * Stops the holding time check timer. - */ - public void stopHoldingTimeCheck() { - log.debug("IsisNeighbor::stopHoldingTimeCheck "); - exServiceHoldingTimeCheck.shutdown(); - } - - /** - * Starts the inactivity timer. - */ - public void startInactivityTimeCheck() { - if (!inActivityTimerScheduled) { - log.debug("IsisNeighbor::startInactivityTimeCheck"); - inActivityTimeCheckTask = new InternalInactivityTimeCheck(); - exServiceInActivity = Executors.newSingleThreadScheduledExecutor(); - exServiceInActivity.scheduleAtFixedRate(inActivityTimeCheckTask, neighborDownInterval, - neighborDownInterval, TimeUnit.SECONDS); - inActivityTimerScheduled = true; - } - } - - /** - * Stops the inactivity timer. - */ - public void stopInactivityTimeCheck() { - if (inActivityTimerScheduled) { - log.debug("IsisNeighbor::stopInactivityTimeCheck "); - exServiceInActivity.shutdown(); - inActivityTimerScheduled = false; - } - } - - /** - * Called when neighbor is down. - */ - public void neighborDown() { - log.debug("Neighbor Down {} and NeighborSystemId {}", neighborMacAddress, - neighborSystemId); - stopInactivityTimeCheck(); - isisInterface.setL1LanId(IsisConstants.DEFAULTLANID); - isisInterface.setL2LanId(IsisConstants.DEFAULTLANID); - - neighborState = IsisInterfaceState.DOWN; - stopInactivityTimeCheck(); - stopHoldingTimeCheck(); - isisInterface.removeNeighbor(this); - - isisInterface.isisLsdb().removeTopology(this, isisInterface); - } - - /** - * Represents a Task which will do an inactivity time check. - */ - private class InternalInactivityTimeCheck implements Runnable { - /** - * Creates an instance. - */ - InternalInactivityTimeCheck() { - } - - @Override - public void run() { - log.debug("Neighbor Not Heard till the past router dead interval ."); - neighborDown(); - } - } - - /** - * Represents a Task which will decrement holding time for this neighbor. - */ - private class InternalHoldingTimeCheck implements Runnable { - /** - * Creates an instance. - */ - InternalHoldingTimeCheck() { - } - - @Override - public void run() { - holdingTime--; - if (holdingTime <= 0) { - log.debug("Calling neighbor down. Holding time is 0."); - neighborDown(); - } - } - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisProcess.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisProcess.java deleted file mode 100644 index ebe43ca676..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisProcess.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisProcess; - -import java.util.List; - -/** - * Represents of an ISIS process. - */ -public class DefaultIsisProcess implements IsisProcess { - private String processId; - private List isisInterfaceList; - - /** - * Gets process ID. - * - * @return process ID - */ - public String processId() { - return processId; - } - - /** - * Sets process ID. - * - * @param processId process ID - */ - public void setProcessId(String processId) { - this.processId = processId; - } - - /** - * Gets list of ISIS interface details. - * - * @return list of ISIS interface details - */ - public List isisInterfaceList() { - return isisInterfaceList; - } - - /** - * Sets list of ISIS interface details. - * - * @param isisInterfaceList list of ISIS interface details - */ - public void setIsisInterfaceList(List isisInterfaceList) { - this.isisInterfaceList = isisInterfaceList; - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisChannelHandler.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisChannelHandler.java deleted file mode 100644 index 937935b4b7..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisChannelHandler.java +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.ExceptionEvent; -import org.jboss.netty.channel.MessageEvent; -import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler; -import org.jboss.netty.handler.timeout.ReadTimeoutException; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisLsdb; -import org.onosproject.isis.controller.IsisMessage; -import org.onosproject.isis.controller.IsisProcess; -import org.onosproject.isis.controller.impl.lsdb.DefaultIsisLsdb; -import org.onosproject.isis.exceptions.IsisParseException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.nio.channels.ClosedChannelException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.RejectedExecutionException; -import java.util.concurrent.ScheduledExecutorService; - -/** - * Channel handler deals with the ISIS channel connection. - * Also it dispatches messages to the appropriate handlers for processing. - */ -public class IsisChannelHandler extends IdleStateAwareChannelHandler { - - private static final Logger log = LoggerFactory.getLogger(IsisChannelHandler.class); - private static Map isisDb = null; - private Channel channel = null; - private Controller controller; - private List processes = null; - private List executorList = new ArrayList<>(); - private byte[] configPacket = null; - private Map isisInterfaceMap = new ConcurrentHashMap<>(); - private IsisLsdb isisLsdb = new DefaultIsisLsdb(); - private List interfaceIps = new ArrayList<>(); - - /** - * Creates an instance of ISIS channel handler. - * - * @param controller controller instance - * @param processes list of configured processes - */ - public IsisChannelHandler(Controller controller, List processes) { - this.controller = controller; - this.processes = processes; - ((DefaultIsisLsdb) isisLsdb).setController(this.controller); - ((DefaultIsisLsdb) isisLsdb).setIsisInterface(isisInterfaceList()); - } - - private List isisInterfaceList() { - List isisInterfaceList = new ArrayList<>(); - for (Integer key : isisInterfaceMap.keySet()) { - isisInterfaceList.add(isisInterfaceMap.get(key)); - } - return isisInterfaceList; - } - - /** - * Initializes the interface map with interface details. - */ - public void initializeInterfaceMap() { - for (IsisProcess process : processes) { - for (IsisInterface isisInterface : process.isisInterfaceList()) { - IsisInterface anInterface = isisInterfaceMap.get(isisInterface.interfaceIndex()); - if (anInterface == null) { - isisInterfaceMap.put(isisInterface.interfaceIndex(), isisInterface); - interfaceIps.add(isisInterface.interfaceIpAddress()); - } - } - } - //Initializes the interface with all interface ip details - for ls pdu generation - initializeInterfaceIpList(); - } - - /** - * Updates the interface map with interface details. - * - * @param isisProcesses updated process instances - */ - public void updateInterfaceMap(List isisProcesses) { - for (IsisProcess isisUpdatedProcess : isisProcesses) { - for (IsisInterface isisUpdatedInterface : isisUpdatedProcess.isisInterfaceList()) { - IsisInterface isisInterface = isisInterfaceMap.get(isisUpdatedInterface.interfaceIndex()); - if (isisInterface == null) { - isisInterfaceMap.put(isisUpdatedInterface.interfaceIndex(), isisUpdatedInterface); - interfaceIps.add(isisUpdatedInterface.interfaceIpAddress()); - } else { - if (!isisInterface.intermediateSystemName().equals(isisUpdatedInterface.intermediateSystemName())) { - isisInterface.setIntermediateSystemName(isisUpdatedInterface.intermediateSystemName()); - } - if (isisInterface.reservedPacketCircuitType() != isisUpdatedInterface.reservedPacketCircuitType()) { - isisInterface.setReservedPacketCircuitType(isisUpdatedInterface.reservedPacketCircuitType()); - isisInterface.removeNeighbors(); - } - if (!isisInterface.circuitId().equals(isisUpdatedInterface.circuitId())) { - isisInterface.setCircuitId(isisUpdatedInterface.circuitId()); - } - if (isisInterface.networkType() != isisUpdatedInterface.networkType()) { - isisInterface.setNetworkType(isisUpdatedInterface.networkType()); - isisInterface.removeNeighbors(); - } - if (!isisInterface.areaAddress().equals(isisUpdatedInterface.areaAddress())) { - isisInterface.setAreaAddress(isisUpdatedInterface.areaAddress()); - } - if (isisInterface.holdingTime() != isisUpdatedInterface.holdingTime()) { - isisInterface.setHoldingTime(isisUpdatedInterface.holdingTime()); - } - if (isisInterface.helloInterval() != isisUpdatedInterface.helloInterval()) { - isisInterface.setHelloInterval(isisUpdatedInterface.helloInterval()); - isisInterface.stopHelloSender(); - isisInterface.startHelloSender(channel); - } - - isisInterfaceMap.put(isisInterface.interfaceIndex(), isisInterface); - } - } - } - } - - /** - * Initializes the interface with all interface ip details. - */ - public void initializeInterfaceIpList() { - for (IsisProcess process : processes) { - for (IsisInterface isisInterface : process.isisInterfaceList()) { - ((DefaultIsisInterface) isisInterface).setAllConfiguredInterfaceIps(interfaceIps); - } - } - } - - /** - * Initialize channel, start hello sender and initialize LSDB. - */ - private void initialize() { - log.debug("IsisChannelHandler initialize..!!!"); - if (configPacket != null) { - log.debug("IsisChannelHandler initialize -> sentConfig packet of length ::" - + configPacket.length); - sentConfigPacket(configPacket); - } - initializeInterfaceMap(); - //start the hello timer - startHelloSender(); - //Initialize Database - isisLsdb.initializeDb(); - } - - @Override - public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent evt) throws Exception { - log.info("ISIS channelConnected from {}", evt.getChannel().getRemoteAddress()); - this.channel = evt.getChannel(); - initialize(); - } - - @Override - public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent evt) { - log.debug("IsisChannelHandler::channelDisconnected...!!!"); - if (controller != null) { - controller.connectPeer(); - stopHelloSender(); - } - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { - if (e.getCause() instanceof ReadTimeoutException) { - log.debug("Disconnecting device {} due to read timeout", e.getChannel().getRemoteAddress()); - return; - } else if (e.getCause() instanceof ClosedChannelException) { - log.debug("Channel for ISIS {} already closed", e.getChannel().getRemoteAddress()); - } else if (e.getCause() instanceof IOException) { - log.debug("Disconnecting ISIS {} due to IO Error: {}", e.getChannel().getRemoteAddress(), - e.getCause().getMessage()); - } else if (e.getCause() instanceof IsisParseException) { - IsisParseException errMsg = (IsisParseException) e.getCause(); - byte errorCode = errMsg.errorCode(); - byte errorSubCode = errMsg.errorSubCode(); - log.debug("Error while parsing message from ISIS {}, ErrorCode {}", - e.getChannel().getRemoteAddress(), errorCode); - } else if (e.getCause() instanceof RejectedExecutionException) { - log.debug("Could not process message: queue full"); - } else { - log.debug("Error while processing message from ISIS {}, {}", - e.getChannel().getRemoteAddress(), e.getCause().getMessage()); - } - } - - @Override - public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { - log.debug("IsisChannelHandler::messageReceived...!!!"); - Object message = e.getMessage(); - if (message instanceof List) { - List isisMessageList = (List) message; - log.debug("IsisChannelHandler::List of IsisMessages Size {}", isisMessageList.size()); - - for (IsisMessage isisMessage : isisMessageList) { - processIsisMessage(isisMessage, ctx); - } - } - if (message instanceof IsisMessage) { - IsisMessage isisMessage = (IsisMessage) message; - log.debug("IsisChannelHandler::IsisMessages received...!!"); - processIsisMessage(isisMessage, ctx); - } - } - - /** - * When an ISIS message received it is handed over to this method. - * Based on the type of the ISIS message received it will be handed over - * to corresponding message handler methods. - * - * @param isisMessage received ISIS message - * @param ctx channel handler context instance. - */ - public void processIsisMessage(IsisMessage isisMessage, ChannelHandlerContext ctx) { - log.debug("IsisChannelHandler::processIsisMessage...!!!"); - int interfaceIndex = isisMessage.interfaceIndex(); - IsisInterface isisInterface = isisInterfaceMap.get(interfaceIndex); - isisInterface.processIsisMessage(isisMessage, isisLsdb, channel); - } - - /** - * Starts the hello timer which sends hello packet every configured seconds. - */ - public void startHelloSender() { - log.debug("IsisController::startHelloSender"); - Set interfaceIndexes = isisInterfaceMap.keySet(); - for (Integer interfaceIndex : interfaceIndexes) { - IsisInterface isisInterface = isisInterfaceMap.get(interfaceIndex); - isisInterface.startHelloSender(channel); - } - } - - /** - * Stops the hello timer. - */ - public void stopHelloSender() { - log.debug("ISISChannelHandler::stopHelloTimer "); - log.debug("IsisController::startHelloSender"); - Set interfaceIndexes = isisInterfaceMap.keySet(); - for (Integer interfaceIndex : interfaceIndexes) { - IsisInterface isisInterface = isisInterfaceMap.get(interfaceIndex); - isisInterface.stopHelloSender(); - } - } - - /** - * Sends the interface configuration packet to server. - * - * @param configPacket interface configuration - */ - public void sentConfigPacket(byte[] configPacket) { - if (channel != null && channel.isConnected() && channel.isOpen()) { - channel.write(configPacket); - log.debug("IsisChannelHandler sentConfigPacket packet sent..!!!"); - } else { - log.debug("IsisChannelHandler sentConfigPacket channel not connected - re try..!!!"); - this.configPacket = configPacket; - } - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisHelloPduSender.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisHelloPduSender.java deleted file mode 100644 index c97b5a564d..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisHelloPduSender.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import com.google.common.primitives.Bytes; -import org.jboss.netty.channel.Channel; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisNetworkType; -import org.onosproject.isis.controller.IsisRouterType; -import org.onosproject.isis.io.util.IsisUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Representation of an ISIS hello pdu sender task. - */ -public class IsisHelloPduSender implements Runnable { - private static final Logger log = LoggerFactory.getLogger(IsisHelloPduSender.class); - private Channel channel = null; - private IsisInterface isisInterface = null; - - /** - * Creates an instance of Hello PDU Sender task. - * - * @param channel netty channel instance - * @param isisInterface ISIS interface instance - */ - public IsisHelloPduSender(Channel channel, IsisInterface isisInterface) { - this.channel = channel; - this.isisInterface = isisInterface; - } - - @Override - public void run() { - if (channel != null && channel.isConnected() && channel.isOpen()) { - try { - byte[] helloPdu = null; - byte[] interfaceIndex = {(byte) isisInterface.interfaceIndex()}; - - if (isisInterface.networkType() == IsisNetworkType.P2P) { - helloPdu = IsisUtil.getP2pHelloPdu(isisInterface, true); - helloPdu = Bytes.concat(helloPdu, interfaceIndex); - channel.write(helloPdu); - } else if (isisInterface.networkType() == IsisNetworkType.BROADCAST) { - switch (IsisRouterType.get(isisInterface.reservedPacketCircuitType())) { - case L1: - helloPdu = IsisUtil.getL1HelloPdu(isisInterface, true); - helloPdu = Bytes.concat(helloPdu, interfaceIndex); - channel.write(helloPdu); - break; - case L2: - helloPdu = IsisUtil.getL2HelloPdu(isisInterface, true); - helloPdu = Bytes.concat(helloPdu, interfaceIndex); - channel.write(helloPdu); - break; - case L1L2: - helloPdu = IsisUtil.getL1HelloPdu(isisInterface, true); - helloPdu = Bytes.concat(helloPdu, interfaceIndex); - channel.write(helloPdu); - - helloPdu = IsisUtil.getL2HelloPdu(isisInterface, true); - helloPdu = Bytes.concat(helloPdu, interfaceIndex); - channel.write(helloPdu); - break; - default: - log.debug("IsisHelloPduSender::Unknown circuit type...!!!"); - break; - } - } - } catch (Exception e) { - log.debug("Exception @IsisHelloPduSender:: {}", e.getMessage()); - } - } - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageDecoder.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageDecoder.java deleted file mode 100644 index 7a69a5b9cc..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageDecoder.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.frame.FrameDecoder; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisMessage; -import org.onosproject.isis.io.isispacket.IsisMessageReader; -import org.onosproject.isis.io.util.IsisConstants; -import org.onosproject.isis.io.util.IsisUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.LinkedList; -import java.util.List; - -/** - * Decodes an ISIS message from a Channel, for use in a netty pipeline. - */ -public class IsisMessageDecoder extends FrameDecoder { - - private static final Logger log = LoggerFactory.getLogger(IsisMessageDecoder.class); - - @Override - protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception { - log.debug("IsisMessageDecoder::Message received <:> length {}", buffer.readableBytes()); - if (!channel.isConnected()) { - log.info("Channel is not connected."); - return null; - } - IsisMessageReader messageReader = new IsisMessageReader(); - List isisMessageList = new LinkedList<>(); - int dataLength = buffer.readableBytes(); - while (buffer.readableBytes() >= IsisConstants.MINIMUM_FRAME_LEN) { - ChannelBuffer payload = buffer.readBytes(IsisConstants.MINIMUM_FRAME_LEN); - ChannelBuffer ethernetHeader = payload.readBytes(IsisUtil.ETHER_HEADER_LEN); - //Read the Source MAC address from ethernet header at the 6th position - MacAddress sourceMac = getSourceMac(ethernetHeader); - //Strip 17 byte ethernet header and get the ISIS data buffer - ChannelBuffer isisDataBuffer = payload.readBytes(payload.readableBytes()); - int readableBytes = isisDataBuffer.readableBytes(); - IsisMessage message = messageReader.readFromBuffer(isisDataBuffer); - //Last 7 bytes is metadata. ie. interface MAC address and interface index. - if (message != null) { - if (isisDataBuffer.readableBytes() >= IsisConstants.METADATA_LEN) { - //Sets the source MAC - message.setSourceMac(sourceMac); - isisDataBuffer.readerIndex(readableBytes - IsisConstants.METADATA_LEN); - log.debug("IsisMessageDecoder::Reading metadata <:> length {}", isisDataBuffer.readableBytes()); - byte[] macBytes = new byte[IsisUtil.SIX_BYTES]; - isisDataBuffer.readBytes(macBytes, 0, IsisUtil.SIX_BYTES); - MacAddress macAddress = MacAddress.valueOf(macBytes); - int interfaceIndex = isisDataBuffer.readByte(); - message.setInterfaceMac(macAddress); - message.setInterfaceIndex(interfaceIndex); - } - isisMessageList.add(message); - } - } - return (!isisMessageList.isEmpty()) ? isisMessageList : null; - } - - /** - * Gets the source MAC address from the ethernet header. - * - * @param ethHeader ethernet header bytes - * @return MAC address of the source router - */ - private MacAddress getSourceMac(ChannelBuffer ethHeader) { - //Source MAC is at position 6 to 11 (6 bytes) - ethHeader.skipBytes(IsisUtil.SIX_BYTES); - MacAddress sourceMac = MacAddress.valueOf(ethHeader.readBytes(IsisUtil.SIX_BYTES).array()); - - return sourceMac; - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageEncoder.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageEncoder.java deleted file mode 100644 index 9f6ca66816..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageEncoder.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Encodes an ISIS message for output into a ChannelBuffer, for use in a netty pipeline. - */ -public class IsisMessageEncoder extends OneToOneEncoder { - private static final Logger log = LoggerFactory.getLogger(IsisMessageEncoder.class); - - @Override - protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception { - - byte[] byteMsg = (byte[]) msg; - log.debug("Encoding isisMessage of length {}", byteMsg.length); - ChannelBuffer channelBuffer = ChannelBuffers.buffer(byteMsg.length); - channelBuffer.writeBytes(byteMsg); - - return channelBuffer; - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisPipelineFactory.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisPipelineFactory.java deleted file mode 100644 index d93ca5e778..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisPipelineFactory.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.Channels; - -/** - * Creates a ChannelPipeline for a client-side ISIS channel. - */ -public class IsisPipelineFactory implements ChannelPipelineFactory { - private IsisChannelHandler isisChannelHandler; - - /** - * Creates an instance of ISIS channel pipeline factory. - * - * @param isisChannelHandler ISIS channel handler instance - */ - public IsisPipelineFactory(IsisChannelHandler isisChannelHandler) { - this.isisChannelHandler = isisChannelHandler; - } - - @Override - public ChannelPipeline getPipeline() throws Exception { - ChannelPipeline pipeline = Channels.pipeline(); - pipeline.addLast("encoder", new IsisMessageDecoder()); - pipeline.addLast("decoder", new IsisMessageEncoder()); - pipeline.addLast("handler", isisChannelHandler); - - return pipeline; - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java deleted file mode 100644 index 56f2aef79b..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java +++ /dev/null @@ -1,353 +0,0 @@ -/* -* Copyright 2016-present Open Networking Foundation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.onosproject.isis.controller.impl; - -import org.onlab.packet.Ip4Address; -import org.onlab.util.Bandwidth; -import org.onosproject.isis.controller.IsisNetworkType; -import org.onosproject.isis.controller.LspWrapper; -import org.onosproject.isis.controller.impl.topology.DefaultIsisLink; -import org.onosproject.isis.controller.impl.topology.DefaultIsisLinkInformation; -import org.onosproject.isis.controller.impl.topology.DefaultIsisLinkTed; -import org.onosproject.isis.controller.impl.topology.DefaultIsisRouter; -import org.onosproject.isis.controller.impl.topology.TopologyForDeviceAndLinkImpl; -import org.onosproject.isis.controller.topology.IsisLink; -import org.onosproject.isis.controller.topology.IsisLinkTed; -import org.onosproject.isis.controller.topology.IsisRouter; -import org.onosproject.isis.controller.topology.LinkInformation; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.isispacket.tlv.IsExtendedReachability; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.NeighborForExtendedIs; -import org.onosproject.isis.io.isispacket.tlv.subtlv.AdministrativeGroup; -import org.onosproject.isis.io.isispacket.tlv.subtlv.InterfaceIpAddress; -import org.onosproject.isis.io.isispacket.tlv.subtlv.MaximumBandwidth; -import org.onosproject.isis.io.isispacket.tlv.subtlv.MaximumReservableBandwidth; -import org.onosproject.isis.io.isispacket.tlv.subtlv.NeighborIpAddress; -import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringMetric; -import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv; -import org.onosproject.isis.io.isispacket.tlv.subtlv.UnreservedBandwidth; -import org.onosproject.isis.io.util.IsisConstants; -import org.onosproject.isis.io.util.IsisUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.BlockingQueue; - -/** - * Representation of LSP event consumer. - */ -public class LspEventConsumer implements Runnable { - private static final Logger log = LoggerFactory.getLogger(LspEventConsumer.class); - private BlockingQueue queue = null; - private Controller controller = null; - private TopologyForDeviceAndLinkImpl deviceAndLink = new TopologyForDeviceAndLinkImpl(); - private Map isisRouterDetails = new LinkedHashMap<>(); - - /** - * Creates an instance of this. - * - * @param queue blocking queue instance - * @param controller controller instance - */ - public LspEventConsumer(BlockingQueue queue, Controller controller) { - this.queue = queue; - this.controller = controller; - } - - @Override - public void run() { - try { - while (true) { - if (!queue.isEmpty()) { - LspWrapper wrapper = (LspWrapper) queue.take(); - LsPdu lsPdu = (LsPdu) wrapper.lsPdu(); - if (wrapper.lspProcessing().equals(IsisConstants.LSPREMOVED)) { - callTopologyToRemoveInfo(lsPdu); - } else if (wrapper.lspProcessing().equals(IsisConstants.LSPADDED)) { - callTopologyToSendInfo(lsPdu, wrapper.isisInterface().networkType(), - wrapper.isisInterface().systemId() + ".00"); - } - } - } - } catch (Exception e) { - log.debug("Error::LspsForProvider::{}", e.getMessage()); - } - } - - /** - * Sends topology information to core. - * - * @param lsPdu ls pdu instance - * @param isisNetworkType ISIS network type - * @param ownSystemId own system ID - */ - private void callTopologyToSendInfo(LsPdu lsPdu, IsisNetworkType isisNetworkType, - String ownSystemId) { - if ((lsPdu.lspId().equals(ownSystemId + "-00"))) { - return; - } - sendDeviceInfo(createDeviceInfo(lsPdu)); - - for (IsisTlv isisTlv : lsPdu.tlvs()) { - if (isisTlv instanceof IsExtendedReachability) { - IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv; - List neighbours = isExtendedReachability.neighbours(); - for (NeighborForExtendedIs teTlv : neighbours) { - String neighbor = teTlv.neighborId(); - IsisRouter isisRouter = isisRouterDetails.get(neighbor); - if (isisRouter != null) { - IsisRouter sourceRouter = isisRouterDetails.get(IsisUtil.removeTailingZeros(lsPdu.lspId())); - IsisRouter destinationRouter = isisRouter; - if (sourceRouter.isDis()) { - LinkInformation linkInformation = createLinkInfo(sourceRouter.systemId(), - destinationRouter.systemId(), - sourceRouter.interfaceId(), - destinationRouter.interfaceId(), lsPdu); - controller.addLinkDetails(createIsisLink(linkInformation, lsPdu)); - } else if (destinationRouter.isDis()) { - LinkInformation linkInformation1 = createLinkInfo(destinationRouter.systemId(), - sourceRouter.systemId(), - destinationRouter.interfaceId(), - sourceRouter.interfaceId(), lsPdu); - controller.addLinkDetails(createIsisLink(linkInformation1, lsPdu)); - } else { - LinkInformation linkInformation = createLinkInfo(sourceRouter.systemId(), - destinationRouter.systemId(), - sourceRouter.interfaceId(), - destinationRouter.interfaceId(), lsPdu); - controller.addLinkDetails(createIsisLink(linkInformation, lsPdu)); - LinkInformation linkInformation1 = createLinkInfo(destinationRouter.systemId(), - sourceRouter.systemId(), - destinationRouter.interfaceId(), - sourceRouter.interfaceId(), lsPdu); - controller.addLinkDetails(createIsisLink(linkInformation1, lsPdu)); - } - } - } - } - } - } - - /** - * Removes topology information from core. - * - * @param lsPdu ls pdu instance - */ - private void callTopologyToRemoveInfo(LsPdu lsPdu) { - String routerId = IsisUtil.removeTailingZeros(lsPdu.lspId()); - IsisRouter isisRouter = isisRouterDetails.get(routerId); - removeDeviceInfo(isisRouter); - removeLinkInfo(lsPdu); - } - - /** - * Sends the device information to topology provider. - * - * @param isisRouter ISIS router instance - */ - private void sendDeviceInfo(IsisRouter isisRouter) { - if (isisRouter.systemId() != null) { - controller.addDeviceDetails(isisRouter); - } - } - - /** - * Creates Device instance. - * - * @param lsPdu ISIS LSPDU instance - * @return isisRouter isisRouter instance - */ - public IsisRouter createDeviceInfo(LsPdu lsPdu) { - IsisRouter isisRouter = createIsisRouter(lsPdu); - if (isisRouter.systemId() != null) { - isisRouterDetails.put(isisRouter.systemId(), isisRouter); - } - return isisRouter; - } - - /** - * Creates ISIS router instance. - * - * @param lsPdu lsp instance - * @return isisRouter instance - */ - private IsisRouter createIsisRouter(LsPdu lsPdu) { - IsisRouter isisRouter = new DefaultIsisRouter(); - if (IsisUtil.checkIsDis(lsPdu.lspId())) { - isisRouter.setDis(true); - } else { - isisRouter.setDis(false); - } - isisRouter.setSystemId(IsisUtil.removeTailingZeros(lsPdu.lspId())); - for (IsisTlv isisTlv : lsPdu.tlvs()) { - if (isisTlv instanceof IsExtendedReachability) { - IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv; - List neighbours = isExtendedReachability.neighbours(); - for (NeighborForExtendedIs teTlv : neighbours) { - List teSubTlvs = teTlv.teSubTlv(); - for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) { - if (teSubTlv instanceof InterfaceIpAddress) { - InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv; - isisRouter.setInterfaceId(localIpAddress.localInterfaceIPAddress()); - } else if (teSubTlv instanceof NeighborIpAddress) { - NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv; - isisRouter.setNeighborRouterId(neighborIpAddress.neighborIPAddress()); - } - - } - } - } - } - if (isisRouter.interfaceId() == null) { - isisRouter.setInterfaceId(IsisConstants.DEFAULTIP); - } - if (isisRouter.neighborRouterId() == null) { - isisRouter.setNeighborRouterId(IsisConstants.DEFAULTIP); - } - return isisRouter; - } - - /** - * Creates link information. - * - * @param localSystemId local system ID - * @param remoteSystemId remote system ID - * @param interfaceIp interface address - * @param neighborIp neighbor address - * @param lsPdu link state PDU instance - * @return link information instance - */ - public LinkInformation createLinkInfo(String localSystemId, String remoteSystemId, - Ip4Address interfaceIp, Ip4Address neighborIp, - LsPdu lsPdu) { - - String linkId = "link:" + localSystemId + "-" + remoteSystemId; - LinkInformation linkInformation = new DefaultIsisLinkInformation(); - linkInformation.setInterfaceIp(interfaceIp); - linkInformation.setNeighborIp(neighborIp); - linkInformation.setLinkId(linkId); - linkInformation.setAlreadyCreated(false); - linkInformation.setLinkDestinationId(remoteSystemId); - linkInformation.setLinkSourceId(localSystemId); - - return linkInformation; - } - - /** - * Removes the device information from topology provider. - * - * @param isisRouter ISIS router instance - */ - private void removeDeviceInfo(IsisRouter isisRouter) { - if (isisRouter.systemId() != null) { - controller.removeDeviceDetails(isisRouter); - } - isisRouterDetails.remove(isisRouter.systemId()); - } - - - /** - * Removes the link information from topology provider. - * - * @param lsPdu ls pdu instance - */ - private void removeLinkInfo(LsPdu lsPdu) { - Map linkInformationList = deviceAndLink.removeLinkInfo(lsPdu.lspId()); - for (String key : linkInformationList.keySet()) { - LinkInformation linkInformation = linkInformationList.get(key); - controller.removeLinkDetails(createIsisLink(linkInformation, lsPdu)); - } - } - - /** - * Creates ISIS link instance. - * - * @param linkInformation link information instance - * @return isisLink instance - */ - private IsisLink createIsisLink(LinkInformation linkInformation, LsPdu lsPdu) { - IsisLink isisLink = new DefaultIsisLink(); - isisLink.setLocalSystemId(linkInformation.linkSourceId()); - isisLink.setRemoteSystemId(linkInformation.linkDestinationId()); - isisLink.setInterfaceIp(linkInformation.interfaceIp()); - isisLink.setNeighborIp(linkInformation.neighborIp()); - isisLink.setLinkTed(createIsisLinkTedInfo(lsPdu)); - return isisLink; - } - - /** - * Creates the ISIS link TED information. - * - * @param lsPdu link state PDU - * @return isisLinkTed - */ - public IsisLinkTed createIsisLinkTedInfo(LsPdu lsPdu) { - IsisLinkTed isisLinkTed = new DefaultIsisLinkTed(); - for (IsisTlv isisTlv : lsPdu.tlvs()) { - if (isisTlv instanceof IsExtendedReachability) { - IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv; - List neighbours = isExtendedReachability.neighbours(); - for (NeighborForExtendedIs teTlv : neighbours) { - List teSubTlvs = teTlv.teSubTlv(); - for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) { - if (teSubTlv instanceof AdministrativeGroup) { - AdministrativeGroup ag = (AdministrativeGroup) teSubTlv; - isisLinkTed.setAdministrativeGroup(ag.administrativeGroup()); - } - if (teSubTlv instanceof InterfaceIpAddress) { - InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv; - isisLinkTed.setIpv4InterfaceAddress(localIpAddress.localInterfaceIPAddress()); - } - if (teSubTlv instanceof NeighborIpAddress) { - NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv; - isisLinkTed.setIpv4NeighborAddress(neighborIpAddress.neighborIPAddress()); - } - if (teSubTlv instanceof TrafficEngineeringMetric) { - TrafficEngineeringMetric teM = (TrafficEngineeringMetric) teSubTlv; - isisLinkTed.setTeDefaultMetric(teM.getTrafficEngineeringMetricValue()); - } - if (teSubTlv instanceof MaximumBandwidth) { - MaximumBandwidth maxLinkBandwidth = (MaximumBandwidth) teSubTlv; - isisLinkTed.setMaximumLinkBandwidth( - Bandwidth.bps(maxLinkBandwidth.getMaximumBandwidthValue())); - } - if (teSubTlv instanceof MaximumReservableBandwidth) { - MaximumReservableBandwidth maxReservableBw = (MaximumReservableBandwidth) teSubTlv; - isisLinkTed.setMaximumReservableLinkBandwidth( - Bandwidth.bps(maxReservableBw.getMaximumBandwidthValue())); - } - if (teSubTlv instanceof UnreservedBandwidth) { - UnreservedBandwidth unReservedBandwidth = (UnreservedBandwidth) teSubTlv; - List bandwidthList = new ArrayList<>(); - List unReservedBandwidthList = unReservedBandwidth.unReservedBandwidthValue(); - for (Float unReservedBandwidthFloatValue : unReservedBandwidthList) { - Bandwidth bandwidth = Bandwidth.bps(unReservedBandwidthFloatValue); - bandwidthList.add(bandwidth); - } - isisLinkTed.setUnreservedBandwidth(bandwidthList); - } - } - } - } - } - return isisLinkTed; - } -} diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java deleted file mode 100644 index 5caebd6139..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java +++ /dev/null @@ -1,437 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.lsdb; - -import org.jboss.netty.buffer.ChannelBuffers; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisLsdb; -import org.onosproject.isis.controller.IsisLsdbAge; -import org.onosproject.isis.controller.IsisLspBin; -import org.onosproject.isis.controller.IsisMessage; -import org.onosproject.isis.controller.IsisNeighbor; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.controller.IsisRouterType; -import org.onosproject.isis.controller.LspWrapper; -import org.onosproject.isis.controller.impl.Controller; -import org.onosproject.isis.controller.impl.LspEventConsumer; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.util.IsisConstants; -import org.onosproject.isis.io.util.IsisUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; - -/** - * Representation of ISIS link state database. - */ -public class DefaultIsisLsdb implements IsisLsdb { - private static final Logger log = LoggerFactory.getLogger(DefaultIsisLsdb.class); - private Map isisL1Db = new ConcurrentHashMap<>(); - private Map isisL2Db = new ConcurrentHashMap<>(); - private IsisLsdbAge lsdbAge = null; - private Controller controller = null; - private List isisInterfaceList = new ArrayList<>(); - - - private int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; - private int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; - private LspEventConsumer queueConsumer = null; - private BlockingQueue lspForProviderQueue = new ArrayBlockingQueue<>(1024); - - /** - * Creates an instance of ISIS LSDB. - */ - public DefaultIsisLsdb() { - lsdbAge = new DefaultIsisLsdbAge(); - } - - /** - * Sets the controller instance. - * - * @param controller controller instance - */ - public void setController(Controller controller) { - this.controller = controller; - } - - /** - * Sets the list of IsisInterface instance. - * - * @param isisInterfaceList isisInterface instance - */ - public void setIsisInterface(List isisInterfaceList) { - this.isisInterfaceList = isisInterfaceList; - } - - /** - * Initializes the link state database. - */ - public void initializeDb() { - lsdbAge.startDbAging(); - queueConsumer = new LspEventConsumer(lspForProviderQueue, controller); - new Thread(queueConsumer).start(); - } - - /** - * Sets the level 1 link state sequence number. - * - * @param l1LspSeqNo link state sequence number - */ - public void setL1LspSeqNo(int l1LspSeqNo) { - this.l1LspSeqNo = l1LspSeqNo; - } - - /** - * Sets the level 2 link state sequence number. - * - * @param l2LspSeqNo link state sequence number - */ - public void setL2LspSeqNo(int l2LspSeqNo) { - this.l2LspSeqNo = l2LspSeqNo; - } - - /** - * Returns the LSDB LSP key. - * - * @param systemId system ID - * @return key - */ - public String lspKey(String systemId) { - StringBuilder lspKey = new StringBuilder(); - lspKey.append(systemId); - lspKey.append(".00"); - lspKey.append("-"); - lspKey.append("00"); - - return lspKey.toString(); - } - - /** - * Returns the neighbor L1 database information. - * - * @return neighbor L1 database information - */ - public Map getL1Db() { - return isisL1Db; - } - - /** - * Returns the neighbor L2 database information. - * - * @return neighbor L2 database information - */ - public Map getL2Db() { - return isisL2Db; - } - - /** - * Returns the LSDB instance. - * - * @return LSDB instance - */ - public IsisLsdb isisLsdb() { - return this; - } - - /** - * Returns all LSPs (L1 and L2). - * - * @param excludeMaxAgeLsp exclude the max age LSPs - * @return List of LSPs - */ - public List allLspHeaders(boolean excludeMaxAgeLsp) { - List summaryList = new CopyOnWriteArrayList<>(); - addLspToHeaderList(summaryList, excludeMaxAgeLsp, isisL1Db); - addLspToHeaderList(summaryList, excludeMaxAgeLsp, isisL2Db); - - return summaryList; - } - - /** - * Adds the LSPs to summary list. - * - * @param summaryList summary list - * @param excludeMaxAgeLsp exclude max age LSP - * @param lspMap map of LSP - */ - private void addLspToHeaderList(List summaryList, boolean excludeMaxAgeLsp, Map lspMap) { - Iterator slotVals = lspMap.values().iterator(); - while (slotVals.hasNext()) { - LspWrapper wrapper = (LspWrapper) slotVals.next(); - if (excludeMaxAgeLsp) { - //if current age of lsa is max age or lsa present in Max Age bin - if (wrapper.remainingLifetime() != 0) { - addToList(wrapper, summaryList); - } - } else { - addToList(wrapper, summaryList); - } - } - } - - /** - * Adds the LSPWrapper to summary list. - * - * @param wrapper LSP wrapper instance - * @param summList LSP summary list - */ - private void addToList(LspWrapper wrapper, List summList) { - //set the current age - ((LsPdu) wrapper.lsPdu()).setRemainingLifeTime(wrapper.remainingLifetime()); - summList.add(wrapper); - } - - /** - * Finds the LSP from appropriate maps L1 or L2 based on type. - * - * @param pduType L1 or L2 LSP - * @param lspId LSP ID - * @return LSP wrapper object - */ - public LspWrapper findLsp(IsisPduType pduType, String lspId) { - LspWrapper lspWrapper = null; - - switch (pduType) { - case L1LSPDU: - lspWrapper = isisL1Db.get(lspId); - break; - case L2LSPDU: - lspWrapper = isisL2Db.get(lspId); - break; - default: - log.debug("Unknown LSP type..!!!"); - break; - } - - //set the current age - if (lspWrapper != null) { - //set the current age - ((DefaultLspWrapper) lspWrapper).lsPdu().setRemainingLifeTime(lspWrapper.remainingLifetime()); - } - - return lspWrapper; - } - - /** - * Installs a new self-originated LSP. - * - * @param isisMessage ISIS message - * @param isSelfOriginated is the message self originated? - * @param isisInterface ISIS interface - * @return true if successfully added - */ - public boolean addLsp(IsisMessage isisMessage, boolean isSelfOriginated, IsisInterface isisInterface) { - LsPdu lspdu = (LsPdu) isisMessage; - if (isSelfOriginated) { - //Add length and checksum - byte[] lspBytes = lspdu.asBytes(); - lspdu.setPduLength(lspBytes.length); - lspBytes = IsisUtil.addChecksum(lspBytes, IsisConstants.CHECKSUMPOSITION, - IsisConstants.CHECKSUMPOSITION + 1); - byte[] checkSum = {lspBytes[IsisConstants.CHECKSUMPOSITION], lspBytes[IsisConstants.CHECKSUMPOSITION + 1]}; - lspdu.setCheckSum(ChannelBuffers.copiedBuffer(checkSum).readUnsignedShort()); - } - - DefaultLspWrapper lspWrapper = (DefaultLspWrapper) findLsp(lspdu.isisPduType(), lspdu.lspId()); - if (lspWrapper == null) { - lspWrapper = new DefaultLspWrapper(); - } - - lspWrapper.setLspAgeReceived(IsisConstants.LSPMAXAGE - lspdu.remainingLifeTime()); - lspWrapper.setLspType(IsisPduType.get(lspdu.pduType())); - lspWrapper.setLsPdu(lspdu); - lspWrapper.setAgeCounterWhenReceived(lsdbAge.ageCounter()); - lspWrapper.setAgeCounterRollOverWhenAdded(lsdbAge.ageCounterRollOver()); - lspWrapper.setSelfOriginated(isSelfOriginated); - lspWrapper.setIsisInterface(isisInterface); - lspWrapper.setLsdbAge(lsdbAge); - addLsp(lspWrapper, lspdu.lspId()); - - log.debug("Added LSp In LSDB: {}", lspWrapper); - try { - if (!lspWrapper.isSelfOriginated()) { - lspWrapper.setLspProcessing(IsisConstants.LSPADDED); - lspForProviderQueue.put(lspWrapper); - } - } catch (Exception e) { - log.debug("Added LSp In Blocking queue: {}", lspWrapper); - } - return true; - } - - /** - * Adds the LSP to L1 or L2 database. - * - * @param lspWrapper LSA wrapper instance - * @param key key - * @return True if added else false - */ - private boolean addLsp(LspWrapper lspWrapper, String key) { - //Remove the lsa from bin if exist. - removeLspFromBin(lspWrapper); - - switch (lspWrapper.lsPdu().isisPduType()) { - case L1LSPDU: - isisL1Db.remove(key); - isisL1Db.put(key, lspWrapper); - break; - case L2LSPDU: - isisL2Db.remove(key); - isisL2Db.put(key, lspWrapper); - break; - default: - log.debug("Unknown LSP type to add..!!!"); - break; - } - - //add it to bin - Integer binNumber = lsdbAge.age2Bin(IsisConstants.LSPMAXAGE - lspWrapper.lspAgeReceived()); - IsisLspBin lspBin = lsdbAge.getLspBin(binNumber); - if (lspBin != null) { - //remove from existing - lspWrapper.setBinNumber(binNumber); - lspBin.addIsisLsp(key, lspWrapper); - lsdbAge.addLspBin(binNumber, lspBin); - log.debug("Added Type {} LSP to LSDB and LSABin[{}], Remaining life time of LSA {}", - lspWrapper.lsPdu().isisPduType(), - binNumber, lspWrapper.remainingLifetime()); - } - - return false; - } - - /** - * Removes LSP from Bin. - * - * @param lsaWrapper LSP wrapper instance - */ - public void removeLspFromBin(LspWrapper lsaWrapper) { - if (lsaWrapper != null) { - lsdbAge.removeLspFromBin(lsaWrapper); - } - } - - /** - * Returns new ,latest or old according to the type of ISIS message received. - * - * @param lsp1 LSP instance - * @param lsp2 LSP instance - * @return string status - */ - public String isNewerOrSameLsp(IsisMessage lsp1, IsisMessage lsp2) { - LsPdu receivedLsp = (LsPdu) lsp1; - LsPdu lspFromDb = (LsPdu) lsp2; - if (receivedLsp.sequenceNumber() > lspFromDb.sequenceNumber() || - receivedLsp.checkSum() != lspFromDb.checkSum()) { - return "latest"; - } else if (receivedLsp.sequenceNumber() < lspFromDb.sequenceNumber()) { - return "old"; - } else if (receivedLsp.sequenceNumber() == lspFromDb.sequenceNumber()) { - return "same"; - } - - return ""; - } - - /** - * Returns the sequence number. - * - * @param lspType type of LSP - * @return sequence number - */ - public int lsSequenceNumber(IsisPduType lspType) { - switch (lspType) { - case L1LSPDU: - return l1LspSeqNo++; - case L2LSPDU: - return l2LspSeqNo++; - default: - return IsisConstants.STARTLSSEQUENCENUM; - } - } - - /** - * Deletes the given LSP. - * - * @param lspMessage LSP instance - */ - public void deleteLsp(IsisMessage lspMessage) { - LsPdu lsp = (LsPdu) lspMessage; - String lspKey = lsp.lspId(); - LspWrapper lspWrapper = findLsp(lspMessage.isisPduType(), lspKey); - switch (lsp.isisPduType()) { - case L1LSPDU: - isisL1Db.remove(lspKey); - break; - case L2LSPDU: - isisL2Db.remove(lspKey); - break; - default: - log.debug("Unknown LSP type to remove..!!!"); - break; - } - - try { - lspWrapper.setLspProcessing(IsisConstants.LSPREMOVED); - lspForProviderQueue.put(lspWrapper); - } catch (Exception e) { - log.debug("Added LSp In Blocking queue: {}", lspWrapper); - } - } - - /** - * Removes topology information when neighbor down. - * - * @param neighbor ISIS neighbor instance - * @param isisInterface ISIS interface instance - */ - public void removeTopology(IsisNeighbor neighbor, IsisInterface isisInterface) { - String lspKey = neighbor.neighborSystemId() + ".00-00"; - LspWrapper lspWrapper = null; - switch (IsisRouterType.get(isisInterface.reservedPacketCircuitType())) { - case L1: - lspWrapper = findLsp(IsisPduType.L1LSPDU, lspKey); - break; - case L2: - lspWrapper = findLsp(IsisPduType.L2LSPDU, lspKey); - break; - case L1L2: - lspWrapper = findLsp(IsisPduType.L1LSPDU, lspKey); - if (lspWrapper == null) { - lspWrapper = findLsp(IsisPduType.L2LSPDU, lspKey); - } - break; - default: - log.debug("Unknown type"); - } - try { - if (lspWrapper != null) { - lspWrapper.setLspProcessing(IsisConstants.LSPREMOVED); - lspForProviderQueue.put(lspWrapper); - } - } catch (Exception e) { - log.debug("Added LSp In Blocking queue: {}", lspWrapper); - } - } -} diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAge.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAge.java deleted file mode 100644 index 6ac375839d..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAge.java +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.lsdb; - -import org.onosproject.isis.controller.IsisLsdbAge; -import org.onosproject.isis.controller.IsisLspBin; -import org.onosproject.isis.controller.LspWrapper; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.util.IsisConstants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Map; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -/** - * Representation of ISIS link state database ageing process. - */ -public class DefaultIsisLsdbAge implements IsisLsdbAge { - private static final Logger log = LoggerFactory.getLogger(DefaultIsisLsdbAge.class); - protected int ageCounter = 0; - private InternalAgeTimer dbAgeTimer; - private ScheduledExecutorService exServiceage; - private Integer maxBins = IsisConstants.LSPMAXAGE; - private Map ageBins = new ConcurrentHashMap<>(maxBins); - private int ageCounterRollOver = 0; - private IsisLspQueueConsumer queueConsumer = null; - private BlockingQueue lsaQueue = new ArrayBlockingQueue<>(1024); - private boolean timerStarted = false; - - /** - * Creates an instance of LSDB age. - */ - public DefaultIsisLsdbAge() { - // create LSBin's in the HashMap. - for (int i = 0; i < maxBins; i++) { - IsisLspBin lspBin = new DefaultIsisLspBin(i); - ageBins.put(i, lspBin); - } - } - - /** - * Returns age counter. - * - * @return age counter - */ - public int ageCounter() { - return ageCounter; - } - - /** - * Returns age counter roll over. - * - * @return age counter roll over - */ - public int ageCounterRollOver() { - - return ageCounterRollOver; - } - - /** - * Adds LSP to LS bin for ageing. - * - * @param binNumber key to store in bin - * @param lspBin LSP bin instance - */ - public void addLspBin(int binNumber, IsisLspBin lspBin) { - if (!ageBins.containsKey(binNumber)) { - ageBins.put(binNumber, lspBin); - } - } - - /** - * Returns LSP from Bin. - * - * @param binKey key - * @return bin instance - */ - public IsisLspBin getLspBin(int binKey) { - - return ageBins.get(binKey); - } - - /** - * Removes LSP from Bin. - * - * @param lspWrapper wrapper instance - */ - public void removeLspFromBin(LspWrapper lspWrapper) { - if (ageBins.containsKey(lspWrapper.binNumber())) { - IsisLspBin lsaBin = ageBins.get(lspWrapper.binNumber()); - lsaBin.removeIsisLsp(((LsPdu) lspWrapper.lsPdu()).lspId(), lspWrapper); - } - } - - /** - * Returns the bin number. - * - * @param age Can be either age or ageCounter - * @return bin number. - */ - public int age2Bin(int age) { - if (age <= ageCounter) { - return (ageCounter - age); - } else { - return ((IsisConstants.LSPMAXAGE - 1) + (ageCounter - age)); - } - } - - /** - * Starts the aging timer and queue consumer. - */ - public void startDbAging() { - if (!timerStarted) { - startDbAgeTimer(); - queueConsumer = new IsisLspQueueConsumer(lsaQueue); - new Thread(queueConsumer).start(); - timerStarted = true; - } - } - - /** - * Starts DB aging task. - */ - private void startDbAgeTimer() { - dbAgeTimer = new InternalAgeTimer(); - //from 1 sec - exServiceage = Executors.newSingleThreadScheduledExecutor(); - exServiceage.scheduleAtFixedRate(dbAgeTimer, 1, 1, TimeUnit.SECONDS); - } - - /** - * Gets called every second as part of the aging process. - */ - public void ageLsp() { - refreshLsa(); - maxAgeLsa(); - - if (ageCounter == IsisConstants.LSPMAXAGE) { - ageCounter = 0; - ageCounterRollOver++; - } else { - ageCounter++; - } - } - - /** - * If the LSP have completed the MaxAge - they are moved called stop aging. - */ - public void maxAgeLsa() { - if (ageCounter == 0) { - return; - } - //Get from Age Bins - IsisLspBin lspBin = ageBins.get(ageCounter - 1); - if (lspBin == null) { - return; - } - Map lspBinMap = lspBin.listOfLsp(); - for (Object key : lspBinMap.keySet()) { - LspWrapper lspWrapper = (LspWrapper) lspBinMap.get((String) key); - if (lspWrapper.currentAge() == IsisConstants.LSPMAXAGE) { - lspWrapper.setLspProcessing(IsisConstants.MAXAGELSP); - log.debug("Lsp picked for maxage removal. Age Counter: {}, AgeCounterRollover: {}, " + - "AgeCounterRollover WhenAddedToDb: {}, LSA Type: {}, LSA Key: {}", - ageCounter, ageCounterRollOver, lspWrapper.currentAge(), - lspWrapper.lsPdu().isisPduType(), key); - //add it to lspQueue for processing - try { - lsaQueue.put(lspWrapper); - //remove from bin - lspBin.removeIsisLsp((String) key, lspWrapper); - } catch (InterruptedException e) { - log.debug("Error::LSDBAge::maxAgeLsp::{}", e.getMessage()); - } - } - } - - } - - /* - * If the LSP is in age bin of 900s- it's pushed into refresh list. - */ - public void refreshLsa() { - int binNumber; - if (ageCounter < IsisConstants.LSPREFRESH) { - binNumber = ageCounter + IsisConstants.LSPREFRESH; - } else { - binNumber = ageCounter - IsisConstants.LSPREFRESH; - } - if (binNumber >= IsisConstants.LSPMAXAGE) { - binNumber = binNumber - IsisConstants.LSPMAXAGE; - } - IsisLspBin lspBin = ageBins.get(binNumber); - if (lspBin == null) { - return; - } - Map lspBinMap = lspBin.listOfLsp(); - for (Object key : lspBinMap.keySet()) { - LspWrapper lsp = (LspWrapper) lspBinMap.get((String) key); - try { - if (lsp.isSelfOriginated()) { - log.debug("Lsp picked for refreshLsp. binNumber: {}, LSA Type: {}, LSA Key: {}", - binNumber, lsp.lspType(), key); - lsp.setLspProcessing(IsisConstants.REFRESHLSP); - lsaQueue.put(lsp); - //remove from bin - lspBin.removeIsisLsp((String) key, lsp); - } - } catch (InterruptedException e) { - log.debug("Error::LSDBAge::refreshLsp::{}", e.getMessage()); - } - } - } - - /** - * Runnable task which runs every second and calls aging process. - */ - private class InternalAgeTimer implements Runnable { - - /** - * Creates an instance of age timer task. - */ - InternalAgeTimer() { - log.debug("Starts::IsisLsdbAge::AgeTimer...!!! "); - } - - @Override - public void run() { - ageLsp(); - } - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBin.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBin.java deleted file mode 100644 index 605eb5fe01..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBin.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.lsdb; - -import com.google.common.base.MoreObjects; -import org.onosproject.isis.controller.IsisLspBin; -import org.onosproject.isis.controller.LspWrapper; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * Representation of LSP bin, where an LSP is stored for Aging. - * A bin is identified by a bin number and can have one or more LSPs - * store in a particular bin location - */ -public class DefaultIsisLspBin implements IsisLspBin { - private int binNumber; - private Map listOfLsp = new ConcurrentHashMap<>(); - - /** - * Creates ISIS LSP bin instance. - * - * @param binNumber bin number - */ - public DefaultIsisLspBin(int binNumber) { - this.binNumber = binNumber; - } - - /** - * Adds the LSP to wrapper. - * - * @param lspKey key to add the LSP - * @param lspWrapper LSP wrapper instance - */ - public void addIsisLsp(String lspKey, LspWrapper lspWrapper) { - if (!listOfLsp.containsKey(lspKey)) { - listOfLsp.put(lspKey, lspWrapper); - lspWrapper.setBinNumber(this.binNumber); - } - } - - /** - * Returns the LSP wrapper. - * - * @param lspKey LSP key - * @return LSP wrapper - */ - public LspWrapper isisLsp(String lspKey) { - return listOfLsp.get(lspKey); - } - - /** - * Removes ISIS LSP from database. - * - * @param lspKey LSP key - * @param lspWrapper LSP wrapper instance - */ - public void removeIsisLsp(String lspKey, LspWrapper lspWrapper) { - if (listOfLsp.containsKey(lspKey)) { - listOfLsp.remove(lspKey); - } - } - - /** - * Returns all LSP wrappers. - * - * @return all LSP wrappers - */ - public Map listOfLsp() { - return listOfLsp; - } - - /** - * Returns the bin number. - * - * @return the bin number - */ - public int binNumber() { - return binNumber; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("binNumber", binNumber) - .add("listOfLsp", listOfLsp) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapper.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapper.java deleted file mode 100644 index 864b08e780..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapper.java +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.lsdb; - -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisLsdbAge; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.controller.LspWrapper; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.util.IsisConstants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Representation of LSP wrapper where the LSPs are stored with metadata. - */ -public class DefaultLspWrapper implements LspWrapper { - private static final Logger log = LoggerFactory.getLogger(DefaultLspWrapper.class); - private int binNumber = -1; - private boolean selfOriginated = false; - private IsisPduType lspType; - private int lspAgeReceived; - private int ageCounterWhenReceived; - private LsPdu lsPdu; - private IsisLsdbAge lsdbAge; - private int ageCounterRollOverWhenAdded; - private int remainingLifetime; - private IsisInterface isisInterface; - private String lspProcessing; - - /** - * Returns "refreshLsp" or "maxageLsp" based on LSP to process. - * - * @return LSP processing string - */ - public String lspProcessing() { - return lspProcessing; - } - - /** - * Sets LSP processing "refreshLsp" or "maxageLsp" based on LSP to process. - * - * @param lspProcessing "refreshLsp" or "maxageLsp" based on LSP to process - */ - public void setLspProcessing(String lspProcessing) { - this.lspProcessing = lspProcessing; - } - - /** - * Returns LSP age received. - * - * @return LSP age received - */ - public int lspAgeReceived() { - return lspAgeReceived; - } - - /** - * Sets LSP age received. - * - * @param lspAgeReceived LSP age received. - */ - public void setLspAgeReceived(int lspAgeReceived) { - this.lspAgeReceived = lspAgeReceived; - } - - /** - * Returns ISIS interface instance. - * - * @return ISIS interface instance - */ - public IsisInterface isisInterface() { - return isisInterface; - } - - /** - * Sets ISIS interface. - * - * @param isisInterface ISIS interface instance - */ - public void setIsisInterface(IsisInterface isisInterface) { - this.isisInterface = isisInterface; - } - - /** - * Returns age counter when received. - * - * @return age counter when received - */ - public int ageCounterWhenReceived() { - - return ageCounterWhenReceived; - } - - /** - * Sets age counter when received. - * - * @param ageCounterWhenReceived age counter when received - */ - public void setAgeCounterWhenReceived(int ageCounterWhenReceived) { - this.ageCounterWhenReceived = ageCounterWhenReceived; - } - - /** - * Returns age counter roll over. - * - * @return age counter roll over - */ - public int ageCounterRollOverWhenAdded() { - return ageCounterRollOverWhenAdded; - } - - /** - * Sets age counter roll over when added. - * - * @param ageCounterRollOverWhenAdded age counter roll over when added - */ - public void setAgeCounterRollOverWhenAdded(int ageCounterRollOverWhenAdded) { - this.ageCounterRollOverWhenAdded = ageCounterRollOverWhenAdded; - } - - /** - * Returns bin number. - * - * @return bin number - */ - public int binNumber() { - return binNumber; - } - - /** - * Sets bin number. - * - * @param binNumber bin number - */ - public void setBinNumber(int binNumber) { - this.binNumber = binNumber; - } - - /** - * Returns true if self originated. - * - * @return true if self originated. - */ - public boolean isSelfOriginated() { - return selfOriginated; - } - - /** - * Sets true if self originated. - * - * @param selfOriginated true if self originated else false - */ - public void setSelfOriginated(boolean selfOriginated) { - this.selfOriginated = selfOriginated; - } - - /** - * Returns ISIS PDU type. - * - * @return ISIS PDU type - */ - public IsisPduType lspType() { - return lspType; - } - - /** - * Sets ISIS PDU type. - * - * @param lspType ISIS PDU type - */ - public void setLspType(IsisPduType lspType) { - this.lspType = lspType; - } - - /** - * Returns LSPDU which the wrapper contains. - * - * @return LSPDU which the wrapper contains - */ - public LsPdu lsPdu() { - return lsPdu; - } - - /** - * Sets LSPDU which the wrapper contains. - * - * @param lsPdu LSPDU which the wrapper contains - */ - public void setLsPdu(LsPdu lsPdu) { - this.lsPdu = lsPdu; - } - - /** - * Returns ISIS LSDB age. - * - * @return ISIS LSDB age - */ - public IsisLsdbAge lsdbAge() { - return lsdbAge; - } - - /** - * Sets LSDB age. - * - * @param lsdbAge LSDB age - */ - public void setLsdbAge(IsisLsdbAge lsdbAge) { - this.lsdbAge = lsdbAge; - } - - /** - * Returns the current LSP Age. - * - * @return LSP age - */ - public int currentAge() { - - int currentAge = 0; - //ls age received - if (lsdbAge.ageCounter() >= ageCounterWhenReceived) { - if (!selfOriginated) { - if (ageCounterRollOverWhenAdded == lsdbAge.ageCounterRollOver()) { - currentAge = lspAgeReceived + (lsdbAge.ageCounter() - ageCounterWhenReceived); - } else { - return IsisConstants.LSPMAXAGE; - } - } else { - currentAge = lspAgeReceived + (lsdbAge.ageCounter() - ageCounterWhenReceived); - } - } else { - currentAge = lspAgeReceived + ((IsisConstants.LSPMAXAGE + lsdbAge.ageCounter()) - - ageCounterWhenReceived); - } - - if (currentAge >= IsisConstants.LSPMAXAGE) { - return IsisConstants.LSPMAXAGE; - } else if ((currentAge == lspAgeReceived) && ageCounterRollOverWhenAdded - != lsdbAge.ageCounterRollOver()) { - return IsisConstants.LSPMAXAGE; - } - - return currentAge; - } - - - - /** - * Returns remaining time. - * - * @return remaining time - */ - public int remainingLifetime() { - //Calculate the remaining lifetime - remainingLifetime = IsisConstants.LSPMAXAGE - currentAge(); - return remainingLifetime; - } - - /** - * Sets remaining life time. - * - * @param remainingLifetime LSPs remaining life time - */ - public void setRemainingLifetime(int remainingLifetime) { - this.remainingLifetime = remainingLifetime; - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumer.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumer.java deleted file mode 100644 index ddee6475e7..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumer.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.lsdb; - -import org.jboss.netty.channel.Channel; -import org.onosproject.isis.controller.IsisLsdb; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.controller.LspWrapper; -import org.onosproject.isis.controller.impl.DefaultIsisInterface; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.util.IsisConstants; -import org.onosproject.isis.io.util.IsisUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.concurrent.BlockingQueue; - -/** - * Representation of LSP queue consumer. - */ -public class IsisLspQueueConsumer implements Runnable { - private static final Logger log = LoggerFactory.getLogger(IsisLspQueueConsumer.class); - private BlockingQueue queue = null; - - /** - * Creates an instance of LSP queue consumer. - * - * @param queue queue instance - */ - public IsisLspQueueConsumer(BlockingQueue queue) { - this.queue = queue; - } - - /** - * Gets the LSP wrapper instance from queue and process it. - */ - @Override - public void run() { - log.debug("LSPQueueConsumer:run...!!!"); - try { - while (true) { - if (!queue.isEmpty()) { - LspWrapper wrapper = (LspWrapper) queue.take(); - String lspProcessing = wrapper.lspProcessing(); - switch (lspProcessing) { - case IsisConstants.REFRESHLSP: - log.debug("LSPQueueConsumer: Message - " + IsisConstants.REFRESHLSP + - " consumed."); - processRefreshLsp(wrapper); - break; - case IsisConstants.MAXAGELSP: - log.debug("LSPQueueConsumer: Message - " + IsisConstants.MAXAGELSP + - " consumed."); - processMaxAgeLsa(wrapper); - break; - default: - log.debug("Unknown command to process the LSP in queue ...!!!"); - break; - } - } - } - } catch (Exception e) { - log.debug("Error::LSPQueueConsumer::{}", e.getMessage()); - } - } - - /** - * Process refresh LSP. - * - * @param wrapper LSP wrapper instance - */ - private void processRefreshLsp(LspWrapper wrapper) { - if (wrapper.isSelfOriginated()) { //self originated - DefaultIsisInterface isisInterface = (DefaultIsisInterface) wrapper.isisInterface(); - Channel channel = isisInterface.channel(); - if (channel != null && channel.isConnected()) { - LsPdu lsPdu = (LsPdu) wrapper.lsPdu(); - lsPdu.setSequenceNumber(isisInterface.isisLsdb().lsSequenceNumber( - IsisPduType.get(lsPdu.pduType()))); - lsPdu.setRemainingLifeTime(IsisConstants.LSPMAXAGE); - byte[] lspBytes = lsPdu.asBytes(); - lspBytes = IsisUtil.addLengthAndMarkItInReserved(lspBytes, IsisConstants.LENGTHPOSITION, - IsisConstants.LENGTHPOSITION + 1, - IsisConstants.RESERVEDPOSITION); - lspBytes = IsisUtil.addChecksum(lspBytes, IsisConstants.CHECKSUMPOSITION, - IsisConstants.CHECKSUMPOSITION + 1); - //write to the channel - channel.write(IsisUtil.framePacket(lspBytes, isisInterface.interfaceIndex())); - // Updating the database with resetting remaining life time to default. - IsisLsdb isisDb = isisInterface.isisLsdb(); - isisDb.addLsp(lsPdu, true, isisInterface); - log.debug("LSPQueueConsumer: processRefreshLsp - Flooded SelfOriginated LSP {}", - wrapper.lsPdu()); - } - } - } - - /** - * Process max age LSP. - * - * @param wrapper LSP wrapper instance - */ - private void processMaxAgeLsa(LspWrapper wrapper) { - //set the destination - DefaultIsisInterface isisInterface = (DefaultIsisInterface) wrapper.isisInterface(); - if (isisInterface != null) { - //delete from db - LsPdu lsPdu = (LsPdu) wrapper.lsPdu(); - IsisLsdb isisDb = isisInterface.isisLsdb(); - isisDb.deleteLsp(lsPdu); - log.debug("LSPQueueConsumer: processMaxAgeLsp - Removed-Max Age LSP {}", - wrapper.lsPdu()); - } - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/package-info.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/package-info.java deleted file mode 100644 index 5fe54517ed..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS controller LSDB and related functionality. - */ -package org.onosproject.isis.controller.impl.lsdb; \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/package-info.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/package-info.java deleted file mode 100644 index 1dc02f04e3..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS controller. - */ -package org.onosproject.isis.controller.impl; \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLink.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLink.java deleted file mode 100644 index 9c1e1c4ede..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLink.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.controller.impl.topology; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.controller.topology.IsisLink; -import org.onosproject.isis.controller.topology.IsisLinkTed; - -/** - * Representation of an ISIS Link. - */ -public class DefaultIsisLink implements IsisLink { - - private String remoteSystemId; - private String localSystemId; - private Ip4Address interfaceIp; - private Ip4Address neighborIp; - private IsisLinkTed linkTed; - - @Override - public String remoteSystemId() { - return this.remoteSystemId; - } - - @Override - public String localSystemId() { - return this.localSystemId; - } - - @Override - public Ip4Address interfaceIp() { - return this.interfaceIp; - } - - @Override - public Ip4Address neighborIp() { - return this.neighborIp; - } - - @Override - public IsisLinkTed linkTed() { - return this.linkTed; - } - - @Override - public void setRemoteSystemId(String remoteSystemId) { - this.remoteSystemId = remoteSystemId; - } - - @Override - public void setLocalSystemId(String localSystemId) { - this.localSystemId = localSystemId; - } - - @Override - public void setInterfaceIp(Ip4Address interfaceIp) { - this.interfaceIp = interfaceIp; - } - - @Override - public void setNeighborIp(Ip4Address neighborIp) { - this.neighborIp = neighborIp; - } - - @Override - public void setLinkTed(IsisLinkTed linkTed) { - this.linkTed = linkTed; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("remoteSystemId", remoteSystemId) - .add("localSystemId", localSystemId) - .add("interfaceIp", interfaceIp) - .add("neighborIp", neighborIp) - .add("linkTed", linkTed) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - DefaultIsisLink that = (DefaultIsisLink) o; - return Objects.equal(remoteSystemId, that.remoteSystemId) && - Objects.equal(localSystemId, that.localSystemId) && - Objects.equal(interfaceIp, that.interfaceIp) && - Objects.equal(neighborIp, that.neighborIp) && - Objects.equal(linkTed, that.linkTed); - } - - @Override - public int hashCode() { - return Objects.hashCode(remoteSystemId, localSystemId, interfaceIp, neighborIp, linkTed); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkInformation.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkInformation.java deleted file mode 100644 index 815257ca14..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkInformation.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.topology; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.controller.topology.LinkInformation; - -/** - * Representation of an ISIS link information.. - */ -public class DefaultIsisLinkInformation implements LinkInformation { - - String linkId; - String linkSourceId; - String linkDestinationId; - Ip4Address interfaceIp; - Ip4Address neighborIp; - boolean alreadyCreated; - - /** - * Gets link id. - * - * @return link id - */ - public String linkId() { - return linkId; - } - - /** - * Sets link id.DefaultIsisDeviceInformation. - * - * @param linkId link id - */ - public void setLinkId(String linkId) { - this.linkId = linkId; - } - - /** - * Gets is already created or not. - * - * @return true if already created else false - */ - public boolean isAlreadyCreated() { - return alreadyCreated; - } - - /** - * Sets is already created or not. - * - * @param alreadyCreated true or false - */ - public void setAlreadyCreated(boolean alreadyCreated) { - this.alreadyCreated = alreadyCreated; - } - - /** - * Gets link destination id. - * - * @return link destination id - */ - public String linkDestinationId() { - return linkDestinationId; - } - - /** - * Sets link destination id. - * - * @param linkDestinationId link destination id - */ - public void setLinkDestinationId(String linkDestinationId) { - this.linkDestinationId = linkDestinationId; - } - - /** - * Gets link source id. - * - * @return link source id - */ - public String linkSourceId() { - return linkSourceId; - } - - /** - * Sets link source id. - * - * @param linkSourceId link source id - */ - public void setLinkSourceId(String linkSourceId) { - this.linkSourceId = linkSourceId; - } - - /** - * Gets interface IP address. - * - * @return interface IP address - */ - public Ip4Address interfaceIp() { - return interfaceIp; - } - - /** - * Sets interface IP address. - * - * @param interfaceIp interface IP address - */ - public void setInterfaceIp(Ip4Address interfaceIp) { - this.interfaceIp = interfaceIp; - } - - @Override - public Ip4Address neighborIp() { - return this.neighborIp; - } - - @Override - public void setNeighborIp(Ip4Address neighborIp) { - this.neighborIp = neighborIp; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("linkId", linkId) - .add("linkSourceId", linkSourceId) - .add("linkDestinationId", linkDestinationId) - .add("interfaceIp", interfaceIp) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - DefaultIsisLinkInformation that = (DefaultIsisLinkInformation) o; - return Objects.equal(linkId, that.linkId) && - Objects.equal(linkSourceId, that.linkSourceId) && - Objects.equal(linkDestinationId, that.linkDestinationId) && - Objects.equal(interfaceIp, that.interfaceIp); - } - - @Override - public int hashCode() { - return Objects.hashCode(linkId, linkSourceId, linkDestinationId, - interfaceIp); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkTed.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkTed.java deleted file mode 100644 index a7fcfa6d9d..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisLinkTed.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.topology; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onlab.packet.Ip4Address; -import org.onlab.util.Bandwidth; -import org.onosproject.isis.controller.topology.IsisLinkTed; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an ISIS device information. - */ -public class DefaultIsisLinkTed implements IsisLinkTed { - private int administrativeGroup; - private Ip4Address ipv4InterfaceAddress; - private Ip4Address ipv4NeighborAddress; - private Bandwidth maximumLinkBandwidth; - private Bandwidth maximumReservableLinkBandwidth; - private List unreservedBandwidth = new ArrayList<>(); - private long teDefaultMetric; - - @Override - public int administrativeGroup() { - return administrativeGroup; - } - - @Override - public void setAdministrativeGroup(int administrativeGroup) { - this.administrativeGroup = administrativeGroup; - } - - @Override - public Ip4Address ipv4InterfaceAddress() { - return ipv4InterfaceAddress; - } - - @Override - public void setIpv4InterfaceAddress(Ip4Address interfaceAddress) { - this.ipv4InterfaceAddress = interfaceAddress; - } - - @Override - public Ip4Address ipv4NeighborAddress() { - return ipv4NeighborAddress; - } - - @Override - public void setIpv4NeighborAddress(Ip4Address neighborAddress) { - this.ipv4NeighborAddress = neighborAddress; - } - - @Override - public Bandwidth maximumLinkBandwidth() { - return maximumLinkBandwidth; - } - - @Override - public void setMaximumLinkBandwidth(Bandwidth bandwidth) { - this.maximumLinkBandwidth = bandwidth; - } - - @Override - public Bandwidth maximumReservableLinkBandwidth() { - return maximumReservableLinkBandwidth; - } - - @Override - public void setMaximumReservableLinkBandwidth(Bandwidth bandwidth) { - this.maximumReservableLinkBandwidth = bandwidth; - } - - @Override - public List unreservedBandwidth() { - return this.unreservedBandwidth; - } - - @Override - public void setUnreservedBandwidth(List bandwidth) { - this.unreservedBandwidth.addAll(bandwidth); - } - - @Override - public long teDefaultMetric() { - return teDefaultMetric; - } - - @Override - public void setTeDefaultMetric(long teMetric) { - this.teDefaultMetric = teMetric; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("administrativeGroup", administrativeGroup) - .add("ipv4InterfaceAddress", ipv4InterfaceAddress) - .add("ipv4NeighborAddress", ipv4NeighborAddress) - .add("maximumLinkBandwidth", maximumLinkBandwidth) - .add("maximumReservableLinkBandwidth", maximumReservableLinkBandwidth) - .add("teDefaultMetric", teDefaultMetric) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - DefaultIsisLinkTed that = (DefaultIsisLinkTed) o; - return Objects.equal(administrativeGroup, that.administrativeGroup) && - Objects.equal(ipv4InterfaceAddress, that.ipv4InterfaceAddress) && - Objects.equal(ipv4NeighborAddress, that.ipv4NeighborAddress) && - Objects.equal(maximumLinkBandwidth, that.maximumLinkBandwidth) && - Objects.equal(maximumReservableLinkBandwidth, - that.maximumReservableLinkBandwidth) && - Objects.equal(teDefaultMetric, that.teDefaultMetric); - } - - @Override - public int hashCode() { - return Objects.hashCode(administrativeGroup, ipv4InterfaceAddress, - ipv4NeighborAddress, maximumLinkBandwidth, teDefaultMetric); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisRouter.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisRouter.java deleted file mode 100644 index ec7b5c27d1..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisRouter.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.controller.impl.topology; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.controller.topology.IsisRouter; - -/** - * Representation of an ISIS Router. - */ -public class DefaultIsisRouter implements IsisRouter { - - private String systemId; - private Ip4Address neighborRouterId; - private Ip4Address interfaceId; - private boolean isDis; - - /** - * Gets the system ID. - * - * @return systemId system ID - */ - public String systemId() { - return systemId; - } - - /** - * Sets IP address of the Router. - * - * @param systemId system identifier of the router - */ - public void setSystemId(String systemId) { - this.systemId = systemId; - } - - /** - * Gets IP address of the interface. - * - * @return IP address of the interface - */ - public Ip4Address interfaceId() { - return interfaceId; - } - - /** - * Gets IP address of the interface. - * - * @param interfaceId IP address of the interface - */ - public void setInterfaceId(Ip4Address interfaceId) { - this.interfaceId = interfaceId; - } - - /** - * Gets neighbor's Router id. - * - * @return neighbor's Router id - */ - public Ip4Address neighborRouterId() { - return neighborRouterId; - } - - /** - * Sets neighbor's Router id. - * - * @param advertisingRouterId neighbor's Router id - */ - public void setNeighborRouterId(Ip4Address advertisingRouterId) { - this.neighborRouterId = advertisingRouterId; - } - - /** - * Gets if DR or not. - * - * @return true if DR else false - */ - public boolean isDis() { - return isDis; - } - - /** - * Sets dis or not. - * - * @param dis true if DIS else false - */ - public void setDis(boolean dis) { - isDis = dis; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("systemId", systemId) - .add("neighborRouterId", neighborRouterId) - .add("interfaceId", interfaceId) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - DefaultIsisRouter that = (DefaultIsisRouter) o; - return Objects.equal(systemId, that.systemId) && - Objects.equal(neighborRouterId, that.neighborRouterId) && - Objects.equal(interfaceId, that.interfaceId); - } - - @Override - public int hashCode() { - return Objects.hashCode(systemId, neighborRouterId, interfaceId); - } -} diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/TopologyForDeviceAndLinkImpl.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/TopologyForDeviceAndLinkImpl.java deleted file mode 100644 index 3c52308830..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/TopologyForDeviceAndLinkImpl.java +++ /dev/null @@ -1,491 +0,0 @@ -/* -* Copyright 2016-present Open Networking Foundation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.onosproject.isis.controller.impl.topology; - -import org.onlab.util.Bandwidth; -import org.onosproject.isis.controller.topology.DeviceInformation; -import org.onosproject.isis.controller.topology.IsisRouter; -import org.onosproject.isis.controller.topology.LinkInformation; -import org.onosproject.isis.controller.topology.TopologyForDeviceAndLink; -import org.onosproject.isis.controller.topology.IsisLinkTed; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.isispacket.tlv.IsExtendedReachability; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.NeighborForExtendedIs; - -import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv; -import org.onosproject.isis.io.isispacket.tlv.subtlv.InterfaceIpAddress; -import org.onosproject.isis.io.isispacket.tlv.subtlv.NeighborIpAddress; -import org.onosproject.isis.io.isispacket.tlv.subtlv.AdministrativeGroup; -import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringMetric; -import org.onosproject.isis.io.isispacket.tlv.subtlv.UnreservedBandwidth; -import org.onosproject.isis.io.isispacket.tlv.subtlv.MaximumReservableBandwidth; -import org.onosproject.isis.io.isispacket.tlv.subtlv.MaximumBandwidth; -import org.onosproject.isis.io.util.IsisConstants; -import org.onosproject.isis.io.util.IsisUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Represents device and link topology information. - */ -public class TopologyForDeviceAndLinkImpl implements TopologyForDeviceAndLink { - - private static final Logger log = LoggerFactory.getLogger(TopologyForDeviceAndLinkImpl.class); - private Map deviceInformationMap = new LinkedHashMap<>(); - private Map isisRouterDetails = new LinkedHashMap<>(); - private Map deviceInformationMapForPointToPoint = new LinkedHashMap<>(); - private Map deviceInformationMapToDelete = new LinkedHashMap<>(); - private Map addedLinkInformationMap = new LinkedHashMap<>(); - - /** - * Gets device information. - * - * @return device information - */ - public Map deviceInformationMap() { - return deviceInformationMap; - } - - /** - * Gets ISIS router list information. - * - * @return router information - */ - public Map isisDeviceList() { - return isisRouterDetails; - } - - /** - * Sets device information. - * - * @param key key used to add in map - * @param deviceInformationMap device information instance - */ - public void setDeviceInformationMap(String key, DeviceInformation deviceInformationMap) { - if (deviceInformationMap != null) { - this.deviceInformationMap.put(key, deviceInformationMap); - } - - } - - /** - * Gets deviceInformation as map for Point-To-Point. - * - * @return deviceInformationMap - */ - public Map deviceInformationMapForPointToPoint() { - return deviceInformationMapForPointToPoint; - } - - /** - * Sets deviceInformation as map for Point-To-Point.. - * - * @param key key used to add in map - * @param deviceInformationMap device information instance - */ - public void setDeviceInformationMapForPointToPoint(String key, DeviceInformation deviceInformationMap) { - if (deviceInformationMap != null) { - this.deviceInformationMapForPointToPoint.put(key, deviceInformationMap); - } - - } - - /** - * Gets deviceInformation as map. - * - * @return deviceInformationMap to delete from core - */ - public Map deviceInformationMapToDelete() { - return deviceInformationMapToDelete; - } - - /** - * Sets device information for removal. - * - * @param key ket used to add in map - * @param deviceInformationMapToDelete map from device information to remove - */ - public void setDeviceInformationMapToDelete(String key, DeviceInformation deviceInformationMapToDelete) { - if (deviceInformationMapToDelete != null) { - this.deviceInformationMapToDelete.put(key, deviceInformationMapToDelete); - } - } - - /** - * Removes Device Information. - * - * @param key ket used to remove from map - */ - public void removeDeviceInformationMapFromDeleteMap(String key) { - removeDeviceInformationMap(key); - if (this.deviceInformationMapToDelete.containsKey(key)) { - this.deviceInformationMapToDelete.remove(key); - } - } - - /** - * Gets Device Information. - * - * @param key system id as key to store in map - * @return Device Information - */ - public DeviceInformation deviceInformation(String key) { - DeviceInformation deviceInformation = this.deviceInformationMap.get(key); - return deviceInformation; - } - - /** - * Removes Device Information from map. - * - * @param key key used to remove from map - */ - public void removeDeviceInformationMap(String key) { - if (this.deviceInformationMap.containsKey(key)) { - this.deviceInformationMap.remove(key); - } - } - - @Override - public void removeLinks(String linkId) { - this.addedLinkInformationMap.remove(linkId); - } - - /** - * Gets link information as map. - * - * @return link information as map - */ - public Map linkInformationMap() { - return addedLinkInformationMap; - } - - private LinkInformation getLinkInformation(String key) { - LinkInformation linkInformation = this.addedLinkInformationMap.get(key); - return linkInformation; - } - - /** - * Sets link information in map. - * - * @param key key used to add in map - * @param linkInformationMap link information instance - */ - public void setLinkInformationMap(String key, LinkInformation linkInformationMap) { - if (!this.addedLinkInformationMap.containsKey(key)) { - this.addedLinkInformationMap.put(key, linkInformationMap); - } - } - - /** - * Gets linkInformation as map for PointToPoint. - * - * @return linkInformationMap - */ - public Map linkInformationMapForPointToPoint() { - return addedLinkInformationMap; - } - - /** - * Sets linkInformation as map for PointToPoint. - * - * @param key key used to add in map - * @param linkInformationMap link information instance - */ - public void setLinkInformationMapForPointToPoint(String key, LinkInformation linkInformationMap) { - if (!this.addedLinkInformationMap.containsKey(key)) { - this.addedLinkInformationMap.put(key, linkInformationMap); - } - } - - /** - * Removes Link Information from linkInformationMap. - * - * @param key key used to remove in map - */ - public void removeLinkInformationMap(String key) { - if (this.addedLinkInformationMap.containsKey(key)) { - this.addedLinkInformationMap.remove(key); - } - } - - /** - * Returns the ISIS router instance. - * - * @param systemId system ID to get router details - * @return ISIS router instance - */ - public IsisRouter isisRouter(String systemId) { - String routerId = IsisUtil.removeTailingZeros(systemId); - IsisRouter isisRouter = isisRouterDetails.get(routerId); - if (isisRouter != null) { - return isisRouter; - } else { - log.debug("IsisRouter is not available"); - IsisRouter isisRouterCheck = new DefaultIsisRouter(); - isisRouterCheck.setSystemId(routerId); - return isisRouterCheck; - } - } - - /** - * Removes the ISIS router instance from map. - * - * @param systemId system ID to remove router details - */ - public void removeRouter(String systemId) { - String routerId = IsisUtil.removeTailingZeros(systemId); - isisRouterDetails.remove(systemId); - } - - /** - * Creates Device instance. - * - * @param lsPdu ISIS LSPDU instance - * @return isisRouter isisRouter instance - */ - public IsisRouter createDeviceInfo(LsPdu lsPdu) { - IsisRouter isisRouter = createIsisRouter(lsPdu); - - if (isisRouter.systemId() != null) { - if (isisRouter.interfaceId() == null && isisRouter.neighborRouterId() == null) { - isisRouter.setInterfaceId(IsisConstants.DEFAULTIP); - isisRouter.setNeighborRouterId(IsisConstants.DEFAULTIP); - isisRouterDetails.put(isisRouter.systemId(), isisRouter); - } - } - return isisRouter; - } - - /** - * Removes Device and Link instance. - * - * @param lsPdu ISIS LSPDU instance - * @return isisRouter isisRouter instance - */ - /* - public IsisRouter removeDeviceAndLinkInfo(LsPdu lsPdu) { - IsisRouter isisRouter = createIsisRouter(lsPdu); - return isisRouter; - }*/ - - /** - * Creates link information. - * - * @param lsPdu ls pdu instance - * @param ownSystemId system ID - * @return link information - */ - public Map createLinkInfo(LsPdu lsPdu, String ownSystemId) { - for (IsisTlv isisTlv : lsPdu.tlvs()) { - if (isisTlv instanceof IsExtendedReachability) { - IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv; - List neighborForExtendedIsList = isExtendedReachability.neighbours(); - for (NeighborForExtendedIs neighbor : neighborForExtendedIsList) { - String neighbourId = neighbor.neighborId(); - String routerId = IsisUtil.removeTailingZeros(lsPdu.lspId()); - if (!(neighbourId.equals(ownSystemId))) { - IsisRouter isisRouter = isisRouterDetails.get(neighbourId); - if (isisRouter != null) { - String linkId = "link:" + routerId + "-" + neighbourId; - addedLinkInformationMap.put(linkId, createLinkInformation(lsPdu, linkId, - routerId, neighbourId)); - } else { - createIsisRouterDummy(neighbourId); - String linkId = "link:" + routerId + "-" + neighbourId; - LinkInformation linkInformation = createLinkInformation(lsPdu, linkId, - routerId, neighbourId); - linkInformation.setAlreadyCreated(true); - addedLinkInformationMap.put(linkId, linkInformation); - } - } - - } - } - } - return addedLinkInformationMap; - } - - /** - * Removes link information. - * - * @param systemId system ID to remove link information - * @return updated link information - */ - public Map removeLinkInfo(String systemId) { - String routerId = IsisUtil.removeTailingZeros(systemId); - Map removeLinkInformationMap = new LinkedHashMap<>(); - for (String key : addedLinkInformationMap.keySet()) { - if (key.contains(routerId)) { - removeLinkInformationMap.put(key, addedLinkInformationMap.get(key)); - } - } - return removeLinkInformationMap; - } - - /** - * Creates link information. - * - * @param lsPdu link state pdu - * @param linkId link id - * @param localRouter local router system id - * @param neighborId destination router system id - * @return linkInformation instance - */ - private LinkInformation createLinkInformation(LsPdu lsPdu, String linkId, String localRouter, String neighborId) { - LinkInformation linkInformation = new DefaultIsisLinkInformation(); - IsisRouter isisRouter = isisRouterDetails.get(neighborId); - for (IsisTlv isisTlv : lsPdu.tlvs()) { - if (isisTlv instanceof IsExtendedReachability) { - IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv; - List neighbours = isExtendedReachability.neighbours(); - for (NeighborForExtendedIs teTlv : neighbours) { - List teSubTlvs = teTlv.teSubTlv(); - for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) { - if (teSubTlv instanceof InterfaceIpAddress) { - InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv; - linkInformation.setInterfaceIp(localIpAddress.localInterfaceIPAddress()); - } else if (teSubTlv instanceof NeighborIpAddress) { - NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv; - linkInformation.setNeighborIp(neighborIpAddress.neighborIPAddress()); - } - - } - } - } - } - linkInformation.setLinkId(linkId); - linkInformation.setAlreadyCreated(false); - linkInformation.setLinkDestinationId(neighborId); - linkInformation.setLinkSourceId(localRouter); - return linkInformation; - } - - /** - * Creates ISIS router instance. - * - * @param lsPdu lsp instance - * @return isisRouter instance - */ - private IsisRouter createIsisRouter(LsPdu lsPdu) { - IsisRouter isisRouter = new DefaultIsisRouter(); - if (IsisUtil.checkIsDis(lsPdu.lspId())) { - isisRouter.setDis(true); - } else { - isisRouter.setDis(false); - } - isisRouter.setSystemId(IsisUtil.removeTailingZeros(lsPdu.lspId())); - for (IsisTlv isisTlv : lsPdu.tlvs()) { - if (isisTlv instanceof IsExtendedReachability) { - IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv; - List neighbours = isExtendedReachability.neighbours(); - for (NeighborForExtendedIs teTlv : neighbours) { - List teSubTlvs = teTlv.teSubTlv(); - for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) { - if (teSubTlv instanceof InterfaceIpAddress) { - InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv; - isisRouter.setInterfaceId(localIpAddress.localInterfaceIPAddress()); - } else if (teSubTlv instanceof NeighborIpAddress) { - NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv; - isisRouter.setNeighborRouterId(neighborIpAddress.neighborIPAddress()); - } - - } - } - } - } - return isisRouter; - } - - /** - * Creates ISIS router instance. - * - * @param systemId system ID - * @return isisRouter instance - */ - private IsisRouter createIsisRouterDummy(String systemId) { - IsisRouter isisRouter = new DefaultIsisRouter(); - isisRouter.setSystemId(systemId); - isisRouter.setDis(false); - isisRouter.setInterfaceId(IsisConstants.DEFAULTIP); - isisRouter.setNeighborRouterId(IsisConstants.DEFAULTIP); - - return isisRouter; - } - - /** - * Creates the ISIS link TED information. - * - * @param lsPdu link state PDU - * @return isisLinkTed - */ - public IsisLinkTed createIsisLinkTedInfo(LsPdu lsPdu) { - IsisLinkTed isisLinkTed = new DefaultIsisLinkTed(); - for (IsisTlv isisTlv : lsPdu.tlvs()) { - if (isisTlv instanceof IsExtendedReachability) { - IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv; - List neighbours = isExtendedReachability.neighbours(); - for (NeighborForExtendedIs teTlv : neighbours) { - List teSubTlvs = teTlv.teSubTlv(); - for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) { - if (teSubTlv instanceof AdministrativeGroup) { - AdministrativeGroup ag = (AdministrativeGroup) teSubTlv; - isisLinkTed.setAdministrativeGroup(ag.administrativeGroup()); - } - if (teSubTlv instanceof InterfaceIpAddress) { - InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv; - isisLinkTed.setIpv4InterfaceAddress(localIpAddress.localInterfaceIPAddress()); - } - if (teSubTlv instanceof NeighborIpAddress) { - NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv; - isisLinkTed.setIpv4NeighborAddress(neighborIpAddress.neighborIPAddress()); - } - if (teSubTlv instanceof TrafficEngineeringMetric) { - TrafficEngineeringMetric teM = (TrafficEngineeringMetric) teSubTlv; - isisLinkTed.setTeDefaultMetric(teM.getTrafficEngineeringMetricValue()); - } - if (teSubTlv instanceof MaximumBandwidth) { - MaximumBandwidth maxLinkBandwidth = (MaximumBandwidth) teSubTlv; - isisLinkTed.setMaximumLinkBandwidth( - Bandwidth.bps(maxLinkBandwidth.getMaximumBandwidthValue())); - } - if (teSubTlv instanceof MaximumReservableBandwidth) { - MaximumReservableBandwidth maxReservableBw = (MaximumReservableBandwidth) teSubTlv; - isisLinkTed.setMaximumReservableLinkBandwidth( - Bandwidth.bps(maxReservableBw.getMaximumBandwidthValue())); - } - if (teSubTlv instanceof UnreservedBandwidth) { - UnreservedBandwidth unReservedBandwidth = (UnreservedBandwidth) teSubTlv; - List bandwidthList = new ArrayList<>(); - List unReservedBandwidthList = unReservedBandwidth.unReservedBandwidthValue(); - for (Float unReservedBandwidthFloatValue : unReservedBandwidthList) { - Bandwidth bandwidth = Bandwidth.bps(unReservedBandwidthFloatValue); - bandwidthList.add(bandwidth); - } - isisLinkTed.setUnreservedBandwidth(bandwidthList); - } - } - } - } - } - return isisLinkTed; - } -} diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/package-info.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/package-info.java deleted file mode 100644 index 8175b808c9..0000000000 --- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS controller topology. - */ -package org.onosproject.isis.controller.impl.topology; \ No newline at end of file diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/ControllerTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/ControllerTest.java deleted file mode 100644 index a5396605f5..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/ControllerTest.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.controller.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for ControllerTest. - */ -public class ControllerTest { - - private Controller controller; - private ObjectMapper mapper; - private JsonNode jsonNode; - private JsonNode jsonNode1; - private String jsonString = "{" + - " \"processes\": [{" + - " \"processId\": \"4.4.4.4\"," + - " \"interface\": [{" + - " \"interfaceIndex\": \"2\"," + - " \"macAddress\": \"08:00:27:b7:ab:bf\"," + - " \"interfaceIp\": \"192.168.56.101\"," + - " \"networkMask\": \"255.255.255.224\"," + - " \"intermediateSystemName\": \"ROUTERONE\"," + - " \"systemId\": \"2929.2929.2929\"," + - " \"lanId\": \"0000.0000.0000.00\"," + - " \"idLength\": \"0\"," + - " \"maxAreaAddresses\": \"3\"," + - " \"reservedPacketCircuitType\": \"1\"," + - " \"circuitId\": \"10\"," + - " \"networkType\": \"2\"," + - " \"areaAddress\": \"490000\"," + - " \"areaLength\": \"3\"," + - " \"lspId\": \"1313131313130000\"," + - " \"holdingTime\": \"50\"," + - " \"helloInterval\": \"10\"," + - " \"priority\": \"0\"" + - " }]" + - " }]" + - "}"; - private String jsonString1 = "{" + - " \"processes\": {" + - " \"interface\": [{" + - " \"interfaceIndex\": \"2\"," + - " \"interfaceIp\": \"100.100.100.100\"," + - " \"macAddress\": \"08:00:27:b7:ab:bf\"," + - " \"networkMask\": \"255.255.255.224\"," + - " \"intermediateSystemName\": \"ROUTERONE\"," + - " \"systemId\": \"2929.2929.2929\"," + - " \"lanId\": \"0000.0000.0000.00\"," + - " \"idLength\": \"0\"," + - " \"maxAreaAddresses\": \"3\"," + - " \"reservedPacketCircuitType\": \"1\"," + - " \"circuitId\": \"10\"," + - " \"networkType\": \"2\"," + - " \"areaAddress\": \"490000\"," + - " \"areaLength\": \"3\"," + - " \"lspId\": \"1313131313130000\"," + - " \"holdingTime\": \"50\"," + - " \"helloInterval\": \"10\"," + - " \"priority\": \"0\"" + - " }]" + - " }" + - "}"; - - @Before - public void setUp() throws Exception { - controller = new Controller(); - mapper = new ObjectMapper(); - jsonNode = mapper.readTree(jsonString); - jsonNode1 = mapper.readTree(jsonString1); - } - - @After - public void tearDown() throws Exception { - controller = null; - } - - /** - * Tests isisDeactivate() method. - */ - @Test - public void testIsisDeactivate() throws Exception { - controller.isisDeactivate(); - assertThat(controller, is(notNullValue())); - } - - /** - * Tests getAllConfiguredProcesses() method. - */ - @Test - public void testGetAllConfiguredProcesses() throws Exception { - controller.getAllConfiguredProcesses(); - assertThat(controller, is(notNullValue())); - } - - /** - * Tests updateConfig() method. - */ - @Test - public void testUpdateConfig() throws Exception { - jsonNode.path("interface"); - controller.updateConfig(jsonNode); - assertThat(controller, is(notNullValue())); - - controller.updateConfig(jsonNode1); - assertThat(controller, is(notNullValue())); - } - -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisControllerTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisControllerTest.java deleted file mode 100644 index 1ae1e58f6e..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisControllerTest.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.topology.IsisRouterListener; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test case for DefaultIsisController. - */ -public class DefaultIsisControllerTest { - private ObjectMapper mapper; - private JsonNode jsonNode; - private DefaultIsisController defaultIsisController; - private String jsonString = "{" + - " \"processes\": [{" + - " \"processId\": \"4.4.4.4\"," + - " \"interface\": [{" + - " \"interfaceIndex\": \"2\"," + - " \"macAddress\": \"08:00:27:b7:ab:bf\"," + - " \"interfaceIp\": \"192.168.56.101\"," + - " \"networkMask\": \"255.255.255.224\"," + - " \"intermediateSystemName\": \"ROUTERONE\"," + - " \"systemId\": \"2929.2929.2929\"," + - " \"lanId\": \"0000.0000.0000.00\"," + - " \"idLength\": \"0\"," + - " \"maxAreaAddresses\": \"3\"," + - " \"reservedPacketCircuitType\": \"1\"," + - " \"circuitId\": \"10\"," + - " \"networkType\": \"2\"," + - " \"areaAddress\": \"490000\"," + - " \"areaLength\": \"3\"," + - " \"lspId\": \"1313131313130000\"," + - " \"holdingTime\": \"50\"," + - " \"helloInterval\": \"10\"," + - " \"priority\": \"0\"" + - " }]" + - " }]" + - "}"; - - private IsisRouterListener isisRouterListener; - - @Before - public void setUp() throws Exception { - defaultIsisController = new DefaultIsisController(); - mapper = new ObjectMapper(); - jsonNode = mapper.readTree(jsonString); - isisRouterListener = EasyMock.createNiceMock(IsisRouterListener.class); - } - - @After - public void tearDown() throws Exception { - defaultIsisController = null; - } - - /** - * Tests activate() method. - */ - @Test - public void testActivate() throws Exception { - defaultIsisController.activate(); - assertThat(defaultIsisController, is(notNullValue())); - } - - /** - * Tests deactivate() method. - */ - @Test() - public void testDeactivate() throws Exception { - defaultIsisController.activate(); - defaultIsisController.deactivate(); - assertThat(defaultIsisController, is(notNullValue())); - } - - /** - * Tests allConfiguredProcesses() method. - */ - @Test - public void testAllConfiguredProcesses() throws Exception { - defaultIsisController.allConfiguredProcesses(); - assertThat(defaultIsisController, is(notNullValue())); - } - - /** - * Tests updateConfig() method. - */ - @Test - public void testUpdateConfig() throws Exception { - defaultIsisController.updateConfig(jsonNode); - assertThat(defaultIsisController, is(notNullValue())); - } - - /** - * Tests addRouterListener() method. - */ - @Test - public void testaddRouterListener() throws Exception { - defaultIsisController.addRouterListener(isisRouterListener); - assertThat(defaultIsisController, is(notNullValue())); - } - - /** - * Tests removeRouterListener() method. - */ - @Test - public void testremoveRouterListener() throws Exception { - defaultIsisController.removeRouterListener(isisRouterListener); - assertThat(defaultIsisController, is(notNullValue())); - } -} diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisInterfaceTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisInterfaceTest.java deleted file mode 100644 index 1818c481bf..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisInterfaceTest.java +++ /dev/null @@ -1,877 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisInterfaceState; -import org.onosproject.isis.controller.IsisLsdb; -import org.onosproject.isis.controller.IsisMessage; -import org.onosproject.isis.controller.IsisNeighbor; -import org.onosproject.isis.controller.IsisNetworkType; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.controller.IsisRouterType; -import org.onosproject.isis.controller.impl.lsdb.DefaultIsisLsdb; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.pdu.Csnp; -import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu; -import org.onosproject.isis.io.isispacket.pdu.Psnp; -import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv; -import org.onosproject.isis.io.isispacket.tlv.AreaAddressTlv; -import org.onosproject.isis.io.isispacket.tlv.LspEntriesTlv; -import org.onosproject.isis.io.isispacket.tlv.LspEntry; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.isispacket.tlv.TlvType; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import static org.hamcrest.CoreMatchers.*; -import static org.junit.Assert.assertThat; - -/** - * Unit test case for DefaultIsisInterface. - */ -public class DefaultIsisInterfaceTest { - private final MacAddress macAddress = MacAddress.valueOf("AA:BB:CC:DD:EE:FF"); - private final MacAddress macAddress1 = MacAddress.valueOf("AA:CC:CC:DD:EE:FF"); - private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.0.0"); - private final byte[] mask = { - (byte) 255, (byte) 255, (byte) 255, (byte) 224 - }; - private final byte[] mask1 = { - (byte) 0, (byte) 0, (byte) 0, (byte) 0 - }; - private final String intSysName = "ROUTER"; - private final String sysId = "1111.1111.1111"; - private final String areaAddr = "49.002"; - private final byte[] csnpBytes = { - 0, 67, 18, 52, 18, 52, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, - -1, -1, 9, 32, 4, -81, 18, 52, 18, 52, 0, 18, 0, 0, 0, - 0, 0, 41, -92, -30, 4, -81, 41, 41, 41, 41, 41, 41, 0, - 0, 0, 0, 0, 1, 91, 126 - }; - private IsisInterfaceState resultIfState; - private DefaultIsisInterface defaultIsisInterface; - private IsisHeader isisHeader; - private IsisInterface isisInterface; - private Set resultSet; - private int resultInt; - private IsisLsdb resultLsdb; - private IsisNeighbor resultNeighborList; - private Ip4Address resultIPv4Addr; - private MacAddress resultMacAddr; - private byte[] resultByteArr; - private String resultStr; - private IsisNetworkType resultNwType; - private List ip4Addresses = new ArrayList<>(); - private DefaultIsisNeighbor defaultIsisNeighbor; - private IsisNeighbor result; - private IsisLsdb result1; - private Set result2; - private Channel result3; - private IsisMessage isisMessage; - private IsisLsdb isisLsdb; - private Channel channel; - private L1L2HelloPdu helloPdu; - private LsPdu lsPdu; - private Csnp csnp; - private Psnp psnp; - private P2PHelloPdu p2PHelloPdu; - private boolean result4; - private String result5; - - @Before - public void setUp() throws Exception { - channel = EasyMock.createNiceMock(Channel.class); - defaultIsisInterface = new DefaultIsisInterface(); - defaultIsisInterface.setInterfaceMacAddress(macAddress); - isisHeader = new IsisHeader(); - isisHeader.setIrpDiscriminator((byte) 1); - helloPdu = new L1L2HelloPdu(isisHeader); - isisInterface = new DefaultIsisInterface(); - defaultIsisNeighbor = new DefaultIsisNeighbor(helloPdu, isisInterface); - defaultIsisNeighbor.setNeighborMacAddress(macAddress); - isisLsdb = new DefaultIsisLsdb(); - } - - @After - public void tearDown() throws Exception { - defaultIsisInterface = null; - helloPdu = null; - isisInterface = null; - resultNeighborList = null; - } - - /** - * Tests interfaceIndex() getter method. - */ - @Test - public void testInterfaceIndex() throws Exception { - defaultIsisInterface.setInterfaceIndex(2); - resultInt = defaultIsisInterface.interfaceIndex(); - assertThat(resultInt, is(2)); - } - - /** - * Tests interfaceIndex() setter method. - */ - @Test - public void testSetInterfaceIndex() throws Exception { - defaultIsisInterface.setInterfaceIndex(2); - resultInt = defaultIsisInterface.interfaceIndex(); - assertThat(resultInt, is(2)); - - } - - /** - * Tests interfaceIpAddress() getter method. - */ - @Test - public void testInterfaceIpAddress() throws Exception { - defaultIsisInterface.setInterfaceIpAddress(ip4Address); - resultIPv4Addr = defaultIsisInterface.interfaceIpAddress(); - assertThat(resultIPv4Addr, is(ip4Address)); - } - - /** - * Tests interfaceIpAddress() setter method. - */ - @Test - public void testSetInterfaceIpAddress() throws Exception { - defaultIsisInterface.setInterfaceIpAddress(ip4Address); - resultIPv4Addr = defaultIsisInterface.interfaceIpAddress(); - assertThat(resultIPv4Addr, is(ip4Address)); - } - - /** - * Tests networkMask() getter method. - */ - @Test - public void testNetworkMask() throws Exception { - defaultIsisInterface.setNetworkMask(mask); - resultByteArr = defaultIsisInterface.networkMask(); - assertThat(resultByteArr, is(mask)); - } - - /** - * Tests networkMask() setter method. - */ - @Test - public void testSetNetworkMask() throws Exception { - defaultIsisInterface.setNetworkMask(mask); - resultByteArr = defaultIsisInterface.networkMask(); - assertThat(resultByteArr, is(mask)); - } - - /** - * Tests getInterfaceMacAddress() getter method. - */ - @Test - public void testGetInterfaceMacAddress() throws Exception { - defaultIsisInterface.setInterfaceMacAddress(macAddress); - resultMacAddr = defaultIsisInterface.getInterfaceMacAddress(); - assertThat(resultMacAddr, is(macAddress)); - } - - /** - * Tests getInterfaceMacAddress() setter method. - */ - @Test - public void testSetInterfaceMacAddress() throws Exception { - defaultIsisInterface.setInterfaceMacAddress(macAddress); - resultMacAddr = defaultIsisInterface.getInterfaceMacAddress(); - assertThat(resultMacAddr, is(macAddress)); - } - - /** - * Tests intermediateSystemName() getter method. - */ - @Test - public void testIntermediateSystemName() throws Exception { - defaultIsisInterface.setIntermediateSystemName(intSysName); - resultStr = defaultIsisInterface.intermediateSystemName(); - assertThat(resultStr, is(intSysName)); - } - - /** - * Tests intermediateSystemName() setter method. - */ - @Test - public void testSetIntermediateSystemName() throws Exception { - defaultIsisInterface.setIntermediateSystemName(intSysName); - resultStr = defaultIsisInterface.intermediateSystemName(); - assertThat(resultStr, is(intSysName)); - } - - /** - * Tests systemId() getter method. - */ - @Test - public void testSystemId() throws Exception { - defaultIsisInterface.setSystemId(sysId); - resultStr = defaultIsisInterface.systemId(); - assertThat(resultStr, is(sysId)); - } - - /** - * Tests systemId() setter method. - */ - @Test - public void testSetSystemId() throws Exception { - defaultIsisInterface.setSystemId(sysId); - resultStr = defaultIsisInterface.systemId(); - assertThat(resultStr, is(sysId)); - } - - /** - * Tests l1LanId() getter method. - */ - @Test - public void testL1LanId() throws Exception { - defaultIsisInterface.setL1LanId(sysId); - resultStr = defaultIsisInterface.l1LanId(); - assertThat(resultStr, is(sysId)); - } - - /** - * Tests l1LanId() setter method. - */ - @Test - public void testSetL1LanId() throws Exception { - defaultIsisInterface.setL1LanId(sysId); - resultStr = defaultIsisInterface.l1LanId(); - assertThat(resultStr, is(sysId)); - } - - /** - * Tests l2LanId() getter method. - */ - @Test - public void testL2LanId() throws Exception { - defaultIsisInterface.setL2LanId(sysId); - resultStr = defaultIsisInterface.l2LanId(); - assertThat(resultStr, is(sysId)); - } - - /** - * Tests l2LanId() setter method. - */ - @Test - public void testSetL2LanId() throws Exception { - defaultIsisInterface.setL2LanId(sysId); - resultStr = defaultIsisInterface.l2LanId(); - assertThat(resultStr, is(sysId)); - } - - /** - * Tests getIdLength() getter method. - */ - @Test - public void testGetIdLength() throws Exception { - defaultIsisInterface.setIdLength(8); - resultInt = defaultIsisInterface.getIdLength(); - assertThat(resultInt, is(8)); - } - - /** - * Tests getIdLength() setter method. - */ - @Test - public void testSetIdLength() throws Exception { - defaultIsisInterface.setIdLength(8); - resultInt = defaultIsisInterface.getIdLength(); - assertThat(resultInt, is(8)); - } - - /** - * Tests getMaxAreaAddresses() getter method. - */ - @Test - public void testGetMaxAreaAddresses() throws Exception { - defaultIsisInterface.setMaxAreaAddresses(3); - resultInt = defaultIsisInterface.getMaxAreaAddresses(); - assertThat(resultInt, is(3)); - } - - /** - * Tests getMaxAreaAddresses() setter method. - */ - @Test - public void testSetMaxAreaAddresses() throws Exception { - defaultIsisInterface.setMaxAreaAddresses(3); - resultInt = defaultIsisInterface.getMaxAreaAddresses(); - assertThat(resultInt, is(3)); - } - - /** - * Tests setReservedPacketCircuitType() getter method. - */ - @Test - public void testReservedPacketCircuitType() throws Exception { - defaultIsisInterface.setReservedPacketCircuitType(1); - resultInt = defaultIsisInterface.reservedPacketCircuitType(); - assertThat(resultInt, is(1)); - } - - /** - * Tests setReservedPacketCircuitType() setter method. - */ - @Test - public void testSetReservedPacketCircuitType() throws Exception { - defaultIsisInterface.setReservedPacketCircuitType(1); - resultInt = defaultIsisInterface.reservedPacketCircuitType(); - assertThat(resultInt, is(1)); - } - - /** - * Tests networkType() getter method. - */ - @Test - public void testNetworkType() throws Exception { - defaultIsisInterface.setNetworkType(IsisNetworkType.BROADCAST); - resultNwType = defaultIsisInterface.networkType(); - assertThat(resultNwType, is(IsisNetworkType.BROADCAST)); - } - - /** - * Tests networkType() setter method. - */ - @Test - public void testSetNetworkType() throws Exception { - defaultIsisInterface.setNetworkType(IsisNetworkType.BROADCAST); - resultNwType = defaultIsisInterface.networkType(); - assertThat(resultNwType, is(IsisNetworkType.BROADCAST)); - } - - /** - * Tests areaAddress() getter method. - */ - @Test - public void testAreaAddress() throws Exception { - defaultIsisInterface.setAreaAddress(areaAddr); - resultStr = defaultIsisInterface.areaAddress(); - assertThat(resultStr, is(areaAddr)); - } - - /** - * Tests areaAddress() setter method. - */ - @Test - public void testSetAreaAddress() throws Exception { - defaultIsisInterface.setAreaAddress(areaAddr); - resultStr = defaultIsisInterface.areaAddress(); - assertThat(resultStr, is(areaAddr)); - } - - /** - * Tests getAreaLength() getter method. - */ - - @Test - public void testGetAreaLength() throws Exception { - defaultIsisInterface.setAreaLength(3); - resultInt = defaultIsisInterface.getAreaLength(); - assertThat(resultInt, is(3)); - } - - /** - * Tests getAreaLength() setter method. - */ - @Test - public void testSetAreaLength() throws Exception { - defaultIsisInterface.setAreaLength(3); - resultInt = defaultIsisInterface.getAreaLength(); - assertThat(resultInt, is(3)); - } - - /** - * Tests holdingTime() getter method. - */ - @Test - public void testHoldingTime() throws Exception { - defaultIsisInterface.setHoldingTime(10); - resultInt = defaultIsisInterface.holdingTime(); - assertThat(resultInt, is(10)); - } - - /** - * Tests holdingTime() setter method. - */ - @Test - public void testSetHoldingTime() throws Exception { - defaultIsisInterface.setHoldingTime(10); - resultInt = defaultIsisInterface.holdingTime(); - assertThat(resultInt, is(10)); - } - - /** - * Tests priority() getter method. - */ - @Test - public void testPriority() throws Exception { - defaultIsisInterface.setPriority(1); - resultInt = defaultIsisInterface.priority(); - assertThat(resultInt, is(1)); - } - - /** - * Tests priority() setter method. - */ - @Test - public void testSetPriority() throws Exception { - defaultIsisInterface.setPriority(1); - resultInt = defaultIsisInterface.priority(); - assertThat(resultInt, is(1)); - } - - /** - * Tests helloInterval() getter method. - */ - @Test - public void testHelloInterval() throws Exception { - defaultIsisInterface.setHelloInterval(10); - resultInt = defaultIsisInterface.helloInterval(); - assertThat(resultInt, is(10)); - } - - /** - * Tests helloInterval() setter method. - */ - @Test - public void testSetHelloInterval() throws Exception { - defaultIsisInterface.setHelloInterval(10); - resultInt = defaultIsisInterface.helloInterval(); - assertThat(resultInt, is(10)); - } - - /** - * Tests interfaceState() getter method. - */ - @Test - public void testInterfaceState() throws Exception { - defaultIsisInterface.setInterfaceState(IsisInterfaceState.UP); - resultIfState = defaultIsisInterface.interfaceState(); - assertThat(resultIfState, is(IsisInterfaceState.UP)); - } - - /** - * Tests interfaceState() setter method. - */ - @Test - public void testSetInterfaceState() throws Exception { - defaultIsisInterface.setInterfaceState(IsisInterfaceState.UP); - resultIfState = defaultIsisInterface.interfaceState(); - assertThat(resultIfState, is(IsisInterfaceState.UP)); - } - - /** - * Tests setCircuitId() getter method. - */ - @Test - public void testCircuitId() throws Exception { - defaultIsisInterface.setCircuitId(sysId); - resultStr = defaultIsisInterface.circuitId(); - assertThat(resultStr, is(sysId)); - } - - /** - * Tests setCircuitId() setter method. - */ - @Test - public void testSetCircuitId() throws Exception { - defaultIsisInterface.setCircuitId(sysId); - resultStr = defaultIsisInterface.circuitId(); - assertThat(resultStr, is(sysId)); - } - - /** - * Tests setAllConfiguredInterfaceIps() setter method. - */ - @Test - public void testSetAllConfiguredInterfaceIps() throws Exception { - ip4Addresses.add(ip4Address); - defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests setAllConfiguredInterfaceIps() method. - */ - @Test - public void testRemoveNeighbor() throws Exception { - defaultIsisInterface.removeNeighbor(defaultIsisNeighbor); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests lookup() method. - */ - @Test - public void testLookup() throws Exception { - result = defaultIsisInterface.lookup(defaultIsisNeighbor.neighborMacAddress()); - assertThat(result, is(nullValue())); - } - - /** - * Tests isisLsdb() method. - */ - @Test - public void testIsisLsdb() throws Exception { - result1 = defaultIsisInterface.isisLsdb(); - assertThat(result1, is(nullValue())); - } - - /** - * Tests neighbors() method. - */ - @Test - public void testNeighbors() throws Exception { - result2 = defaultIsisInterface.neighbors(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests channel() method. - */ - @Test - public void testChannel() throws Exception { - result3 = defaultIsisInterface.channel(); - assertThat(result3, is(nullValue())); - } - - /** - * Tests processIsisMessage() method. - */ - @Test - public void testProcessIsisMessage() throws Exception { - helloPdu = new L1L2HelloPdu(isisHeader); - helloPdu.setSourceMac(macAddress1); - helloPdu.setIsisPduType(IsisPduType.L2HELLOPDU.value()); - defaultIsisInterface.setNetworkType(IsisNetworkType.BROADCAST); - isisMessage = helloPdu; - defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processIsisMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessIsisMessage1() throws Exception { - lsPdu = new LsPdu(isisHeader); - lsPdu.setSourceMac(macAddress1); - lsPdu.setIsisPduType(IsisPduType.L2LSPDU.value()); - isisMessage = lsPdu; - defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processIsisMessage() method. - */ - @Test - public void testProcessIsisMessage2() throws Exception { - csnp = new Csnp(isisHeader); - csnp.setSourceMac(macAddress1); - csnp.setIsisPduType(IsisPduType.L2CSNP.value()); - isisMessage = csnp; - defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processIsisMessage() method. - */ - @Test - public void testProcessIsisMessage3() throws Exception { - psnp = new Psnp(isisHeader); - psnp.setSourceMac(macAddress1); - psnp.setIsisPduType(IsisPduType.L2PSNP.value()); - isisMessage = psnp; - defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processIsisMessage() method. - */ - @Test - public void testProcessIsisMessage4() throws Exception { - p2PHelloPdu = new P2PHelloPdu(isisHeader); - p2PHelloPdu.setSourceMac(macAddress1); - p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); - defaultIsisInterface.setNetworkType(IsisNetworkType.P2P); - isisMessage = p2PHelloPdu; - defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests validateHelloMessage() method. - */ - @Test - public void testValidateHelloMessage() throws Exception { - helloPdu = new L1L2HelloPdu(isisHeader); - result4 = defaultIsisInterface.validateHelloMessage(helloPdu); - assertThat(result4, is(false)); - } - - /** - * Tests processL1L2HelloPduMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessL1L2HelloPduMessage() throws Exception { - helloPdu = new L1L2HelloPdu(isisHeader); - helloPdu.setSourceMac(macAddress1); - helloPdu.setCircuitType((byte) IsisRouterType.L2.value()); - defaultIsisInterface.processL1L2HelloPduMessage(helloPdu, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processP2pHelloPduMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessP2pHelloPduMessagee() throws Exception { - defaultIsisInterface.setSystemId(sysId); - p2PHelloPdu = new P2PHelloPdu(isisHeader); - p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); - p2PHelloPdu.setSourceMac(macAddress1); - p2PHelloPdu.setCircuitType((byte) IsisRouterType.L2.value()); - defaultIsisInterface.setNetworkType(IsisNetworkType.P2P); - defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processP2pHelloPduMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessP2pHelloPduMessagee1() throws Exception { - defaultIsisInterface.setSystemId(sysId); - p2PHelloPdu = new P2PHelloPdu(isisHeader); - p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); - p2PHelloPdu.setSourceMac(macAddress1); - p2PHelloPdu.setCircuitType((byte) IsisRouterType.L2.value()); - defaultIsisInterface.setNetworkType(IsisNetworkType.P2P); - defaultIsisInterface.setReservedPacketCircuitType(IsisRouterType.L2.value()); - defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses); - defaultIsisInterface.setInterfaceIpAddress(ip4Address); - defaultIsisInterface.setNetworkMask(mask1); - defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processP2pHelloPduMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessP2pHelloPduMessagee2() throws Exception { - defaultIsisInterface.setSystemId(sysId); - p2PHelloPdu = new P2PHelloPdu(isisHeader); - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.AREAADDRESS.value()); - AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader); - areaAddressTlv.addAddress(areaAddr); - p2PHelloPdu.addTlv(areaAddressTlv); - p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); - p2PHelloPdu.setSourceMac(macAddress1); - p2PHelloPdu.setCircuitType((byte) IsisRouterType.L1.value()); - defaultIsisInterface.setNetworkType(IsisNetworkType.P2P); - defaultIsisInterface.setReservedPacketCircuitType(IsisRouterType.L1.value()); - defaultIsisInterface.setAreaAddress(areaAddr); - defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses); - defaultIsisInterface.setInterfaceIpAddress(ip4Address); - defaultIsisInterface.setNetworkMask(mask1); - defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processP2pHelloPduMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessP2pHelloPduMessagee3() throws Exception { - defaultIsisInterface.setSystemId(sysId); - p2PHelloPdu = new P2PHelloPdu(isisHeader); - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value()); - AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader); - adjacencyStateTlv.setNeighborSystemId(sysId); - adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.DOWN.value()); - p2PHelloPdu.addTlv(adjacencyStateTlv); - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.AREAADDRESS.value()); - AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader); - areaAddressTlv.addAddress(areaAddr); - p2PHelloPdu.addTlv(areaAddressTlv); - p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); - p2PHelloPdu.setSourceMac(macAddress1); - p2PHelloPdu.setCircuitType((byte) IsisRouterType.L1.value()); - defaultIsisInterface.setNetworkType(IsisNetworkType.P2P); - defaultIsisInterface.setReservedPacketCircuitType(IsisRouterType.L1.value()); - defaultIsisInterface.setAreaAddress(areaAddr); - defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses); - defaultIsisInterface.setInterfaceIpAddress(ip4Address); - defaultIsisInterface.setNetworkMask(mask1); - defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processP2pHelloPduMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessP2pHelloPduMessagee4() throws Exception { - defaultIsisInterface.setSystemId(sysId); - p2PHelloPdu = new P2PHelloPdu(isisHeader); - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value()); - AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader); - adjacencyStateTlv.setNeighborSystemId(sysId); - adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.INITIAL.value()); - p2PHelloPdu.addTlv(adjacencyStateTlv); - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.AREAADDRESS.value()); - AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader); - areaAddressTlv.addAddress(areaAddr); - p2PHelloPdu.addTlv(areaAddressTlv); - p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); - p2PHelloPdu.setSourceMac(macAddress1); - p2PHelloPdu.setCircuitType((byte) IsisRouterType.L1.value()); - defaultIsisInterface.setNetworkType(IsisNetworkType.P2P); - defaultIsisInterface.setReservedPacketCircuitType(IsisRouterType.L1L2.value()); - defaultIsisInterface.setAreaAddress(areaAddr); - defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses); - defaultIsisInterface.setInterfaceIpAddress(ip4Address); - defaultIsisInterface.setNetworkMask(mask1); - defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - @Test(expected = Exception.class) - public void testProcessP2pHelloPduMessagee5() throws Exception { - defaultIsisInterface.setSystemId(sysId); - p2PHelloPdu = new P2PHelloPdu(isisHeader); - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value()); - AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader); - adjacencyStateTlv.setNeighborSystemId(sysId); - adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.UP.value()); - p2PHelloPdu.addTlv(adjacencyStateTlv); - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.AREAADDRESS.value()); - AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader); - areaAddressTlv.addAddress(areaAddr); - p2PHelloPdu.addTlv(areaAddressTlv); - p2PHelloPdu.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); - p2PHelloPdu.setSourceMac(macAddress1); - p2PHelloPdu.setCircuitType((byte) IsisRouterType.L2.value()); - defaultIsisInterface.setNetworkType(IsisNetworkType.P2P); - defaultIsisInterface.setReservedPacketCircuitType(IsisRouterType.L1L2.value()); - defaultIsisInterface.setAreaAddress(areaAddr); - defaultIsisInterface.setAllConfiguredInterfaceIps(ip4Addresses); - defaultIsisInterface.setInterfaceIpAddress(ip4Address); - defaultIsisInterface.setNetworkMask(mask1); - defaultIsisInterface.processIsisMessage(p2PHelloPdu, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests startHelloSender() method. - */ - @Test(expected = Exception.class) - public void testStartHelloSender() throws Exception { - defaultIsisInterface.startHelloSender(channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests lspKeyP2P() method. - */ - @Test - public void testLspKeyP2P() throws Exception { - result5 = defaultIsisInterface.lspKeyP2P(sysId); - assertThat(result5, is(notNullValue())); - } - - /** - * Tests processLsPduMessage() method. - */ - @Test - public void testProcessLsPduMessage() throws Exception { - lsPdu = new LsPdu(isisHeader); - lsPdu.setSourceMac(macAddress1); - lsPdu.setIsisPduType(IsisPduType.L2LSPDU.value()); - lsPdu.setLspId(sysId); - isisMessage = lsPdu; - defaultIsisInterface.setNetworkType(IsisNetworkType.P2P); - defaultIsisInterface.setSystemId(sysId); - defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processPsnPduMessage() method. - */ - @Test - public void testProcessPsnPduMessage() throws Exception { - psnp = new Psnp(isisHeader); - psnp.setSourceMac(macAddress1); - psnp.setIsisPduType(IsisPduType.L2PSNP.value()); - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.LSPENTRY.value()); - tlvHeader.setTlvLength(0); - LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader); - LspEntry lspEntry = new LspEntry(); - lspEntry.setLspChecksum(0); - lspEntry.setLspSequenceNumber(0); - lspEntry.setRemainingTime(0); - lspEntriesTlv.addLspEntry(lspEntry); - psnp.addTlv(lspEntriesTlv); - isisMessage = psnp; - defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } - - /** - * Tests processCsnPduMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessCsnPduMessage() throws Exception { - ChannelBuffer channelBuffer = ChannelBuffers.copiedBuffer(csnpBytes); - csnp = new Csnp(isisHeader); - csnp.readFrom(channelBuffer); - csnp.setSourceMac(macAddress1); - csnp.setIsisPduType(IsisPduType.L2CSNP.value()); - isisMessage = csnp; - defaultIsisInterface.processIsisMessage(isisMessage, isisLsdb, channel); - assertThat(defaultIsisInterface, is(notNullValue())); - } -} diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisNeighborTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisNeighborTest.java deleted file mode 100644 index b79e79d150..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisNeighborTest.java +++ /dev/null @@ -1,347 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisInterfaceState; -import org.onosproject.isis.controller.IsisMessage; -import org.onosproject.isis.controller.IsisRouterType; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.pdu.HelloPdu; -import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for DefaultIsisNeighbor. - */ -public class DefaultIsisNeighborTest { - - private final String areaId = "490001"; - private final String systemId = "2929.2929.2929"; - private final String lanId = "0000.0000.0000.00"; - private DefaultIsisNeighbor isisNeighbor; - private IsisInterface isisInterface; - private IsisMessage isisMessage; - private IsisHeader isisHeader; - private int result; - private String result1; - private Ip4Address interfaceIp = Ip4Address.valueOf("10.10.10.10"); - private Ip4Address result2; - private MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00"); - private MacAddress result3; - private IsisRouterType isisRouterType; - private IsisInterfaceState isisInterfaceState; - private byte result4; - - @Before - public void setUp() throws Exception { - isisHeader = new IsisHeader(); - isisMessage = new L1L2HelloPdu(isisHeader); - isisInterface = new DefaultIsisInterface(); - isisNeighbor = new DefaultIsisNeighbor((HelloPdu) isisMessage, isisInterface); - } - - @After - public void tearDown() throws Exception { - isisHeader = null; - isisMessage = null; - isisInterface = null; - isisNeighbor = null; - } - - /** - * Tests localExtendedCircuitId() getter method. - */ - @Test - public void testLocalExtendedCircuitId() throws Exception { - isisNeighbor.setLocalExtendedCircuitId(1); - result = isisNeighbor.localExtendedCircuitId(); - assertThat(result, is(1)); - } - - /** - * Tests localExtendedCircuitId() setter method. - */ - @Test - public void testSetLocalExtendedCircuitId() throws Exception { - isisNeighbor.setLocalExtendedCircuitId(1); - result = isisNeighbor.localExtendedCircuitId(); - assertThat(result, is(1)); - } - - /** - * Tests neighborAreaId() getter method. - */ - @Test - public void testNeighborAreaId() throws Exception { - isisNeighbor.setNeighborAreaId(areaId); - result1 = isisNeighbor.neighborAreaId(); - assertThat(result1, is(areaId)); - } - - /** - * Tests neighborAreaId() setter method. - */ - @Test - public void testSetNeighborAreaId() throws Exception { - isisNeighbor.setNeighborAreaId(areaId); - result1 = isisNeighbor.neighborAreaId(); - assertThat(result1, is(areaId)); - } - - /** - * Tests neighborSystemId() getter method. - */ - @Test - public void testNeighborSystemId() throws Exception { - isisNeighbor.setNeighborSystemId(systemId); - result1 = isisNeighbor.neighborSystemId(); - assertThat(result1, is(systemId)); - } - - /** - * Tests neighborSystemId() setter method. - */ - @Test - public void testSetNeighborSystemId() throws Exception { - isisNeighbor.setNeighborSystemId(systemId); - result1 = isisNeighbor.neighborSystemId(); - assertThat(result1, is(systemId)); - } - - /** - * Tests interfaceIp() getter method. - */ - @Test - public void testInterfaceIp() throws Exception { - isisNeighbor.setInterfaceIp(interfaceIp); - result2 = isisNeighbor.interfaceIp(); - assertThat(result2, is(interfaceIp)); - } - - /** - * Tests interfaceIp() setter method. - */ - @Test - public void testSetInterfaceIp() throws Exception { - isisNeighbor.setInterfaceIp(interfaceIp); - result2 = isisNeighbor.interfaceIp(); - assertThat(result2, is(interfaceIp)); - } - - /** - * Tests neighborMacAddress() getter method. - */ - @Test - public void testNeighborMacAddress() throws Exception { - isisNeighbor.setNeighborMacAddress(macAddress); - result3 = isisNeighbor.neighborMacAddress(); - assertThat(result3, is(macAddress)); - } - - /** - * Tests neighborMacAddress() setter method. - */ - @Test - public void testSetNeighborMacAddress() throws Exception { - isisNeighbor.setNeighborMacAddress(macAddress); - result3 = isisNeighbor.neighborMacAddress(); - assertThat(result3, is(macAddress)); - } - - /** - * Tests holdingTime() getter method. - */ - @Test - public void testHoldingTime() throws Exception { - isisNeighbor.setHoldingTime(1); - result = isisNeighbor.holdingTime(); - assertThat(result, is(1)); - } - - /** - * Tests holdingTime() setter method. - */ - @Test - public void testSetHoldingTime() throws Exception { - isisNeighbor.setHoldingTime(1); - result = isisNeighbor.holdingTime(); - assertThat(result, is(1)); - } - - /** - * Tests routerType() getter method. - */ - @Test - public void testRouterType() throws Exception { - isisNeighbor.setRouterType(IsisRouterType.L1); - isisRouterType = isisNeighbor.routerType(); - assertThat(isisRouterType, is(IsisRouterType.L1)); - } - - /** - * Tests routerType() setter method. - */ - @Test - public void testSetRouterType() throws Exception { - isisNeighbor.setRouterType(IsisRouterType.L1); - isisRouterType = isisNeighbor.routerType(); - assertThat(isisRouterType, is(IsisRouterType.L1)); - } - - /** - * Tests l1LanId() getter method. - */ - @Test - public void testL1LanId() throws Exception { - isisNeighbor.setL1LanId(systemId); - result1 = isisNeighbor.l1LanId(); - assertThat(result1, is(systemId)); - } - - /** - * Tests l1LanId() setter method. - */ - @Test - public void testSetL1LanId() throws Exception { - isisNeighbor.setL1LanId(lanId); - result1 = isisNeighbor.l1LanId(); - assertThat(result1, is(lanId)); - } - - /** - * Tests l2LanId() getter method. - */ - @Test - public void testL2LanId() throws Exception { - isisNeighbor.setL2LanId(lanId); - result1 = isisNeighbor.l2LanId(); - assertThat(result1, is(lanId)); - } - - /** - * Tests l2LanId() setter method. - */ - @Test - public void testSetL2LanId() throws Exception { - isisNeighbor.setL2LanId(lanId); - result1 = isisNeighbor.l2LanId(); - assertThat(result1, is(lanId)); - } - - /** - * Tests neighborState() getter method. - */ - @Test - public void testInterfaceState() throws Exception { - isisNeighbor.setNeighborState(IsisInterfaceState.DOWN); - isisInterfaceState = isisNeighbor.neighborState(); - assertThat(isisInterfaceState, is(IsisInterfaceState.DOWN)); - } - - /** - * Tests neighborState() setter method. - */ - @Test - public void testSetNeighborState() throws Exception { - isisNeighbor.setNeighborState(IsisInterfaceState.DOWN); - isisInterfaceState = isisNeighbor.neighborState(); - assertThat(isisInterfaceState, is(IsisInterfaceState.DOWN)); - } - - /** - * Tests localCircuitId() getter method. - */ - @Test - public void testLocalCircuitId() throws Exception { - isisNeighbor.setLocalCircuitId((byte) 1); - result4 = isisNeighbor.localCircuitId(); - assertThat(result4, is((byte) 1)); - } - - /** - * Tests localCircuitId() setter method. - */ - @Test - public void testSetLocalCircuitId() throws Exception { - isisNeighbor.setLocalCircuitId((byte) 1); - result4 = isisNeighbor.localCircuitId(); - assertThat(result4, is((byte) 1)); - } - - /** - * Tests neighborState() getter method. - */ - @Test - public void testNeighborState() throws Exception { - isisNeighbor.setNeighborState(IsisInterfaceState.DOWN); - isisInterfaceState = isisNeighbor.neighborState(); - assertThat(isisInterfaceState, is(IsisInterfaceState.DOWN)); - } - - /** - * Tests startHoldingTimeCheck() method. - */ - @Test - public void testStartHoldingTimeCheck() throws Exception { - isisNeighbor.startHoldingTimeCheck(); - assertThat(isisNeighbor, is(notNullValue())); - } - - /** - * Tests stopHoldingTimeCheck() method. - */ - @Test - public void testStopHoldingTimeCheck() throws Exception { - isisNeighbor.stopHoldingTimeCheck(); - assertThat(isisNeighbor, is(notNullValue())); - } - - /** - * Tests startInactivityTimeCheck() method. - */ - @Test(expected = Exception.class) - public void testStartInactivityTimeCheck() throws Exception { - isisNeighbor.startInactivityTimeCheck(); - assertThat(isisNeighbor, is(notNullValue())); - } - - /** - * Tests startInactivityTimeCheck() method. - */ - @Test(expected = Exception.class) - public void testStopInactivityTimeCheck() throws Exception { - isisNeighbor.startInactivityTimeCheck(); - assertThat(isisNeighbor, is(notNullValue())); - } - - /** - * Tests neighborDown() method. - */ - @Test(expected = Exception.class) - public void testNeighborDown() throws Exception { - isisNeighbor.neighborDown(); - assertThat(isisNeighbor, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisProcessTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisProcessTest.java deleted file mode 100644 index 08507f571d..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisProcessTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisProcess; - -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for DefaultIsisProcess. - */ -public class DefaultIsisProcessTest { - - private final String processId = "1"; - private IsisProcess isisProcess; - private String result; - private IsisProcess defaultIsisProcess; - private IsisInterface isisInterface; - private List isisInterfaceList; - private List result1; - - @Before - public void setUp() throws Exception { - isisProcess = new DefaultIsisProcess(); - isisInterface = EasyMock.createNiceMock(DefaultIsisInterface.class); - defaultIsisProcess = new DefaultIsisProcess(); - } - - @After - public void tearDown() throws Exception { - isisProcess = null; - } - - /** - * Tests processId() setter method. - */ - @Test - public void testProcessId() throws Exception { - isisProcess.setProcessId(processId); - result = isisProcess.processId(); - assertThat(result, is(processId)); - } - - /** - * Tests processId() getter method. - */ - @Test - public void testSetProcessId() throws Exception { - isisProcess.setProcessId(processId); - result = isisProcess.processId(); - assertThat(result, is(processId)); - } - - /** - * Tests isisInterfaceList() setter method. - */ - @Test - public void testIsisInterfaceList() throws Exception { - isisProcess.setIsisInterfaceList(isisInterfaceList); - result1 = isisProcess.isisInterfaceList(); - assertThat(result1, is(nullValue())); - } - - /** - * Tests isisInterfaceList() getter method. - */ - @Test - public void testSetIsisInterfaceList() throws Exception { - isisProcess.setIsisInterfaceList(isisInterfaceList); - result1 = isisProcess.isisInterfaceList(); - assertThat(result1, is(nullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisChannelHandlerTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisChannelHandlerTest.java deleted file mode 100644 index 468036e8e6..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisChannelHandlerTest.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.easymock.EasyMock; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.ExceptionEvent; -import org.jboss.netty.channel.MessageEvent; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisMessage; -import org.onosproject.isis.controller.IsisNetworkType; -import org.onosproject.isis.controller.IsisProcess; -import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for IsisChannelHandler. - */ -public class IsisChannelHandlerTest { - - private final String processId = "1"; - private final byte[] config = {0, 0, 0, 0, 0, 0, 0}; - private IsisChannelHandler isisChannelHandler; - private Controller controller; - private IsisProcess isisProcess; - private List isisProcessList = new ArrayList(); - private ChannelHandlerContext channelHandlerContext; - private ChannelStateEvent channelStateEvent; - private ExceptionEvent exceptionEvent; - private MessageEvent messageEvent; - private IsisMessage isisMessage; - private List isisInterfaceList = new ArrayList<>(); - private Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10"); - - @Before - public void setUp() throws Exception { - controller = EasyMock.createNiceMock(Controller.class); - isisProcess = EasyMock.createNiceMock(IsisProcess.class); - channelHandlerContext = EasyMock.createNiceMock(ChannelHandlerContext.class); - channelStateEvent = EasyMock.createNiceMock(ChannelStateEvent.class); - exceptionEvent = EasyMock.createNiceMock(ExceptionEvent.class); - messageEvent = EasyMock.createNiceMock(MessageEvent.class); - isisMessage = EasyMock.createNiceMock(L1L2HelloPdu.class); - isisMessage.setInterfaceIndex(2); - isisChannelHandler = new IsisChannelHandler(controller, isisProcessList); - } - - @After - public void tearDown() throws Exception { - isisChannelHandler = null; - } - - /** - * Tests initializeInterfaceMap() method. - */ - @Test - public void testInitializeInterfaceMap() throws Exception { - isisChannelHandler.initializeInterfaceMap(); - assertThat(isisChannelHandler, is(notNullValue())); - } - - /** - * Tests updateInterfaceMap() method. - */ - @Test(expected = Exception.class) - public void testUpdateInterfaceMap() throws Exception { - IsisInterface isisInterface = new DefaultIsisInterface(); - IsisInterface isisInterface1 = new DefaultIsisInterface(); - isisInterface.setInterfaceIpAddress(ip4Address); - isisInterface.setInterfaceIndex(1); - isisInterfaceList.add(isisInterface); - IsisProcess isisProcess = new DefaultIsisProcess(); - isisProcess.setIsisInterfaceList(isisInterfaceList); - isisProcessList.add(isisProcess); - isisChannelHandler.updateInterfaceMap(isisProcessList); - assertThat(isisChannelHandler, is(notNullValue())); - isisProcessList = new ArrayList<>(); - isisInterface1.setInterfaceIpAddress(ip4Address); - isisInterface1.setInterfaceIndex(1); - isisInterface1.setInterfaceIpAddress(ip4Address); - isisInterface1.setInterfaceIndex(1); - isisInterface1.setSystemId("9999.9999.9999"); - isisInterface1.setIntermediateSystemName("router"); - isisInterface1.setReservedPacketCircuitType(3); - isisInterface1.setCircuitId("10"); - isisInterface1.setNetworkType(IsisNetworkType.BROADCAST); - isisInterface1.setAreaAddress("490001"); - isisInterface1.setHoldingTime(50); - isisInterface1.setHelloInterval(10); - isisInterfaceList.add(isisInterface1); - isisProcess.setIsisInterfaceList(isisInterfaceList); - isisProcessList.add(isisProcess); - isisChannelHandler.updateInterfaceMap(isisProcessList); - assertThat(isisChannelHandler, is(notNullValue())); - } - - /** - * Tests initializeInterfaceIpList() method. - */ - @Test - public void testInitializeInterfaceIpList() throws Exception { - isisChannelHandler.initializeInterfaceIpList(); - assertThat(isisChannelHandler, is(notNullValue())); - } - - /** - * Tests channelConnected() method. - */ - @Test(expected = Exception.class) - public void testChannelConnected() throws Exception { - isisChannelHandler.channelConnected(channelHandlerContext, channelStateEvent); - assertThat(isisChannelHandler, is(notNullValue())); - } - - /** - * Tests channelDisconnected() method. - */ - @Test - public void testChannelDisconnected() throws Exception { - isisChannelHandler.channelDisconnected(channelHandlerContext, channelStateEvent); - assertThat(isisChannelHandler, is(notNullValue())); - } - - /** - * Tests exceptionCaught() method. - */ - @Test(expected = Exception.class) - public void testExceptionCaught() throws Exception { - isisChannelHandler.exceptionCaught(channelHandlerContext, exceptionEvent); - assertThat(isisChannelHandler, is(notNullValue())); - } - - /** - * Tests messageReceived() method. - */ - @Test - public void testMessageReceived() throws Exception { - isisChannelHandler.messageReceived(channelHandlerContext, messageEvent); - assertThat(isisChannelHandler, is(notNullValue())); - } - - /** - * Tests processIsisMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessIsisMessage() throws Exception { - isisChannelHandler.processIsisMessage(isisMessage, channelHandlerContext); - assertThat(isisChannelHandler, is(notNullValue())); - } - - /** - * Tests startHelloSender() method. - */ - @Test - public void testStartHelloSender() throws Exception { - isisChannelHandler.startHelloSender(); - assertThat(isisChannelHandler, is(notNullValue())); - } - - /** - * Tests stopHelloSender() method. - */ - @Test - public void testStopHelloSender() throws Exception { - isisChannelHandler.stopHelloSender(); - assertThat(isisChannelHandler, is(notNullValue())); - } - - /** - * Tests sentConfigPacket() method. - */ - @Test - public void testSentConfigPacket() throws Exception { - isisChannelHandler.sentConfigPacket(config); - assertThat(isisChannelHandler, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisHelloPduSenderTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisHelloPduSenderTest.java deleted file mode 100644 index 1b2da30346..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisHelloPduSenderTest.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.easymock.EasyMock; -import org.jboss.netty.channel.Channel; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.controller.IsisNetworkType; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for IsisHelloPduSender. - */ -public class IsisHelloPduSenderTest { - private final String systemId = "1234.1234.1234"; - private final String areaId = "490001"; - private final String circuitId = "0"; - private final String lanId = "0000.0000.0000.00"; - private Channel channel; - private DefaultIsisInterface isisInterface; - private DefaultIsisInterface isisInterface1; - private IsisHelloPduSender isisHelloPduSender; - private IsisHelloPduSender isisHelloPduSender1; - private Ip4Address interfaceAddress = Ip4Address.valueOf("10.10.10.10"); - - @Before - public void setUp() throws Exception { - channel = EasyMock.createNiceMock(Channel.class); - isisInterface = new DefaultIsisInterface(); - isisInterface1 = new DefaultIsisInterface(); - } - - @After - public void tearDown() throws Exception { - channel = null; - isisInterface = null; - } - - /** - * Tests run() method. - */ - @Test(expected = Exception.class) - public void testRun() throws Exception { - isisInterface.setNetworkType(IsisNetworkType.P2P); - isisInterface.setCircuitId(circuitId); - isisInterface.setSystemId(systemId); - isisInterface.setAreaAddress("490001"); - isisInterface.setInterfaceIpAddress(interfaceAddress); - isisHelloPduSender = new IsisHelloPduSender(channel, isisInterface); - isisHelloPduSender.run(); - assertThat(isisHelloPduSender, is(notNullValue())); - - isisInterface1.setNetworkType(IsisNetworkType.BROADCAST); - isisInterface1.setCircuitId(circuitId); - isisInterface1.setSystemId(systemId); - isisInterface1.setAreaAddress(areaId); - isisInterface1.setInterfaceIpAddress(interfaceAddress); - isisInterface1.setReservedPacketCircuitType(1); - isisInterface1.setL1LanId(lanId); - isisHelloPduSender1 = new IsisHelloPduSender(channel, isisInterface1); - isisHelloPduSender1.run(); - assertThat(isisHelloPduSender1, is(notNullValue())); - - isisInterface1.setNetworkType(IsisNetworkType.BROADCAST); - isisInterface1.setCircuitId(circuitId); - isisInterface1.setSystemId(systemId); - isisInterface1.setAreaAddress(areaId); - isisInterface1.setInterfaceIpAddress(interfaceAddress); - isisInterface1.setReservedPacketCircuitType(2); - isisInterface1.setL2LanId(lanId); - isisHelloPduSender1 = new IsisHelloPduSender(channel, isisInterface1); - isisHelloPduSender1.run(); - assertThat(isisHelloPduSender1, is(notNullValue())); - - isisInterface1.setNetworkType(IsisNetworkType.BROADCAST); - isisInterface1.setCircuitId(circuitId); - isisInterface1.setSystemId(systemId); - isisInterface1.setAreaAddress(areaId); - isisInterface1.setInterfaceIpAddress(interfaceAddress); - isisInterface1.setReservedPacketCircuitType(3); - isisInterface1.setL1LanId(lanId); - isisInterface1.setL2LanId(lanId); - isisHelloPduSender1 = new IsisHelloPduSender(channel, isisInterface1); - isisHelloPduSender1.run(); - assertThat(isisHelloPduSender1, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageDecoderTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageDecoderTest.java deleted file mode 100644 index a370bfefc7..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageDecoderTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import com.google.common.primitives.Bytes; -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.io.util.IsisUtil; - -import java.net.InetSocketAddress; -import java.net.SocketAddress; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for IsisMessageDecoder. - */ -public class IsisMessageDecoderTest { - - private final byte[] hello = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -125, 20, 1, 0, 17, 1, 0, 0, - 2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3, - 73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102 - }; - private final byte[] array2 = {0, 0, 0, 0, 0, 0, 0}; - private final String id = "127.0.0.1"; - private byte[] array1; - private IsisMessageDecoder isisMessageDecoder; - private ChannelHandlerContext ctx; - private Channel channel; - private SocketAddress socketAddress; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - isisMessageDecoder = new IsisMessageDecoder(); - } - - @After - public void tearDown() throws Exception { - isisMessageDecoder = null; - } - - @Test - public void testDecode() throws Exception { - channel = EasyMock.createMock(Channel.class); - socketAddress = InetSocketAddress.createUnresolved(id, 7000); - byte[] array = IsisUtil.getPaddingTlvs(hello.length - 17); - array1 = Bytes.concat(hello, array); - channelBuffer = ChannelBuffers.copiedBuffer(Bytes.concat(hello, array)); - assertThat(isisMessageDecoder.decode(ctx, channel, channelBuffer), is(nullValue())); - } -} diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageEncoderTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageEncoderTest.java deleted file mode 100644 index b976b1157d..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisMessageEncoderTest.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import com.google.common.primitives.Bytes; -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.io.util.IsisUtil; - -import java.net.InetSocketAddress; -import java.net.SocketAddress; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for IsisMessageEncoder. - */ -public class IsisMessageEncoderTest { - - private final String id = "127.0.0.1"; - private final byte[] hello = { - -125, 20, 1, 0, 17, 1, 0, 0, - 2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3, - 73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102 - }; - private IsisMessageEncoder isisMessageEncoder; - private ChannelHandlerContext ctx; - private Channel channel; - private SocketAddress socketAddress; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - channel = EasyMock.createMock(Channel.class); - isisMessageEncoder = new IsisMessageEncoder(); - } - - @After - public void tearDown() throws Exception { - channel = null; - isisMessageEncoder = null; - } - - /** - * Tests encode() method. - */ - @Test - public void testEncode() throws Exception { - socketAddress = InetSocketAddress.createUnresolved(id, 7000); - byte[] array = IsisUtil.getPaddingTlvs(hello.length); - channelBuffer = ChannelBuffers.copiedBuffer(Bytes.concat(hello, array)); - assertThat(isisMessageEncoder.encode(ctx, channel, channelBuffer.array()), - is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisPipelineFactoryTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisPipelineFactoryTest.java deleted file mode 100644 index 29b06f9121..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/IsisPipelineFactoryTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl; - -import org.jboss.netty.channel.ChannelPipeline; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisProcess; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for IsisPipelineFactory. - */ -public class IsisPipelineFactoryTest { - - private IsisPipelineFactory isisPipelineFactory; - private IsisChannelHandler isisChannelHandler; - private List isisProcessList = new ArrayList<>(); - private Controller controller; - private ChannelPipeline channelPipeline; - private DefaultIsisProcess isisProcess; - private String processId = "1"; - private DefaultIsisInterface isisInterface; - private List isisInterfaces = new ArrayList<>(); - - @Before - public void setUp() throws Exception { - controller = new Controller(); - isisProcess = new DefaultIsisProcess(); - isisInterface = new DefaultIsisInterface(); - isisInterfaces.add(isisInterface); - isisProcess.setIsisInterfaceList(isisInterfaces); - isisProcess.setProcessId(processId); - isisProcessList.add(isisProcess); - isisChannelHandler = new IsisChannelHandler(controller, isisProcessList); - isisPipelineFactory = new IsisPipelineFactory(isisChannelHandler); - } - - @After - public void tearDown() throws Exception { - controller = null; - isisChannelHandler = null; - isisPipelineFactory = null; - } - - /** - * Tests getPipeline() method. - */ - @Test - public void testGetPipeline() throws Exception { - channelPipeline = isisPipelineFactory.getPipeline(); - assertThat(channelPipeline, is(instanceOf(ChannelPipeline.class))); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAgeTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAgeTest.java deleted file mode 100644 index 51388ac797..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAgeTest.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.lsdb; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisLspBin; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; - -import static org.hamcrest.CoreMatchers.*; -import static org.junit.Assert.assertThat; - -/** - * Unit test case for DefaultIsisLsdbAge. - */ -public class DefaultIsisLsdbAgeTest { - private DefaultIsisLsdbAge defaultIsisLsdbAge; - private IsisLspBin isisLspBin; - private int resultInt; - private IsisLspBin resultLspBin; - private DefaultLspWrapper lspWrapper; - private LsPdu lsPdu; - private IsisHeader isisHeader; - private String lspId = "1234.1234.1234"; - - @Before - public void setUp() throws Exception { - defaultIsisLsdbAge = new DefaultIsisLsdbAge(); - isisLspBin = new DefaultIsisLspBin(1); - lspWrapper = new DefaultLspWrapper(); - lspWrapper.setBinNumber(1); - isisHeader = new IsisHeader(); - lsPdu = new LsPdu(isisHeader); - lsPdu.setLspId(lspId); - lspWrapper.setLsPdu(lsPdu); - } - - @After - public void tearDown() throws Exception { - defaultIsisLsdbAge = null; - isisLspBin = null; - } - - /** - * Tests ageCounter() method. - */ - @Test - public void testAgeCounter() throws Exception { - resultInt = defaultIsisLsdbAge.ageCounter(); - assertThat(resultInt, is(0)); - } - - /** - * Tests ageCounterRollOver() method. - */ - @Test - public void testAgeCounterRollOver() throws Exception { - resultInt = defaultIsisLsdbAge.ageCounterRollOver(); - assertThat(resultInt, is(0)); - } - - /** - * Tests addLspBin() method. - */ - @Test - public void testAddLspBin() throws Exception { - defaultIsisLsdbAge.addLspBin(1400, isisLspBin); - resultLspBin = defaultIsisLsdbAge.getLspBin(1); - assertThat(resultLspBin, is(notNullValue())); - } - - /** - * Tests getLspBin() method. - */ - @Test - public void testGetLspBin() throws Exception { - defaultIsisLsdbAge.addLspBin(1, isisLspBin); - resultLspBin = defaultIsisLsdbAge.getLspBin(1); - assertThat(resultLspBin, is(notNullValue())); - } - - /** - * Tests removeLspFromBin() method. - */ - @Test - public void testRemoveLspFromBin() throws Exception { - defaultIsisLsdbAge.addLspBin(1400, isisLspBin); - defaultIsisLsdbAge.removeLspFromBin(lspWrapper); - assertThat(resultLspBin, is(nullValue())); - } - - /** - * Tests age2Bin() method. - */ - @Test - public void testAge2Bin() throws Exception { - defaultIsisLsdbAge.age2Bin(1); - assertThat(defaultIsisLsdbAge, is(notNullValue())); - - defaultIsisLsdbAge.age2Bin(-1); - assertThat(defaultIsisLsdbAge, is(notNullValue())); - } - - /** - * Tests startDbAging() method. - */ - @Test - public void testStartDbAging() throws Exception { - defaultIsisLsdbAge.startDbAging(); - assertThat(defaultIsisLsdbAge, is(notNullValue())); - } - - /** - * Tests ageLsp() method. - */ - @Test - public void testAgeLsp() throws Exception { - defaultIsisLsdbAge.age2Bin(1); - defaultIsisLsdbAge.startDbAging(); - defaultIsisLsdbAge.ageLsp(); - assertThat(defaultIsisLsdbAge, is(notNullValue())); - } - - /** - * Tests maxAgeLsa() method. - */ - @Test - public void testMaxAgeLsa() throws Exception { - defaultIsisLsdbAge.age2Bin(1); - defaultIsisLsdbAge.startDbAging(); - defaultIsisLsdbAge.maxAgeLsa(); - assertThat(defaultIsisLsdbAge, is(notNullValue())); - - defaultIsisLsdbAge.age2Bin(1400); - defaultIsisLsdbAge.startDbAging(); - defaultIsisLsdbAge.maxAgeLsa(); - assertThat(defaultIsisLsdbAge, is(notNullValue())); - } - - /** - * Tests refreshLsa() method. - */ - @Test - public void testRefreshLsa() throws Exception { - defaultIsisLsdbAge.age2Bin(1); - defaultIsisLsdbAge.startDbAging(); - defaultIsisLsdbAge.refreshLsa(); - assertThat(defaultIsisLsdbAge, is(notNullValue())); - - defaultIsisLsdbAge.age2Bin(1400); - defaultIsisLsdbAge.startDbAging(); - defaultIsisLsdbAge.refreshLsa(); - assertThat(defaultIsisLsdbAge, is(notNullValue())); - } -} - diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbTest.java deleted file mode 100644 index de1986232f..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbTest.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.lsdb; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisLsdb; -import org.onosproject.isis.controller.IsisLsdbAge; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.controller.LspWrapper; -import org.onosproject.isis.controller.impl.DefaultIsisInterface; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.pdu.AttachedToOtherAreas; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.util.IsisConstants; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import static org.hamcrest.CoreMatchers.*; -import static org.junit.Assert.assertThat; - -/** - * Unit test case for DefaultIsisLsdb. - */ -public class DefaultIsisLsdbTest { - private final int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; - private final int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; - private final String srcId = "1111.1111.1111"; - private DefaultIsisLsdb defaultIsisLsdb; - private IsisLsdbAge lsdbAge = null; - private int resultInt; - private Map resultMap = new ConcurrentHashMap<>(); - private IsisLsdb resultLsdb; - private LspWrapper resultLspWrapper; - private List lspWrapperList; - private LsPdu lsPdu; - private IsisHeader isisHeader; - private DefaultIsisInterface defaultIsisInterface; - private String lspId = "1234.1234.1234.00-00"; - private String result; - - @Before - public void setUp() throws Exception { - defaultIsisInterface = new DefaultIsisInterface(); - isisHeader = new IsisHeader(); - lsPdu = new LsPdu(isisHeader); - lsPdu.setLspId(lspId); - lsPdu.setAttachedToOtherAreas(AttachedToOtherAreas.DEFAULTMETRIC); - lsPdu.setIsisPduType(IsisPduType.L1LSPDU.value()); - defaultIsisLsdb = new DefaultIsisLsdb(); - } - - @After - public void tearDown() throws Exception { - defaultIsisLsdb = null; - } - - /** - * Tests initializeDb() method. - */ - @Test - public void testInitializeDb() throws Exception { - defaultIsisLsdb.initializeDb(); - assertThat(lsdbAge, is(nullValue())); - } - - /** - * Tests setL1LspSeqNo() method. - */ - @Test - public void testSetL1LspSeqNo() throws Exception { - defaultIsisLsdb.setL1LspSeqNo(l1LspSeqNo); - assertThat(defaultIsisLsdb, is(notNullValue())); - } - - /** - * Tests setL2LspSeqNo() method. - */ - @Test - public void testSetL2LspSeqNo() throws Exception { - defaultIsisLsdb.setL2LspSeqNo(l2LspSeqNo); - assertThat(defaultIsisLsdb, is(notNullValue())); - } - - /** - * Tests setL2LspSeqNo() method. - */ - @Test - public void testLspKey() throws Exception { - defaultIsisLsdb.lspKey(srcId); - assertThat(defaultIsisLsdb, is(notNullValue())); - } - - /** - * Tests setL2LspSeqNo() method. - */ - @Test - public void testGetL1Db() throws Exception { - resultMap = defaultIsisLsdb.getL1Db(); - assertThat(resultMap.isEmpty(), is(true)); - } - - /** - * Tests setL2LspSeqNo() method. - */ - @Test - public void testGetL2Db() throws Exception { - resultMap = defaultIsisLsdb.getL2Db(); - assertThat(resultMap.isEmpty(), is(true)); - } - - /** - * Tests setL2LspSeqNo() method. - */ - @Test - public void testIsisLsdb() throws Exception { - resultLsdb = defaultIsisLsdb.isisLsdb(); - assertThat(resultLsdb, is(notNullValue())); - } - - /** - * Tests findLsp() method. - */ - @Test - public void testFindLsp() throws Exception { - resultLspWrapper = defaultIsisLsdb.findLsp(IsisPduType.L1HELLOPDU, srcId); - assertThat(resultLspWrapper, is(nullValue())); - } - - /** - * Tests allLspHeaders() method. - */ - @Test - public void testAllLspHeaders() throws Exception { - defaultIsisLsdb.addLsp(lsPdu, false, defaultIsisInterface); - lspWrapperList = defaultIsisLsdb.allLspHeaders(true); - assertThat(lspWrapperList, is(notNullValue())); - - defaultIsisLsdb.addLsp(lsPdu, true, defaultIsisInterface); - lspWrapperList = defaultIsisLsdb.allLspHeaders(true); - assertThat(lspWrapperList, is(notNullValue())); - } - - /** - * Tests isNewerOrSameLsp() method. - */ - @Test - public void testIsNewerOrSameLsp() throws Exception { - result = defaultIsisLsdb.isNewerOrSameLsp(lsPdu, lsPdu); - assertThat(result, is("same")); - } - - /** - * Tests lsSequenceNumber() method. - */ - @Test - public void testLsSequenceNumber() throws Exception { - resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L1LSPDU); - assertThat(resultInt, is(1)); - - resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L2LSPDU); - assertThat(resultInt, is(1)); - - resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L1CSNP); - assertThat(resultInt, is(1)); - } - - /** - * Tests deleteLsp() method. - */ - @Test - public void testdeleteLsp() throws Exception { - defaultIsisLsdb.deleteLsp(lsPdu); - assertThat(defaultIsisLsdb, is(notNullValue())); - - lsPdu.setIsisPduType(IsisPduType.L2LSPDU.value()); - defaultIsisLsdb.deleteLsp(lsPdu); - assertThat(defaultIsisLsdb, is(notNullValue())); - - lsPdu.setIsisPduType(IsisPduType.L1CSNP.value()); - defaultIsisLsdb.deleteLsp(lsPdu); - assertThat(defaultIsisLsdb, is(notNullValue())); - } -} - diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBinTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBinTest.java deleted file mode 100644 index 9ed993cce5..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBinTest.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.lsdb; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.LspWrapper; - -import java.util.Map; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test case for DefaultIsisLspBin. - */ -public class DefaultIsisLspBinTest { - - private DefaultIsisLspBin defaultIsisLspBin; - private int result; - private String key = "1"; - private LspWrapper lspWrapper; - private LspWrapper result1; - private Map listOfLsp; - - @Before - public void setUp() throws Exception { - defaultIsisLspBin = new DefaultIsisLspBin(1); - lspWrapper = new DefaultLspWrapper(); - } - - @After - public void tearDown() throws Exception { - defaultIsisLspBin = null; - } - - /** - * Tests addIsisLsp() method. - */ - @Test - public void testAddIsisLsp() throws Exception { - defaultIsisLspBin.addIsisLsp(key, lspWrapper); - assertThat(defaultIsisLspBin, is(notNullValue())); - } - - /** - * Tests isisLsp() method. - */ - @Test - public void testIsisLsp() throws Exception { - defaultIsisLspBin.addIsisLsp(key, lspWrapper); - result1 = defaultIsisLspBin.isisLsp(key); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests removeIsisLsp() method. - */ - @Test - public void testRemoveIsisLsp() throws Exception { - defaultIsisLspBin.addIsisLsp(key, lspWrapper); - defaultIsisLspBin.removeIsisLsp(key, lspWrapper); - assertThat(defaultIsisLspBin, is(notNullValue())); - } - - /** - * Tests listOfLsp() method. - */ - @Test - public void testListOfLsp() throws Exception { - defaultIsisLspBin.addIsisLsp(key, lspWrapper); - listOfLsp = defaultIsisLspBin.listOfLsp(); - assertThat(listOfLsp.size(), is(1)); - } - - /** - * Tests binNumber() method. - */ - @Test - public void testBinNumber() throws Exception { - result = defaultIsisLspBin.binNumber(); - assertThat(result, is(1)); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(defaultIsisLspBin.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapperTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapperTest.java deleted file mode 100644 index d495522b51..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapperTest.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.lsdb; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisLsdbAge; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.controller.impl.DefaultIsisInterface; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test case for DefaultLspWrapper. - */ -public class DefaultLspWrapperTest { - - private DefaultLspWrapper defaultLspWrapper; - private String processing = "processing"; - private String result; - private int result1; - private IsisInterface isisInterface; - private IsisInterface result2; - private IsisPduType isisPduType; - private boolean result3; - private LsPdu lsPdu; - private LsPdu pdu; - private DefaultIsisLsdbAge defaultIsisLsdbAge; - private IsisLsdbAge lsdbAge; - - @Before - public void setUp() throws Exception { - defaultLspWrapper = new DefaultLspWrapper(); - isisInterface = new DefaultIsisInterface(); - pdu = new LsPdu(new IsisHeader()); - defaultIsisLsdbAge = new DefaultIsisLsdbAge(); - defaultIsisLsdbAge.startDbAging(); - } - - @After - public void tearDown() throws Exception { - defaultLspWrapper = null; - } - - /** - * Tests lspProcessing() getter method. - */ - @Test - public void testLspProcessing() throws Exception { - defaultLspWrapper.setLspProcessing(processing); - result = defaultLspWrapper.lspProcessing(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests lspProcessing() setter method. - */ - @Test - public void testSetLspProcessing() throws Exception { - defaultLspWrapper.setLspProcessing(processing); - result = defaultLspWrapper.lspProcessing(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests lspAgeReceived() getter method. - */ - @Test - public void testLspAgeReceived() throws Exception { - defaultLspWrapper.setLspAgeReceived(1); - result1 = defaultLspWrapper.lspAgeReceived(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests lspAgeReceived() setter method. - */ - @Test - public void testSetLspAgeReceived() throws Exception { - defaultLspWrapper.setLspAgeReceived(1); - result1 = defaultLspWrapper.lspAgeReceived(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests lspAgeReceived() getter method. - */ - @Test - public void testIsisInterface() throws Exception { - defaultLspWrapper.setIsisInterface(isisInterface); - result2 = defaultLspWrapper.isisInterface(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests lspAgeReceived() getter method. - */ - @Test - public void testSetIsisInterface() throws Exception { - defaultLspWrapper.setIsisInterface(isisInterface); - result2 = defaultLspWrapper.isisInterface(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests ageCounterWhenReceived() getter method. - */ - @Test - public void testAgeCounterWhenReceived() throws Exception { - defaultLspWrapper.setAgeCounterWhenReceived(1); - result1 = defaultLspWrapper.ageCounterWhenReceived(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests ageCounterWhenReceived() setter method. - */ - @Test - public void testSetAgeCounterWhenReceived() throws Exception { - defaultLspWrapper.setAgeCounterWhenReceived(1); - result1 = defaultLspWrapper.ageCounterWhenReceived(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests ageCounterRollOverWhenAdded() getter method. - */ - @Test - public void testAgeCounterRollOverWhenAdded() throws Exception { - defaultLspWrapper.setAgeCounterRollOverWhenAdded(1); - result1 = defaultLspWrapper.ageCounterRollOverWhenAdded(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests ageCounterRollOverWhenAdded() setter method. - */ - @Test - public void testSetAgeCounterRollOverWhenAdded() throws Exception { - defaultLspWrapper.setAgeCounterRollOverWhenAdded(1); - result1 = defaultLspWrapper.ageCounterRollOverWhenAdded(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests lspType() getter method. - */ - @Test - public void testLspType() throws Exception { - defaultLspWrapper.setLspType(IsisPduType.L1LSPDU); - isisPduType = defaultLspWrapper.lspType(); - assertThat(isisPduType, is(IsisPduType.L1LSPDU)); - } - - /** - * Tests lspType() setter method. - */ - @Test - public void testSetLspType() throws Exception { - defaultLspWrapper.setLspType(IsisPduType.L1LSPDU); - isisPduType = defaultLspWrapper.lspType(); - assertThat(isisPduType, is(IsisPduType.L1LSPDU)); - } - - /** - * Tests isSelfOriginated() getter method. - */ - @Test - public void testIsSelfOriginated() throws Exception { - defaultLspWrapper.setSelfOriginated(true); - result3 = defaultLspWrapper.isSelfOriginated(); - assertThat(result3, is(true)); - } - - /** - * Tests isSelfOriginated() setter method. - */ - @Test - public void testSetSelfOriginated() throws Exception { - defaultLspWrapper.setSelfOriginated(true); - result3 = defaultLspWrapper.isSelfOriginated(); - assertThat(result3, is(true)); - } - - /** - * Tests binNumber() getter method. - */ - @Test - public void testBinNumber() throws Exception { - defaultLspWrapper.setBinNumber(1); - result1 = defaultLspWrapper.binNumber(); - assertThat(result1, is(1)); - } - - /** - * Tests binNumber() setter method. - */ - @Test - public void testSetBinNumber() throws Exception { - defaultLspWrapper.setBinNumber(1); - result1 = defaultLspWrapper.binNumber(); - assertThat(result1, is(1)); - } - - /** - * Tests lsPdu() getter method. - */ - @Test - public void testLsPdu() throws Exception { - defaultLspWrapper.setLsPdu(pdu); - lsPdu = defaultLspWrapper.lsPdu(); - assertThat(lsPdu, is(pdu)); - } - - /** - * Tests lsPdu() setter method. - */ - @Test - public void testSetLsPdu() throws Exception { - defaultLspWrapper.setLsPdu(pdu); - lsPdu = defaultLspWrapper.lsPdu(); - assertThat(lsPdu, is(pdu)); - } - - /** - * Tests lsdbAge() getter method. - */ - @Test - public void testlsdbAge() throws Exception { - defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge); - lsdbAge = defaultLspWrapper.lsdbAge(); - assertThat(lsdbAge, is(defaultIsisLsdbAge)); - } - - /** - * Tests lsdbAge() setter method. - */ - @Test - public void testSetLsdbAge() throws Exception { - defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge); - lsdbAge = defaultLspWrapper.lsdbAge(); - assertThat(lsdbAge, is(defaultIsisLsdbAge)); - } - - /** - * Tests remainingLifetime() getter method. - */ - @Test - public void testRemainingLifetime() throws Exception { - defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge); - defaultLspWrapper.setAgeCounterWhenReceived(1); - defaultLspWrapper.currentAge(); - defaultLspWrapper.setRemainingLifetime(1); - result1 = defaultLspWrapper.remainingLifetime(); - assertThat(result1, is(1)); - } - - /** - * Tests remainingLifetime() setter method. - */ - @Test - public void testSetRemainingLifetime() throws Exception { - defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge); - defaultLspWrapper.setAgeCounterWhenReceived(1); - defaultLspWrapper.currentAge(); - defaultLspWrapper.setRemainingLifetime(1); - result1 = defaultLspWrapper.remainingLifetime(); - assertThat(result1, is(1)); - } -} \ No newline at end of file diff --git a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumerTest.java b/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumerTest.java deleted file mode 100644 index 98684ad806..0000000000 --- a/protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumerTest.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.controller.impl.lsdb; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.impl.DefaultIsisInterface; - -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test case for IsisLspQueueConsumer. - */ -public class IsisLspQueueConsumerTest { - - private IsisLspQueueConsumer isisLspQueueConsumer; - private BlockingQueue blockingQueue = new ArrayBlockingQueue(1024); - private DefaultLspWrapper lspWrapper; - private DefaultLspWrapper lspWrapper1; - private SocketAddress socketAddress = InetSocketAddress.createUnresolved("127.0.0.1", 7000); - - @Before - public void setUp() throws Exception { - lspWrapper = new DefaultLspWrapper(); - lspWrapper.setLspProcessing("refreshLsp"); - lspWrapper.setSelfOriginated(true); - lspWrapper.setIsisInterface(new DefaultIsisInterface()); - lspWrapper1 = new DefaultLspWrapper(); - lspWrapper1.setLspProcessing("maxAgeLsp"); - lspWrapper1.setIsisInterface(new DefaultIsisInterface()); - blockingQueue.add(lspWrapper); - blockingQueue.add(lspWrapper1); - isisLspQueueConsumer = new IsisLspQueueConsumer(blockingQueue); - } - - @After - public void tearDown() throws Exception { - isisLspQueueConsumer = null; - } - - /** - * Tests run() method. - */ - @Test - public void testRun() throws Exception { - isisLspQueueConsumer.run(); - assertThat(isisLspQueueConsumer, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/BUILD b/protocols/isis/isisio/BUILD deleted file mode 100644 index 1aabfcf48e..0000000000 --- a/protocols/isis/isisio/BUILD +++ /dev/null @@ -1,8 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + NETTY + JAXB + [ - "@io_netty_netty//jar", - "//protocols/isis/api:onos-protocols-isis-api", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisErrorType.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisErrorType.java deleted file mode 100644 index d2ae7f7197..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisErrorType.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.exceptions; - -/** - * Defines all error codes and error sub codes. - */ -public final class IsisErrorType { - - //Represents an invalid ISIS message header - public static final byte MESSAGE_HEADER_ERROR = 1; - //Represents an invalid ISIS message body - public static final byte ISIS_MESSAGE_ERROR = 2; - //Message Header error sub codes - //Represents an invalid ISIS message length - public static final byte BAD_MESSAGE_LENGTH = 3; - //Represents an invalid ISIS message - public static final byte BAD_MESSAGE = 4; - - /** - * Creates an instance of ISIS error type. - */ - private IsisErrorType() { - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisParseException.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisParseException.java deleted file mode 100644 index 8da05220db..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/IsisParseException.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.exceptions; - -import com.google.common.base.MoreObjects; - -/** - * Representation of a custom exception for ISIS. - */ -public class IsisParseException extends Exception { - - private static final long serialVersionUID = 1L; - private byte errorCode; - private byte errorSubCode; - - /** - * Creates a new ISIS exception. - */ - public IsisParseException() { - super(); - } - - /** - * Creates a new ISIS exception based on the given arguments. - * - * @param message the detail of exception in string - * @param cause underlying cause of the error - */ - public IsisParseException(final String message, final Throwable cause) { - super(message, cause); - } - - /** - * Creates a new ISIS exception for the given message. - * - * @param message the detail of exception in string - */ - public IsisParseException(final String message) { - super(message); - } - - /** - * Creates a new ISIS exception from throwable instance. - * - * @param cause underlying cause of the error - */ - public IsisParseException(final Throwable cause) { - super(cause); - } - - /** - * Creates a new ISIS exception from error code and error sub code. - * - * @param errorCode error code of ISIS message - * @param errorSubCode error sub code of ISIS message - */ - public IsisParseException(final byte errorCode, final byte errorSubCode) { - super(); - this.errorCode = errorCode; - this.errorSubCode = errorSubCode; - } - - /** - * Returns error code for this exception. - * - * @return error code for this exception - */ - public byte errorCode() { - return this.errorCode; - } - - /** - * Returns error sub code for this exception. - * - * @return error sub code for this exception - */ - public byte errorSubCode() { - return this.errorSubCode; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("errorCode", errorCode) - .add("errorSubCode", errorSubCode) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/package-info.java deleted file mode 100644 index 645a6dae42..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/exceptions/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS protocol exceptions. - */ -package org.onosproject.isis.exceptions; diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisHeader.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisHeader.java deleted file mode 100644 index a80eac0dbd..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisHeader.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisMessage; -import org.onosproject.isis.controller.IsisPduType; - -/** - * Representation of ISIS message header. - */ -public class IsisHeader implements IsisMessage { - - private MacAddress sourceMac; - private int interfaceIndex; - private MacAddress interfaceMac; - private int isisPduType; - private byte irpDiscriminator; - private byte pduHeaderLength; - private byte version2; - private byte idLength; - private byte version; - private byte reserved; - private byte maximumAreaAddresses; - - /** - * Returns the interface index on which the message received. - * - * @return interface index on which the message received - */ - public int interfaceIndex() { - return interfaceIndex; - } - - /** - * Sets the interface index on which the message received. - * - * @param interfaceIndex interface index on which the message received - */ - public void setInterfaceIndex(int interfaceIndex) { - this.interfaceIndex = interfaceIndex; - } - - /** - * Returns the interface mac address on which the message received. - * - * @return interface mac address on which the message received - */ - public MacAddress interfaceMac() { - return interfaceMac; - } - - /** - * Returns the mac address of the message sender. - * - * @return mac address of the message sender - */ - public MacAddress sourceMac() { - return sourceMac; - } - - /** - * Sets the mac address of the message sender. - * - * @param sourceMac mac address of the message sender - */ - public void setSourceMac(MacAddress sourceMac) { - this.sourceMac = sourceMac; - } - - /** - * Sets the interface mac address on which the message received. - * - * @param interfaceMac mac address on which the message received - */ - public void setInterfaceMac(MacAddress interfaceMac) { - this.interfaceMac = interfaceMac; - } - - /** - * Returns the version of TLV header. - * - * @return version version of TLV header - */ - public byte version2() { - return version2; - } - - /** - * Sets the version of TLV header. - * - * @param version2 version of TLV header - */ - public void setVersion2(byte version2) { - this.version2 = version2; - } - - /** - * Returns maximum area address. - * - * @return maximum area address - */ - public byte maximumAreaAddresses() { - return maximumAreaAddresses; - } - - /** - * Sets maximum area address. - * - * @param maximumAreaAddresses maximum area address - */ - public void setMaximumAreaAddresses(byte maximumAreaAddresses) { - this.maximumAreaAddresses = maximumAreaAddresses; - } - - /** - * Returns reserved field value on which data received. - * - * @return reserved - */ - public byte reserved() { - return reserved; - } - - /** - * Sets reserved. - * - * @param reserved reserved - */ - public void setReserved(byte reserved) { - this.reserved = reserved; - } - - /** - * Returns version. - * - * @return version - */ - public byte version() { - return version; - } - - /** - * Returns ID length. - * - * @return ID length - */ - public byte idLength() { - return idLength; - } - - /** - * Sets ID length. - * - * @param idLength ID length - */ - public void setIdLength(byte idLength) { - this.idLength = idLength; - } - - /** - * Returns the PDU type. - * - * @return PDU type - */ - public int pduType() { - - return this.isisPduType; - } - - /** - * Sets PDU type. - * - * @param isisPduType PDU type - */ - public void setIsisPduType(int isisPduType) { - this.isisPduType = isisPduType; - } - - /** - * Sets protocol ID. - * - * @param version protocol ID - */ - public void setVersion(byte version) { - this.version = version; - } - - /** - * Returns length indicator. - * - * @return length indicator - */ - public byte pduHeaderLength() { - return pduHeaderLength; - } - - /** - * Sets length indicator. - * - * @param pduHeaderLength length indicator - */ - public void setPduHeaderLength(byte pduHeaderLength) { - this.pduHeaderLength = pduHeaderLength; - } - - /** - * Returns IRP discriminator. - * - * @return IRP discriminator - */ - public byte irpDiscriminator() { - return irpDiscriminator; - } - - /** - * Sets IRP discriminator. - * - * @param irpDiscriminator IRP discriminator - */ - public void setIrpDiscriminator(byte irpDiscriminator) { - - this.irpDiscriminator = irpDiscriminator; - } - - @Override - public IsisPduType isisPduType() { - - return IsisPduType.get(this.isisPduType); - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - //implemented in the sub classes - } - - @Override - public byte[] asBytes() { - return null; - } - - /** - * Populates ISIS header. - * - * @param isisHeader ISIS header - */ - public void populateHeader(IsisHeader isisHeader) { - this.setIrpDiscriminator(isisHeader.irpDiscriminator()); - this.setPduHeaderLength(isisHeader.pduHeaderLength()); - this.setVersion(isisHeader.version()); - this.setIdLength(isisHeader.idLength()); - this.setIsisPduType(isisHeader.pduType()); - this.setVersion2(isisHeader.version2()); - this.setReserved(isisHeader.reserved()); - this.setMaximumAreaAddresses(isisHeader.maximumAreaAddresses()); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisMessageReader.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisMessageReader.java deleted file mode 100644 index 883a8920a0..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/IsisMessageReader.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.controller.IsisMessage; -import org.onosproject.isis.exceptions.IsisErrorType; -import org.onosproject.isis.exceptions.IsisParseException; -import org.onosproject.isis.io.isispacket.pdu.Csnp; -import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu; -import org.onosproject.isis.io.isispacket.pdu.Psnp; -import org.onosproject.isis.io.util.IsisConstants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Represents ISIS message reader. - */ -public class IsisMessageReader { - - private static final Logger log = LoggerFactory.getLogger(IsisMessageReader.class); - - /** - * Reads from ISIS packet from buffer. - * - * @param channelBuffer buffer - * @return ISIS message - * @throws IsisParseException exception - */ - public IsisMessage readFromBuffer(ChannelBuffer channelBuffer) throws IsisParseException { - - int dataLength = channelBuffer.readableBytes(); - log.debug("IsisMessageReader::readFromBuffer Data length {}", dataLength); - if (channelBuffer.readableBytes() < IsisConstants.PDU_LENGTH) { - log.debug("Packet should have minimum length..."); - throw new IsisParseException(IsisErrorType.MESSAGE_HEADER_ERROR, IsisErrorType.BAD_MESSAGE_LENGTH); - } - IsisHeader isisHeader = getIsisHeader(channelBuffer); - int totalLength = 0; - IsisMessage isisMessage = null; - switch (isisHeader.isisPduType()) { - case L1HELLOPDU: - case L2HELLOPDU: - isisMessage = new L1L2HelloPdu(isisHeader); - totalLength = channelBuffer.getShort(IsisConstants.PDULENGTHPOSITION); - break; - case P2PHELLOPDU: - isisMessage = new P2PHelloPdu(isisHeader); - totalLength = channelBuffer.getShort(IsisConstants.PDULENGTHPOSITION); - break; - case L1LSPDU: - case L2LSPDU: - isisMessage = new LsPdu(isisHeader); - totalLength = channelBuffer.getShort(8); - break; - case L1CSNP: - case L2CSNP: - isisMessage = new Csnp(isisHeader); - totalLength = channelBuffer.getShort(8); - break; - case L1PSNP: - case L2PSNP: - isisMessage = new Psnp(isisHeader); - totalLength = channelBuffer.getShort(8); - break; - default: - log.debug("Message Reader[Decoder] - Unknown PDU type..!!!"); - break; - } - - if (isisMessage != null) { - try { - int bodyLength = totalLength - IsisConstants.COMMONHEADERLENGTH; - isisMessage.readFrom(channelBuffer.readBytes(bodyLength)); - - } catch (Exception e) { - throw new IsisParseException(IsisErrorType.ISIS_MESSAGE_ERROR, - IsisErrorType.BAD_MESSAGE); - } - - } - - return isisMessage; - } - - /** - * Gets ISIS header. - * - * @param channelBuffer ISIS header - * @return ISIS header - */ - private IsisHeader getIsisHeader(ChannelBuffer channelBuffer) { - - IsisHeader isisHeader = new IsisHeader(); - isisHeader.setIrpDiscriminator(channelBuffer.readByte()); - isisHeader.setPduHeaderLength(channelBuffer.readByte()); - isisHeader.setVersion(channelBuffer.readByte()); - isisHeader.setIdLength(channelBuffer.readByte()); - isisHeader.setIsisPduType(channelBuffer.readByte()); - isisHeader.setVersion2(channelBuffer.readByte()); - isisHeader.setReserved(channelBuffer.readByte()); - isisHeader.setMaximumAreaAddresses(channelBuffer.readByte()); - - return isisHeader; - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/package-info.java deleted file mode 100644 index c359bf7d68..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS protocol. - */ -package org.onosproject.isis.io.isispacket; \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/AttachedToOtherAreas.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/AttachedToOtherAreas.java deleted file mode 100644 index 72e8c0f98b..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/AttachedToOtherAreas.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.pdu; - -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; - -/** - * Representation of attached to other areas. - */ -public enum AttachedToOtherAreas { - DEFAULTMETRIC(1), - DELAYMETRIC(2), - EXPENSEMETRIC(4), - ERRORMETRIC(8), - NONE(0); - // Reverse lookup table - private static final Map LOOKUP = new HashMap<>(); - - // Populate the lookup table on loading time - static { - for (AttachedToOtherAreas attachedToOtherAreas : - EnumSet.allOf(AttachedToOtherAreas.class)) { - LOOKUP.put(attachedToOtherAreas.value(), attachedToOtherAreas); - } - } - - private int value; - - /** - * Returns the attached to other areas value. - * - * @param value attached to other areas value - */ - AttachedToOtherAreas(int value) { - this.value = value; - } - - /** - * Returns the value for attached to other areas from pdu type value. - * - * @param pduTypeValue to get attached areas value - * @return attachedToOtherAreas value of the enum - */ - public static AttachedToOtherAreas get(int pduTypeValue) { - return LOOKUP.get(pduTypeValue); - } - - /** - * Returns the value representing PDU type. - * - * @return value represents PDU type - */ - public int value() { - return value; - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Csnp.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Csnp.java deleted file mode 100644 index 09ccefadb6..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Csnp.java +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.pdu; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvFinder; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.isispacket.tlv.TlvType; -import org.onosproject.isis.io.isispacket.tlv.TlvsToBytes; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of complete sequence number PDU. - */ -public class Csnp extends IsisHeader { - - /* - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Intra-domain Routing Protocol Discriminator | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Length Indicator | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version/Protocol ID Extension | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ID Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | R | R | R | PDU Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Maximum area address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PDU Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Source ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Start LSP ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | End LSP ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Variable Lengths Fields | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - CSNP Message Format - REFERENCE : ISO/IEC 10589 - */ - private int pduLength; - private String sourceId; - private String startLspId; - private String endLspId; - private List variableLengths = new ArrayList<>(); - - /** - * Creates the instance for this class. - * - * @param isisHeader ISIS header - */ - public Csnp(IsisHeader isisHeader) { - populateHeader(isisHeader); - } - - /** - * Returns the list of all tlvs. - * - * @return variableLengths list of tlvs - */ - public List getAllTlv() { - return variableLengths; - } - - /** - * Returns the source ID of csnp. - * - * @return sourceId source ID - */ - public String sourceId() { - return sourceId; - } - - /** - * Sets the source ID for csnp. - * - * @param sourceId source ID - */ - public void setSourceId(String sourceId) { - this.sourceId = sourceId; - } - - /** - * Returns the initial link state packet ID of csnp. - * - * @return startLspId start link state packet ID - */ - public String startLspId() { - return startLspId; - } - - /** - * Sets the initial link state packet ID for csnp. - * - * @param startLspId start link state packet ID - */ - public void setStartLspId(String startLspId) { - this.startLspId = startLspId; - } - - /** - * Returns the end link state packet ID of csnp. - * - * @return endLspId end link state packet ID of csnp. - */ - public String endLspId() { - return endLspId; - } - - /** - * Sets the end link state packet ID for csnp. - * - * @param endLspId end link state packet ID of csnp. - */ - public void setEndLspId(String endLspId) { - this.endLspId = endLspId; - } - - /** - * Returns the packet data unit length of link state packet. - * Entire length of this PDU, in octets - * - * @return pduLength packet date unit length - */ - public int pduLength() { - return pduLength; - } - - /** - * Sets the packet data unit length for link state packet. - * Entire Length of this PDU, in octets - * - * @param pduLength packet data length - */ - public void setPduLength(int pduLength) { - this.pduLength = pduLength; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - this.setPduLength(channelBuffer.readUnsignedShort()); - //source id + 1 value - byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE); - this.setSourceId(IsisUtil.systemIdPlus(tempByteArray)); - //start lsp id + 2 value - tempByteArray = new byte[IsisUtil.ID_PLUS_TWO_BYTE]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_TWO_BYTE); - this.setStartLspId(IsisUtil.systemIdPlus(tempByteArray)); - //end lsp id + 2 value - tempByteArray = new byte[IsisUtil.ID_PLUS_TWO_BYTE]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_TWO_BYTE); - this.setEndLspId(IsisUtil.systemIdPlus(tempByteArray)); - //tlv here - while (channelBuffer.readableBytes() > 0) { - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(channelBuffer.readUnsignedByte()); - tlvHeader.setTlvLength(channelBuffer.readUnsignedByte()); - TlvType tlvValue = TlvType.get(tlvHeader.tlvType()); - if (tlvValue != null) { - IsisTlv tlv = TlvFinder.findTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength())); - if (tlv != null) { - this.variableLengths.add(tlv); - } - } else { - channelBuffer.readBytes(tlvHeader.tlvLength()); - } - } - } - - @Override - public byte[] asBytes() { - byte[] csnpMessage = null; - byte[] isisPduHeader = isisPduHeader(); - byte[] csnpBody = completeSequenceNumberPduBody(); - csnpMessage = Bytes.concat(isisPduHeader, csnpBody); - return csnpMessage; - } - - /** - * Builds ISIS PDU header for complete sequence numbers PDU. - * - * @return isisPduHeader ISIS PDU header - */ - public byte[] isisPduHeader() { - List headerList = new ArrayList<>(); - headerList.add(this.irpDiscriminator()); - headerList.add((byte) IsisUtil.getPduHeaderLength(this.pduType())); - headerList.add(this.version()); - headerList.add(this.idLength()); - headerList.add((byte) this.pduType()); - headerList.add(this.version2()); - headerList.add(this.reserved()); - headerList.add(this.maximumAreaAddresses()); - return Bytes.toArray(headerList); - } - - /** - * Builds complete sequence numbers PDU body. - * - * @return bodyList complete sequence numbers PDU body - */ - public byte[] completeSequenceNumberPduBody() { - List bodyList = new ArrayList<>(); - bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.pduLength()))); - bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.sourceId())); - bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.startLspId())); - bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.endLspId())); - for (IsisTlv isisTlv : variableLengths) { - bodyList.addAll(TlvsToBytes.tlvToBytes(isisTlv)); - } - return Bytes.toArray(bodyList); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("pduLength", pduLength) - .add("sourceId", sourceId) - .add("startLspId", startLspId) - .add("endLspId", endLspId) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Csnp that = (Csnp) o; - return Objects.equal(pduLength, that.pduLength) && - Objects.equal(sourceId, that.sourceId) && - Objects.equal(startLspId, that.startLspId) && - Objects.equal(endLspId, that.endLspId); - } - - @Override - public int hashCode() { - return Objects.hashCode(pduLength, sourceId, startLspId, endLspId); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/HelloPdu.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/HelloPdu.java deleted file mode 100644 index 05e6448586..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/HelloPdu.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.pdu; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisInterfaceState; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv; -import org.onosproject.isis.io.isispacket.tlv.AreaAddressTlv; -import org.onosproject.isis.io.isispacket.tlv.IpInterfaceAddressTlv; -import org.onosproject.isis.io.isispacket.tlv.IsisNeighborTlv; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of ISIS hello PDU. - */ -public abstract class HelloPdu extends IsisHeader { - - protected List variableLengths = new ArrayList<>(); - private byte circuitType; - private String sourceId; - private int holdingTime; - private int pduLength; - - public void addTlv(IsisTlv isisTlv) { - variableLengths.add(isisTlv); - } - - /** - * Returns the variable lengths. - * - * @return variable lengths - */ - public List tlvs() { - return variableLengths; - } - - /** - * Returns the list of area addresses. - * - * @return areaAddresses area addresses - */ - public List areaAddress() { - List areaAddresses = null; - for (IsisTlv tlv : tlvs()) { - if (tlv instanceof AreaAddressTlv) { - areaAddresses = ((AreaAddressTlv) tlv).areaAddress(); - } - } - return areaAddresses; - } - - /** - * Returns the list of interface IP addresses. - * - * @return interfaceIpAddresses list of interface IP addresses - */ - public List interfaceIpAddresses() { - List interfaceIpAddresses = null; - for (IsisTlv tlv : tlvs()) { - if (tlv instanceof IpInterfaceAddressTlv) { - interfaceIpAddresses = ((IpInterfaceAddressTlv) tlv).interfaceAddress(); - } - } - return interfaceIpAddresses; - } - - /** - * Returns the list of neighbor list. - * - * @return macAddresses list of neighbor MAC address - */ - public List neighborList() { - List macAddresses = null; - for (IsisTlv tlv : tlvs()) { - if (tlv instanceof IsisNeighborTlv) { - macAddresses = ((IsisNeighborTlv) tlv).neighbor(); - } - } - return macAddresses; - } - - /** - * Returns the adjacency state. - * - * @return interfaceState adjacency state - */ - public IsisInterfaceState adjacencyState() { - IsisInterfaceState interfaceState = null; - for (IsisTlv tlv : tlvs()) { - if (tlv instanceof AdjacencyStateTlv) { - interfaceState = IsisInterfaceState.get(((AdjacencyStateTlv) tlv).adjacencyType()); - break; - } - } - return interfaceState; - } - - /** - * Returns the source ID. - * - * @return sourceId source ID - */ - public String sourceId() { - return sourceId; - } - - /** - * Sets source ID. - * - * @param sourceId source ID - */ - public void setSourceId(String sourceId) { - this.sourceId = sourceId; - } - - /** - * Returns the PDU length. - * - * @return pduLength PDU length - */ - public int pduLength() { - return pduLength; - } - - /** - * Sets the PDU length. - * - * @param pduLength PDU length - */ - public void setPduLength(int pduLength) { - this.pduLength = pduLength; - } - - /** - * Returns the holding time. - * - * @return holdingTime holding time - */ - public int holdingTime() { - return holdingTime; - } - - /** - * Sets the holding time. - * - * @param holdingTime holding time - */ - public void setHoldingTime(int holdingTime) { - this.holdingTime = holdingTime; - } - - /** - * Returns the circuit type. - * - * @return circuitType circuit type - */ - public byte circuitType() { - return circuitType; - } - - /** - * Sets the circuit type. - * - * @param circuitType circuit type - */ - public void setCircuitType(byte circuitType) { - this.circuitType = circuitType; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("circuitType", circuitType) - .add("sourceId", sourceId) - .add("holdingTime", holdingTime) - .add("pduLength", pduLength) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - HelloPdu that = (HelloPdu) o; - return Objects.equal(circuitType, that.circuitType) && - Objects.equal(sourceId, that.sourceId) && - Objects.equal(holdingTime, that.holdingTime) && - Objects.equal(pduLength, that.pduLength); - } - - @Override - public int hashCode() { - return Objects.hashCode(circuitType, sourceId, holdingTime, pduLength); - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPdu.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPdu.java deleted file mode 100644 index 53a82a8048..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPdu.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.pdu; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvFinder; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.isispacket.tlv.TlvType; -import org.onosproject.isis.io.isispacket.tlv.TlvsToBytes; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of L1L2 hello PDU. - */ -public class L1L2HelloPdu extends HelloPdu { - - /* - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Intra-domain Routing Protocol Discriminator | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Length Indicator | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version/Protocol ID Extension | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ID Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | R | R | R | PDU Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Maximum area address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Circuit Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Source ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Holding Time | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PDU Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PDU Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | R | Priority | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LAN ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Variable Lengths Fields | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Hello Message Format - REFERENCE : ISO/IEC 10589 - */ - - private byte priority; - private String lanId; - - /** - * Parametrized constructor. - * - * @param isisHeader ISIs header - */ - public L1L2HelloPdu(IsisHeader isisHeader) { - populateHeader(isisHeader); - } - - /** - * Returns the LAN ID. - * - * @return LAN ID - */ - - public String lanId() { - return lanId; - } - - /** - * Sets the LAN ID. - * - * @param lanId LAN ID - */ - public void setLanId(String lanId) { - this.lanId = lanId; - } - - /** - * Returns the priority. - * - * @return priority - */ - public byte priority() { - return priority; - } - - /** - * Sets priority. - * - * @param priority priority - */ - public void setPriority(byte priority) { - this.priority = priority; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - this.setCircuitType(channelBuffer.readByte()); - //sorce id - byte[] tempByteArray = new byte[IsisUtil.ID_SIX_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_SIX_BYTES); - this.setSourceId(IsisUtil.systemId(tempByteArray)); - this.setHoldingTime(channelBuffer.readUnsignedShort()); - this.setPduLength(channelBuffer.readUnsignedShort()); - this.setPriority(channelBuffer.readByte()); - //landid id + 1 value - tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE); - this.setLanId(IsisUtil.systemIdPlus(tempByteArray)); - //tlv here - while (channelBuffer.readableBytes() > 0) { - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(channelBuffer.readUnsignedByte()); - tlvHeader.setTlvLength(channelBuffer.readUnsignedByte()); - TlvType tlvType = TlvType.get(tlvHeader.tlvType()); - if (tlvType != null) { - IsisTlv tlv = TlvFinder.findTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength())); - if (tlv != null) { - this.variableLengths.add(tlv); - } - } else { - channelBuffer.readBytes(tlvHeader.tlvLength()); - } - } - } - - @Override - public byte[] asBytes() { - byte[] helloMessage = null; - byte[] helloHeader = l1l2IsisPduHeader(); - byte[] helloBody = l1l2HelloPduBody(); - helloMessage = Bytes.concat(helloHeader, helloBody); - return helloMessage; - } - - /** - * Parse the ISIS L1L2 PDU header. - * - * @return ISIS L1L2 PDU header - */ - public byte[] l1l2IsisPduHeader() { - List headerLst = new ArrayList<>(); - headerLst.add(this.irpDiscriminator()); - headerLst.add((byte) IsisUtil.getPduHeaderLength(this.pduType())); - headerLst.add(this.version()); - headerLst.add(this.idLength()); - headerLst.add((byte) this.pduType()); - headerLst.add(this.version2()); - headerLst.add(this.reserved()); - headerLst.add(this.maximumAreaAddresses()); - return Bytes.toArray(headerLst); - } - - /** - * Parse the ISIS L1L2 PDU body. - * - * @return ISIS L1L2 PDU body - */ - public byte[] l1l2HelloPduBody() { - List bodyLst = new ArrayList<>(); - - bodyLst.add(this.circuitType()); - bodyLst.addAll(IsisUtil.sourceAndLanIdToBytes(this.sourceId())); - bodyLst.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.holdingTime()))); - bodyLst.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.pduLength()))); - bodyLst.add(this.priority); - bodyLst.addAll(IsisUtil.sourceAndLanIdToBytes(this.lanId())); - for (IsisTlv isisTlv : variableLengths) { - bodyLst.addAll(TlvsToBytes.tlvToBytes(isisTlv)); - } - return Bytes.toArray(bodyLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("priority", priority) - .add("lanId", lanId) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - L1L2HelloPdu that = (L1L2HelloPdu) o; - return Objects.equal(priority, that.priority) && - Objects.equal(lanId, that.lanId); - } - - @Override - public int hashCode() { - return Objects.hashCode(priority, lanId); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/LsPdu.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/LsPdu.java deleted file mode 100644 index b1c84745b2..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/LsPdu.java +++ /dev/null @@ -1,496 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.io.isispacket.pdu; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvFinder; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.isispacket.tlv.TlvType; -import org.onosproject.isis.io.isispacket.tlv.TlvsToBytes; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an ISIS Link State packet. - * Each Link State packet carries a collection of TLVs - * Several TLVs may be included in a single packet. - */ -public class LsPdu extends IsisHeader { - - /* - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Intra-domain Routing Protocol Discriminator | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Length Indicator | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version/Protocol ID Extension | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ID Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | R | R | R | PDU Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Maximum area address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PDU Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remaining Lifetime | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LSP ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PDU Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Sequence Number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Checksum | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | P | ATT | LSPDBOL | IS Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Variable Lengths Fields | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - LS PDU Format - REFERENCE : ISO/IEC 10589 - */ - private int pduLength; - private int remainingLifeTime; - private String lspId; - private int sequenceNumber; - private int checkSum; - private boolean partitionRepair; - private AttachedToOtherAreas attachedToOtherAreas; - private boolean lspDbol; - private byte typeBlock; - private byte intermediateSystemType; - private List variableLengths = new ArrayList<>(); - - /** - * Creates an instance of Link State packet. - * - * @param isisHeader isis header details - */ - public LsPdu(IsisHeader isisHeader) { - populateHeader(isisHeader); - } - - /** - * Returns the ISIS tlvs. - * - * @return tlvs - */ - public List tlvs() { - return this.variableLengths; - } - - /** - * Adds the isis tlv to the list for the link state PDU. - * - * @param isisTlv isis tlv - */ - public void addTlv(IsisTlv isisTlv) { - variableLengths.add(isisTlv); - } - - /** - * Returns the remaining time of the link state pdu. - * Number of seconds before LSP considered expired - * - * @return remainingTime remaining time - */ - public int remainingLifeTime() { - return remainingLifeTime; - } - - /** - * Sets the remaining time for the link state pdu. - * - * @param remainingLifeTime remaining time - */ - public void setRemainingLifeTime(int remainingLifeTime) { - this.remainingLifeTime = remainingLifeTime; - } - - /** - * Returns the link state database overload. - * - * @return lspdbol link state database overload - */ - public boolean lspDbol() { - return lspDbol; - } - - /** - * Sets the link state database overload for this pdu. - * - * @param lspDbol link state database overload - */ - public void setLspDbol(boolean lspDbol) { - this.lspDbol = lspDbol; - } - - /** - * Returns the type block. - * - * @return type block - */ - public byte typeBlock() { - return typeBlock; - } - - /** - * Sets the type block. - * - * @param typeBlock type block - */ - public void setTypeBlock(byte typeBlock) { - this.typeBlock = typeBlock; - } - - /** - * Returns the sequence number of LSP. - * - * @return sequenceNumber sequence number - */ - public int sequenceNumber() { - return sequenceNumber; - } - - /** - * Sets the sequence nubmer for LSP. - * - * @param sequenceNumber sequence number - */ - public void setSequenceNumber(int sequenceNumber) { - this.sequenceNumber = sequenceNumber; - } - - /** - * Returns the checksum of LSP from Source ID to end. - * - * @return checkSum check sum - */ - public int checkSum() { - return checkSum; - } - - /** - * Sets the checksum for LSP from Source ID to end. - * - * @param checkSum check sum - */ - public void setCheckSum(int checkSum) { - this.checkSum = checkSum; - } - - /** - * Returns the partition repair value of the intermediate system. - * - * @return partitionRepair partition repair - */ - public boolean partitionRepair() { - return partitionRepair; - } - - /** - * Sets partition repair value for the intermediate system. - * - * @param partitionRepair partition repair - */ - public void setPartitionRepair(boolean partitionRepair) { - this.partitionRepair = partitionRepair; - } - - /** - * Returns the value of intermediate system attached field. - * return values based on type Default Metric, Delay Metric, Expense Metric, Error Metric - * - * @return attachedToOtherAreas attached to other areas - */ - public AttachedToOtherAreas attachedToOtherAreas() { - return attachedToOtherAreas; - } - - /** - * Sets the value for intermediate system attached field. - * it will pass values based on type Default Metric, Delay Metric, Expense Metric, Error Metric - * - * @param attachedToOtherAreas attached to other areas - */ - public void setAttachedToOtherAreas(AttachedToOtherAreas attachedToOtherAreas) { - this.attachedToOtherAreas = attachedToOtherAreas; - } - - /** - * Returns the intermediate system type. - * type will be level 1 or level 2 - * - * @return intermediateSystemType intermediate system type - */ - public byte intermediateSystemType() { - return intermediateSystemType; - } - - /** - * Sets the value for intermediate system. - * type will be level 1 or level 2 - * - * @param intermediateSystemType intermediate system type - */ - public void setIntermediateSystemType(byte intermediateSystemType) { - this.intermediateSystemType = intermediateSystemType; - } - - /** - * Returns the link state ID of link state packet. - * System ID of the source of link state PDU - * - * @return lspId link state packet ID - */ - public String lspId() { - return lspId; - } - - /** - * Sets the link state ID for link state packet. - * System ID of the source of link state PDU - * - * @param lspId link state packet ID - */ - public void setLspId(String lspId) { - this.lspId = lspId; - } - - /** - * Returns the packet data unit length of link state packet. - * Entire length of this PDU, in octets - * - * @return pduLength packet data unit length - */ - public int pduLength() { - return pduLength; - } - - /** - * Sets the packet data unit length for link state packet. - * Entire Length of this PDU, in octets - * - * @param pduLength packet data length - */ - public void setPduLength(int pduLength) { - this.pduLength = pduLength; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - - this.setPduLength(channelBuffer.readUnsignedShort()); - this.setRemainingLifeTime(channelBuffer.readUnsignedShort()); - //lsp id + 2 value - byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_TWO_BYTE]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_TWO_BYTE); - this.setLspId(IsisUtil.systemIdPlus(tempByteArray)); - //sequence number 4 - this.setSequenceNumber(channelBuffer.readInt()); - this.setCheckSum(channelBuffer.readUnsignedShort()); - int typeTemp = channelBuffer.readUnsignedByte(); - byte isTypeByte = (byte) typeTemp; - String tempValue = String.format("%8s", Integer.toBinaryString(isTypeByte & 0xFF)).replace(' ', '0'); - int pBit = Integer.parseInt(new Character(tempValue.charAt(0)).toString()); - if (pBit == 1) { - this.setPartitionRepair(true); - } else { - this.setPartitionRepair(false); - } - int attValue = Integer.parseInt(tempValue.substring(1, 5), 2); - switch (AttachedToOtherAreas.get(attValue)) { - case DEFAULTMETRIC: - this.setAttachedToOtherAreas(AttachedToOtherAreas.DEFAULTMETRIC); - break; - case DELAYMETRIC: - this.setAttachedToOtherAreas(AttachedToOtherAreas.DELAYMETRIC); - break; - case EXPENSEMETRIC: - this.setAttachedToOtherAreas(AttachedToOtherAreas.EXPENSEMETRIC); - break; - case ERRORMETRIC: - this.setAttachedToOtherAreas(AttachedToOtherAreas.ERRORMETRIC); - break; - case NONE: - this.setAttachedToOtherAreas(AttachedToOtherAreas.NONE); - break; - default: - break; - } - int lspdbol = Integer.parseInt(new Character(tempValue.charAt(5)).toString()); - if (lspdbol == 1) { - this.setLspDbol(true); - } else { - this.setLspDbol(false); - } - int isType = Integer.parseInt(tempValue.substring(6, 8), 2); - byte isTypeByteValue = (byte) isType; - this.setIntermediateSystemType(isTypeByteValue); - //tlv here - while (channelBuffer.readableBytes() > 0) { - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(channelBuffer.readUnsignedByte()); - tlvHeader.setTlvLength(channelBuffer.readUnsignedByte()); - TlvType tlvValue = TlvType.get(tlvHeader.tlvType()); - if (tlvValue != null) { - IsisTlv tlv = TlvFinder.findTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength())); - if (tlv != null) { - this.variableLengths.add(tlv); - } - } else { - channelBuffer.readBytes(tlvHeader.tlvLength()); - } - } - } - - @Override - public byte[] asBytes() { - byte[] lspMessage = null; - byte[] helloHeader = l1l2IsisPduHeader(); - byte[] lspBody = l1l2LsPduBody(); - lspMessage = Bytes.concat(helloHeader, lspBody); - return lspMessage; - } - - /** - * Builds ISIS PDU header from ISIS message. - * - * @return headerList ISIS PDU header - */ - public byte[] l1l2IsisPduHeader() { - List headerList = new ArrayList<>(); - headerList.add(this.irpDiscriminator()); - headerList.add((byte) IsisUtil.getPduHeaderLength(this.pduType())); - headerList.add(this.version()); - headerList.add(this.idLength()); - headerList.add((byte) this.pduType()); - headerList.add(this.version2()); - headerList.add(this.reserved()); - headerList.add(this.maximumAreaAddresses()); - return Bytes.toArray(headerList); - } - - /** - * Builds link state PDU body from ISIS message. - * - * @return bodyList link state PDU body - */ - public byte[] l1l2LsPduBody() { - List bodyList = new ArrayList<>(); - bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.pduLength()))); - bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.remainingLifeTime()))); - bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.lspId())); - bodyList.addAll(Bytes.asList(IsisUtil.convertToFourBytes(this.sequenceNumber()))); - bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.checkSum()))); - String temString = ""; - if (this.partitionRepair()) { - temString = "1" + temString; - } else { - temString = "0" + temString; - } - switch (this.attachedToOtherAreas()) { - case ERRORMETRIC: - temString = temString + "1000"; - break; - case EXPENSEMETRIC: - temString = temString + "0100"; - break; - case DELAYMETRIC: - temString = temString + "0010"; - break; - case DEFAULTMETRIC: - temString = temString + "0001"; - break; - case NONE: - temString = temString + "0000"; - break; - default: - break; - } - if (this.lspDbol()) { - temString = temString + "1"; - } else { - temString = temString + "0"; - } - String isType = Integer.toBinaryString(this.intermediateSystemType()); - if (isType.length() % 2 != 0) { - isType = "0" + isType; - } - temString = temString + isType; - bodyList.add((byte) Integer.parseInt(temString, 2)); - for (IsisTlv isisTlv : variableLengths) { - bodyList.addAll(TlvsToBytes.tlvToBytes(isisTlv)); - } - return Bytes.toArray(bodyList); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("pduLength", pduLength) - .add("remainingLifeTime", remainingLifeTime) - .add("lspId", lspId) - .add("sequenceNumber", sequenceNumber) - .add("checkSum", checkSum) - .add("partitionRepair", partitionRepair) - .add("lspDbol", lspDbol) - .add("typeBlock", typeBlock) - .add("intermediateSystemType", intermediateSystemType) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - LsPdu that = (LsPdu) o; - return Objects.equal(pduLength, that.pduLength) && - Objects.equal(remainingLifeTime, that.remainingLifeTime) && - Objects.equal(lspId, that.lspId) && - Objects.equal(sequenceNumber, that.sequenceNumber) && - Objects.equal(checkSum, that.checkSum) && - Objects.equal(partitionRepair, that.partitionRepair) && - Objects.equal(lspDbol, that.lspDbol) && - Objects.equal(typeBlock, that.typeBlock) && - Objects.equal(intermediateSystemType, that.intermediateSystemType); - } - - @Override - public int hashCode() { - return Objects.hashCode(pduLength, remainingLifeTime, lspId, sequenceNumber, - checkSum, partitionRepair, lspDbol, typeBlock, intermediateSystemType); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPdu.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPdu.java deleted file mode 100644 index 15644d6836..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPdu.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.pdu; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvFinder; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.isispacket.tlv.TlvType; -import org.onosproject.isis.io.isispacket.tlv.TlvsToBytes; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of P2P hello. - */ -public class P2PHelloPdu extends HelloPdu { - /* - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Intra-domain Routing Protocol Discriminator | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Length Indicator | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version/Protocol ID Extension | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ID Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | R | R | R | PDU Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Maximum area address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Circuit Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Source ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Holding Time | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PDU Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Circuit Id | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Variable Lengths Fields | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - P2P Hello Message Format - REFERENCE : ISO/IEC 10589 - */ - private byte localCircuitId; - - /** - * Sets the ISIS header. - * - * @param isisHeader isisHeader - */ - public P2PHelloPdu(IsisHeader isisHeader) { - populateHeader(isisHeader); - } - - /** - * Returns the local circuit ID. - * - * @return Local circuit ID - */ - public byte localCircuitId() { - return localCircuitId; - } - - /** - * Sets the local circuit ID. - * - * @param localCircuitId Local circuit ID - */ - public void setLocalCircuitId(byte localCircuitId) { - this.localCircuitId = localCircuitId; - } - - /** - * Sets the variable lengths. - * - * @param variableLengths variable lengths. - */ - public void setVariableLengths(List variableLengths) { - this.variableLengths = variableLengths; - } - - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - this.setCircuitType(channelBuffer.readByte()); - //source id - byte[] tempByteArray = new byte[IsisUtil.ID_SIX_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_SIX_BYTES); - this.setSourceId(IsisUtil.systemId(tempByteArray)); - this.setHoldingTime(channelBuffer.readUnsignedShort()); - this.setPduLength(channelBuffer.readUnsignedShort()); - this.setLocalCircuitId((byte) channelBuffer.readUnsignedByte()); - while (channelBuffer.readableBytes() > 0) { - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(channelBuffer.readUnsignedByte()); - tlvHeader.setTlvLength(channelBuffer.readUnsignedByte()); - TlvType tlvType = TlvType.get(tlvHeader.tlvType()); - if (tlvType != null) { - IsisTlv tlv = TlvFinder.findTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength())); - if (tlv != null) { - this.variableLengths.add(tlv); - } - } else { - channelBuffer.readBytes(tlvHeader.tlvLength()); - } - } - } - - @Override - public byte[] asBytes() { - byte[] helloMessage = null; - byte[] helloHeader = p2PHeader(); - byte[] helloBody = p2P2HelloPduBody(); - helloMessage = Bytes.concat(helloHeader, helloBody); - return helloMessage; - } - - /** - * Builds the point to point header. - * - * @return headerList point to point header - */ - public byte[] p2PHeader() { - List headerList = new ArrayList<>(); - headerList.add(this.irpDiscriminator()); - headerList.add((byte) IsisUtil.getPduHeaderLength(this.pduType())); - headerList.add(this.version()); - headerList.add(this.idLength()); - headerList.add((byte) this.pduType()); - headerList.add(this.version2()); - headerList.add(this.reserved()); - headerList.add(this.maximumAreaAddresses()); - return Bytes.toArray(headerList); - } - - /** - * Builds the point to point hello PDU body. - * - * @return bodyList point to point hello PDU body - */ - public byte[] p2P2HelloPduBody() { - List bodyList = new ArrayList<>(); - bodyList.add(this.circuitType()); - bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.sourceId())); - bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.holdingTime()))); - bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.pduLength()))); - bodyList.add((byte) this.localCircuitId()); - for (IsisTlv isisTlv : variableLengths) { - bodyList.addAll(TlvsToBytes.tlvToBytes(isisTlv)); - } - return Bytes.toArray(bodyList); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("localCircuitId", localCircuitId) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - P2PHelloPdu that = (P2PHelloPdu) o; - return Objects.equal(localCircuitId, that.localCircuitId); - } - - @Override - public int hashCode() { - return Objects.hashCode(localCircuitId); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Psnp.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Psnp.java deleted file mode 100644 index 2d29a7c939..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Psnp.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.pdu; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvFinder; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.isispacket.tlv.TlvType; -import org.onosproject.isis.io.isispacket.tlv.TlvsToBytes; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of partial sequence number PDU. - */ -public class Psnp extends IsisHeader { - /* - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Intradomain Routing Protocol Discriminator | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Length Indicator | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version/Protocol ID Extension | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ID Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | R | R | R | PDU Type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Maximum area address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PDU Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Source ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Start LSP ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | End LSP ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Variable Lengths Fields | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Hello Message Format - REFERENCE : ISO/IEC 10589 - */ - private int pduLength; - private String sourceId; - private List variableLengths = new ArrayList<>(); - - /** - * Creates the instance for this class. - * - * @param isisHeader ISIS header - */ - public Psnp(IsisHeader isisHeader) { - populateHeader(isisHeader); - } - - /** - * Adds the TLV to list. - * - * @param isisTlv ISIS TLV instance - */ - public void addTlv(IsisTlv isisTlv) { - variableLengths.add(isisTlv); - } - - /** - * Returns the list of all tlvs. - * - * @return variableLengths list of tlvs - */ - public List getAllTlv() { - return variableLengths; - } - - /** - * Returns the source ID of csnp. - * - * @return sourceId source ID - */ - public String sourceId() { - return sourceId; - } - - /** - * Sets the source ID for csnp. - * - * @param sourceId source ID - */ - public void setSourceId(String sourceId) { - this.sourceId = sourceId; - } - - /** - * Returns the packet data unit length of link state packet. - * Entire length of this PDU, in octets - * - * @return pduLength packte date unit length - */ - public int pduLength() { - return pduLength; - } - - /** - * Sets the packet data unit length for link state packet. - * Entire Length of this PDU, in octets - * - * @param pduLength packte data length - */ - public void setPduLength(int pduLength) { - this.pduLength = pduLength; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - this.setPduLength(channelBuffer.readUnsignedShort()); - //source id + 2 value - byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE); - this.setSourceId(IsisUtil.systemIdPlus(tempByteArray)); - //tlv here - while (channelBuffer.readableBytes() > 0) { - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(channelBuffer.readUnsignedByte()); - tlvHeader.setTlvLength(channelBuffer.readUnsignedByte()); - TlvType tlvValue = TlvType.get(tlvHeader.tlvType()); - if (tlvValue != null) { - IsisTlv tlv = TlvFinder.findTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength())); - if (tlv != null) { - this.variableLengths.add(tlv); - } - } else { - channelBuffer.readBytes(tlvHeader.tlvLength()); - } - } - } - - - @Override - public byte[] asBytes() { - byte[] psnpMessage = null; - byte[] isisPduHeader = isisPduHeader(); - byte[] psnpBody = partialSequenceNumberPduBody(); - psnpMessage = Bytes.concat(isisPduHeader, psnpBody); - return psnpMessage; - } - - /** - * Builds the ISIS PDU header. - * - * @return headerList ISIS PDU header - */ - public byte[] isisPduHeader() { - List headerList = new ArrayList<>(); - headerList.add(this.irpDiscriminator()); - headerList.add((byte) IsisUtil.getPduHeaderLength(this.pduType())); - headerList.add(this.version()); - headerList.add(this.idLength()); - headerList.add((byte) this.pduType()); - headerList.add(this.version2()); - headerList.add(this.reserved()); - headerList.add(this.maximumAreaAddresses()); - return Bytes.toArray(headerList); - } - - /** - * Builds the partial sequence number PDU body. - * - * @return bodyList partial sequence number PDU body - */ - public byte[] partialSequenceNumberPduBody() { - List bodyList = new ArrayList<>(); - bodyList.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.pduLength()))); - bodyList.addAll(IsisUtil.sourceAndLanIdToBytes(this.sourceId())); - for (IsisTlv isisTlv : variableLengths) { - bodyList.addAll(TlvsToBytes.tlvToBytes(isisTlv)); - } - return Bytes.toArray(bodyList); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("pduLength", pduLength) - .add("sourceId", sourceId) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Psnp that = (Psnp) o; - return Objects.equal(pduLength, that.pduLength); - } - - @Override - public int hashCode() { - return Objects.hashCode(sourceId, pduLength); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/package-info.java deleted file mode 100644 index 471e49c4fe..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the isis protocol. - */ -package org.onosproject.isis.io.isispacket.pdu; \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlv.java deleted file mode 100644 index 08a98fb050..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlv.java +++ /dev/null @@ -1,166 +0,0 @@ -/* -* Copyright 2016-present Open Networking Foundation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of adjacency state TLV of P2P neighbor. - */ -public class AdjacencyStateTlv extends TlvHeader implements IsisTlv { - - private byte adjacencyType; - private int localCircuitId; - private String neighborSystemId; - private int neighborLocalCircuitId; - - /** - * Creates an instance of adjacency state TLV.. - * - * @param tlvHeader TLV header - */ - public AdjacencyStateTlv(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - } - - /** - * Returns local circuit ID for adjacency state TLV. - * - * @return local circuit ID - */ - public int localCircuitId() { - return localCircuitId; - } - - /** - * Sets local circuit ID for adjacency state TLV. - * - * @param localCircuitId local circuit Id - */ - public void setLocalCircuitId(int localCircuitId) { - this.localCircuitId = localCircuitId; - } - - /** - * Returns neighbor system ID for adjacency state TLV. - * - * @return neighbor system ID - */ - public String neighborSystemId() { - return neighborSystemId; - } - - /** - * Sets neighbor system ID for adjacency state TLV. - * - * @param neighborSystemId neighbor system ID - */ - public void setNeighborSystemId(String neighborSystemId) { - this.neighborSystemId = neighborSystemId; - } - - /** - * Returns neighbor local circuit ID for adjacency state TLV. - * - * @return neighbor local circuit ID - */ - public int neighborLocalCircuitId() { - return neighborLocalCircuitId; - } - - /** - * Sets neighbor local circuit ID for adjacency state TLV. - * - * @param neighborLocalCircuitId neighbor local circuit ID - */ - public void setNeighborLocalCircuitId(int neighborLocalCircuitId) { - this.neighborLocalCircuitId = neighborLocalCircuitId; - } - - /** - * Returns adjacency type of adjacency state TLV. - * - * @return adjacency type - */ - public byte adjacencyType() { - return adjacencyType; - } - - /** - * Sets adjacency type for adjacency state TLV. - * - * @param adjacencyType adjacency type - */ - public void setAdjacencyType(byte adjacencyType) { - this.adjacencyType = adjacencyType; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - this.setAdjacencyType(channelBuffer.readByte()); - this.setLocalCircuitId(channelBuffer.readInt()); - if (channelBuffer.readableBytes() > 0) { - byte[] tempByteArray = new byte[IsisUtil.ID_SIX_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_SIX_BYTES); - this.setNeighborSystemId(IsisUtil.systemId(tempByteArray)); - this.setNeighborLocalCircuitId(channelBuffer.readInt()); - } - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - return bytes; - } - - /** - * Returns adjacency type TLV body as byte array. - * - * @return byteArray TLV body of area address TLV - */ - private byte[] tlvBodyAsBytes() { - List bytes = new ArrayList<>(); - bytes.add(this.adjacencyType); - bytes.addAll(Bytes.asList(IsisUtil.convertToFourBytes(this.localCircuitId))); - if (this.neighborSystemId != null) { - bytes.addAll(IsisUtil.sourceAndLanIdToBytes(this.neighborSystemId)); - bytes.addAll(Bytes.asList(IsisUtil.convertToFourBytes(this.neighborLocalCircuitId))); - } - return Bytes.toArray(bytes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("adjacencyType", adjacencyType) - .add("localCircuitId", localCircuitId) - .add("neighborSystemId", neighborSystemId) - .add("neighborLocalCircuitId", neighborLocalCircuitId) - .toString(); - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlv.java deleted file mode 100644 index 88ad3b93f8..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlv.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of area address TLV. - */ -public class AreaAddressTlv extends TlvHeader implements IsisTlv { - - private List areaAddress = new ArrayList<>(); - - /** - * Creates an instance of area address TLV. - * - * @param tlvHeader TLV header - */ - public AreaAddressTlv(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - } - - /** - * Adds the area address to the area address TLV. - * - * @param areaAddress area address - */ - public void addAddress(String areaAddress) { - this.areaAddress.add(areaAddress); - } - - /** - * Returns the area address of area address TLV. - * - * @return areaAddress area address - */ - public List areaAddress() { - return this.areaAddress; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() > 0) { - int addressLength = channelBuffer.readByte(); - byte[] addressbytes = new byte[addressLength]; - channelBuffer.readBytes(addressbytes, 0, addressLength); - String areaAddress = IsisUtil.areaAddress(addressbytes); - this.areaAddress.add(areaAddress); - } - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - return bytes; - } - - /** - * Returns TLV body of area address TLV. - * - * @return byteArray TLV body of area address TLV - */ - private byte[] tlvBodyAsBytes() { - List bytes = new ArrayList<>(); - for (String areaAddress : this.areaAddress) { - bytes.add((byte) (areaAddress.length() / 2)); - bytes.addAll(IsisUtil.areaAddressToBytes(areaAddress)); - } - return Bytes.toArray(bytes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("areaAddress", areaAddress) - .toString(); - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlv.java deleted file mode 100644 index b942da29ba..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlv.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; - -/** - * Representation of host name TLV. - */ -public class HostNameTlv extends TlvHeader { - private String hostName; - - /** - * Creates an instance of host name TLV. - * - * @param tlvHeader TLV header - */ - public HostNameTlv(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - - } - - /** - * Returns host name of host name TLV. - * - * @return host name - */ - public String hostName() { - return hostName; - } - - /** - * Sets host name for host name TLV. - * - * @param hostName host name. - */ - public void setHostName(String hostName) { - this.hostName = hostName; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - byte[] addressbytes = new byte[this.tlvLength()]; - channelBuffer.readBytes(addressbytes, 0, this.tlvLength()); - this.hostName = new String(addressbytes); - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - return bytes; - } - - /** - * Returns TLV body of host name TLV. - * - * @return byteArray TLV body of host name TLV - */ - private byte[] tlvBodyAsBytes() { - byte[] bytes = this.hostName.getBytes(); - return bytes; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("hostName", hostName) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IdrpInformationTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IdrpInformationTlv.java deleted file mode 100644 index 70e38ec70d..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IdrpInformationTlv.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import org.jboss.netty.buffer.ChannelBuffer; - -/** - * Representation of IDRP information TLV. - */ -public class IdrpInformationTlv extends TlvHeader implements IsisTlv { - - private byte irdpInformationType; - private int externalInformation; - - /** - * Creates an instance of IDRP information TLV. - * - * @param tlvHeader TLV header - */ - public IdrpInformationTlv(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - } - - /** - * Returns the external information of IDRP information TLV. - * - * @return external information - */ - public int externalInformation() { - return externalInformation; - } - - /** - * Sets the external information for IDRP information TLV. - * - * @param externalInformation external information - */ - public void setExternalInformation(int externalInformation) { - this.externalInformation = externalInformation; - } - - /** - * Returns the IDRP information of IDRP information TLV. - * - * @return IDRP information type - */ - public byte irdpInformationType() { - return irdpInformationType; - } - - /** - * Sets the IDRP information for IDRP information TLV. - * - * @param irdpInformationType IDRP information type - */ - public void setIrdpInformationType(byte irdpInformationType) { - this.irdpInformationType = irdpInformationType; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - //TODO - } - - - @Override - public byte[] asBytes() { - //TODO - return null; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("externalInformation", externalInformation) - .add("irdpInformationType", irdpInformationType) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlv.java deleted file mode 100644 index 58eb578438..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlv.java +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvFinder; -import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvToBytes; -import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvType; -import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of IP extended reachability TLV. - */ -public class IpExtendedReachabilityTlv extends TlvHeader implements IsisTlv { - - private boolean down; - private boolean subTlvPresence; - private int prefixLength; - private int metric; - private byte subTlvLength; - private String prefix; - private List trafEnginSubTlv = new ArrayList<>(); - - /** - * Creates an instance of IP external reachability TLV. - * - * @param tlvHeader TLV header - */ - public IpExtendedReachabilityTlv(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - } - - /** - * Returns list of traffic engineering sub tlvs. - * - * @return trafEnginSubTlv - */ - public List teTlvs() { - return this.trafEnginSubTlv; - } - - /** - * Returns the prefix of IP external reachability TLV. - * - * @return prefix - */ - public String prefix() { - return prefix; - } - - /** - * Sets the prefix of IP external reachability TLV. - * - * @param prefix prefix - */ - public void setPrefix(String prefix) { - this.prefix = prefix; - } - - /** - * Returns if down true else false of IP external reachability TLV. - * - * @return if down true else false - */ - public boolean isDown() { - return down; - } - - /** - * Sets if down true else false of IP external reachability TLV. - * - * @param upOrDown if down true else false - */ - public void setDown(boolean upOrDown) { - this.down = upOrDown; - } - - /** - * Returns true if sub TLV present else false of IP external reachability TLV. - * - * @return true if present else false - */ - public boolean isSubTlvPresence() { - return subTlvPresence; - } - - /** - * Sets true if sub TLV present else false of IP external reachability TLV. - * - * @param subTlvPresence true if present else false - */ - public void setSubTlvPresence(boolean subTlvPresence) { - this.subTlvPresence = subTlvPresence; - } - - /** - * Sets the prefix length of IP external reachability TLV. - * - * @return prefix length - */ - public int prefixLength() { - return prefixLength; - } - - /** - * Returns the prefix length of IP external reachability TLV. - * - * @param prefixLength the prefix length of IP external reachability TLV - */ - public void setPrefixLength(int prefixLength) { - this.prefixLength = prefixLength; - } - - /** - * Adds the traffic engineering sub TLV to IP external reachability TLV. - * - * @param trafEnginSubTlv traffic engineering sub TLV - */ - public void addSubTlv(TrafficEngineeringSubTlv trafEnginSubTlv) { - this.trafEnginSubTlv.add(trafEnginSubTlv); - } - - /** - * Returns the sub TLV length of IP external reachability TLV. - * - * @return sub TLV length - */ - public byte subTlvLength() { - return subTlvLength; - } - - /** - * Sets the sub TLV length for IP external reachability TLV. - * - * @param subTlvLength sub TLV length - */ - public void setSubTlvLength(byte subTlvLength) { - this.subTlvLength = subTlvLength; - } - - /** - * Returns metric of IP external reachability TLV. - * - * @return metric - */ - public int metric() { - return metric; - } - - /** - * Sets default metric for IP external reachability TLV. - * - * @param metric default metric - */ - public void setMetric(int metric) { - this.metric = metric; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - this.setMetric(channelBuffer.readInt()); - int controlInfo = channelBuffer.readByte(); - byte[] tempByteArray = null; - - String string = IsisUtil.toEightBitBinary(Integer.toBinaryString(controlInfo)); - if (string.charAt(0) == '0') { - this.setDown(false); - } - if (string.charAt(1) == '1') { - this.setSubTlvPresence(true); - } - this.setPrefixLength(Integer.parseInt(string.substring(2, string.length()), 2)); - if (this.prefixLength >= 0 && this.prefixLength <= 8) { - channelBuffer.readByte(); - } else if (this.prefixLength >= 8 && this.prefixLength <= 16) { - tempByteArray = new byte[IsisUtil.TWO_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.TWO_BYTES); - this.setPrefix(IsisUtil.prefixConversion(tempByteArray)); - } else if (this.prefixLength >= 17 && this.prefixLength <= 24) { - tempByteArray = new byte[IsisUtil.THREE_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.THREE_BYTES); - this.setPrefix(IsisUtil.prefixConversion(tempByteArray)); - } else if (this.prefixLength >= 24 && this.prefixLength <= 32) { - tempByteArray = new byte[IsisUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES); - this.setPrefix(IsisUtil.prefixConversion(tempByteArray)); - } - if (this.isSubTlvPresence()) { - this.setSubTlvLength(channelBuffer.readByte()); - while (channelBuffer.readableBytes() > 0) { - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(channelBuffer.readByte()); - tlvHeader.setTlvLength(channelBuffer.readByte()); - SubTlvType tlvValue = SubTlvType.get(tlvHeader.tlvType()); - if (tlvValue != null) { - TrafficEngineeringSubTlv subTlv = - SubTlvFinder.findSubTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength())); - if (subTlv != null) { - this.addSubTlv(subTlv); - } - } else { - channelBuffer.readBytes(tlvHeader.tlvLength()); - } - } - } - } - - - @Override - public byte[] asBytes() { - byte[] bytes = null; - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - - return bytes; - } - - /** - * Returns TLV body of IP external reachability TLV. - * - * @return byteArray TLV body of IP external reachability TLV. - */ - private byte[] tlvBodyAsBytes() { - List bodyLst = new ArrayList<>(); - bodyLst.addAll(Bytes.asList(IsisUtil.convertToFourBytes(this.metric()))); - String controlInfo = ""; - if (this.isDown()) { - controlInfo = controlInfo + "1"; - } else { - controlInfo = controlInfo + "0"; - } - if (this.isSubTlvPresence()) { - controlInfo = controlInfo + "1"; - } else { - controlInfo = controlInfo + "0"; - } - String prefixLength = IsisUtil.toEightBitBinary(Integer.toBinaryString(this.prefixLength())); - controlInfo = controlInfo + prefixLength.substring(2, prefixLength.length()); - bodyLst.add(Byte.parseByte(controlInfo, 2)); - if (this.isSubTlvPresence()) { - bodyLst.add(this.subTlvLength()); - for (TrafficEngineeringSubTlv trafficEngineeringSubTlv : this.trafEnginSubTlv) { - bodyLst.addAll(SubTlvToBytes.tlvToBytes(trafficEngineeringSubTlv)); - } - } - bodyLst.addAll(Bytes.asList(IsisUtil.prefixToBytes(this.prefix()))); - - return Bytes.toArray(bodyLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("down", down) - .add("subTlvPresence", subTlvPresence) - .add("prefixLength", prefixLength) - .add("metric", metric) - .add("subTlvLength", subTlvLength) - .add("prefix", prefix) - .add("trafEnginSubTlv", trafEnginSubTlv) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlv.java deleted file mode 100644 index 3b1e63faef..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlv.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of IP interface address TLV. - */ -public class IpInterfaceAddressTlv extends TlvHeader implements IsisTlv { - - private List interfaceAddress = new ArrayList<>(); - - /** - * Creates an instance of IP interface address TLV. - * - * @param tlvHeader TLV header - */ - public IpInterfaceAddressTlv(TlvHeader tlvHeader) { - - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - - } - - /** - * Adds the interface address to IP interface address TLV. - * - * @param interfaceAddress interface address - */ - public void addInterfaceAddres(Ip4Address interfaceAddress) { - this.interfaceAddress.add(interfaceAddress); - } - - /** - * Returns the interface address of IP interface address TLV. - * - * @return interface address - */ - public List interfaceAddress() { - return interfaceAddress; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() >= 4) { - byte[] addressbytes = new byte[IsisUtil.FOUR_BYTES]; - channelBuffer.readBytes(addressbytes, 0, IsisUtil.FOUR_BYTES); - this.interfaceAddress.add(Ip4Address.valueOf(addressbytes)); - } - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - return bytes; - } - - /** - * Returns TLV body of IP interface address TLV. - * - * @return byteArray TLV body of IP interface address TLV - */ - private byte[] tlvBodyAsBytes() { - List bytes = new ArrayList<>(); - for (Ip4Address ip4Address : this.interfaceAddress) { - bytes.addAll(Bytes.asList(ip4Address.toOctets())); - } - return Bytes.toArray(bytes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("interfaceAddress", interfaceAddress) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlv.java deleted file mode 100644 index 75d4738649..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlv.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of IP internal reachability TLV. - */ -public class IpInternalReachabilityTlv extends TlvHeader implements IsisTlv { - private List metricOfInternalReachability = new ArrayList<>(); - - /** - * Creates an instance of IP internal reachability TLV. - * - * @param tlvHeader TLV header - */ - public IpInternalReachabilityTlv(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - } - - /** - * Adds the metric of internal reachability to internal reachability TLV. - * - * @param metricValue metric of internal reachability - */ - public void addInternalReachabilityMetric(MetricOfInternalReachability metricValue) { - this.metricOfInternalReachability.add(metricValue); - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() > 0) { - MetricOfInternalReachability metricOfInternalReachability = new MetricOfInternalReachability(); - metricOfInternalReachability.readFrom(channelBuffer); - this.metricOfInternalReachability.add(metricOfInternalReachability); - } - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - return bytes; - } - - /** - * Returns TLV body of internal reachability TLV. - * - * @return byteArray TLV body of area address TLV - */ - private byte[] tlvBodyAsBytes() { - List bytes = new ArrayList<>(); - for (MetricOfInternalReachability metricOfInternalReachability : - this.metricOfInternalReachability) { - bytes.addAll(Bytes.asList(metricOfInternalReachability.asBytes())); - } - return Bytes.toArray(bytes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("metricOfInternalReachability", metricOfInternalReachability) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsExtendedReachability.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsExtendedReachability.java deleted file mode 100644 index 3398045165..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsExtendedReachability.java +++ /dev/null @@ -1,101 +0,0 @@ -/* -* Copyright 2016-present Open Networking Foundation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of IS extended reachability TLV. - */ -public class IsExtendedReachability extends TlvHeader implements IsisTlv { - - private List neighbors = new ArrayList<>(); - - /** - * Creates an instance of IP external reachability TLV. - * - * @param tlvHeader TLV header - */ - public IsExtendedReachability(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - } - - /** - * Returns neighbor list. - * - * @return neighbor list - */ - public List neighbours() { - return neighbors; - } - - /** - * Adds the neighbor for extended IS instance to IS extended reachability TLV. - * - * @param neighbor neighbor for extended IS instance - */ - public void addNeighbor(NeighborForExtendedIs neighbor) { - this.neighbors.add(neighbor); - } - - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() >= (IsisUtil.EIGHT_BYTES + IsisUtil.THREE_BYTES)) { - NeighborForExtendedIs extendedIs = new NeighborForExtendedIs(); - extendedIs.readFrom(channelBuffer); - this.addNeighbor(extendedIs); - } - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - return bytes; - } - - /** - * Returns TLV body of IS extended reachability TLV. - * - * @return byteArray TLV body of IS extended reachability TLV. - */ - private byte[] tlvBodyAsBytes() { - List byteList = new ArrayList<>(); - for (NeighborForExtendedIs neighbor : this.neighbors) { - byteList.addAll(Bytes.asList(neighbor.neighborBodyAsbytes())); - } - return Bytes.toArray(byteList); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("neighbors", neighbors) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlv.java deleted file mode 100644 index ffc75e1c0c..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlv.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of IS reachability TLV. - */ -public class IsReachabilityTlv extends TlvHeader { - - private int reserved; - private List metricsOfReachabilities = new ArrayList<>(); - - /** - * Creates an instance of IS reachability TLV. - * - * @param tlvHeader TLV header - */ - public IsReachabilityTlv(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - } - - /** - * Returns the reserved value of IS reachability TLV. - * - * @return reserved - */ - public int reserved() { - return reserved; - } - - /** - * Sets the reserved value for IS reachability TLV. - * - * @param reserved reserved - */ - public void setReserved(int reserved) { - this.reserved = reserved; - } - - /** - * Adds the metric of reachability to IS reachability TLV.. - * - * @param metricsOfReachability metric of reachability - */ - public void addMeticsOfReachability(MetricsOfReachability metricsOfReachability) { - this.metricsOfReachabilities.add(metricsOfReachability); - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - this.setReserved(channelBuffer.readByte()); - while (channelBuffer.readableBytes() > 0) { - MetricsOfReachability metricsOfReachability = new MetricsOfReachability(); - metricsOfReachability.readFrom(channelBuffer); - this.metricsOfReachabilities.add(metricsOfReachability); - } - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - return bytes; - } - - /** - * Returns TLV body of IS reachability TLV. - * - * @return byteArray TLV body of area address TLV - */ - private byte[] tlvBodyAsBytes() { - List bytes = new ArrayList<>(); - bytes.add((byte) this.reserved()); - for (MetricsOfReachability metricsOfReachability : this.metricsOfReachabilities) { - bytes.addAll(Bytes.asList(metricsOfReachability.asBytes())); - } - return Bytes.toArray(bytes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("metricsOfReachabilities", metricsOfReachabilities) - .toString(); - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlv.java deleted file mode 100644 index d58d53611b..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlv.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of ISIS neighbor TLV. - */ -public class IsisNeighborTlv extends TlvHeader implements IsisTlv { - - private List neighbor = new ArrayList<>(); - - /** - * Creates an instance of ISIS neighbor TLV. - * - * @param tlvHeader TLV header - */ - public IsisNeighborTlv(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - } - - /** - * Adds the MAC address of the neighbor to ISIS neighbor TLV. - * - * @param macAddress MAC address - */ - public void addNeighbor(MacAddress macAddress) { - neighbor.add(macAddress); - } - - /** - * Returns the MAC address of the ISIS neighbor TLV. - * - * @return neighbor - */ - public List neighbor() { - return this.neighbor; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() >= 6) { - byte[] addressbytes = new byte[IsisUtil.SIX_BYTES]; - channelBuffer.readBytes(addressbytes, 0, IsisUtil.SIX_BYTES); - this.neighbor.add(MacAddress.valueOf(addressbytes)); - } - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - return bytes; - } - - /** - * Returns TLV body of ISIS neighbor TLV. - * - * @return byteArray TLV body of area address TLV - */ - private byte[] tlvBodyAsBytes() { - List bytes = new ArrayList<>(); - for (MacAddress macAddress : this.neighbor) { - bytes.addAll(Bytes.asList(macAddress.toBytes())); - } - return Bytes.toArray(bytes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("neighbor", neighbor) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisTlv.java deleted file mode 100644 index 336d05350a..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsisTlv.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -/** - * Representation of ISIS TLV. - */ -public interface IsisTlv { -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlv.java deleted file mode 100644 index e1cccb49a8..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlv.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of LSP entries TLV. - */ -public class LspEntriesTlv extends TlvHeader implements IsisTlv { - private List lspEntryList = new ArrayList<>(); - - /** - * Creates an instance of LSP entries TLV. - * - * @param tlvHeader TLV header - */ - public LspEntriesTlv(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - } - - /** - * Returns the LSP entry of LSP entries TLV. - * - * @return LSP entries - */ - public List lspEntry() { - return lspEntryList; - } - - /** - * Adds the the LSP entry to LSP entries TLV. - * - * @param lspEntry LSP entry - */ - public void addLspEntry(LspEntry lspEntry) { - this.lspEntryList.add(lspEntry); - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() >= (IsisUtil.EIGHT_BYTES * 2)) { - LspEntry lspEntry = new LspEntry(); - lspEntry.readFrom(channelBuffer.readBytes(IsisUtil.EIGHT_BYTES * 2)); - lspEntryList.add(lspEntry); - } - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - return bytes; - } - - /** - * Returns TLV body of LSP entries TLV. - * - * @return byteArray TLV body of LSP entries TLV - */ - private byte[] tlvBodyAsBytes() { - List bytes = new ArrayList<>(); - for (LspEntry lspEntry : lspEntryList) { - bytes.addAll(Bytes.asList(lspEntry.lspEntryAsBytes())); - } - return Bytes.toArray(bytes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("lspEntryList", lspEntryList) - .toString(); - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntry.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntry.java deleted file mode 100644 index 655c91b877..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/LspEntry.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of LSP entry. - */ -public class LspEntry { - - private int lspSequenceNumber; - private int lspChecksum; - private int remainingTime; - private String lspId; - - - /** - * Returns LSP sequence number of LSP entry. - * - * @return LSP sequence number - */ - public int lspSequenceNumber() { - return lspSequenceNumber; - } - - /** - * Sets LSP sequenceNumber for LSP entry. - * - * @param lspSequenceNumber lspSequenceNumber - */ - public void setLspSequenceNumber(int lspSequenceNumber) { - this.lspSequenceNumber = lspSequenceNumber; - } - - /** - * Returns LSP checksum of LSP entry. - * - * @return LSP checksum - */ - public int lspChecksum() { - return lspChecksum; - } - - /** - * Sets LSP checksum for LSP entry. - * - * @param lspChecksum LSP checksum - */ - public void setLspChecksum(int lspChecksum) { - this.lspChecksum = lspChecksum; - } - - /** - * Returns remaining time of LSP entry. - * - * @return remaining time - */ - public int remainingTime() { - return remainingTime; - } - - /** - * Sets remaining time for LSP entry. - * - * @param remainingTime remaining time - */ - public void setRemainingTime(int remainingTime) { - this.remainingTime = remainingTime; - } - - /** - * Returns LSP ID of LSP entry. - * - * @return LSP ID - */ - public String lspId() { - return lspId; - } - - /** - * Sets LSP ID for LSp entry. - * - * @param lspId LSP ID - */ - public void setLspId(String lspId) { - this.lspId = lspId; - } - - /** - * Sets the LSP entry values for LSP entry from byte buffer. - * - * @param channelBuffer channel Buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - this.setRemainingTime(channelBuffer.readUnsignedShort()); - byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_TWO_BYTE]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_TWO_BYTE); - this.setLspId(IsisUtil.systemIdPlus(tempByteArray)); - this.setLspSequenceNumber(channelBuffer.readInt()); - this.setLspChecksum(channelBuffer.readUnsignedShort()); - } - - /** - * Returns LSP entry values as bytes of LSP entry. - * - * @return byteArray LSP entry values as bytes of LSP entry - */ - public byte[] lspEntryAsBytes() { - List bytes = new ArrayList<>(); - bytes.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.remainingTime()))); - bytes.addAll(IsisUtil.sourceAndLanIdToBytes(this.lspId())); - bytes.addAll(Bytes.asList(IsisUtil.convertToFourBytes(this.lspSequenceNumber()))); - bytes.addAll(Bytes.asList(IsisUtil.convertToTwoBytes(this.lspChecksum()))); - return Bytes.toArray(bytes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("lspSequenceNumber", lspSequenceNumber) - .add("lspChecksum", lspChecksum) - .add("remainingTime", remainingTime) - .add("lspId", lspId) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachability.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachability.java deleted file mode 100644 index eb8f6d279e..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachability.java +++ /dev/null @@ -1,452 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of metric of internal reachability. - */ -public class MetricOfInternalReachability { - private Ip4Address ipAddress; - private Ip4Address subnetAddress; - private byte defaultMetric; - private byte delayMetric; - private byte expenseMetric; - private byte errorMetric; - private boolean delayMetricSupported; - private boolean expenseMetricSupported; - private boolean errorMetricSupported; - private boolean defaultIsInternal; - private boolean defaultDistributionDown; - private boolean delayIsInternal; - private boolean expenseIsInternal; - private boolean errorIsInternal; - - /** - * Returns the IP address of metric of internal reachability. - * - * @return ipAddress IP address of metric of internal reachability - */ - public Ip4Address getIpAddress() { - return ipAddress; - } - - /** - * Sets the IP address for metric of internal reachability. - * - * @param ipAddress ip address - */ - public void setIpAddress(Ip4Address ipAddress) { - this.ipAddress = ipAddress; - } - - /** - * Returns the subnet address of metric of internal reachability. - * - * @return subnetAddress subnet address of metric of internal reachability - */ - public Ip4Address getSubnetAddress() { - return subnetAddress; - } - - /** - * Sets the subnet address for metric of internal reachability. - * - * @param subnetAddress subnet address - */ - public void setSubnetAddress(Ip4Address subnetAddress) { - this.subnetAddress = subnetAddress; - } - - /** - * Returns error metric is internal or not. - * - * @return true if internal else false - */ - public boolean isErrorIsInternal() { - return errorIsInternal; - } - - /** - * Sets error metric is internal or not. - * - * @param errorIsInternal true if internal else false - */ - public void setErrorIsInternal(boolean errorIsInternal) { - this.errorIsInternal = errorIsInternal; - } - - /** - * Returns expense metric is internal or not. - * - * @return true if internal else false - */ - public boolean isExpenseIsInternal() { - return expenseIsInternal; - } - - /** - * Sets expense metric is internal or not. - * - * @param expenseIsInternal true if internal else false - */ - public void setExpenseIsInternal(boolean expenseIsInternal) { - this.expenseIsInternal = expenseIsInternal; - } - - /** - * Returns delays metric is internal or not. - * - * @return true if internal else false - */ - public boolean isDelayIsInternal() { - return delayIsInternal; - } - - /** - * Sets delay metric is internal or not. - * - * @param delayIsInternal true if internal else false - */ - public void setDelayIsInternal(boolean delayIsInternal) { - this.delayIsInternal = delayIsInternal; - } - - /** - * Returns is default distribution is up or down. - * - * @return true if down else false - */ - public boolean isDefaultDistributionDown() { - return defaultDistributionDown; - } - - /** - * Sets default distribution is up or down. - * - * @param defaultDistributionDown true if down else false - */ - public void setDefaultDistributionDown(boolean defaultDistributionDown) { - this.defaultDistributionDown = defaultDistributionDown; - } - - /** - * Returns is default metric is internal or not. - * - * @return true if internal else false - */ - public boolean isDefaultIsInternal() { - return defaultIsInternal; - } - - /** - * Sets default metric is internal or not. - * - * @param defaultIsInternal true is internal else false - */ - public void setDefaultIsInternal(boolean defaultIsInternal) { - this.defaultIsInternal = defaultIsInternal; - } - - /** - * Returns error metric is supported or not. - * - * @return true if supported else false - */ - public boolean isErrorMetricSupported() { - return errorMetricSupported; - } - - /** - * Sets error metric is supported or not. - * - * @param errorMetricSupported true if supported else false - */ - public void setErrorMetricSupported(boolean errorMetricSupported) { - this.errorMetricSupported = errorMetricSupported; - } - - /** - * Returns expense metric is supported or not. - * - * @return true if supported else false - */ - public boolean isExpenseMetricSupported() { - return expenseMetricSupported; - } - - /** - * Sets expense metric is supported or not. - * - * @param expenseMetricSupported true if supported else false - */ - public void setExpenseMetricSupported(boolean expenseMetricSupported) { - this.expenseMetricSupported = expenseMetricSupported; - } - - /** - * Returns delay metric is supported or not. - * - * @return true if supported else false - */ - public boolean isDelayMetricSupported() { - return delayMetricSupported; - } - - /** - * Sets delay metric is supported or not. - * - * @param delayMetricSupported true if supported else false - */ - public void setDelayMetricSupported(boolean delayMetricSupported) { - this.delayMetricSupported = delayMetricSupported; - } - - /** - * Returns error metric of metric of internal reachability. - * - * @return errorMetric error metric - */ - public byte errorMetric() { - return errorMetric; - } - - /** - * Sets error metric for metric of internal reachability. - * - * @param errorMetric error metric - */ - public void setErrorMetric(byte errorMetric) { - this.errorMetric = errorMetric; - } - - /** - * Returns expense metric of metric of internal reachability. - * - * @return expense metric - */ - public byte expenseMetric() { - return expenseMetric; - } - - /** - * Sets expense metric for metric of internal reachability. - * - * @param expenseMetric expense metric - */ - public void setExpenseMetric(byte expenseMetric) { - this.expenseMetric = expenseMetric; - } - - /** - * Returns delay metric of metric of internal reachability. - * - * @return delay metric - */ - public byte delayMetric() { - return delayMetric; - } - - /** - * Sets delay metric for metric of internal reachability. - * - * @param delayMetric delay metric - */ - public void setDelayMetric(byte delayMetric) { - this.delayMetric = delayMetric; - } - - /** - * Returns default metric of metric of internal reachability. - * - * @return default metric - */ - public byte defaultMetric() { - return defaultMetric; - } - - /** - * Sets default metric for metric of internal reachability. - * - * @param defaultMetric default metric - */ - public void setDefaultMetric(byte defaultMetric) { - this.defaultMetric = defaultMetric; - } - - /** - * Sets the metric of internal reachability - * values for metric of internal reachability from byte buffer. - * - * @param channelBuffer channel Buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte metric = channelBuffer.readByte(); - this.setDefaultMetric(metric); - String metricInBinary = Integer.toBinaryString(Byte.toUnsignedInt(metric)); - metricInBinary = IsisUtil.toEightBitBinary(metricInBinary); - if (metricInBinary.charAt(1) == 0) { - this.setDefaultIsInternal(true); - } else { - this.setDefaultIsInternal(false); - } - if (metricInBinary.charAt(0) == 0) { - this.setDefaultDistributionDown(true); - } else { - this.setDefaultDistributionDown(false); - } - byte delayMetric = channelBuffer.readByte(); - metricInBinary = Integer.toBinaryString(Byte.toUnsignedInt(delayMetric)); - metricInBinary = IsisUtil.toEightBitBinary(metricInBinary); - this.setDelayMetric(Byte.parseByte(metricInBinary.substring(5, metricInBinary.length()), 2)); - if (metricInBinary.charAt(1) == 0) { - this.setDelayIsInternal(true); - } else { - this.setDelayIsInternal(false); - } - if (metricInBinary.charAt(0) == 0) { - this.setDelayMetricSupported(true); - } else { - this.setDelayMetricSupported(false); - } - byte expenseMetric = channelBuffer.readByte(); - metricInBinary = Integer.toBinaryString(Byte.toUnsignedInt(expenseMetric)); - metricInBinary = IsisUtil.toEightBitBinary(metricInBinary); - this.setExpenseMetric(Byte.parseByte(metricInBinary.substring(5, metricInBinary.length()), 2)); - if (metricInBinary.charAt(1) == 0) { - this.setExpenseIsInternal(true); - } else { - this.setExpenseIsInternal(false); - } - if (metricInBinary.charAt(0) == 0) { - this.setExpenseMetricSupported(true); - } else { - this.setExpenseMetricSupported(false); - } - byte errorMetric = channelBuffer.readByte(); - metricInBinary = Integer.toBinaryString(Byte.toUnsignedInt(errorMetric)); - metricInBinary = IsisUtil.toEightBitBinary(metricInBinary); - this.setErrorMetric(Byte.parseByte(metricInBinary.substring(5, metricInBinary.length()), 2)); - if (metricInBinary.charAt(1) == 0) { - this.setErrorIsInternal(true); - } else { - this.setErrorIsInternal(false); - } - if (metricInBinary.charAt(0) == 0) { - this.setErrorMetricSupported(true); - } else { - this.setErrorMetricSupported(false); - } - - byte[] tempByteArray = new byte[IsisUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES); - this.setIpAddress(Ip4Address.valueOf(tempByteArray)); - - tempByteArray = new byte[IsisUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES); - this.setSubnetAddress(Ip4Address.valueOf(tempByteArray)); - } - - /** - * Returns metric of internal reachability values as bytes of metric of internal reachability. - * - * @return byteArray metric of internal reachability values as bytes of metric of internal reachability - */ - public byte[] asBytes() { - List bytes = new ArrayList<>(); - bytes.add(this.defaultMetric()); - int temp = this.delayMetric(); - String hsbBits = ""; - if (this.isDelayMetricSupported()) { - hsbBits = "0" + hsbBits; - } else { - hsbBits = "1" + hsbBits; - } - if (this.isDelayIsInternal()) { - hsbBits = hsbBits + "0"; - } else { - hsbBits = hsbBits + "1"; - } - hsbBits = hsbBits + "00"; - String binary = hsbBits + IsisUtil.toFourBitBinary(Integer.toBinaryString(temp)); - bytes.add((byte) Integer.parseInt(binary, 2)); - - temp = this.expenseMetric(); - hsbBits = ""; - if (this.isExpenseMetricSupported()) { - hsbBits = "0" + hsbBits; - } else { - hsbBits = "1" + hsbBits; - } - if (this.isExpenseIsInternal()) { - hsbBits = hsbBits + "0"; - } else { - hsbBits = hsbBits + "1"; - } - hsbBits = hsbBits + "00"; - binary = hsbBits + IsisUtil.toFourBitBinary(Integer.toBinaryString(temp)); - bytes.add((byte) Integer.parseInt(binary, 2)); - - temp = this.errorMetric(); - hsbBits = ""; - if (this.isErrorMetricSupported()) { - hsbBits = "0" + hsbBits; - } else { - hsbBits = "1" + hsbBits; - } - if (this.isExpenseIsInternal()) { - hsbBits = hsbBits + "0"; - } else { - hsbBits = hsbBits + "1"; - } - hsbBits = hsbBits + "00"; - binary = hsbBits + IsisUtil.toFourBitBinary(Integer.toBinaryString(temp)); - bytes.add((byte) Integer.parseInt(binary, 2)); - - bytes.addAll(Bytes.asList(this.getIpAddress().toOctets())); - bytes.addAll(Bytes.asList(this.getSubnetAddress().toOctets())); - return Bytes.toArray(bytes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("ipAddress", ipAddress) - .add("subnetAddress", subnetAddress) - .add("defaultMetric", defaultMetric) - .add("delayMetric", delayMetric) - .add("expenseMetric", expenseMetric) - .add("errorMetric", errorMetric) - .add("delayMetricSupported", delayMetricSupported) - .add("expenseMetricSupported", expenseMetricSupported) - .add("errorMetricSupported", errorMetricSupported) - .add("defaultIsInternal", defaultIsInternal) - .add("defaultDistributionDown", defaultDistributionDown) - .add("delayIsInternal", delayIsInternal) - .add("expenseIsInternal", expenseIsInternal) - .add("errorIsInternal", errorIsInternal) - .toString(); - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachability.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachability.java deleted file mode 100644 index bafc94bed7..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachability.java +++ /dev/null @@ -1,358 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of metric of reachability. - */ -public class MetricsOfReachability { - private final String value1 = "10000000"; - private final String value2 = "00000000"; - private String neighborId; - private byte defaultMetric; - private byte delayMetric; - private byte expenseMetric; - private byte errorMetric; - private boolean delayMetricSupported; - private boolean expenseMetricSupported; - private boolean errorMetricSupported; - private boolean defaultIsInternal; - private boolean delayIsInternal; - private boolean expenseIsInternal; - private boolean errorIsInternal; - - /** - * Returns delay metric is internal or not. - * - * @return true if internal else false - */ - public boolean isDelayIsInternal() { - return delayIsInternal; - } - - /** - * Sets delay metric is internal or not. - * - * @param delayIsInternal true if internal else false - */ - public void setDelayIsInternal(boolean delayIsInternal) { - this.delayIsInternal = delayIsInternal; - } - - /** - * Returns expense metric is internal or not. - * - * @return true if internal else false - */ - public boolean isExpenseIsInternal() { - return expenseIsInternal; - } - - /** - * Sets expense metric is internal or not. - * - * @param expenseIsInternal true if internal else false - */ - public void setExpenseIsInternal(boolean expenseIsInternal) { - this.expenseIsInternal = expenseIsInternal; - } - - /** - * Returns error metric is internal or not. - * - * @return true if internal else false - */ - public boolean isErrorIsInternal() { - return errorIsInternal; - } - - /** - * Sets error metric is internal or not. - * - * @param errorIsInternal true if internal else false - */ - public void setErrorIsInternal(boolean errorIsInternal) { - this.errorIsInternal = errorIsInternal; - } - - /** - * Returns default metric is internal or not. - * - * @return true if internal else false - */ - public boolean isDefaultIsInternal() { - return defaultIsInternal; - } - - /** - * Sets default metric is internal or not. - * - * @param defaultIsInternal true if internal else false - */ - public void setDefaultIsInternal(boolean defaultIsInternal) { - this.defaultIsInternal = defaultIsInternal; - } - - /** - * Returns delay metric is supported or not. - * - * @return true if supported else false - */ - public boolean isDelayMetricSupported() { - return delayMetricSupported; - } - - /** - * Sets delay metric is supported or not. - * - * @param delayMetricSupported true if supported else false - */ - public void setDelayMetricSupported(boolean delayMetricSupported) { - this.delayMetricSupported = delayMetricSupported; - } - - /** - * Returns expense metric is supported or not. - * - * @return true if supported else false - */ - public boolean isExpenseMetricSupported() { - return expenseMetricSupported; - } - - /** - * Sets expense metric is supported or not. - * - * @param expenseMetricSupported true if supported else false - */ - public void setExpenseMetricSupported(boolean expenseMetricSupported) { - this.expenseMetricSupported = expenseMetricSupported; - } - - /** - * Returns error metric is supported or not. - * - * @return true if supported else false - */ - public boolean isErrorMetricSupported() { - return errorMetricSupported; - } - - /** - * Sets error metric is supported or not. - * - * @param errorMetricSupported true if supported else false - */ - public void setErrorMetricSupported(boolean errorMetricSupported) { - this.errorMetricSupported = errorMetricSupported; - } - - /** - * Returns neighbor ID of metric of reachability. - * - * @return neighbor ID - */ - public String neighborId() { - return neighborId; - } - - /** - * Sets neighbor ID for metric of reachability. - * - * @param neighborId neighbor ID - */ - public void setNeighborId(String neighborId) { - this.neighborId = neighborId; - } - - - /** - * Returns default metric of metric of reachability. - * - * @return default metric - */ - public byte defaultMetric() { - return defaultMetric; - } - - /** - * Sets default metric for of reachability. - * - * @param defaultMetric default metric - */ - public void setDefaultMetric(byte defaultMetric) { - this.defaultMetric = defaultMetric; - } - - /** - * Returns delay metric of metric of reachability. - * - * @return delay metric - */ - public byte delayMetric() { - return delayMetric; - } - - /** - * Sets delay metric for metric of reachability. - * - * @param delayMetric delay metric - */ - public void setDelayMetric(byte delayMetric) { - this.delayMetric = delayMetric; - } - - /** - * Returns Expense metric of metric of reachability. - * - * @return Expense metric - */ - public byte expenseMetric() { - return expenseMetric; - } - - /** - * Sets Expense metric for metric of reachability. - * - * @param expenseMetric Expense metric - */ - public void setExpenseMetric(byte expenseMetric) { - this.expenseMetric = expenseMetric; - } - - /** - * Returns Error metric of metric of reachability. - * - * @return Error metric - */ - public byte errorMetric() { - return errorMetric; - } - - /** - * Sets Error metric for metric of reachability. - * - * @param errorMetric Error metric - */ - public void setErrorMetric(byte errorMetric) { - this.errorMetric = errorMetric; - } - - /** - * Sets the metric of reachability values for metric of reachability from byte buffer. - * - * @param channelBuffer channel Buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte metric = channelBuffer.readByte(); - String metricInBinary = Integer.toBinaryString(Byte.toUnsignedInt(metric)); - metricInBinary = IsisUtil.toEightBitBinary(metricInBinary); - this.setDefaultMetric(metric); - this.setDelayMetric(metric); - this.setExpenseMetric(metric); - this.setErrorMetric(metric); - this.setDelayMetric(metric); - if (metricInBinary.charAt(0) == 0) { - this.setDefaultIsInternal(true); - } else { - this.setDefaultIsInternal(false); - } - if (metricInBinary.charAt(0) == 0) { - this.setDelayMetricSupported(true); - this.setExpenseMetricSupported(true); - this.setErrorMetricSupported(true); - } else { - this.setDelayMetricSupported(false); - this.setExpenseMetricSupported(false); - this.setErrorMetricSupported(false); - } - byte temp = channelBuffer.readByte(); - String internalBit = Integer.toBinaryString(Byte.toUnsignedInt(temp)); - internalBit = IsisUtil.toEightBitBinary(internalBit); - if (internalBit.charAt(1) == 0) { - this.setDelayIsInternal(true); - } - temp = channelBuffer.readByte(); - internalBit = Integer.toBinaryString(Byte.toUnsignedInt(temp)); - internalBit = IsisUtil.toEightBitBinary(internalBit); - if (internalBit.charAt(1) == 0) { - this.setExpenseIsInternal(true); - } - temp = channelBuffer.readByte(); - internalBit = Integer.toBinaryString(Byte.toUnsignedInt(temp)); - internalBit = IsisUtil.toEightBitBinary(internalBit); - if (internalBit.charAt(1) == 0) { - this.setErrorIsInternal(true); - } - byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE); - this.setNeighborId(IsisUtil.systemIdPlus(tempByteArray)); - } - - /** - * Returns metric of reachability values as bytes of metric of reachability. - * - * @return byteArray metric of reachability values as bytes of metric of reachability - */ - public byte[] asBytes() { - List bytes = new ArrayList<>(); - bytes.add((byte) this.defaultMetric()); - if (this.isDelayIsInternal()) { - bytes.add((byte) Integer.parseInt(value1)); - } else { - bytes.add((byte) Integer.parseInt(value2)); - } - if (this.isExpenseIsInternal()) { - bytes.add((byte) Integer.parseInt(value1)); - } else { - bytes.add((byte) Integer.parseInt(value2)); - } - if (this.isErrorIsInternal()) { - bytes.add((byte) Integer.parseInt(value1)); - } else { - bytes.add((byte) Integer.parseInt(value2)); - } - bytes.addAll(IsisUtil.sourceAndLanIdToBytes(this.neighborId())); - return Bytes.toArray(bytes); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("neighborId", neighborId) - .add("defaultMetric", defaultMetric) - .add("delayMetric", delayMetric) - .add("expenseMetric", expenseMetric) - .add("errorMetric", errorMetric) - .add("delayMetricSupported", delayMetricSupported) - .add("expenseMetricSupported", expenseMetricSupported) - .add("errorMetricSupported", errorMetricSupported) - .add("defaultIsInternal", defaultIsInternal) - .add("delayIsInternal", delayIsInternal) - .add("expenseIsInternal", expenseIsInternal) - .add("errorIsInternal", errorIsInternal) - .toString(); - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java deleted file mode 100644 index b248decdda..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvFinder; -import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvToBytes; -import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvType; -import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of IS extended reachability neighbors. - */ -public class NeighborForExtendedIs { - - private String neighborId; - private int metric; - private List teSubTlv = new ArrayList<>(); - - /** - * Returns neighbor ID. - * - * @return neighbor ID - */ - public String neighborId() { - return neighborId; - } - - /** - * Returns list of sub tlvs. - * - * @return teSubTlv list of sub tlvs - */ - public List teSubTlv() { - return teSubTlv; - } - - /** - * Sets neighbor ID. - * - * @param neighborId neighbor ID - */ - public void setNeighborId(String neighborId) { - this.neighborId = neighborId; - } - - /** - * Returns metric. - * - * @return metric - */ - public int metric() { - return metric; - } - - /** - * Sets metric. - * - * @param metric metric - */ - public void setMetric(int metric) { - this.metric = metric; - } - - /** - * Adds the TE for extended IS instance to IS extended reachability TLV. - * - * @param trafficEngineeringSubTlv TE for extended IS instance - */ - public void addSubTlv(TrafficEngineeringSubTlv trafficEngineeringSubTlv) { - this.teSubTlv.add(trafficEngineeringSubTlv); - } - - /** - * Reads from the channel buffer and populate this instance. - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE); - this.setNeighborId(IsisUtil.systemIdPlus(tempByteArray)); - this.setMetric(channelBuffer.readUnsignedMedium()); - int nTlvPresent = channelBuffer.readByte(); - if (nTlvPresent > 0) { - /* ntlvPresent=0 infers that all Sub TLVs, - for a particular neighbor, - have been parsed and the loop has to be terminated - */ - while (channelBuffer.readableBytes() > IsisUtil.TWO_BYTES && nTlvPresent > 0) { - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(channelBuffer.readByte()); - tlvHeader.setTlvLength(channelBuffer.readByte()); - SubTlvType tlvValue = SubTlvType.get(tlvHeader.tlvType()); - int tlvLength = tlvHeader.tlvLength(); - if (tlvValue != null) { - if (channelBuffer.readableBytes() >= tlvLength) { - TrafficEngineeringSubTlv subTlv = - SubTlvFinder.findSubTlv(tlvHeader, channelBuffer.readBytes(tlvHeader.tlvLength())); - if (subTlv != null) { - this.addSubTlv(subTlv); - } - /*As one Sub TLV is parsed, its length is - subtracted from total length to be read - */ - nTlvPresent = nTlvPresent - (tlvLength + IsisUtil.TWO_BYTES); - } - } else { - if (channelBuffer.readableBytes() >= tlvLength) { - channelBuffer.readBytes(tlvLength); - /*As one Sub TLV is parsed, its length is - subtracted from total length to be read - */ - nTlvPresent = nTlvPresent - (tlvLength + IsisUtil.TWO_BYTES); - } - } - } - } - } - - /** - * Returns neighbor details of IS extended reachability TLV. - * - * @return neighbor details of IS extended reachability TLV. - */ - public byte[] neighborBodyAsbytes() { - List byteList = new ArrayList<>(); - byteList.addAll(IsisUtil.sourceAndLanIdToBytes(this.neighborId())); - byteList.addAll(Bytes.asList(IsisUtil.convertToThreeBytes(this.metric()))); - if (!this.teSubTlv.isEmpty()) { - for (TrafficEngineeringSubTlv trafficEngineeringSubTlv : this.teSubTlv) { - byteList.addAll(SubTlvToBytes.tlvToBytes(trafficEngineeringSubTlv)); - } - } - return Bytes.toArray(byteList); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("neighborId", neighborId) - .add("metric", metric) - .add("teSubTlv", teSubTlv) - .toString(); - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlv.java deleted file mode 100644 index ef51e540ce..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlv.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of padding TLV. - */ -public class PaddingTlv extends TlvHeader implements IsisTlv { - private List paddings = new ArrayList<>(); - - /** - * Creates an instance of padding TLV. - * - * @param tlvHeader TLV header - */ - public PaddingTlv(TlvHeader tlvHeader) { - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() > 0) { - this.paddings.add(channelBuffer.readByte()); - } - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - - return bytes; - } - - /** - * Returns TLV body of padding TLV. - * - * @return byteArray TLV body of padding TLV - */ - private byte[] tlvBodyAsBytes() { - byte[] areaArea = new byte[this.tlvLength()]; - return areaArea; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("paddings", paddings) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlv.java deleted file mode 100644 index ded4ae1d67..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlv.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of protocol supported TLV. - */ -public class ProtocolSupportedTlv extends TlvHeader implements IsisTlv { - - private List protocolSupported = new ArrayList<>(); - - /** - * Creates an instance of protocol supported TLV. - * - * @param tlvHeader TLV header - */ - public ProtocolSupportedTlv(TlvHeader tlvHeader) { - - this.setTlvType(tlvHeader.tlvType()); - this.setTlvLength(tlvHeader.tlvLength()); - - } - - /** - * Adds the protocol supported to protocol supported TLV. - * - * @param protocolValue protocol supported - */ - public void addProtocolSupported(byte protocolValue) { - protocolSupported.add(protocolValue); - } - - /** - * Returns protocols supported of protocol supported TLV. - * - * @return protocol supported - */ - public List protocolSupported() { - return this.protocolSupported; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() > 0) { - this.protocolSupported.add(channelBuffer.readByte()); - } - } - - @Override - public byte[] asBytes() { - byte[] bytes = null; - - byte[] tlvHeader = tlvHeaderAsByteArray(); - byte[] tlvBody = tlvBodyAsBytes(); - tlvHeader[1] = (byte) tlvBody.length; - bytes = Bytes.concat(tlvHeader, tlvBody); - return bytes; - } - - /** - * Gets TLV body of protocol supported TLV. - * - * @return byteArray TLV body of protocol supported TLV - */ - private byte[] tlvBodyAsBytes() { - List bytes = new ArrayList<>(); - for (byte byt : this.protocolSupported) { - bytes.add(byt); - } - byte[] byteArray = new byte[bytes.size()]; - int i = 0; - for (byte byt : bytes) { - byteArray[i++] = byt; - } - return byteArray; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("protocolSupported", protocolSupported) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvFinder.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvFinder.java deleted file mode 100644 index 059f91e834..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvFinder.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.jboss.netty.buffer.ChannelBuffer; - -/** - * Representation of TLV Finder. - */ -public class TlvFinder extends TlvHeader { - - /** - * Sets the value for TLV header. - * - * @param tlvHeader tlvHeader - * @param channelBuffer byteBuf - * @return isisTlv - */ - public static IsisTlv findTlv(TlvHeader tlvHeader, ChannelBuffer channelBuffer) { - - IsisTlv isisTlv = null; - switch (TlvType.get(tlvHeader.tlvType())) { - case AREAADDRESS: - AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader); - areaAddressTlv.readFrom(channelBuffer); - isisTlv = areaAddressTlv; - break; - case AUTHENTICATION: - //TODO - break; - case EXTENDEDISREACHABILITY: - IsExtendedReachability isExtendedReachability = - new IsExtendedReachability(tlvHeader); - isExtendedReachability.readFrom(channelBuffer); - isisTlv = isExtendedReachability; - break; - case HOSTNAME: - HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader); - hostNameTlv.readFrom(channelBuffer); - isisTlv = hostNameTlv; - break; - case IDRPINFORMATION: - IdrpInformationTlv idrpInformationTlv = new IdrpInformationTlv(tlvHeader); - idrpInformationTlv.readFrom(channelBuffer); - isisTlv = idrpInformationTlv; - break; - case IPEXTENDEDREACHABILITY: - IpExtendedReachabilityTlv iperTlv = new IpExtendedReachabilityTlv(tlvHeader); - iperTlv.readFrom(channelBuffer); - isisTlv = iperTlv; - break; - case IPINTERFACEADDRESS: - IpInterfaceAddressTlv ipTlv = new IpInterfaceAddressTlv(tlvHeader); - ipTlv.readFrom(channelBuffer); - isisTlv = ipTlv; - break; - case IPINTERNALREACHABILITY: - IpInternalReachabilityTlv iprTlv = new IpInternalReachabilityTlv(tlvHeader); - iprTlv.readFrom(channelBuffer); - isisTlv = iprTlv; - break; - case ISALIAS: - break; - case PROTOCOLSUPPORTED: - ProtocolSupportedTlv psTlv = new ProtocolSupportedTlv(tlvHeader); - psTlv.readFrom(channelBuffer); - isisTlv = psTlv; - break; - case ISREACHABILITY: - IsReachabilityTlv isrTlv = new IsReachabilityTlv(tlvHeader); - isrTlv.readFrom(channelBuffer); - isisTlv = isrTlv; - break; - case ISNEIGHBORS: - IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader); - isisNeighborTlv.readFrom(channelBuffer); - isisTlv = isisNeighborTlv; - break; - case LSPENTRY: - LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader); - lspEntriesTlv.readFrom(channelBuffer); - isisTlv = lspEntriesTlv; - break; - case PADDING: - PaddingTlv paddingTlv = new PaddingTlv(tlvHeader); - paddingTlv.readFrom(channelBuffer); - isisTlv = paddingTlv; - break; - case ADJACENCYSTATE: - AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader); - adjacencyStateTlv.readFrom(channelBuffer); - isisTlv = adjacencyStateTlv; - break; - default: - break; - } - return isisTlv; - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvHeader.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvHeader.java deleted file mode 100644 index 68bda54dee..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvHeader.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of TLV header. - */ -public class TlvHeader implements IsisTlv { - private int tlvType; - private int tlvLength; - - /** - * Returns TLV length of TLV. - * - * @return TLV length - */ - public int tlvLength() { - return tlvLength; - } - - /** - * Sets TLV length for TLV. - * - * @param tlvLength TLV length - */ - public void setTlvLength(int tlvLength) { - this.tlvLength = tlvLength; - } - - /** - * Returns TLV type of TLV. - * - * @return TLV type - */ - public int tlvType() { - return tlvType; - } - - /** - * Sets TLV type for TLV. - * - * @param tlvType TLV type - */ - public void setTlvType(int tlvType) { - this.tlvType = tlvType; - } - - /** - * Sets TLV values from channel buffer. - * - * @param channelBuffer channel Buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - //implemented in sub classes - } - - - /** - * Returns TLV as byte array. - * - * @return byteArray TLV body of area address TLV - */ - public byte[] asBytes() { - return null; - } - - /** - * Returns TLV header of TLV as bytes. - * - * @return TLV header as bytes - */ - public byte[] tlvHeaderAsByteArray() { - List headerLst = new ArrayList<>(); - headerLst.add((byte) this.tlvType); - headerLst.add((byte) this.tlvLength); - return Bytes.toArray(headerLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("tlvType", tlvType) - .add("tlvLength", tlvLength) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvType.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvType.java deleted file mode 100644 index bf609c81e0..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvType.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; - -/** - * Representation of various values for TLV types. - */ -public enum TlvType { - AREAADDRESS(1), - ISREACHABILITY(2), - ISNEIGHBORS(6), - PADDING(8), - LSPENTRY(9), - AUTHENTICATION(10), - HOSTNAME(137), - EXTENDEDISREACHABILITY(22), - ISALIAS(24), - IPINTERNALREACHABILITY(128), - PROTOCOLSUPPORTED(129), - IPEXTERNALREACHABILITY(130), - IPEXTENDEDREACHABILITY(135), - IDRPINFORMATION(131), - IPINTERFACEADDRESS(132), - ADJACENCYSTATE(240); - - // Reverse lookup table - private static final Map LOOKUP = new HashMap<>(); - - // Populate the lookup table on loading time - static { - for (TlvType isisTlvType : EnumSet.allOf(TlvType.class)) { - LOOKUP.put(isisTlvType.value(), isisTlvType); - } - } - - private int value; - - /** - * Sets the TLV type value. - * - * @param value value. - */ - TlvType(int value) { - this.value = value; - } - - /** - * Gets the enum instance from type value - reverse lookup purpose. - * - * @param tlvTypeValue TLV type value - * @return ISIS TLV type instance - */ - public static TlvType get(int tlvTypeValue) { - return LOOKUP.get(tlvTypeValue); - } - - /** - * Gets value. - * - * @return value - */ - public int value() { - return value; - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytes.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytes.java deleted file mode 100644 index 659ef57d1c..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytes.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import com.google.common.primitives.Bytes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of conversion of TLV's to bytes. - */ -public final class TlvsToBytes { - - private static final Logger log = LoggerFactory.getLogger(TlvsToBytes.class); - - /** - * Creates an instance. - */ - private TlvsToBytes() { - } - - /** - * Sets the ISIS TLV and returns in the form of bytes. - * - * @param isisTlv isisTlv. - * @return tlvBytes - */ - public static List tlvToBytes(IsisTlv isisTlv) { - List tlvBytes = new ArrayList<>(); - if (isisTlv instanceof AreaAddressTlv) { - AreaAddressTlv areaAddressTlv = (AreaAddressTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(areaAddressTlv.asBytes())); - } else if (isisTlv instanceof IpInterfaceAddressTlv) { - IpInterfaceAddressTlv ipInterfaceAddressTlv = (IpInterfaceAddressTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(ipInterfaceAddressTlv.asBytes())); - } else if (isisTlv instanceof ProtocolSupportedTlv) { - ProtocolSupportedTlv protocolSupportedTlv = (ProtocolSupportedTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(protocolSupportedTlv.asBytes())); - } else if (isisTlv instanceof PaddingTlv) { - PaddingTlv paddingTlv = (PaddingTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(paddingTlv.asBytes())); - } else if (isisTlv instanceof IsisNeighborTlv) { - IsisNeighborTlv isisNeighborTlv = (IsisNeighborTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(isisNeighborTlv.asBytes())); - } else if (isisTlv instanceof AdjacencyStateTlv) { - AdjacencyStateTlv isisAdjacencyState - = (AdjacencyStateTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(isisAdjacencyState.asBytes())); - } else if (isisTlv instanceof HostNameTlv) { - HostNameTlv hostNameTlv - = (HostNameTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(hostNameTlv.asBytes())); - } else if (isisTlv instanceof IpExtendedReachabilityTlv) { - IpExtendedReachabilityTlv ipExtendedReachabilityTlv - = (IpExtendedReachabilityTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(ipExtendedReachabilityTlv.asBytes())); - } else if (isisTlv instanceof IpInternalReachabilityTlv) { - IpInternalReachabilityTlv ipInternalReachabilityTlv - = (IpInternalReachabilityTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(ipInternalReachabilityTlv.asBytes())); - } else if (isisTlv instanceof IsReachabilityTlv) { - IsReachabilityTlv isReachabilityTlv - = (IsReachabilityTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(isReachabilityTlv.asBytes())); - } else if (isisTlv instanceof LspEntriesTlv) { - LspEntriesTlv lspEntriesTlv - = (LspEntriesTlv) isisTlv; - tlvBytes.addAll(Bytes.asList(lspEntriesTlv.asBytes())); - } else if (isisTlv instanceof IsExtendedReachability) { - IsExtendedReachability isExtendedReachability - = (IsExtendedReachability) isisTlv; - tlvBytes.addAll(Bytes.asList(isExtendedReachability.asBytes())); - } else { - log.debug("TlvsToBytes::UNKNOWN TLV TYPE ::TlvsToBytes "); - } - return tlvBytes; - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/package-info.java deleted file mode 100644 index 9b03aa5881..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS protocol. - */ -package org.onosproject.isis.io.isispacket.tlv; \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroup.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroup.java deleted file mode 100644 index eaba07b2da..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroup.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.util.IsisUtil; - - -/** - * Representation of an administrative group. - */ -public class AdministrativeGroup extends TlvHeader implements TrafficEngineeringSubTlv { - - private int administrativeGroup; - - /** - * Creates an administrative group instance. - * - * @param header Tlv Header instance - */ - public AdministrativeGroup(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Returns administrative group value. - * - * @return administrative group value - */ - public int administrativeGroup() { - return administrativeGroup; - } - - /** - * Sets administrative group value. - * - * @param administrativeGroup value - */ - public void setAdministrativeGroup(int administrativeGroup) { - this.administrativeGroup = administrativeGroup; - } - - /** - * Returns administrative group value. - * - * @return administrativeGroup value - */ - public int getAdministrativeGroupValue() { - return this.administrativeGroup; - } - - /** - * Reads bytes from channel buffer. - * - * @param channelBuffer Channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte[] tempByteArray = new byte[tlvLength()]; - channelBuffer.readBytes(tempByteArray, 0, tlvLength()); - this.setAdministrativeGroup(IsisUtil.byteToInteger(tempByteArray)); - } - - /** - * Returns administrative group as byte array. - * - * @return administrative group instance as byte array - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = tlvHeaderAsByteArray(); - byte[] linkSubTlvBody = tlvBodyAsBytes(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Returns administrative group body as byte array. - * - * @return byte array of sub tlv administrative group - */ - public byte[] tlvBodyAsBytes() { - - byte[] linkSubTypeBody; - linkSubTypeBody = IsisUtil.convertToFourBytes(this.administrativeGroup); - - return linkSubTypeBody; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("administrativeGroup", administrativeGroup) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddress.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddress.java deleted file mode 100644 index e9bba29d84..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddress.java +++ /dev/null @@ -1,117 +0,0 @@ -/* -* Copyright 2016-present Open Networking Foundation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.util.IsisUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of interface ip address TE value. - */ -public class InterfaceIpAddress extends TlvHeader implements TrafficEngineeringSubTlv { - private static final Logger log = - LoggerFactory.getLogger(NeighborIpAddress.class); - private Ip4Address localInterfaceIPAddress; - - /** - * Creates an instance of local interface ip address. - * - * @param header tlv header instance - */ - public InterfaceIpAddress(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Adds local interface ip address. - * - * @param localAddress ip address - */ - public void setIpAddress(Ip4Address localAddress) { - this.localInterfaceIPAddress = localAddress; - } - - /** - * Gets local interface ip address. - * - * @return localAddress ip address - */ - public Ip4Address localInterfaceIPAddress() { - return localInterfaceIPAddress; - } - - /** - * Reads bytes from channel buffer. - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() >= IsisUtil.FOUR_BYTES) { - byte[] tempByteArray = new byte[IsisUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES); - this.setIpAddress(Ip4Address.valueOf(tempByteArray)); - - } - } - - /** - * Gets local interface ip address as byte array. - * - * @return local interface ip address as byte array - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = tlvHeaderAsByteArray(); - byte[] linkSubTlvBody = tlvBodyAsBytes(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Gets byte array of local interface ip address. - * - * @return byte array of local interface ip address - */ - public byte[] tlvBodyAsBytes() { - - List linkSubTypeBody = new ArrayList<>(); - - linkSubTypeBody.addAll(Bytes.asList(this.localInterfaceIPAddress.toOctets())); - - - return Bytes.toArray(linkSubTypeBody); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("localInterfaceIPAddress", localInterfaceIPAddress) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidth.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidth.java deleted file mode 100644 index e6455775ec..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidth.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.util.IsisUtil; - - -/** - * Representation of maximum bandwidth TE value. - */ -public class MaximumBandwidth extends TlvHeader implements TrafficEngineeringSubTlv { - private float maximumBandwidth; - - /** - * Creates an instance of maximum bandwidth. - * - * @param header TLV header instance - */ - public MaximumBandwidth(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Sets value of maximum bandwidth. - * - * @param maximumBandwidth value of maximum bandwidth - */ - public void setMaximumBandwidth(float maximumBandwidth) { - this.maximumBandwidth = maximumBandwidth; - } - - /** - * Returns value of maximum bandwidth. - * - * @return maximumBandwidth value of maximum bandwidth - */ - public float getMaximumBandwidthValue() { - return this.maximumBandwidth; - } - - /** - * Reads bytes from channel buffer. - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte[] tempByteArray = new byte[tlvLength()]; - channelBuffer.readBytes(tempByteArray, 0, tlvLength()); - int maxBandwidth = (IsisUtil.byteToInteger(tempByteArray)); - this.setMaximumBandwidth(Float.intBitsToFloat(maxBandwidth)); - } - - /** - * Returns byte array of maximum bandwidth sub tlv. - * - * @return byte array of maximum bandwidth sub tlv - */ - public byte[] asBytes() { - byte[] linkSubType = null; - byte[] linkSubTlvHeader = tlvHeaderAsByteArray(); - byte[] linkSubTlvBody = tlvBodyAsBytes(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Returns maximum bandwidth sub tlv byte array. - * - * @return byte array of maximum bandwidth sub tlv - */ - public byte[] tlvBodyAsBytes() { - byte[] linkSubTypeBody; - linkSubTypeBody = IsisUtil.convertToFourBytes(Float.floatToIntBits(this.maximumBandwidth)); - return linkSubTypeBody; - } - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("maximumBandwidth", maximumBandwidth) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidth.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidth.java deleted file mode 100644 index 80bf9a9c3d..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidth.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.util.IsisUtil; - - -/** - * Representation of maximum reservable bandwidth TE value. - */ -public class MaximumReservableBandwidth extends TlvHeader implements TrafficEngineeringSubTlv { - private float maximumReservableBandwidth; - - /** - * Creates an instance of maximum reservable bandwidth. - * - * @param header TLV header - */ - public MaximumReservableBandwidth(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Sets value of maximum reversible bandwidth. - * - * @param maximumBandwidth maximum reversible bandwidth - */ - public void setMaximumBandwidth(float maximumBandwidth) { - this.maximumReservableBandwidth = maximumBandwidth; - } - - /** - * Returns value of maximum reversible bandwidth. - * - * @return maximumBandwidth maximum reversible bandwidth - */ - public float getMaximumBandwidthValue() { - return this.maximumReservableBandwidth; - } - - /** - * Reads bytes from channel buffer. - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte[] tempByteArray = new byte[tlvLength()]; - channelBuffer.readBytes(tempByteArray, 0, tlvLength()); - int maxBandwidth = (IsisUtil.byteToInteger(tempByteArray)); - this.setMaximumBandwidth(Float.intBitsToFloat(maxBandwidth)); - } - - /** - * Returns byte array of maximum reservable bandwidth. - * - * @return byte array of maximum reservable bandwidth - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = tlvHeaderAsByteArray(); - byte[] linkSubTlvBody = tlvBodyAsBytes(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - return linkSubType; - - } - - /** - * Returns maximum reservable bandwidth sub tlv body as byte array. - * - * @return byte of maximum reservable bandwidth sub tlv body - */ - public byte[] tlvBodyAsBytes() { - byte[] linkSubTypeBody; - linkSubTypeBody = IsisUtil.convertToFourBytes(Float.floatToIntBits(this.maximumReservableBandwidth)); - - return linkSubTypeBody; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("maximumReservableBandwidth", maximumReservableBandwidth) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/NeighborIpAddress.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/NeighborIpAddress.java deleted file mode 100644 index 0de53f1ef7..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/NeighborIpAddress.java +++ /dev/null @@ -1,135 +0,0 @@ -/* -* Copyright 2016-present Open Networking Foundation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.util.IsisUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of neighbor ip address TE value. - */ -public class NeighborIpAddress extends TlvHeader implements TrafficEngineeringSubTlv { - private static final Logger log = - LoggerFactory.getLogger(NeighborIpAddress.class); - private Ip4Address neighborIPAddress; - - /** - * Creates an instance of neighbor ip address. - * - * @param header tlv header instance - */ - public NeighborIpAddress(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Sets the neighbor ip address. - * - * @param neighborIPAddress ip address - */ - public void setIpAddress(Ip4Address neighborIPAddress) { - this.neighborIPAddress = neighborIPAddress; - } - - /** - * Gets the neighbor ip address. - * - * @return neighbor ip address - */ - public Ip4Address neighborIPAddress() { - return neighborIPAddress; - } - - /** - * Reads bytes from channel buffer. - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() >= IsisUtil.FOUR_BYTES) { - byte[] tempByteArray = new byte[IsisUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES); - this.setIpAddress(Ip4Address.valueOf(tempByteArray)); - - } - } - - /** - * Gets the neighbor ip address as byte array. - * - * @return neighbor ip address as byte array - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = tlvHeaderAsByteArray(); - byte[] linkSubTlvBody = tlvBodyAsBytes(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Gets byte array of neighborIPAddress. - * - * @return byte array of neighborIPAddress - */ - public byte[] tlvBodyAsBytes() { - - List linkSubTypeBody = new ArrayList<>(); - - linkSubTypeBody.addAll(Bytes.asList(this.neighborIPAddress.toOctets())); - - - return Bytes.toArray(linkSubTypeBody); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - NeighborIpAddress that = (NeighborIpAddress) o; - return Objects.equal(neighborIPAddress, that.neighborIPAddress); - } - - @Override - public int hashCode() { - return Objects.hashCode(neighborIPAddress); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("localInterfaceIPAddress", neighborIPAddress) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java deleted file mode 100644 index 782d5bdefc..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -/** - * Representation of sub tlv finder. - */ -public final class SubTlvFinder { - /** - * Creates an instance. - */ - private SubTlvFinder() { - - } - - /** - * Sets the value for TLV header and to find sub TLV and populate. - * - * @param tlvHeader tlvHeader - * @param channelBuffer byteBuf - * @return subTlv traffic engineering sub tlv - */ - public static TrafficEngineeringSubTlv findSubTlv(TlvHeader tlvHeader, ChannelBuffer channelBuffer) { - - TrafficEngineeringSubTlv subTlv = null; - - switch (SubTlvType.get(tlvHeader.tlvType())) { - case ADMINISTRATIVEGROUP: - AdministrativeGroup administrativeGroup = new AdministrativeGroup(tlvHeader); - administrativeGroup.readFrom(channelBuffer); - subTlv = administrativeGroup; - break; - case MAXIMUMBANDWIDTH: - MaximumBandwidth maximumBandwidth = new MaximumBandwidth(tlvHeader); - maximumBandwidth.readFrom(channelBuffer); - subTlv = maximumBandwidth; - break; - case MAXIMUMRESERVABLEBANDWIDTH: - MaximumReservableBandwidth maxResBandwidth = new MaximumReservableBandwidth(tlvHeader); - maxResBandwidth.readFrom(channelBuffer); - subTlv = maxResBandwidth; - break; - case TRAFFICENGINEERINGMETRIC: - TrafficEngineeringMetric teMetric = new TrafficEngineeringMetric(tlvHeader); - teMetric.readFrom(channelBuffer); - subTlv = teMetric; - break; - case UNRESERVEDBANDWIDTH: - UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth(tlvHeader); - unreservedBandwidth.readFrom(channelBuffer); - subTlv = unreservedBandwidth; - break; - case INTERFACEADDRESS: - InterfaceIpAddress ipInterfaceAddressTlv = new InterfaceIpAddress(tlvHeader); - ipInterfaceAddressTlv.readFrom(channelBuffer); - subTlv = ipInterfaceAddressTlv; - break; - case NEIGHBORADDRESS: - NeighborIpAddress ipNeighborAddressTlv = new NeighborIpAddress(tlvHeader); - ipNeighborAddressTlv.readFrom(channelBuffer); - subTlv = ipNeighborAddressTlv; - break; - default: - //TODO - break; - } - return subTlv; - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytes.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytes.java deleted file mode 100644 index a7bb08f281..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytes.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import com.google.common.primitives.Bytes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of conversion of TLV's to bytes. - */ -public final class SubTlvToBytes { - - private static final Logger log = LoggerFactory.getLogger(SubTlvToBytes.class); - - /** - * Creates an instance. - */ - private SubTlvToBytes() { - //private constructor - } - - /** - * Sets the ISIS sub TLV and returns in the form of bytes. - * - * @param subTlv isisTlv. - * @return subTlvBytes - */ - public static List tlvToBytes(TrafficEngineeringSubTlv subTlv) { - - List subTlvBytes = new ArrayList<>(); - if (subTlv instanceof AdministrativeGroup) { - AdministrativeGroup administrativeGroup = (AdministrativeGroup) subTlv; - subTlvBytes.addAll(Bytes.asList(administrativeGroup.asBytes())); - } else if (subTlv instanceof MaximumBandwidth) { - MaximumBandwidth maximumBandwidth = (MaximumBandwidth) subTlv; - subTlvBytes.addAll(Bytes.asList(maximumBandwidth.asBytes())); - } else if (subTlv instanceof MaximumReservableBandwidth) { - MaximumReservableBandwidth maximumReservableBandwidth = (MaximumReservableBandwidth) subTlv; - subTlvBytes.addAll(Bytes.asList(maximumReservableBandwidth.asBytes())); - } else if (subTlv instanceof TrafficEngineeringMetric) { - TrafficEngineeringMetric trafficEngineeringMetric = (TrafficEngineeringMetric) subTlv; - subTlvBytes.addAll(Bytes.asList(trafficEngineeringMetric.asBytes())); - } else if (subTlv instanceof UnreservedBandwidth) { - UnreservedBandwidth unreservedBandwidth = (UnreservedBandwidth) subTlv; - subTlvBytes.addAll(Bytes.asList(unreservedBandwidth.asBytes())); - } else if (subTlv instanceof NeighborIpAddress) { - NeighborIpAddress interfaceIpAddress = (NeighborIpAddress) subTlv; - subTlvBytes.addAll(Bytes.asList(interfaceIpAddress.asBytes())); - } else { - log.debug("TlvsToBytes::UNKNOWN TLV TYPE ::TlvsToBytes "); - } - - return subTlvBytes; - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java deleted file mode 100644 index 98d43b3a63..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; - -/** - * Representation of sub tlv type. - */ -public enum SubTlvType { - /** - * Represents traffic engineering administrative group TLV. - */ - ADMINISTRATIVEGROUP(3), - /** - * Represents traffic engineering maximum bandwidth TLV. - */ - MAXIMUMBANDWIDTH(9), - /** - * Represents traffic engineering maximum reservable bandwidth TLV. - */ - MAXIMUMRESERVABLEBANDWIDTH(10), - /** - * Represents traffic engineering metric TLV. - */ - TRAFFICENGINEERINGMETRIC(18), - /** - * Represents traffic engineering interface address TLV. - */ - INTERFACEADDRESS(6), - /** - * Represents traffic engineering neighbor address TLV. - */ - NEIGHBORADDRESS(8), - /** - * Represents traffic engineering unreserved bandwidth TLV. - */ - UNRESERVEDBANDWIDTH(11); - - // Reverse lookup table - private static final Map LOOKUP = new HashMap<>(); - - // Populate the lookup table on loading time - static { - for (SubTlvType subTlvType : EnumSet.allOf(SubTlvType.class)) { - LOOKUP.put(subTlvType.value(), subTlvType); - } - } - - private int value; - - /** - * Sets the sub TLV type value. - * - * @param value value. - */ - SubTlvType(int value) { - this.value = value; - } - - /** - * Returns the enum instance from type value - reverse lookup purpose. - * - * @param subTlvTypeValue TLV type value - * @return ISIS sub TLV type instance - */ - public static SubTlvType get(int subTlvTypeValue) { - return LOOKUP.get(subTlvTypeValue); - } - - /** - * Returns value. - * - * @return value - */ - public int value() { - return value; - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetric.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetric.java deleted file mode 100644 index fa91d79368..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetric.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.util.IsisUtil; - -/** - * Representation of traffic engineering metric TE value. - */ -public class TrafficEngineeringMetric extends TlvHeader implements TrafficEngineeringSubTlv { - private long trafficEngineeringMetric; - - /** - * Creates an instance of traffic engineering metric . - * - * @param header tlv header instance - */ - public TrafficEngineeringMetric(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Sets TE metric value. - * - * @param trafficEngineeringMetric value of trafficEngineeringMetric - */ - public void setTrafficEngineeringMetric(long trafficEngineeringMetric) { - this.trafficEngineeringMetric = trafficEngineeringMetric; - } - - /** - * Returns TE metric value. - * - * @return value of traffic engineering metric - */ - public long getTrafficEngineeringMetricValue() { - return this.trafficEngineeringMetric; - } - - /** - * Reads bytes from channel buffer . - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte[] tempByteArray = new byte[tlvLength()]; - channelBuffer.readBytes(tempByteArray, 0, tlvLength()); - this.setTrafficEngineeringMetric(IsisUtil.byteToLong(tempByteArray)); - } - - /** - * Returns instance as byte array. - * - * @return instance as byte array - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = tlvHeaderAsByteArray(); - byte[] linkSubTlvBody = tlvBodyAsBytes(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Returns trafficEngineeringMetric as byte array . - * - * @return byte array of trafficEngineeringMetric - */ - public byte[] tlvBodyAsBytes() { - - byte[] linkSubTypeBody; - linkSubTypeBody = IsisUtil.convertToFourBytes(this.trafficEngineeringMetric); - - return linkSubTypeBody; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("trafficEngineeringMetric", trafficEngineeringMetric) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringSubTlv.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringSubTlv.java deleted file mode 100644 index 0eb70714f4..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringSubTlv.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -/** - * Representation of traffic engineering sub tlv. - */ -public interface TrafficEngineeringSubTlv { -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java deleted file mode 100644 index 3e654a2dc1..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.util.IsisUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an unreserved band width TE value. - */ -public class UnreservedBandwidth extends TlvHeader implements TrafficEngineeringSubTlv { - private List unReservedBandwidth = new ArrayList<>(); - - /** - * Creates an instance of unreserved band width. - * - * @param header tlv header instance - */ - public UnreservedBandwidth(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Adds value of un reserved bandwidth . - * - * @param unreservedBandwidth value of un reserved bandwidth - */ - public void addUnReservedBandwidth(float unreservedBandwidth) { - this.unReservedBandwidth.add(unreservedBandwidth); - } - - /** - * Returns list of un reserved bandwidth . - * - * @return List of un reserved bandwidth - */ - public List unReservedBandwidthValue() { - return this.unReservedBandwidth; - } - - /** - * Reads bytes from channel buffer . - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() >= IsisUtil.FOUR_BYTES) { - int maxReversibleBandwidth = channelBuffer.readInt(); - this.addUnReservedBandwidth(Float.intBitsToFloat(maxReversibleBandwidth)); - } - } - - /** - * Returns instance as byte array. - * - * @return instance as byte array - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = tlvHeaderAsByteArray(); - byte[] linkSubTlvBody = tlvBodyAsBytes(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Returns unreserved bandwidth as byte array. - * - * @return unreserved bandwidth as byte array - */ - public byte[] tlvBodyAsBytes() { - List linkSubTypeBody = new ArrayList<>(); - if (this.unReservedBandwidth.size() < 8) { - int size = IsisUtil.EIGHT_BYTES - this.unReservedBandwidth.size(); - for (int i = 0; i < size; i++) { - linkSubTypeBody.addAll(Bytes.asList(IsisUtil.convertToFourBytes(IsisUtil.INITIAL_BANDWIDTH))); - } - } - for (Float unreservedBandwidth : this.unReservedBandwidth) { - int unresBandwidth = Float.floatToIntBits(unreservedBandwidth); - linkSubTypeBody.addAll(Bytes.asList(IsisUtil.convertToFourBytes(unresBandwidth))); - } - - return Bytes.toArray(linkSubTypeBody); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("unReservedBandwidth", unReservedBandwidth) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/package-info.java deleted file mode 100644 index bfb1ed6034..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS protocol. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/package-info.java deleted file mode 100644 index 89ed736508..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS protocol IO. - */ -package org.onosproject.isis.io; \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/ChecksumCalculator.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/ChecksumCalculator.java deleted file mode 100644 index 0671eed331..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/ChecksumCalculator.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.util; - - -import java.util.Arrays; - -/** - * Calculates checksum for ISIS LSP packets. - */ -public class ChecksumCalculator { - - /** - * Verifies the checksum is valid in given LSP packet bytes. - * - * @param lspPacket lsp as byte array - * @param lspChecksumPos1 position of checksum bit in packet - * @param lspChecksumPos2 position of checksum bit in packet - * @return true if valid else false - */ - public boolean validateLspCheckSum(byte[] lspPacket, int lspChecksumPos1, int lspChecksumPos2) { - - byte[] checksum = calculateLspChecksum(lspPacket, lspChecksumPos1, lspChecksumPos2); - if (lspPacket[lspChecksumPos1] == checksum[0] && lspPacket[lspChecksumPos2] == checksum[1]) { - return true; - } - return false; - } - - - /** - * Calculates the LSP checksum. - * - * @param lspBytes as byte array - * @param lspChecksumPos1 position of checksum bit in packet - * @param lspChecksumPos2 position of checksum bit in packet - * @return checksum bytes - */ - public byte[] calculateLspChecksum(byte[] lspBytes, int lspChecksumPos1, int lspChecksumPos2) { - - byte[] tempLsaByte = Arrays.copyOf(lspBytes, lspBytes.length); - - int[] checksumOut = {0, 0}; - tempLsaByte[lspChecksumPos1] = 0; - tempLsaByte[lspChecksumPos2] = 0; - byte[] byteCheckSum = {0, 0}; - for (int i = 12; i < tempLsaByte.length; i++) { - checksumOut[0] = checksumOut[0] + ((int) tempLsaByte[i] & 0xFF); - checksumOut[1] = checksumOut[1] + checksumOut[0]; - } - checksumOut[0] = checksumOut[0] % 255; - checksumOut[1] = checksumOut[1] % 255; - int byte1 = (int) ((tempLsaByte.length - lspChecksumPos1 - 1) * checksumOut[0] - checksumOut[1]) % 255; - if (byte1 <= 0) { - byte1 += 255; - } - int byte2 = 510 - checksumOut[0] - byte1; - if (byte2 > 255) { - byte2 -= 255; - } - - byteCheckSum[0] = (byte) byte1; - byteCheckSum[1] = (byte) byte2; - - return byteCheckSum; - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisConstants.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisConstants.java deleted file mode 100644 index 9e48ee8712..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisConstants.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.io.util; - -import org.onlab.packet.Ip4Address; - -/** - * Representation of ISIS Constants. - */ -public final class IsisConstants { - public static final char PDU_LENGTH = 1497; - public static final char CONFIG_LENGTH = 1498; - public static final int MINIMUM_FRAME_LEN = 1521; - public static final int METADATA_LEN = 7; - public static final String SHOST = "127.0.0.1"; - public static final Ip4Address DEFAULTIP = Ip4Address.valueOf("0.0.0.0"); - public static final int SPORT = 3000; - public static final byte L2 = 1; - public static final int IRPDISCRIMINATOR = 131; - public static final int ISISVERSION = 1; - public static final int RESERVED = 0; - public static final int PRIORITY = 0; - public static final int MAXAREAADDRESS = 0; - public static final int SYSTEMIDLENGTH = 0; - public static final int PROTOCOLSUPPORTED = 204; - public static final int LOCALCIRCUITIDFORP2P = 130; - public static final int P2PHELLOHEADERLENGTH = 20; - public static final int HELLOHEADERLENGTH = 27; - public static final int CSNPDUHEADERLENGTH = 33; - public static final int PSNPDUHEADERLENGTH = 17; - public static final int PDULENGTHPOSITION = 17; - public static final int COMMONHEADERLENGTH = 8; - public static final int LSPMAXAGE = 1200; - public static final int LSPREFRESH = 900; - public static final int MAXSEQUENCENUMBER = Integer.MAX_VALUE; - public static final int STARTLSSEQUENCENUM = 1; - public static final int LENGTHPOSITION = 8; - public static final int RESERVEDPOSITION = 6; - public static final int CHECKSUMPOSITION = 24; - public static final String REFRESHLSP = "refreshLsp"; - public static final String MAXAGELSP = "maxAgeLsp"; - public static final String DEFAULTLANID = "0000.0000.0000.00"; - public static final String PROCESSESID = "processId"; - public static final String INTERFACE = "interface"; - public static final String INTERFACEINDEX = "interfaceIndex"; - public static final String INTERMEDIATESYSTEMNAME = "intermediateSystemName"; - public static final String SYSTEMID = "systemId"; - public static final String RESERVEDPACKETCIRCUITTYPE = "reservedPacketCircuitType"; - public static final String CIRCUITID = "circuitId"; - public static final String NETWORKTYPE = "networkType"; - public static final String AREAADDRESS = "areaAddress"; - public static final String HOLDINGTIME = "holdingTime"; - public static final String HELLOINTERVAL = "helloInterval"; - public static final int PORT = 7000; - public static final String LSPADDED = "LSP_ADDED"; - public static final String LSPREMOVED = "LSP_REMOVED"; - - /** - * Non parameterized constructor. - */ - private IsisConstants() { - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisUtil.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisUtil.java deleted file mode 100644 index 511f000c47..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisUtil.java +++ /dev/null @@ -1,762 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.util; - -import com.google.common.primitives.Bytes; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisInterfaceState; -import org.onosproject.isis.controller.IsisNeighbor; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.controller.IsisRouterType; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; -import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu; -import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv; -import org.onosproject.isis.io.isispacket.tlv.AreaAddressTlv; -import org.onosproject.isis.io.isispacket.tlv.IpInterfaceAddressTlv; -import org.onosproject.isis.io.isispacket.tlv.IsisNeighborTlv; -import org.onosproject.isis.io.isispacket.tlv.PaddingTlv; -import org.onosproject.isis.io.isispacket.tlv.ProtocolSupportedTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.isispacket.tlv.TlvType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.xml.bind.DatatypeConverter; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.StringTokenizer; - -/** - * Representation of ISIS utils. - */ -public final class IsisUtil { - public static final int ETHER_HEADER_LEN = 17; - public static final int ID_SIX_BYTES = 6; - public static final int ID_PLUS_ONE_BYTE = 7; - public static final int ID_PLUS_TWO_BYTE = 8; - public static final int THREE_BYTES = 3; - public static final int TWO_BYTES = 2; - public static final int SIX_BYTES = 6; - public static final int EIGHT_BYTES = 8; - public static final int FOUR_BYTES = 4; - public static final int PADDING_FIXED_LENGTH = 255; - public static final int TLVHEADERLENGTH = 2; - public static final int INITIAL_BANDWIDTH = 12500000; - private static final Logger log = LoggerFactory.getLogger(IsisUtil.class); - - /** - * Creates an instance. - */ - private IsisUtil() { - - } - - /** - * Checks given IPs are in same network or not. - * - * @param ip1 IP address - * @param ip2 IP address - * @param mask network mask - * @return true if both are in same network else false - */ - public static boolean sameNetwork(Ip4Address ip1, Ip4Address ip2, byte[] mask) { - try { - byte[] a1 = ip1.toOctets(); - byte[] a2 = ip2.toOctets(); - for (int i = 0; i < a1.length; i++) { - if ((a1[i] & mask[i]) != (a2[i] & mask[i])) { - return false; - } - } - } catch (Exception e) { - log.debug("Exception::IsisUtil::sameNetwork:: {}", e.getMessage()); - } - return true; - } - - /** - * Parse byte array to string system ID. - * - * @param bytes system ID - * @return systemId system ID - */ - public static String systemId(byte[] bytes) { - String systemId = ""; - for (Byte byt : bytes) { - String hexa = Integer.toHexString(Byte.toUnsignedInt(byt)); - if (hexa.length() % 2 != 0) { - hexa = "0" + hexa; - } - systemId = systemId + hexa; - if (systemId.length() == 4 || systemId.length() == 9) { - systemId = systemId + "."; - } - } - return systemId; - } - - /** - * Parse byte array to LAN ID. - * - * @param bytes LAN ID - * @return systemIdPlus system ID - */ - public static String systemIdPlus(byte[] bytes) { - int count = 1; - String systemId = ""; - for (Byte byt : bytes) { - String hexa = Integer.toHexString(Byte.toUnsignedInt(byt)); - if (hexa.length() % 2 != 0) { - hexa = "0" + hexa; - } - if (count == 7 && bytes.length == 8) { - systemId = systemId + hexa + "-"; - } else { - systemId = systemId + hexa; - } - if (systemId.length() == 4 || systemId.length() == 9 - || systemId.length() == 14) { - systemId = systemId + "."; - } - count++; - } - return systemId; - } - - /** - * Parse byte array to area address. - * - * @param bytes area address - * @return areaAddress area address - */ - public static String areaAddress(byte[] bytes) { - String areaAddres = ""; - for (Byte byt : bytes) { - String hexa = Integer.toHexString(Byte.toUnsignedInt(byt)); - if (hexa.length() % 2 != 0) { - hexa = "0" + hexa; - } - areaAddres = areaAddres + hexa; - } - return areaAddres; - } - - /** - * Parse area address to bytes. - * - * @param address area address - * @return areaAddress area address - */ - public static List areaAddressToBytes(String address) { - List idList = new ArrayList<>(); - for (int i = 0; i < address.length(); i = i + 2) { - Character c1 = address.charAt(i); - Character c2 = address.charAt(i + 1); - String str = c1.toString() + c2.toString(); - idList.add((byte) Integer.parseInt(str, 16)); - } - return idList; - } - - /** - * Returns PDU headaer length. - * - * @param pduType PDU type - * @return headerLength header length - */ - public static int getPduHeaderLength(int pduType) { - int headerLength = 0; - switch (IsisPduType.get(pduType)) { - case L1HELLOPDU: - case L2HELLOPDU: - case L1LSPDU: - case L2LSPDU: - headerLength = IsisConstants.HELLOHEADERLENGTH; - break; - case P2PHELLOPDU: - headerLength = IsisConstants.P2PHELLOHEADERLENGTH; - break; - case L1PSNP: - case L2PSNP: - headerLength = IsisConstants.PSNPDUHEADERLENGTH; - break; - case L1CSNP: - case L2CSNP: - headerLength = IsisConstants.CSNPDUHEADERLENGTH; - break; - default: - break; - } - return headerLength; - } - - /** - * Adds the PDU length in packet. - * - * @param isisPacket ISIS packet - * @param lengthBytePos1 length byte position - * @param lengthBytePos2 length byte position - * @param reservedBytePos reserved byte position - * @return byte array with PDU length - */ - public static byte[] addLengthAndMarkItInReserved(byte[] isisPacket, int lengthBytePos1, - int lengthBytePos2, int reservedBytePos) { - //Set the length of the packet - //Get the total length of the packet - int length = isisPacket.length; - //Convert the lenth to two bytes as the length field is 2 bytes - byte[] lenthInTwoBytes = IsisUtil.convertToTwoBytes(length); - //isis header 3rd and 4th position represents length - isisPacket[lengthBytePos1] = lenthInTwoBytes[0]; //assign 1st byte in lengthBytePos1 - isisPacket[lengthBytePos2] = lenthInTwoBytes[1]; //assign 2st byte in lengthBytePos2 - isisPacket[reservedBytePos] = (byte) lengthBytePos1; - return isisPacket; - } - - /** - * Adds the checksum in packet. - * - * @param isisPacket ISIS packet - * @param checksumBytePos1 checksum byte position - * @param checksumBytePos2 checksum byte position - * @return byte array with PDU length - */ - public static byte[] addChecksum(byte[] isisPacket, int checksumBytePos1, int checksumBytePos2) { - //Set the checksum for the packet - //Convert the length to two bytes as the length field is 2 bytes - byte[] checksumInTwoBytes = new ChecksumCalculator().calculateLspChecksum( - isisPacket, checksumBytePos1, checksumBytePos2); - //isis header 3rd and 4th position represents length - isisPacket[checksumBytePos1] = checksumInTwoBytes[0]; - isisPacket[checksumBytePos2] = checksumInTwoBytes[1]; - return isisPacket; - } - - /** - * Adds frame a packet of 1498 of size. - * - * @param isisPacket ISIS packet - * @param interfaceIndex interface index - * @return byte array with 1498 is the length - */ - public static byte[] framePacket(byte[] isisPacket, int interfaceIndex) { - //Set the length of the packet - //Get the total length of the packet - int length = isisPacket.length; - //PDU_LENGTH + 1 byte for interface index - if (length < IsisConstants.PDU_LENGTH + 1) { - byte[] bytes = new byte[IsisConstants.PDU_LENGTH + 1]; - System.arraycopy(isisPacket, 0, bytes, 0, length); - bytes[IsisConstants.PDU_LENGTH] = (byte) interfaceIndex; - return bytes; - } - return isisPacket; - } - - /** - * Parse source and LAN ID. - * - * @param id source and LAN ID - * @return source and LAN ID - */ - public static List sourceAndLanIdToBytes(String id) { - List idList = new ArrayList<>(); - StringTokenizer tokenizer = new StringTokenizer(id, "." + "-"); - while (tokenizer.hasMoreElements()) { - int i = 0; - String str = tokenizer.nextToken(); - idList.add((byte) Integer.parseInt(str.substring(0, i + 2), 16)); - if (str.length() > 2) { - idList.add((byte) Integer.parseInt(str.substring(i + 2, str.length()), 16)); - } - } - return idList; - } - - /** - * Parse padding for PDU based on current length. - * - * @param currentLength current length - * @return byteArray padding array - */ - public static byte[] getPaddingTlvs(int currentLength) { - List bytes = new ArrayList<>(); - while (IsisConstants.PDU_LENGTH > currentLength) { - int length = IsisConstants.PDU_LENGTH - currentLength; - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.PADDING.value()); - if (length >= PADDING_FIXED_LENGTH) { - tlvHeader.setTlvLength(PADDING_FIXED_LENGTH); - } else { - tlvHeader.setTlvLength(IsisConstants.PDU_LENGTH - (currentLength + TLVHEADERLENGTH)); - } - PaddingTlv tlv = new PaddingTlv(tlvHeader); - bytes.addAll(Bytes.asList(tlv.asBytes())); - currentLength = currentLength + tlv.tlvLength() + TLVHEADERLENGTH; - } - byte[] byteArray = new byte[bytes.size()]; - int i = 0; - for (byte byt : bytes) { - byteArray[i++] = byt; - } - return byteArray; - } - - /** - * Converts an integer to two bytes. - * - * @param numberToConvert number to convert - * @return numInBytes given number as bytes - */ - public static byte[] convertToTwoBytes(int numberToConvert) { - - byte[] numInBytes = new byte[2]; - String s1 = Integer.toHexString(numberToConvert); - if (s1.length() % 2 != 0) { - s1 = "0" + s1; - } - byte[] hexas = DatatypeConverter.parseHexBinary(s1); - if (hexas.length == 1) { - numInBytes[0] = 0; - numInBytes[1] = hexas[0]; - } else { - numInBytes[0] = hexas[0]; - numInBytes[1] = hexas[1]; - } - return numInBytes; - } - - /** - * Converts a number to four bytes. - * - * @param numberToConvert number to convert - * @return numInBytes given number as bytes - */ - public static byte[] convertToFourBytes(int numberToConvert) { - byte[] numInBytes = new byte[4]; - String s1 = Integer.toHexString(numberToConvert); - if (s1.length() % 2 != 0) { - s1 = "0" + s1; - } - byte[] hexas = DatatypeConverter.parseHexBinary(s1); - if (hexas.length == 1) { - numInBytes[0] = 0; - numInBytes[1] = 0; - numInBytes[2] = 0; - numInBytes[3] = hexas[0]; - } else if (hexas.length == 2) { - numInBytes[0] = 0; - numInBytes[1] = 0; - numInBytes[2] = hexas[0]; - numInBytes[3] = hexas[1]; - } else if (hexas.length == 3) { - numInBytes[0] = 0; - numInBytes[1] = hexas[0]; - numInBytes[2] = hexas[1]; - numInBytes[3] = hexas[2]; - } else { - numInBytes[0] = hexas[0]; - numInBytes[1] = hexas[1]; - numInBytes[2] = hexas[2]; - numInBytes[3] = hexas[3]; - } - return numInBytes; - } - - /** - * Returns the P2P hello PDU. - * - * @param isisInterface ISIS interface instance - * @param paddingEnabled padding enabled or not - * @return hello PDU - */ - public static byte[] getP2pHelloPdu(IsisInterface isisInterface, boolean paddingEnabled) { - IsisHeader isisHeader = new IsisHeader(); - isisHeader.setIrpDiscriminator((byte) IsisConstants.IRPDISCRIMINATOR); - isisHeader.setPduHeaderLength((byte) IsisConstants.P2PHELLOHEADERLENGTH); - isisHeader.setVersion((byte) IsisConstants.ISISVERSION); - isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH); - isisHeader.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); - isisHeader.setVersion2((byte) IsisConstants.ISISVERSION); - isisHeader.setReserved((byte) IsisConstants.PDULENGTHPOSITION); - isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS); - P2PHelloPdu p2pHelloPdu = new P2PHelloPdu(isisHeader); - p2pHelloPdu.setCircuitType((byte) isisInterface.reservedPacketCircuitType()); - p2pHelloPdu.setSourceId(isisInterface.systemId()); - p2pHelloPdu.setHoldingTime(isisInterface.holdingTime()); - p2pHelloPdu.setPduLength(IsisConstants.PDU_LENGTH); - p2pHelloPdu.setLocalCircuitId((byte) IsisConstants.LOCALCIRCUITIDFORP2P); - - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.AREAADDRESS.value()); - tlvHeader.setTlvLength(0); - AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader); - areaAddressTlv.addAddress(isisInterface.areaAddress()); - p2pHelloPdu.addTlv(areaAddressTlv); - - tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value()); - tlvHeader.setTlvLength(0); - ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader); - protocolSupportedTlv.addProtocolSupported((byte) IsisConstants.PROTOCOLSUPPORTED); - p2pHelloPdu.addTlv(protocolSupportedTlv); - - tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value()); - tlvHeader.setTlvLength(0); - AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader); - adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.DOWN.value()); - adjacencyStateTlv.setLocalCircuitId(Integer.parseInt(isisInterface.circuitId())); - Set neighbors = isisInterface.neighbors(); - if (!neighbors.isEmpty()) { - IsisNeighbor neighbor = isisInterface.lookup(neighbors.iterator().next()); - adjacencyStateTlv.setAdjacencyType((byte) neighbor.interfaceState().value()); - adjacencyStateTlv.setNeighborSystemId(neighbor.neighborSystemId()); - adjacencyStateTlv.setNeighborLocalCircuitId(neighbor.localExtendedCircuitId()); - } - p2pHelloPdu.addTlv(adjacencyStateTlv); - - tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value()); - tlvHeader.setTlvLength(0); - IpInterfaceAddressTlv ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader); - ipInterfaceAddressTlv.addInterfaceAddres(isisInterface.interfaceIpAddress()); - p2pHelloPdu.addTlv(ipInterfaceAddressTlv); - - byte[] beforePadding = p2pHelloPdu.asBytes(); - byte[] helloMessage; - if (paddingEnabled) { - byte[] paddingTlvs = getPaddingTlvs(beforePadding.length); - helloMessage = Bytes.concat(beforePadding, paddingTlvs); - } else { - helloMessage = beforePadding; - } - return helloMessage; - } - - /** - * Returns the L1 hello PDU. - * - * @param isisInterface ISIS interface instance - * @param paddingEnabled padding enabled or not - * @return helloMessage hello PDU - */ - public static byte[] getL1HelloPdu(IsisInterface isisInterface, boolean paddingEnabled) { - return getL1OrL2HelloPdu(isisInterface, IsisPduType.L1HELLOPDU, paddingEnabled); - } - - /** - * Returns the L2 hello PDU. - * - * @param isisInterface ISIS interface instance - * @param paddingEnabled padding enabled or not - * @return helloMessage hello PDU - */ - public static byte[] getL2HelloPdu(IsisInterface isisInterface, boolean paddingEnabled) { - return getL1OrL2HelloPdu(isisInterface, IsisPduType.L2HELLOPDU, paddingEnabled); - } - - /** - * Returns the hello PDU. - * - * @param isisInterface ISIS interface instance - * @param paddingEnabled padding enabled or not - * @return helloMessage hello PDU - */ - private static byte[] getL1OrL2HelloPdu(IsisInterface isisInterface, IsisPduType isisPduType, - boolean paddingEnabled) { - String lanId = ""; - IsisHeader isisHeader = new IsisHeader(); - isisHeader.setIrpDiscriminator((byte) IsisConstants.IRPDISCRIMINATOR); - isisHeader.setPduHeaderLength((byte) IsisConstants.HELLOHEADERLENGTH); - isisHeader.setVersion((byte) IsisConstants.ISISVERSION); - isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH); - if (isisPduType == IsisPduType.L1HELLOPDU) { - isisHeader.setIsisPduType(IsisPduType.L1HELLOPDU.value()); - lanId = isisInterface.l1LanId(); - } else if (isisPduType == IsisPduType.L2HELLOPDU) { - isisHeader.setIsisPduType(IsisPduType.L2HELLOPDU.value()); - lanId = isisInterface.l2LanId(); - } - isisHeader.setVersion2((byte) IsisConstants.ISISVERSION); - isisHeader.setReserved((byte) IsisConstants.PDULENGTHPOSITION); - isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS); - L1L2HelloPdu l1L2HelloPdu = new L1L2HelloPdu(isisHeader); - l1L2HelloPdu.setCircuitType((byte) isisInterface.reservedPacketCircuitType()); - l1L2HelloPdu.setSourceId(isisInterface.systemId()); - l1L2HelloPdu.setHoldingTime(isisInterface.holdingTime()); - l1L2HelloPdu.setPduLength(IsisConstants.PDU_LENGTH); - l1L2HelloPdu.setPriority((byte) isisInterface.priority()); - l1L2HelloPdu.setLanId(lanId); - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.AREAADDRESS.value()); - tlvHeader.setTlvLength(0); - AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader); - areaAddressTlv.addAddress(isisInterface.areaAddress()); - l1L2HelloPdu.addTlv(areaAddressTlv); - Set neighbors = isisInterface.neighbors(); - if (!neighbors.isEmpty()) { - List neighborMacs = new ArrayList<>(); - for (MacAddress neighbor : neighbors) { - IsisNeighbor isisNeighbor = isisInterface.lookup(neighbor); - if (isisPduType == IsisPduType.L1HELLOPDU) { - if (isisNeighbor.routerType() == IsisRouterType.L1 || - isisNeighbor.routerType() == IsisRouterType.L1L2) { - neighborMacs.add(neighbor); - } - } else if (isisPduType == IsisPduType.L2HELLOPDU) { - if (isisNeighbor.routerType() == IsisRouterType.L2 || - isisNeighbor.routerType() == IsisRouterType.L1L2) { - neighborMacs.add(neighbor); - } - } - } - - tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value()); - tlvHeader.setTlvLength(0); - - IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader); - for (MacAddress neighbor : neighborMacs) { - isisNeighborTlv.addNeighbor(neighbor); - } - l1L2HelloPdu.addTlv(isisNeighborTlv); - } - - tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value()); - tlvHeader.setTlvLength(0); - ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader); - protocolSupportedTlv.addProtocolSupported((byte) IsisConstants.PROTOCOLSUPPORTED); - l1L2HelloPdu.addTlv(protocolSupportedTlv); - - tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value()); - tlvHeader.setTlvLength(0); - IpInterfaceAddressTlv ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader); - ipInterfaceAddressTlv.addInterfaceAddres(isisInterface.interfaceIpAddress()); - l1L2HelloPdu.addTlv(ipInterfaceAddressTlv); - - byte[] beforePadding = l1L2HelloPdu.asBytes(); - byte[] helloMessage; - if (paddingEnabled) { - byte[] paddingTlvs = getPaddingTlvs(beforePadding.length); - helloMessage = Bytes.concat(beforePadding, paddingTlvs); - } else { - helloMessage = beforePadding; - } - return helloMessage; - } - - /** - * Converts a byte to integer variable. - * - * @param bytesToConvert bytes to convert - * @return integer representation of bytes - */ - public static int byteToInteger(byte[] bytesToConvert) { - final StringBuilder builder = new StringBuilder(); - for (byte eachByte : bytesToConvert) { - builder.append(String.format("%02x", eachByte)); - } - int number = Integer.parseInt(builder.toString(), 16); - return number; - } - - /** - * Converts a byte to long variable. - * - * @param bytesToConvert bytes to convert - * @return long representation of bytes - */ - public static long byteToLong(byte[] bytesToConvert) { - final StringBuilder builder = new StringBuilder(); - for (byte eachByte : bytesToConvert) { - builder.append(String.format("%02x", eachByte)); - } - long number = Long.parseLong(builder.toString(), 16); - return number; - } - - /** - * Converts a number to four bytes. - * - * @param numberToConvert number to convert - * @return numInBytes given number as bytes - */ - public static byte[] convertToFourBytes(long numberToConvert) { - byte[] numInBytes = new byte[4]; - String s1 = Long.toHexString(numberToConvert); - if (s1.length() % 2 != 0) { - s1 = "0" + s1; - } - if (s1.length() == 16) { - s1 = s1.substring(8, s1.length()); - } - byte[] hexas = DatatypeConverter.parseHexBinary(s1); - if (hexas.length == 1) { - numInBytes[0] = 0; - numInBytes[1] = 0; - numInBytes[2] = 0; - numInBytes[3] = hexas[0]; - } else if (hexas.length == 2) { - numInBytes[0] = 0; - numInBytes[1] = 0; - numInBytes[2] = hexas[0]; - numInBytes[3] = hexas[1]; - } else if (hexas.length == 3) { - numInBytes[0] = 0; - numInBytes[1] = hexas[0]; - numInBytes[2] = hexas[1]; - numInBytes[3] = hexas[2]; - } else { - numInBytes[0] = hexas[0]; - numInBytes[1] = hexas[1]; - numInBytes[2] = hexas[2]; - numInBytes[3] = hexas[3]; - } - return numInBytes; - } - - /** - * Converts a number to eight bit binary. - * - * @param binaryString string to binary - * @return numInBytes given number as bytes - */ - public static String toEightBitBinary(String binaryString) { - String eightBit = binaryString; - if (eightBit.length() % 8 != 0) { - int numOfZero = 8 - eightBit.length(); - while (numOfZero > 0) { - eightBit = "0" + eightBit; - numOfZero--; - } - } - return eightBit; - } - - /** - * Converts a number to four bit binary. - * - * @param binaryString string to binary - * @return numInBytes given number as bytes - */ - public static String toFourBitBinary(String binaryString) { - String fourBit = binaryString; - if (fourBit.length() % 4 != 0) { - int numOfZero = 4 - fourBit.length(); - while (numOfZero > 0) { - fourBit = "0" + fourBit; - numOfZero--; - } - } - return fourBit; - } - - /** - * Converts a number to three bytes. - * - * @param numberToConvert number to convert - * @return given number as bytes - */ - public static byte[] convertToThreeBytes(int numberToConvert) { - byte[] numInBytes = new byte[3]; - String s1 = Integer.toHexString(numberToConvert); - if (s1.length() % 2 != 0) { - s1 = "0" + s1; - } - byte[] hexas = DatatypeConverter.parseHexBinary(s1); - if (hexas.length == 1) { - numInBytes[0] = 0; - numInBytes[1] = 0; - numInBytes[2] = hexas[0]; - } else if (hexas.length == 2) { - numInBytes[0] = 0; - numInBytes[1] = hexas[0]; - numInBytes[2] = hexas[1]; - } else { - numInBytes[0] = hexas[0]; - numInBytes[1] = hexas[1]; - numInBytes[2] = hexas[2]; - } - return numInBytes; - } - - /** - * Converts the bytes of prefix to string type value. - * - * @param bytes array of prefix - * @return string value of prefix - */ - public static String prefixConversion(byte[] bytes) { - String prefix = ""; - for (int i = 0; i < bytes.length; i++) { - if (i < (bytes.length - 1)) { - prefix = prefix + bytes[i] + "."; - } else { - prefix = prefix + bytes[i]; - } - } - return prefix; - } - - /** - * Converts the prefix to bytes. - * - * @param prefix prefix - * @return prefix to bytes - */ - public static byte[] prefixToBytes(String prefix) { - List byteList = new ArrayList<>(); - StringTokenizer tokenizer = new StringTokenizer(prefix, "."); - while (tokenizer.hasMoreTokens()) { - byteList.add((byte) Integer.parseInt(tokenizer.nextToken())); - } - return Bytes.toArray(byteList); - } - - /** - * Return the DIS value from the systemId. - * - * @param systemId system Id. - * @return return true if DIS else false - */ - public static boolean checkIsDis(String systemId) { - StringTokenizer stringTokenizer = new StringTokenizer(systemId, "." + "-"); - int count = 0; - while (stringTokenizer.hasMoreTokens()) { - String str = stringTokenizer.nextToken(); - if (count == 3) { - int x = Integer.parseInt(str); - if (x > 0) { - return true; - } - } - count++; - } - return false; - } - - /** - * Return the systemId. - * - * @param systemId system Id. - * @return return system ID - */ - public static String removeTailingZeros(String systemId) { - StringTokenizer stringTokenizer = new StringTokenizer(systemId, "-"); - return stringTokenizer.nextToken(); - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/LspGenerator.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/LspGenerator.java deleted file mode 100644 index 194bf08ba7..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/LspGenerator.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.util; - -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisNeighbor; -import org.onosproject.isis.controller.IsisNetworkType; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.pdu.AttachedToOtherAreas; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.isispacket.tlv.AreaAddressTlv; -import org.onosproject.isis.io.isispacket.tlv.HostNameTlv; -import org.onosproject.isis.io.isispacket.tlv.IpExtendedReachabilityTlv; -import org.onosproject.isis.io.isispacket.tlv.IpInterfaceAddressTlv; -import org.onosproject.isis.io.isispacket.tlv.IpInternalReachabilityTlv; -import org.onosproject.isis.io.isispacket.tlv.IsReachabilityTlv; -import org.onosproject.isis.io.isispacket.tlv.MetricOfInternalReachability; -import org.onosproject.isis.io.isispacket.tlv.MetricsOfReachability; -import org.onosproject.isis.io.isispacket.tlv.ProtocolSupportedTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; -import org.onosproject.isis.io.isispacket.tlv.TlvType; - -import java.util.List; - -/** - * Representation of link state PDU generator. - */ -public class LspGenerator { - - public LsPdu getLsp(IsisInterface isisInterface, String lspId, IsisPduType isisPduType, - List allConfiguredInterfaceIps) { - IsisHeader header = getHeader(isisPduType); - LsPdu lsp = new LsPdu(header); - - lsp.setPduLength(0); - lsp.setRemainingLifeTime(IsisConstants.LSPMAXAGE); - lsp.setLspId(lspId); - lsp.setSequenceNumber(isisInterface.isisLsdb().lsSequenceNumber(isisPduType)); - lsp.setCheckSum(0); - if (isisPduType == IsisPduType.L1LSPDU) { - lsp.setTypeBlock((byte) 1); - lsp.setIntermediateSystemType((byte) 1); - } else if (isisPduType == IsisPduType.L2LSPDU) { - lsp.setTypeBlock((byte) 3); - lsp.setIntermediateSystemType((byte) 3); - } - lsp.setAttachedToOtherAreas(AttachedToOtherAreas.NONE); - lsp.setPartitionRepair(false); - lsp.setLspDbol(false); - - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.AREAADDRESS.value()); - tlvHeader.setTlvLength(0); - AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader); - areaAddressTlv.addAddress(isisInterface.areaAddress()); - lsp.addTlv(areaAddressTlv); - - tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value()); - tlvHeader.setTlvLength(0); - ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader); - protocolSupportedTlv.addProtocolSupported((byte) IsisConstants.PROTOCOLSUPPORTED); - lsp.addTlv(protocolSupportedTlv); - - tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value()); - tlvHeader.setTlvLength(0); - IpInterfaceAddressTlv ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader); - for (Ip4Address ipaddress : allConfiguredInterfaceIps) { - ipInterfaceAddressTlv.addInterfaceAddres(ipaddress); - } - lsp.addTlv(ipInterfaceAddressTlv); - - tlvHeader.setTlvType(TlvType.HOSTNAME.value()); - tlvHeader.setTlvLength(0); - HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader); - hostNameTlv.setHostName(isisInterface.intermediateSystemName()); - lsp.addTlv(hostNameTlv); - - tlvHeader.setTlvType(TlvType.ISREACHABILITY.value()); - tlvHeader.setTlvLength(0); - IsReachabilityTlv isReachabilityTlv = new IsReachabilityTlv(tlvHeader); - isReachabilityTlv.setReserved(0); - MetricsOfReachability metricsOfReachability = new MetricsOfReachability(); - metricsOfReachability.setDefaultMetric((byte) 10); - metricsOfReachability.setDefaultIsInternal(true); - metricsOfReachability.setDelayMetric((byte) 10); - metricsOfReachability.setDelayIsInternal(true); - metricsOfReachability.setDelayMetricSupported(true); - metricsOfReachability.setExpenseMetric((byte) 10); - metricsOfReachability.setExpenseIsInternal(true); - metricsOfReachability.setExpenseMetricSupported(true); - metricsOfReachability.setErrorMetric((byte) 10); - metricsOfReachability.setErrorIsInternal(true); - metricsOfReachability.setErrorMetricSupported(true); - if (isisInterface.networkType() == IsisNetworkType.BROADCAST) { - if (isisPduType == IsisPduType.L1LSPDU) { - metricsOfReachability.setNeighborId(isisInterface.l1LanId()); - } else if (isisPduType == IsisPduType.L2LSPDU) { - metricsOfReachability.setNeighborId(isisInterface.l2LanId()); - } - } else if (isisInterface.networkType() == IsisNetworkType.P2P) { - MacAddress neighborMac = isisInterface.neighbors().iterator().next(); - IsisNeighbor neighbor = isisInterface.lookup(neighborMac); - metricsOfReachability.setNeighborId(neighbor.neighborSystemId() + ".00"); - } - - isReachabilityTlv.addMeticsOfReachability(metricsOfReachability); - lsp.addTlv(isReachabilityTlv); - - tlvHeader.setTlvType(TlvType.IPINTERNALREACHABILITY.value()); - tlvHeader.setTlvLength(0); - IpInternalReachabilityTlv ipInterReacTlv = new IpInternalReachabilityTlv(tlvHeader); - MetricOfInternalReachability metricOfIntRea = new MetricOfInternalReachability(); - metricOfIntRea.setDefaultMetric((byte) 10); - metricOfIntRea.setDefaultIsInternal(true); - metricOfIntRea.setDefaultDistributionDown(true); - metricOfIntRea.setDelayMetric((byte) 0); - metricOfIntRea.setDelayMetricSupported(false); - metricOfIntRea.setDelayIsInternal(true); - metricOfIntRea.setExpenseMetric((byte) 0); - metricOfIntRea.setExpenseMetricSupported(false); - metricOfIntRea.setExpenseIsInternal(true); - metricOfIntRea.setErrorMetric((byte) 0); - metricOfIntRea.setErrorMetricSupported(false); - metricOfIntRea.setExpenseIsInternal(true); - Ip4Address ip4Address = isisInterface.interfaceIpAddress(); - byte[] ipAddress = ip4Address.toOctets(); - // ipAddress[ipAddress.length - 1] = 0; - byte[] networkmass = isisInterface.networkMask(); - // metric calculation part - byte[] result = new byte[ipAddress.length]; - result[0] = (byte) (ipAddress[0] & networkmass[0]); - result[1] = (byte) (ipAddress[1] & networkmass[1]); - result[2] = (byte) (ipAddress[2] & networkmass[2]); - result[3] = (byte) (ipAddress[3] & networkmass[3]); - metricOfIntRea.setIpAddress(Ip4Address.valueOf(result)); - metricOfIntRea.setSubnetAddress(Ip4Address.valueOf(isisInterface.networkMask())); - ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea); - lsp.addTlv(ipInterReacTlv); - - tlvHeader.setTlvType(TlvType.IPEXTENDEDREACHABILITY.value()); - tlvHeader.setTlvLength(0); - IpExtendedReachabilityTlv extendedTlv = new IpExtendedReachabilityTlv(tlvHeader); - extendedTlv.setDown(false); - extendedTlv.setMetric(10); - extendedTlv.setPrefix("192.168.7"); - extendedTlv.setPrefixLength(24); - extendedTlv.setSubTlvLength((byte) 0); - extendedTlv.setSubTlvPresence(false); - lsp.addTlv(extendedTlv); - - return lsp; - } - - public IsisHeader getHeader(IsisPduType pduType) { - IsisHeader isisHeader = new IsisHeader(); - isisHeader.setIrpDiscriminator((byte) IsisConstants.IRPDISCRIMINATOR); - isisHeader.setPduHeaderLength((byte) IsisUtil.getPduHeaderLength(pduType.value())); - isisHeader.setVersion((byte) IsisConstants.ISISVERSION); - isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH); - isisHeader.setIsisPduType(pduType.value()); - isisHeader.setVersion2((byte) IsisConstants.ISISVERSION); - isisHeader.setReserved((byte) IsisConstants.RESERVED); - isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS); - return isisHeader; - } -} diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/package-info.java deleted file mode 100644 index 8a896fba8e..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS protocol util. - */ -package org.onosproject.isis.io.util; \ No newline at end of file diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/package-info.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/package-info.java deleted file mode 100644 index 2de3c81339..0000000000 --- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ISIS protocol. - */ -package org.onosproject.isis; \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisHeaderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisHeaderTest.java deleted file mode 100644 index d9fbb4a4d0..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisHeaderTest.java +++ /dev/null @@ -1,310 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisPduType; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for IsisHeader. - */ -public class IsisHeaderTest { - - private IsisHeader isisHeader; - private MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00"); - private int result; - private MacAddress result1; - private byte result2; - private IsisPduType result3; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - isisHeader = new IsisHeader(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - isisHeader = null; - } - - /** - * Tests interfaceIndex() getter method. - */ - @Test - public void testInterfaceIndex() throws Exception { - isisHeader.setInterfaceIndex(1); - result = isisHeader.interfaceIndex(); - assertThat(result, is(1)); - } - - /** - * Tests interfaceIndex() setter method. - */ - @Test - public void testSetInterfaceIndex() throws Exception { - isisHeader.setInterfaceIndex(1); - result = isisHeader.interfaceIndex(); - assertThat(result, is(1)); - } - - /** - * Tests interfaceMac() getter method. - */ - @Test - public void testInterfaceMac() throws Exception { - isisHeader.setInterfaceMac(macAddress); - result1 = isisHeader.interfaceMac(); - assertThat(result1, is(macAddress)); - } - - /** - * Tests sourceMac() getter method. - */ - @Test - public void testSourceMac() throws Exception { - isisHeader.setSourceMac(macAddress); - result1 = isisHeader.sourceMac(); - assertThat(result1, is(macAddress)); - } - - /** - * Tests sourceMac() setter method. - */ - @Test - public void testSetSourceMac() throws Exception { - isisHeader.setSourceMac(macAddress); - result1 = isisHeader.sourceMac(); - assertThat(result1, is(macAddress)); - } - - /** - * Tests interfaceMac() setter method. - */ - @Test - public void testSetInterfaceMac() throws Exception { - isisHeader.setSourceMac(macAddress); - result1 = isisHeader.sourceMac(); - assertThat(result1, is(macAddress)); - } - - /** - * Tests version2() getter method. - */ - @Test - public void testVersion2() throws Exception { - isisHeader.setVersion2((byte) 1); - result2 = isisHeader.version2(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests version2() setter method. - */ - @Test - public void testSetVersion2() throws Exception { - isisHeader.setVersion2((byte) 1); - result2 = isisHeader.version2(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests maximumAreaAddresses() getter method. - */ - @Test - public void testMaximumAreaAddresses() throws Exception { - isisHeader.setMaximumAreaAddresses((byte) 1); - result2 = isisHeader.maximumAreaAddresses(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests maximumAreaAddresses() setter method. - */ - @Test - public void testSetMaximumAreaAddresses() throws Exception { - isisHeader.setMaximumAreaAddresses((byte) 1); - result2 = isisHeader.maximumAreaAddresses(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests reserved() getter method. - */ - @Test - public void testReserved() throws Exception { - isisHeader.setReserved((byte) 1); - result2 = isisHeader.reserved(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests reserved() setter method. - */ - @Test - public void testSetReserved() throws Exception { - isisHeader.setReserved((byte) 1); - result2 = isisHeader.reserved(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests version() getter method. - */ - @Test - public void testVersion() throws Exception { - isisHeader.setVersion((byte) 1); - result2 = isisHeader.version(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests version() setter method. - */ - @Test - public void testSetVersion() throws Exception { - isisHeader.setVersion((byte) 1); - result2 = isisHeader.version(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests idLength() getter method. - */ - @Test - public void testIdLength() throws Exception { - isisHeader.setIdLength((byte) 1); - result2 = isisHeader.idLength(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests idLength() setter method. - */ - @Test - public void testSetIdLength() throws Exception { - isisHeader.setIdLength((byte) 1); - result2 = isisHeader.idLength(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests pduType() getter method. - */ - @Test - public void testPduType() throws Exception { - isisHeader.setIsisPduType(1); - result = isisHeader.pduType(); - assertThat(result, is(1)); - } - - /** - * Tests pduType() setter method. - */ - @Test - public void testSetIsisPduType() throws Exception { - isisHeader.setIsisPduType(1); - result = isisHeader.pduType(); - assertThat(result, is(1)); - } - - /** - * Tests pduHeaderLength() getter method. - */ - @Test - public void testPduHeaderLength() throws Exception { - isisHeader.setPduHeaderLength((byte) 1); - result2 = isisHeader.pduHeaderLength(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests pduHeaderLength() setter method. - */ - @Test - public void testSetPduHeaderLength() throws Exception { - isisHeader.setPduHeaderLength((byte) 1); - result2 = isisHeader.pduHeaderLength(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests irpDiscriminator() getter method. - */ - @Test - public void testIrpDiscriminator() throws Exception { - isisHeader.setIrpDiscriminator((byte) 1); - result2 = isisHeader.irpDiscriminator(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests irpDiscriminator() setter method. - */ - @Test - public void testSetIrpDiscriminator() throws Exception { - isisHeader.setIrpDiscriminator((byte) 1); - result2 = isisHeader.irpDiscriminator(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests irpDiscriminator() setter method. - */ - @Test - public void testIsisPduType() throws Exception { - isisHeader.setIsisPduType(IsisPduType.L1HELLOPDU.value()); - result3 = isisHeader.isisPduType(); - assertThat(result3, is(IsisPduType.L1HELLOPDU)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - isisHeader.readFrom(channelBuffer); - assertThat(isisHeader, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - isisHeader.asBytes(); - assertThat(isisHeader, is(notNullValue())); - } - - /** - * Tests populateHeader() method. - */ - @Test - public void testPopulateHeader() throws Exception { - isisHeader.populateHeader(new IsisHeader()); - assertThat(isisHeader, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisMessageReaderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisMessageReaderTest.java deleted file mode 100644 index 300fa1bb39..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/IsisMessageReaderTest.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket; - -import com.google.common.primitives.Bytes; -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisMessage; -import org.onosproject.isis.io.isispacket.pdu.Csnp; -import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; -import org.onosproject.isis.io.isispacket.pdu.LsPdu; -import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu; -import org.onosproject.isis.io.isispacket.pdu.Psnp; -import org.onosproject.isis.io.util.IsisUtil; - -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for IsisMessageReader. - */ -public class IsisMessageReaderTest { - - private final byte[] helloP2P = { - -125, 20, 1, 0, 17, 1, 0, 0, - 2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3, - 73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102, 8, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, -81, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - private final byte[] helloL1L2 = { - -125, 27, 1, 0, 15, 1, 0, 0, 1, 34, 34, 34, 34, 34, 34, 0, - 30, 5, -39, 64, 34, 34, 34, 34, 34, 34, 1, -127, 1, -52, 1, - 4, 3, 73, 0, 10, -124, 4, 10, 0, 10, 2, -45, 3, 0, 0, 0, - 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - private final byte[] l1Lsp = { - -125, 27, 1, 0, 18, 1, 0, 0, 0, 86, 4, -81, 34, 34, 34, - 34, 34, 34, 0, 0, 0, 0, 0, 9, 99, 11, 1, 1, 4, 3, 73, - 0, 10, -127, 1, -52, -119, 2, 82, 50, -124, 4, -64, -88, 10, 1, -128, - 24, 10, -128, -128, -128, 10, 0, 10, 0, -1, -1, -1, -4, 10, -128, -128, - -128, -64, -88, 10, 0, -1, -1, -1, 0, 2, 12, 0, 10, -128, -128, -128, - 51, 51, 51, 51, 51, 51, 2 - }; - private final byte[] csnp = { - -125, 33, 1, 6, 25, 1, 0, 3, 0, 67, 18, 52, 18, 52, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, - -1, -1, 9, 32, 4, -81, 18, 52, 18, 52, 0, 18, 0, 0, 0, - 0, 0, 41, -92, -30, 4, -81, 41, 41, 41, 41, 41, 41, 0, - 0, 0, 0, 0, 1, 91, 126 - }; - private final byte[] psnp = { - -125, 17, 1, 0, 27, 1, 0, 0, 0, 35, 41, 41, - 41, 41, 41, 41, 0, 9, 16, 4, -81, 18, 52, 18, - 52, 0, 18, 0, 0, 0, 0, 0, 42, -94, -29 - - }; - private IsisMessageReader reader; - private ChannelBuffer channelBuffer; - private IsisMessage message; - - @Before - public void setUp() throws Exception { - reader = new IsisMessageReader(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - reader = null; - channelBuffer = null; - message = null; - } - - /** - * Tests readFromBuffer() method. - */ - @Test - public void testReadFromBuffer() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(helloP2P); - message = reader.readFromBuffer(channelBuffer); - assertThat(message, is(instanceOf(P2PHelloPdu.class))); - - channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2); - message = reader.readFromBuffer(channelBuffer); - assertThat(message, is(instanceOf(L1L2HelloPdu.class))); - - byte[] tlv1 = Bytes.concat(l1Lsp, (IsisUtil.getPaddingTlvs(l1Lsp.length))); - channelBuffer = ChannelBuffers.copiedBuffer(tlv1); - message = reader.readFromBuffer(channelBuffer); - assertThat(message, is(instanceOf(LsPdu.class))); - - tlv1 = Bytes.concat(csnp, (IsisUtil.getPaddingTlvs(csnp.length))); - channelBuffer = ChannelBuffers.copiedBuffer(tlv1); - message = reader.readFromBuffer(channelBuffer); - assertThat(message, is(instanceOf(Csnp.class))); - - tlv1 = Bytes.concat(psnp, (IsisUtil.getPaddingTlvs(psnp.length))); - channelBuffer = ChannelBuffers.copiedBuffer(tlv1); - message = reader.readFromBuffer(channelBuffer); - assertThat(message, is(instanceOf(Psnp.class))); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/CsnpTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/CsnpTest.java deleted file mode 100644 index e96f13db2e..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/CsnpTest.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.pdu; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for Csnp. - */ -public class CsnpTest { - - private final String srcId = "1111.1111.1111"; - private final byte[] csnpBytes = { - 0, 67, 18, 52, 18, 52, 0, 0, 67, 18, 52, 18, 52, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, - -1, -1, 9, 32, 4, -81, 18, 52, 18, 52, 0, 18, 0, 0, 0, - 0, 0, 41, -92, -30, 4, -81, 41, 41, 41, 41, 41, 41, 0, - 0, 0, 0, 0, 1, 91, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 - }; - private Csnp csnp; - private IsisHeader isisHeader; - private IsisTlv isisTlv; - private TlvHeader tlvHeader; - private List resultList; - private String resultStr; - private int resultInt; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - isisHeader = new IsisHeader(); - isisHeader.setIsisPduType(IsisPduType.L1CSNP.value()); - csnp = new Csnp(isisHeader); - tlvHeader = new TlvHeader(); - isisTlv = new AdjacencyStateTlv(tlvHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - isisHeader = null; - csnp = null; - tlvHeader = null; - isisTlv = null; - } - - /** - * Tests getAllTlv() method. - */ - @Test - public void testGetAllTlv() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(csnpBytes); - csnp.readFrom(channelBuffer); - resultList = csnp.getAllTlv(); - assertThat(resultList.size(), is(0)); - } - - /** - * Tests sourceId() getter method. - */ - @Test - public void testSourceId() throws Exception { - csnp.setSourceId(srcId); - resultStr = csnp.sourceId(); - assertThat(resultStr, is(srcId)); - } - - /** - * Tests sourceId() setter method. - */ - @Test - public void testSetSourceId() throws Exception { - csnp.setSourceId(srcId); - resultStr = csnp.sourceId(); - assertThat(resultStr, is(srcId)); - } - - - /** - * Tests startLspId() getter method. - */ - @Test - public void testStartLspId() throws Exception { - csnp.setStartLspId(srcId); - resultStr = csnp.startLspId(); - assertThat(resultStr, is(srcId)); - } - - /** - * Tests startLspId() setter method. - */ - @Test - public void testSetStartLspId() throws Exception { - csnp.setStartLspId(srcId); - resultStr = csnp.startLspId(); - assertThat(resultStr, is(srcId)); - } - - /** - * Tests endLspId() getter method. - */ - @Test - public void testEndLspId() throws Exception { - csnp.setEndLspId(srcId); - resultStr = csnp.endLspId(); - assertThat(resultStr, is(srcId)); - } - - /** - * Tests endLspId() setter method. - */ - @Test - public void testSetEndLspId() throws Exception { - csnp.setEndLspId(srcId); - resultStr = csnp.endLspId(); - assertThat(resultStr, is(srcId)); - } - - /** - * Tests pduLength() getter method. - */ - @Test - public void testPduLength() throws Exception { - csnp.setPduLength(10); - resultInt = csnp.pduLength(); - assertThat(resultInt, is(10)); - } - - /** - * Tests pduLength() setter method. - */ - @Test - public void testSetPduLength() throws Exception { - csnp.setPduLength(10); - resultInt = csnp.pduLength(); - assertThat(resultInt, is(10)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(csnpBytes); - csnp.readFrom(channelBuffer); - assertThat(csnp, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(csnpBytes); - csnp.readFrom(channelBuffer); - result = csnp.asBytes(); - assertThat(csnp, is(notNullValue())); - } - - /** - * Tests isisPduHeader() method. - */ - @Test - public void testIsisPduHeader() throws Exception { - result = csnp.isisPduHeader(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests completeSequenceNumberPduBody() method. - */ - @Test - public void testCompleteSequenceNumberPduBody() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(csnpBytes); - csnp.readFrom(channelBuffer); - result = csnp.completeSequenceNumberPduBody(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat((csnp.toString()), is(notNullValue())); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(csnp.equals(new Csnp(new IsisHeader())), is(true)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - int hashCode = csnp.hashCode(); - assertThat(hashCode, is(notNullValue())); - } -} - - - diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/HelloPduTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/HelloPduTest.java deleted file mode 100644 index 2952a92962..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/HelloPduTest.java +++ /dev/null @@ -1,324 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.pdu; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisInterfaceState; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import java.util.List; - -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for HelloPdu. - */ -public class HelloPduTest { - - private final byte[] macAddr = new byte[]{ - (byte) 0xa4, (byte) 0x22, (byte) 0xc2, 0x00, 0x00, 0x00 - }; - private final String srcId = "1111.1111.1111"; - private final byte[] helloL1L2 = { - 1, 34, 34, 34, 34, 34, 34, 0, - 30, 5, -39, 64, 34, 34, 34, 34, 34, 34, 1, -127, 1, -52, 1, - 4, 3, 73, 0, 10, -124, 4, 10, 0, 10, 2, -45, 3, 0, 0, 0, - 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - - private HelloPdu helloPdu; - private IsisHeader isisHeader; - private IsisTlv isisTlv; - private TlvHeader tlvHeader; - private MacAddress macAddress; - private List resultList; - private List resultListStr; - private List resultListIPv4; - private List resultListMac; - private IsisInterfaceState resultAdjState; - private String resultStr; - private int resultInt; - private byte resultByte; - private ChannelBuffer channelBuffer; - private HelloPdu pdu; - - @Before - public void setUp() throws Exception { - isisHeader = new IsisHeader(); - helloPdu = new L1L2HelloPdu(isisHeader); - tlvHeader = new TlvHeader(); - isisTlv = new AdjacencyStateTlv(tlvHeader); - macAddress = new MacAddress(macAddr); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - pdu = helloPdu; - } - - @After - public void tearDown() throws Exception { - isisHeader = null; - helloPdu = null; - isisTlv = null; - tlvHeader = null; - macAddress = null; - } - - /** - * Tests addTlv() getter method. - */ - @Test - public void testAddTlv() throws Exception { - helloPdu.addTlv(isisTlv); - resultList = helloPdu.tlvs(); - assertThat(resultList.size(), is(1)); - } - - /** - * Tests tlvs() method. - */ - @Test - public void testTlvs() throws Exception { - helloPdu.addTlv(isisTlv); - resultList = helloPdu.tlvs(); - assertThat(resultList.size(), is(1)); - } - - /** - * Tests areaAddress() method. - */ - @Test - public void testAreaAddress() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2); - helloPdu.readFrom(channelBuffer); - resultListStr = helloPdu.areaAddress(); - assertThat(resultListStr.size(), is(1)); - } - - /** - * Tests interfaceIpAddresse() method. - */ - @Test - public void testInterfaceIpAddresses() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2); - helloPdu.readFrom(channelBuffer); - resultListIPv4 = helloPdu.interfaceIpAddresses(); - assertThat(resultListIPv4.size(), is(1)); - } - - /** - * Tests neighborList() method. - */ - @Test - public void testNeighborList() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2); - helloPdu.readFrom(channelBuffer); - resultListMac = helloPdu.neighborList(); - assertThat(resultListMac, is(nullValue())); - } - - /** - * Tests adjacencyState() method. - */ - @Test - public void testAdjacencyState() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2); - helloPdu.readFrom(channelBuffer); - resultAdjState = helloPdu.adjacencyState(); - assertThat(resultAdjState, is(nullValue())); - } - - /** - * Tests sourceId() getter method. - */ - @Test - public void testSourceId() throws Exception { - helloPdu.setSourceId(srcId); - resultStr = helloPdu.sourceId(); - assertThat(resultStr, is(srcId)); - } - - /** - * Tests sourceId() setter method. - */ - @Test - public void testSetSourceId() throws Exception { - helloPdu.setSourceId(srcId); - resultStr = helloPdu.sourceId(); - assertThat(resultStr, is(srcId)); - } - - /** - * Tests pduLength() getter method. - */ - @Test - public void testPduLength() throws Exception { - helloPdu.setPduLength(10); - resultInt = helloPdu.pduLength(); - assertThat(resultInt, is(10)); - - } - - /** - * Tests pduLength() setter method. - */ - @Test - public void testSetPduLength() throws Exception { - helloPdu.setPduLength(10); - resultInt = helloPdu.pduLength(); - assertThat(resultInt, is(10)); - } - - /** - * Tests holdingTime() getter method. - */ - @Test - public void testHoldingTime() throws Exception { - helloPdu.setHoldingTime(10); - resultInt = helloPdu.holdingTime(); - assertThat(resultInt, is(10)); - } - - /** - * Tests holdingTime() setter method. - */ - @Test - public void testSetHoldingTime() throws Exception { - helloPdu.setHoldingTime(10); - resultInt = helloPdu.holdingTime(); - assertThat(resultInt, is(10)); - } - - /** - * Tests circuitType() getter method. - */ - @Test - public void testCircuitType() throws Exception { - helloPdu.setCircuitType((byte) 1); - resultByte = helloPdu.circuitType(); - assertThat(resultByte, is((byte) 1)); - } - - /** - * Tests circuitType() setter method. - */ - @Test - public void testSetCircuitType() throws Exception { - helloPdu.setCircuitType((byte) 1); - resultByte = helloPdu.circuitType(); - assertThat(resultByte, is((byte) 1)); - } - - /** - * Tests toString() getter method. - */ - @Test - public void testToString() throws Exception { - pdu = helloPdu; - assertThat(pdu.toString(), is(notNullValue())); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - pdu = helloPdu; - assertThat(pdu.equals(new L1L2HelloPdu(new IsisHeader())), is(true)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - pdu = helloPdu; - resultInt = pdu.hashCode(); - assertThat(resultInt, is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPduTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPduTest.java deleted file mode 100644 index db87ba119a..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/L1L2HelloPduTest.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.pdu; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.io.isispacket.IsisHeader; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for L1L2HelloPdu. - */ -public class L1L2HelloPduTest { - private final String lanId = "1111.1111.1111"; - private final byte[] helloL1L2 = { - 1, 34, 34, 34, 34, 34, 34, 0, - 30, 5, -39, 64, 34, 34, 34, 34, 34, 34, 1, -127, 1, -52, 1, - 4, 3, 73, 0, 10, -124, 4, 10, 0, 10, 2, -45, 3, 0, 0, 0, - 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - private L1L2HelloPdu l1L2HelloPdu; - private IsisHeader isisHeader; - private String resultStr; - private byte resultByte; - private int resultInt; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - isisHeader = new IsisHeader(); - isisHeader.setIsisPduType(15); - l1L2HelloPdu = new L1L2HelloPdu(isisHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - isisHeader = null; - l1L2HelloPdu = null; - } - - /** - * Tests setLanId() getter method. - */ - @Test - public void testLanId() throws Exception { - l1L2HelloPdu.setLanId(lanId); - resultStr = l1L2HelloPdu.lanId(); - assertThat(resultStr, is(lanId)); - } - - /** - * Tests setLanId() setter method. - */ - @Test - public void testSetLanId() throws Exception { - l1L2HelloPdu.setLanId(lanId); - resultStr = l1L2HelloPdu.lanId(); - assertThat(resultStr, is(lanId)); - } - - /** - * Tests priority() getter method. - */ - @Test - public void testPriority() throws Exception { - l1L2HelloPdu.setPriority((byte) 1); - resultByte = l1L2HelloPdu.priority(); - assertThat(resultByte, is((byte) 1)); - } - - /** - * Tests priority() setter method. - */ - @Test - public void testSetPriority() throws Exception { - l1L2HelloPdu.setPriority((byte) 1); - resultByte = l1L2HelloPdu.priority(); - assertThat(resultByte, is((byte) 1)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2); - l1L2HelloPdu.readFrom(channelBuffer); - assertThat(l1L2HelloPdu, is(notNullValue())); - } - - /** - * Tests asByte() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2); - l1L2HelloPdu.readFrom(channelBuffer); - result = l1L2HelloPdu.asBytes(); - assertThat(l1L2HelloPdu, is(notNullValue())); - } - - /** - * Tests l1l2IsisPduHeader() method. - */ - @Test - public void testL1l2IsisPduHeader() throws Exception { - result = l1L2HelloPdu.l1l2IsisPduHeader(); - assertThat(l1L2HelloPdu, is(notNullValue())); - } - - /** - * Tests l1l2HelloPduBody() method. - */ - @Test - public void testL1l2HelloPduBody() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(helloL1L2); - l1L2HelloPdu.readFrom(channelBuffer); - result = l1L2HelloPdu.l1l2HelloPduBody(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(l1L2HelloPdu.toString(), is(notNullValue())); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(l1L2HelloPdu.equals(new L1L2HelloPdu(new IsisHeader())), is(true)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - resultInt = l1L2HelloPdu.hashCode(); - assertThat(resultInt, is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/LsPduTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/LsPduTest.java deleted file mode 100644 index 5a19f2c895..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/LsPduTest.java +++ /dev/null @@ -1,347 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.io.isispacket.pdu; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.tlv.HostNameTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for LsPdu. - */ -public class LsPduTest { - private final String lspId = "1111.1111.1111"; - private final byte[] l1Lsp = { - 0, 86, 4, -81, 34, 34, 34, 34, 34, 34, 0, 0, 0, 0, 0, 9, 99, 11, 1, 1, 4, 3, 73, - 0, 10, -127, 1, -52, -119, 2, 82, 50, -124, 4, -64, -88, 10, 1, -128, 24, 10, - -128, -128, -128, 10, 0, 10, 0, -1, -1, -1, -4, 10, -128, -128, -128, -64, -88, - 10, 0, -1, -1, -1, 0, 2, 12, 0, 10, -128, -128, -128, 51, 51, 51, 51, 51, 51, 2 - }; - private LsPdu lsPdu; - private IsisHeader isisHeader; - private TlvHeader tlvHeader; - private int resultInt; - private boolean resultBool; - private byte resultByte; - private AttachedToOtherAreas resultObj; - private String resultStr; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - isisHeader = new IsisHeader(); - tlvHeader = new TlvHeader(); - isisHeader.setIsisPduType(IsisPduType.L1LSPDU.value()); - lsPdu = new LsPdu(isisHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - isisHeader = null; - lsPdu = null; - tlvHeader = null; - channelBuffer = null; - } - - /** - * Tests addTlv() method. - */ - @Test - public void testAddTlv() throws Exception { - lsPdu.addTlv(new HostNameTlv(tlvHeader)); - assertThat(lsPdu, is(notNullValue())); - } - - /** - * Tests remainingLifeTime() getter method. - */ - @Test - public void testRemainingLifeTime() throws Exception { - lsPdu.setRemainingLifeTime(10); - resultInt = lsPdu.remainingLifeTime(); - assertThat(resultInt, is(10)); - } - - /** - * Tests remainingLifeTime() setter method. - */ - @Test - public void testSetRemainingLifeTime() throws Exception { - lsPdu.setRemainingLifeTime(10); - resultInt = lsPdu.remainingLifeTime(); - assertThat(resultInt, is(10)); - } - - /** - * Tests lspDbol() getter method. - */ - @Test - public void testLspDbol() throws Exception { - lsPdu.setLspDbol(true); - resultBool = lsPdu.lspDbol(); - assertThat(resultBool, is(true)); - } - - /** - * Tests lspDbol() setter method. - */ - @Test - public void testSetLspDbol() throws Exception { - lsPdu.setLspDbol(true); - resultBool = lsPdu.lspDbol(); - assertThat(resultBool, is(true)); - } - - /** - * Tests typeBlock() getter method. - */ - @Test - public void testTypeBlock() throws Exception { - lsPdu.setTypeBlock((byte) 1); - resultByte = lsPdu.typeBlock(); - assertThat(resultByte, is((byte) 1)); - } - - /** - * Tests typeBlock() setter method. - */ - @Test - public void testSetTypeBlock() throws Exception { - lsPdu.setTypeBlock((byte) 1); - resultByte = lsPdu.typeBlock(); - assertThat(resultByte, is((byte) 1)); - } - - /** - * Tests sequenceNumber() getter method. - */ - @Test - public void testSequenceNumber() throws Exception { - lsPdu.setSequenceNumber(1); - resultInt = lsPdu.sequenceNumber(); - assertThat(resultInt, is(1)); - } - - /** - * Tests sequenceNumber() setter method. - */ - @Test - public void testSetSequenceNumber() throws Exception { - lsPdu.setSequenceNumber(1); - resultInt = lsPdu.sequenceNumber(); - assertThat(resultInt, is(1)); - } - - /** - * Tests checkSum() getter method. - */ - @Test - public void testCheckSum() throws Exception { - lsPdu.setCheckSum(1); - resultInt = lsPdu.checkSum(); - assertThat(resultInt, is(1)); - } - - /** - * Tests checkSum() setter method. - */ - @Test - public void testSetCheckSum() throws Exception { - lsPdu.setCheckSum(1); - resultInt = lsPdu.checkSum(); - assertThat(resultInt, is(1)); - } - - /** - * Tests partitionRepair() getter method. - */ - @Test - public void testPartitionRepair() throws Exception { - lsPdu.setPartitionRepair(true); - resultBool = lsPdu.partitionRepair(); - assertThat(resultBool, is(true)); - } - - /** - * Tests partitionRepair() setter method. - */ - @Test - public void testSetPartitionRepair() throws Exception { - lsPdu.setPartitionRepair(true); - resultBool = lsPdu.partitionRepair(); - assertThat(resultBool, is(true)); - } - - /** - * Tests attachedToOtherAreas() getter method. - */ - @Test - public void testAttachedToOtherAreas() throws Exception { - lsPdu.setAttachedToOtherAreas(AttachedToOtherAreas.DEFAULTMETRIC); - resultObj = lsPdu.attachedToOtherAreas(); - assertThat(resultObj, is(AttachedToOtherAreas.DEFAULTMETRIC)); - } - - /** - * Tests attachedToOtherAreas() setter method. - */ - @Test - public void testSetAttachedToOtherAreas() throws Exception { - lsPdu.setAttachedToOtherAreas(AttachedToOtherAreas.DEFAULTMETRIC); - resultObj = lsPdu.attachedToOtherAreas(); - assertThat(resultObj, is(AttachedToOtherAreas.DEFAULTMETRIC)); - } - - /** - * Tests intermediateSystemType() getter method. - */ - @Test - public void testIntermediateSystemType() throws Exception { - lsPdu.setIntermediateSystemType((byte) 1); - resultByte = lsPdu.intermediateSystemType(); - assertThat(resultByte, is((byte) 1)); - } - - /** - * Tests intermediateSystemType() setter method. - */ - @Test - public void testSetIntermediateSystemType() throws Exception { - lsPdu.setIntermediateSystemType((byte) 1); - resultByte = lsPdu.intermediateSystemType(); - assertThat(resultByte, is((byte) 1)); - } - - /** - * Tests lspId() getter method. - */ - @Test - public void testLspId() throws Exception { - lsPdu.setLspId(lspId); - resultStr = lsPdu.lspId(); - assertThat(resultStr, is(lspId)); - } - - /** - * Tests lspId() setter method. - */ - @Test - public void testSetLspId() throws Exception { - lsPdu.setLspId(lspId); - resultStr = lsPdu.lspId(); - assertThat(resultStr, is(lspId)); - } - - /** - * Tests pduLength() getter method. - */ - @Test - public void testPduLength() throws Exception { - lsPdu.setPduLength(10); - resultInt = lsPdu.pduLength(); - assertThat(resultInt, is(10)); - } - - /** - * Tests pduLength() setter method. - */ - @Test - public void testSetPduLength() throws Exception { - lsPdu.setPduLength(10); - resultInt = lsPdu.pduLength(); - assertThat(resultInt, is(10)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(l1Lsp); - lsPdu.readFrom(channelBuffer); - assertThat(lsPdu, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(l1Lsp); - lsPdu.readFrom(channelBuffer); - result = lsPdu.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests l1l2IsisPduHeader() method. - */ - @Test - public void testL1l2IsisPduHeader() throws Exception { - result = lsPdu.l1l2IsisPduHeader(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests l1l2LsPduBody() method. - */ - @Test - public void testL1l2LsPduBody() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(l1Lsp); - lsPdu.readFrom(channelBuffer); - result = lsPdu.l1l2LsPduBody(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(lsPdu.toString(), is(notNullValue())); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(lsPdu.equals(new LsPdu(new IsisHeader())), is(true)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - resultInt = lsPdu.hashCode(); - assertThat(resultInt, is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPduTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPduTest.java deleted file mode 100644 index 17dfd546f4..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/P2PHelloPduTest.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.io.isispacket.pdu; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.io.isispacket.IsisHeader; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for P2PHelloPdu. - */ -public class P2PHelloPduTest { - private final byte[] p2p = { - 2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3, - 73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102, 8, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 8, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, -81, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - private P2PHelloPdu p2PHelloPdu; - private IsisHeader isisHeader; - private byte resultByte; - private ChannelBuffer channelBuffer; - private byte[] result; - private int resultInt; - - @Before - public void setUp() throws Exception { - isisHeader = new IsisHeader(); - isisHeader.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); - p2PHelloPdu = new P2PHelloPdu(isisHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - - - } - - @After - public void tearDown() throws Exception { - isisHeader = null; - p2PHelloPdu = null; - channelBuffer = null; - } - - /** - * Tests localCircuitId() getter method. - */ - @Test - public void testLocalCircuitId() throws Exception { - p2PHelloPdu.setLocalCircuitId((byte) 1); - resultByte = p2PHelloPdu.localCircuitId(); - assertThat(resultByte, is((byte) 1)); - } - - /** - * Tests localCircuitId() setter method. - */ - @Test - public void testSetLocalCircuitId() throws Exception { - p2PHelloPdu.setLocalCircuitId((byte) 1); - resultByte = p2PHelloPdu.localCircuitId(); - assertThat(resultByte, is((byte) 1)); - } - - /** - * Tests setVariableLengths() method. - */ - @Test - public void testSetVariableLengths() throws Exception { - - - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(p2p); - p2PHelloPdu.readFrom(channelBuffer); - assertThat(p2PHelloPdu, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(p2p); - p2PHelloPdu.readFrom(channelBuffer); - result = p2PHelloPdu.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests p2PHeader() method. - */ - @Test - public void testP2PHeader() throws Exception { - result = p2PHelloPdu.p2PHeader(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests p2P2HelloPduBody() method. - */ - @Test - public void testP2P2HelloPduBody() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(p2p); - p2PHelloPdu.readFrom(channelBuffer); - result = p2PHelloPdu.p2P2HelloPduBody(); - assertThat(result, is(notNullValue())); - - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(p2PHelloPdu.toString(), is(notNullValue())); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(p2PHelloPdu.equals(new P2PHelloPdu(new IsisHeader())), is(true)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - resultInt = p2PHelloPdu.hashCode(); - assertThat(resultInt, is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/PsnpTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/PsnpTest.java deleted file mode 100644 index 7d71fd8d2f..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/pdu/PsnpTest.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.pdu; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.io.isispacket.IsisHeader; -import org.onosproject.isis.io.isispacket.tlv.AdjacencyStateTlv; -import org.onosproject.isis.io.isispacket.tlv.IsisTlv; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for Psnp. - */ -public class PsnpTest { - private final String srcId = "1111.1111.1111"; - private final byte[] psnpPkt = { - 0, 35, 41, 41, 41, 41, 41, 41, 0, 9, 16, 4, -81, 18, 52, 18, - 52, 0, 18, 0, 0, 0, 0, 0, 42, -94, -29 - }; - private Psnp psnp; - private IsisHeader isisHeader; - private ChannelBuffer channelBuffer; - private IsisTlv isisTlv; - private TlvHeader tlvHeader; - private List resultList; - private String resultStr; - private int resultInt; - private byte[] result; - - @Before - public void setUp() throws Exception { - isisHeader = new IsisHeader(); - isisHeader.setIsisPduType(IsisPduType.L1PSNP.value()); - psnp = new Psnp(isisHeader); - tlvHeader = new TlvHeader(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - isisTlv = new AdjacencyStateTlv(tlvHeader); - - } - - @After - public void tearDown() throws Exception { - isisHeader = null; - psnp = null; - channelBuffer = null; - tlvHeader = null; - isisTlv = null; - tlvHeader = null; - } - - /** - * Tests addTlv() method. - */ - @Test - public void testAddTlv() throws Exception { - psnp.addTlv(isisTlv); - resultList = psnp.getAllTlv(); - assertThat(resultList.size(), is(1)); - - } - - /** - * Tests getAllTlv() method. - */ - @Test - public void testGetAllTlv() throws Exception { - psnp.addTlv(isisTlv); - resultList = psnp.getAllTlv(); - assertThat(resultList.size(), is(1)); - - } - - /** - * Tests sourceId() getter method. - */ - @Test - public void testSourceId() throws Exception { - psnp.setSourceId(srcId); - resultStr = psnp.sourceId(); - assertThat(resultStr, is(srcId)); - } - - /** - * Tests sourceId() setter method. - */ - @Test - public void testSetSourceId() throws Exception { - psnp.setSourceId(srcId); - resultStr = psnp.sourceId(); - assertThat(resultStr, is(srcId)); - } - - /** - * Tests pduLength() getter method. - */ - @Test - public void testPduLength() throws Exception { - psnp.setPduLength(10); - resultInt = psnp.pduLength(); - assertThat(resultInt, is(10)); - } - - /** - * Tests pduLength() setter method. - */ - @Test - public void testSetPduLength() throws Exception { - psnp.setPduLength(10); - resultInt = psnp.pduLength(); - assertThat(resultInt, is(10)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(psnpPkt); - psnp.readFrom(channelBuffer); - assertThat(psnp, is(notNullValue())); - } - - /** - * Tests lasBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(psnpPkt); - psnp.readFrom(channelBuffer); - result = psnp.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests isisPduHeader() method. - */ - @Test - public void testIsisPduHeader() throws Exception { - result = psnp.isisPduHeader(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests partialSequenceNumberPduBody() method. - */ - @Test - public void testPartialSequenceNumberPduBody() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(psnpPkt); - psnp.readFrom(channelBuffer); - result = psnp.partialSequenceNumberPduBody(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat((psnp.toString()), is(notNullValue())); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(psnp.equals(new Psnp(new IsisHeader())), is(true)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - int hashCode = psnp.hashCode(); - assertThat(hashCode, is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlvTest.java deleted file mode 100644 index 5152975318..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlvTest.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for AdjacencyStateTlv. - */ -public class AdjacencyStateTlvTest { - - private final String neighborSystemId = "2929.2929.2929"; - private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private AdjacencyStateTlv adjacencyStateTlv; - private TlvHeader tlvHeader; - private int result; - private byte result2; - private String result1; - private ChannelBuffer channelBuffer; - private byte[] result3; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - adjacencyStateTlv = null; - channelBuffer = null; - } - - /** - * Tests localCircuitId() getter method. - */ - @Test - public void testLocalCircuitId() throws Exception { - adjacencyStateTlv.setLocalCircuitId(1); - result = adjacencyStateTlv.localCircuitId(); - assertThat(result, is(1)); - } - - /** - * Tests localCircuitId() setter method. - */ - @Test - public void testSetLocalCircuitId() throws Exception { - adjacencyStateTlv.setLocalCircuitId(1); - result = adjacencyStateTlv.localCircuitId(); - assertThat(result, is(1)); - } - - /** - * Tests neighborSystemId() getter method. - */ - @Test - public void testNeighborSystemId() throws Exception { - adjacencyStateTlv.setNeighborSystemId(neighborSystemId); - result1 = adjacencyStateTlv.neighborSystemId(); - assertThat(result1, is(neighborSystemId)); - } - - /** - * Tests neighborSystemId() setter method. - */ - @Test - public void testSetNeighborSystemId() throws Exception { - adjacencyStateTlv.setNeighborSystemId(neighborSystemId); - result1 = adjacencyStateTlv.neighborSystemId(); - assertThat(result1, is(neighborSystemId)); - } - - /** - * Tests neighborLocalCircuitId() getter method. - */ - @Test - public void testNeighborLocalCircuitId() throws Exception { - adjacencyStateTlv.setNeighborLocalCircuitId(1); - result = adjacencyStateTlv.neighborLocalCircuitId(); - assertThat(result, is(1)); - } - - /** - * Tests neighborLocalCircuitId() setter method. - */ - @Test - public void testSetNeighborLocalCircuitId() throws Exception { - adjacencyStateTlv.setNeighborLocalCircuitId(1); - result = adjacencyStateTlv.neighborLocalCircuitId(); - assertThat(result, is(1)); - } - - /** - * Tests adjacencyType() getter method. - */ - @Test - public void testAdjacencyType() throws Exception { - adjacencyStateTlv.setAdjacencyType((byte) 1); - result2 = adjacencyStateTlv.adjacencyType(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests adjacencyType() setter method. - */ - @Test - public void testSetAdjacencyType() throws Exception { - adjacencyStateTlv.setAdjacencyType((byte) 1); - result2 = adjacencyStateTlv.adjacencyType(); - assertThat(result2, is((byte) 1)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - adjacencyStateTlv.readFrom(channelBuffer); - assertThat(adjacencyStateTlv.adjacencyType(), is((byte) 0)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - adjacencyStateTlv.readFrom(channelBuffer); - result3 = adjacencyStateTlv.asBytes(); - assertThat(result3, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(adjacencyStateTlv.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlvTest.java deleted file mode 100644 index c33f5e4894..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlvTest.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for AreaAddressTlv. - */ -public class AreaAddressTlvTest { - - private final String areaAddress = "490001"; - private final byte[] tlv = {1, 49}; - private AreaAddressTlv areaAddressTlv; - private TlvHeader tlvHeader; - private List result; - private ChannelBuffer channelBuffer; - private byte[] result1; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - areaAddressTlv = new AreaAddressTlv(tlvHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - areaAddressTlv = null; - } - - /** - * Tests addAddress() method. - */ - @Test - public void testAddAddress() throws Exception { - areaAddressTlv.addAddress(areaAddress); - result = areaAddressTlv.areaAddress(); - assertThat(result.size(), is(1)); - } - - /** - * Tests areaAddress() setter method. - */ - @Test - public void testSetAreaAddress() throws Exception { - areaAddressTlv.addAddress(areaAddress); - result = areaAddressTlv.areaAddress(); - assertThat(result.size(), is(1)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - areaAddressTlv.readFrom(channelBuffer); - assertThat(areaAddressTlv.areaAddress().size(), is(1)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - areaAddressTlv.readFrom(channelBuffer); - result1 = areaAddressTlv.asBytes(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(areaAddressTlv.toString(), is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlvTest.java deleted file mode 100644 index 7a9d8cd3f9..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlvTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for HostNameTlv. - */ -public class HostNameTlvTest { - private final String hostName = "TEST"; - private final byte[] tlv = hostName.getBytes(); - private HostNameTlv hostNameTlv; - private TlvHeader tlvHeader; - private String result; - private ChannelBuffer channelBuffer; - private byte[] result1; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvLength(tlv.length); - hostNameTlv = new HostNameTlv(tlvHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - hostNameTlv = null; - } - - /** - * Tests hostName() getter method. - */ - @Test - public void testHostName() throws Exception { - hostNameTlv.setHostName(hostName); - result = hostNameTlv.hostName(); - assertThat(result, is(hostName)); - } - - /** - * Tests hostName() setter method. - */ - @Test - public void testSetHostName() throws Exception { - hostNameTlv.setHostName(hostName); - result = hostNameTlv.hostName(); - assertThat(result, is(hostName)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - hostNameTlv.readFrom(channelBuffer); - assertThat(hostNameTlv.hostName(), is(hostName)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - hostNameTlv.readFrom(channelBuffer); - result1 = hostNameTlv.asBytes(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(hostNameTlv.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlvTest.java deleted file mode 100644 index da1664b2df..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlvTest.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.io.isispacket.tlv.subtlv.AdministrativeGroup; -import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for IP ExtendedReachabilityTlv. - */ -public class IpExtendedReachabilityTlvTest { - private final String prefix = "00"; - private final byte[] tlv = {0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0}; - private final byte[] tlv1 = {0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0}; - private final byte[] tlv2 = {0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0}; - private final byte[] tlv3 = {0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0}; - private TlvHeader tlvHeader; - private IpExtendedReachabilityTlv ipExtendedReachabilityTlv; - private String result; - private boolean result1; - private int result2; - private TrafficEngineeringSubTlv trafficEngineeringSubTlv; - private byte result4; - private ChannelBuffer channelBuffer; - private byte[] result3; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - ipExtendedReachabilityTlv = new IpExtendedReachabilityTlv(tlvHeader); - trafficEngineeringSubTlv = new AdministrativeGroup(tlvHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - ipExtendedReachabilityTlv = null; - - } - - /** - * Tests prefix() getter method. - */ - @Test - public void testPrefix() throws Exception { - ipExtendedReachabilityTlv.setPrefix(prefix); - result = ipExtendedReachabilityTlv.prefix(); - assertThat(result, is("00")); - } - - /** - * Tests prefix() setter method. - */ - @Test - public void testSetPrefix() throws Exception { - ipExtendedReachabilityTlv.setPrefix(prefix); - result = ipExtendedReachabilityTlv.prefix(); - assertThat(result, is("00")); - } - - /** - * Tests isDown() getter method. - */ - - @Test - public void testIsDown() throws Exception { - ipExtendedReachabilityTlv.setDown(true); - result1 = ipExtendedReachabilityTlv.isDown(); - assertThat(result1, is(true)); - } - - /** - * Tests isDown() setter method. - */ - @Test - public void testSetDown() throws Exception { - ipExtendedReachabilityTlv.setDown(true); - result1 = ipExtendedReachabilityTlv.isDown(); - assertThat(result1, is(true)); - } - - /** - * Tests isSubTlvPresence() getter method. - */ - @Test - public void testIsSubTlvPresence() throws Exception { - ipExtendedReachabilityTlv.setSubTlvPresence(true); - result1 = ipExtendedReachabilityTlv.isSubTlvPresence(); - assertThat(result1, is(true)); - } - - /** - * Tests isSubTlvPresence() setter method. - */ - @Test - public void testSetSubTlvPresence() throws Exception { - ipExtendedReachabilityTlv.setSubTlvPresence(true); - result1 = ipExtendedReachabilityTlv.isSubTlvPresence(); - assertThat(result1, is(true)); - } - - /** - * Tests prefixLength() getter method. - */ - @Test - public void testPrefixLength() throws Exception { - ipExtendedReachabilityTlv.setPrefixLength(10); - result2 = ipExtendedReachabilityTlv.prefixLength(); - assertThat(result2, is(10)); - - } - - /** - * Tests prefixLength() setter method. - */ - @Test - public void testSetPrefixLength() throws Exception { - ipExtendedReachabilityTlv.setPrefixLength(10); - result2 = ipExtendedReachabilityTlv.prefixLength(); - assertThat(result2, is(10)); - } - - /** - * Tests addNeighbor() method. - */ - @Test - public void testAddSubTlv() throws Exception { - ipExtendedReachabilityTlv.addSubTlv(trafficEngineeringSubTlv); - assertThat(ipExtendedReachabilityTlv, is(notNullValue())); - - } - - /** - * Tests subTlvLength() getter method. - */ - @Test - public void testSubTlvLength() throws Exception { - ipExtendedReachabilityTlv.setSubTlvLength((byte) 10); - result4 = ipExtendedReachabilityTlv.subTlvLength(); - assertThat(result4, is((byte) 10)); - } - - /** - * Tests subTlvLength() setter method. - */ - @Test - public void testSetSubTlvLength() throws Exception { - ipExtendedReachabilityTlv.setSubTlvLength((byte) 10); - result4 = ipExtendedReachabilityTlv.subTlvLength(); - assertThat(result4, is((byte) 10)); - } - - /** - * Tests metric() getter method. - */ - @Test - public void testMetric() throws Exception { - ipExtendedReachabilityTlv.setMetric(10); - result2 = ipExtendedReachabilityTlv.metric(); - assertThat(result2, is(10)); - } - - /** - * Tests metric() setter method. - */ - @Test - public void testSetMetric() throws Exception { - ipExtendedReachabilityTlv.setMetric(10); - result2 = ipExtendedReachabilityTlv.metric(); - assertThat(result2, is(10)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - ipExtendedReachabilityTlv.readFrom(channelBuffer); - assertThat(ipExtendedReachabilityTlv.metric(), is(0)); - channelBuffer = ChannelBuffers.copiedBuffer(tlv1); - ipExtendedReachabilityTlv.readFrom(channelBuffer); - assertThat(ipExtendedReachabilityTlv.metric(), is(0)); - channelBuffer = ChannelBuffers.copiedBuffer(tlv2); - ipExtendedReachabilityTlv.readFrom(channelBuffer); - assertThat(ipExtendedReachabilityTlv.metric(), is(0)); - channelBuffer = ChannelBuffers.copiedBuffer(tlv3); - ipExtendedReachabilityTlv.readFrom(channelBuffer); - assertThat(ipExtendedReachabilityTlv.metric(), is(0)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - ipExtendedReachabilityTlv.readFrom(channelBuffer); - ipExtendedReachabilityTlv.setPrefix(prefix); - result3 = ipExtendedReachabilityTlv.asBytes(); - assertThat(result3, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(ipExtendedReachabilityTlv.toString(), is(notNullValue())); - } - -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlvTest.java deleted file mode 100644 index 1dd0fe8dbe..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlvTest.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for IP InterfaceAddressTlv. - */ -public class IpInterfaceAddressTlvTest { - private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10"); - private final byte[] tlv = {0, 0, 0, 0}; - private TlvHeader tlvHeader; - private IpInterfaceAddressTlv ipInterfaceAddressTlv; - private List resultList; - private byte[] result; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - ipInterfaceAddressTlv = null; - } - - /** - * Tests addInterfaceAddress() method. - */ - @Test - public void testAddInterfaceAddres() throws Exception { - ipInterfaceAddressTlv.addInterfaceAddres(ip4Address); - resultList = ipInterfaceAddressTlv.interfaceAddress(); - assertThat(resultList.size(), is(1)); - - } - - /** - * Tests interfaceAddress() getter method. - */ - @Test - public void testInterfaceAddress() throws Exception { - ipInterfaceAddressTlv.addInterfaceAddres(ip4Address); - resultList = ipInterfaceAddressTlv.interfaceAddress(); - assertThat(resultList.size(), is(1)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - ipInterfaceAddressTlv.readFrom(channelBuffer); - assertThat(ipInterfaceAddressTlv.interfaceAddress().size(), is(1)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - ipInterfaceAddressTlv.readFrom(channelBuffer); - result = ipInterfaceAddressTlv.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(ipInterfaceAddressTlv.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlvTest.java deleted file mode 100644 index 30130c63e5..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlvTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for IP InternalReachabilityTlv. - */ -public class IpInternalReachabilityTlvTest { - private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private TlvHeader tlvHeader; - private IpInternalReachabilityTlv ipInternalReachabilityTlv; - private MetricOfInternalReachability metricOfInternalReachability; - private byte[] result; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - ipInternalReachabilityTlv = new IpInternalReachabilityTlv(tlvHeader); - metricOfInternalReachability = new MetricOfInternalReachability(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - ipInternalReachabilityTlv = null; - } - - /** - * Tests addInternalReachabilityMetric() method. - */ - @Test - public void testAddInternalReachabilityMetric() throws Exception { - ipInternalReachabilityTlv.addInternalReachabilityMetric(metricOfInternalReachability); - assertThat(ipInternalReachabilityTlv, is(notNullValue())); - - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - ipInternalReachabilityTlv.readFrom(channelBuffer); - assertThat(ipInternalReachabilityTlv, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - ipInternalReachabilityTlv.readFrom(channelBuffer); - result = ipInternalReachabilityTlv.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(ipInternalReachabilityTlv.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlvTest.java deleted file mode 100644 index d27192639e..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlvTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for IS ReachabilityTlv. - */ -public class IsReachabilityTlvTest { - private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private TlvHeader tlvHeader; - private IsReachabilityTlv isReachabilityTlv; - private MetricsOfReachability metricsOfReachability; - private int resultInt; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - isReachabilityTlv = new IsReachabilityTlv(tlvHeader); - metricsOfReachability = new MetricsOfReachability(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - isReachabilityTlv = null; - } - - /** - * Tests reserved() getter method. - */ - @Test - public void testReserved() throws Exception { - isReachabilityTlv.setReserved(10); - resultInt = isReachabilityTlv.reserved(); - assertThat(resultInt, is(10)); - } - - /** - * Tests reserved() setter method. - */ - @Test - public void testSetReserved() throws Exception { - isReachabilityTlv.setReserved(10); - resultInt = isReachabilityTlv.reserved(); - assertThat(resultInt, is(10)); - } - - /** - * Tests addMeticsOfReachability() getter method. - */ - @Test - public void testAddMeticsOfReachability() throws Exception { - isReachabilityTlv.addMeticsOfReachability(metricsOfReachability); - assertThat(isReachabilityTlv, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - isReachabilityTlv.readFrom(channelBuffer); - assertThat(isReachabilityTlv, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - isReachabilityTlv.readFrom(channelBuffer); - result = isReachabilityTlv.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(isReachabilityTlv.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlvTest.java deleted file mode 100644 index a430c1cc20..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlvTest.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.MacAddress; - -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for ISIS NeighborTLV. - */ -public class IsisNeighborTlvTest { - private final MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00"); - private final byte[] tlv = {0, 0, 0, 0, 0, 0}; - private TlvHeader tlvHeader; - private IsisNeighborTlv isisNeighborTlv; - private List resultList; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - isisNeighborTlv = new IsisNeighborTlv(tlvHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - isisNeighborTlv = null; - } - - /** - * Tests addNeighbor() getter method. - */ - @Test - public void testAddNeighbor() throws Exception { - isisNeighborTlv.addNeighbor(macAddress); - resultList = isisNeighborTlv.neighbor(); - assertThat(resultList.size(), is(1)); - - } - - /** - * Tests neighbor() setter method. - */ - @Test - public void testNeighbor() throws Exception { - isisNeighborTlv.addNeighbor(macAddress); - resultList = isisNeighborTlv.neighbor(); - assertThat(resultList.size(), is(1)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - isisNeighborTlv.readFrom(channelBuffer); - assertThat(isisNeighborTlv.neighbor().size(), is(1)); - } - - /** - * Tests asBytes() getter method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - isisNeighborTlv.readFrom(channelBuffer); - result = isisNeighborTlv.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(isisNeighborTlv.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlvTest.java deleted file mode 100644 index 2daece4a55..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlvTest.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for LspEntriesTlv. - */ -public class LspEntriesTlvTest { - - private final byte[] entry = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private LspEntriesTlv lspEntriesTlv; - private TlvHeader tlvHeader; - private List lspEntries = new ArrayList(); - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - lspEntriesTlv = new LspEntriesTlv(tlvHeader); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - lspEntriesTlv = null; - lspEntries.clear(); - } - - /** - * Tests lspEntry() getter method. - */ - @Test - public void testLspEntry() throws Exception { - lspEntriesTlv.addLspEntry(new LspEntry()); - assertThat(lspEntriesTlv.lspEntry().size(), is(1)); - } - - /** - * Tests lspEntry() add method. - */ - @Test - public void testAddLspEntry() throws Exception { - lspEntriesTlv.addLspEntry(new LspEntry()); - assertThat(lspEntriesTlv.lspEntry().size(), is(1)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(entry); - lspEntriesTlv.readFrom(channelBuffer); - lspEntries = lspEntriesTlv.lspEntry(); - assertThat(lspEntriesTlv.lspEntry().size(), is(1)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(entry); - lspEntriesTlv.readFrom(channelBuffer); - lspEntriesTlv.asBytes(); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(lspEntriesTlv.toString(), is(notNullValue())); - } - -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntryTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntryTest.java deleted file mode 100644 index ba24d82bbe..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntryTest.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for LspEntry. - */ -public class LspEntryTest { - - private final String lspId = "10.10.10.10"; - private final byte[] entry = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private LspEntry lspEntry; - private int result; - private String result2; - private ChannelBuffer channelBuffer; - private byte[] result3; - - @Before - public void setUp() throws Exception { - lspEntry = new LspEntry(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - lspEntry = null; - channelBuffer = null; - } - - /** - * Tests lspSequenceNumber() getter method. - */ - @Test - public void testLspSequenceNumber() throws Exception { - lspEntry.setLspSequenceNumber(0); - result = lspEntry.lspSequenceNumber(); - assertThat(result, is(0)); - } - - /** - * Tests lspSequenceNumber() setter method. - */ - @Test - public void testSetLspSequenceNumber() throws Exception { - lspEntry.setLspSequenceNumber(0); - result = lspEntry.lspSequenceNumber(); - assertThat(result, is(0)); - } - - /** - * Tests lspChecksum() getter method. - */ - @Test - public void testLspChecksum() throws Exception { - lspEntry.setLspChecksum(0); - result = lspEntry.lspChecksum(); - assertThat(result, is(0)); - } - - /** - * Tests lspChecksum() setter method. - */ - @Test - public void testSetLspChecksum() throws Exception { - lspEntry.setLspChecksum(0); - result = lspEntry.lspChecksum(); - assertThat(result, is(0)); - } - - /** - * Tests remainingTime() getter method. - */ - @Test - public void testRemainingTime() throws Exception { - lspEntry.setRemainingTime(0); - result = lspEntry.remainingTime(); - assertThat(result, is(0)); - } - - /** - * Tests remainingTime() setter method. - */ - @Test - public void testSetRemainingTime() throws Exception { - lspEntry.setRemainingTime(0); - result = lspEntry.remainingTime(); - assertThat(result, is(0)); - } - - /** - * Tests lspId() getter method. - */ - @Test - public void testLspId() throws Exception { - lspEntry.setLspId(lspId); - result2 = lspEntry.lspId(); - assertThat(result2, is("10.10.10.10")); - } - - /** - * Tests lspId() getter method. - */ - @Test - public void testSetLspId() throws Exception { - lspEntry.setLspId(lspId); - result2 = lspEntry.lspId(); - assertThat(result2, is("10.10.10.10")); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(entry); - lspEntry.readFrom(channelBuffer); - assertThat(lspEntry, is(notNullValue())); - } - - /** - * Tests lspEntryAsBytes() method. - */ - @Test - public void testLspEntryAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(entry); - lspEntry.readFrom(channelBuffer); - result3 = lspEntry.lspEntryAsBytes(); - assertThat(lspEntry, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(lspEntry.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachabilityTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachabilityTest.java deleted file mode 100644 index 3ece0e013a..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachabilityTest.java +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for MetricOfInternalReachability. - */ -public class MetricOfInternalReachabilityTest { - - private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10"); - private final byte[] internalReachability = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private MetricOfInternalReachability reachability; - private Ip4Address result; - private boolean result1; - private byte result2; - private ChannelBuffer channelBuffer; - private byte[] result3; - - @Before - public void setUp() throws Exception { - reachability = new MetricOfInternalReachability(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - reachability = null; - result = null; - result1 = false; - } - - /** - * Tests getIpAddress() getter method. - */ - @Test - public void testGetIpAddress() throws Exception { - reachability.setIpAddress(ip4Address); - result = reachability.getIpAddress(); - assertThat(result, is(ip4Address)); - } - - /** - * Tests setIpAddress() setter method. - */ - @Test - public void testSetIpAddress() throws Exception { - reachability.setIpAddress(ip4Address); - result = reachability.getIpAddress(); - assertThat(result, is(ip4Address)); - } - - /** - * Tests getSubnetAddress() getter method. - */ - @Test - public void testGetSubnetAddres() throws Exception { - reachability.setSubnetAddress(ip4Address); - result = reachability.getSubnetAddress(); - assertThat(result, is(ip4Address)); - } - - /** - * Tests setSubnetAddress() setter method. - */ - @Test - public void testSetSubnetAddres() throws Exception { - reachability.setSubnetAddress(ip4Address); - result = reachability.getSubnetAddress(); - assertThat(result, is(ip4Address)); - } - - /** - * Tests isErrorIsInternal() getter method. - */ - @Test - public void testIsErrorIsInternal() throws Exception { - reachability.setErrorIsInternal(true); - result1 = reachability.isErrorIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isErrorIsInternal() setter method. - */ - @Test - public void testSetErrorIsInternal() throws Exception { - reachability.setErrorIsInternal(true); - result1 = reachability.isErrorIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isExpenseIsInternal() getter method. - */ - @Test - public void testIsExpenseIsInternal() throws Exception { - reachability.setExpenseIsInternal(true); - result1 = reachability.isExpenseIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isExpenseIsInternal() setter method. - */ - @Test - public void testSetExpenseIsInternal() throws Exception { - reachability.setExpenseIsInternal(true); - result1 = reachability.isExpenseIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isDelayIsInternal() getter method. - */ - @Test - public void testIsDelayIsInternal() throws Exception { - reachability.setDelayIsInternal(true); - result1 = reachability.isDelayIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isDelayIsInternal() setter method. - */ - @Test - public void testSetDelayIsInternal() throws Exception { - reachability.setDelayIsInternal(true); - result1 = reachability.isDelayIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isDefaultDistributionDown() getter method. - */ - @Test - public void testIsDefaultDistributionDown() throws Exception { - reachability.setDefaultDistributionDown(true); - result1 = reachability.isDefaultDistributionDown(); - assertThat(result1, is(true)); - } - - /** - * Tests isDefaultDistributionDown() setter method. - */ - @Test - public void testSetDefaultDistributionDown() throws Exception { - reachability.setDefaultDistributionDown(true); - result1 = reachability.isDefaultDistributionDown(); - assertThat(result1, is(true)); - } - - /** - * Tests isDefaultIsInternal() getter method. - */ - @Test - public void testIsDefaultIsInternal() throws Exception { - reachability.setDefaultIsInternal(true); - result1 = reachability.isDefaultIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isDefaultIsInternal() setter method. - */ - @Test - public void testSetDefaultIsInternal() throws Exception { - reachability.setDefaultIsInternal(true); - result1 = reachability.isDefaultIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isErrorMetricSupported() getter method. - */ - @Test - public void testIsErrorMetricSupported() throws Exception { - reachability.setErrorMetricSupported(true); - result1 = reachability.isErrorMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests isErrorMetricSupported() setter method. - */ - @Test - public void testSetErrorMetricSupported() throws Exception { - reachability.setErrorMetricSupported(true); - result1 = reachability.isErrorMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests isExpenseMetricSupported() setter method. - */ - @Test - public void testIsExpenseMetricSupported() throws Exception { - reachability.setExpenseMetricSupported(true); - result1 = reachability.isExpenseMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests isExpenseMetricSupported() setter method. - */ - @Test - public void testSetExpenseMetricSupported() throws Exception { - reachability.setExpenseMetricSupported(true); - result1 = reachability.isExpenseMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests isDelayMetricSupported() getter method. - */ - @Test - public void testIsDelayMetricSupported() throws Exception { - reachability.setDelayMetricSupported(true); - result1 = reachability.isDelayMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests isDelayMetricSupported() setter method. - */ - @Test - public void testSetDelayMetricSupported() throws Exception { - reachability.setDelayMetricSupported(true); - result1 = reachability.isDelayMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests errorMetric() getter method. - */ - @Test - public void testErrorMetric() throws Exception { - reachability.setErrorMetric((byte) 0); - result2 = reachability.errorMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests errorMetric() setter method. - */ - @Test - public void testSetErrorMetric() throws Exception { - reachability.setErrorMetric((byte) 0); - result2 = reachability.errorMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests delayMetric() getter method. - */ - @Test - public void testDelayMetric() throws Exception { - reachability.setDelayMetric((byte) 0); - result2 = reachability.delayMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests delayMetric() setter method. - */ - @Test - public void testSetDelayMetric() throws Exception { - reachability.setDelayMetric((byte) 0); - result2 = reachability.delayMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests defaultMetric() getter method. - */ - @Test - public void testDefaultMetric() throws Exception { - reachability.setDefaultMetric((byte) 0); - result2 = reachability.defaultMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests defaultMetric() setter method. - */ - @Test - public void testSetDefaultMetric() throws Exception { - reachability.setDefaultMetric((byte) 0); - result2 = reachability.defaultMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(internalReachability); - reachability.readFrom(channelBuffer); - assertThat(reachability, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(internalReachability); - reachability.readFrom(channelBuffer); - result3 = reachability.asBytes(); - assertThat(result3, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(reachability.toString(), is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachabilityTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachabilityTest.java deleted file mode 100644 index 080c3c50c4..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachabilityTest.java +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for MetricsOfReachability. - */ -public class MetricsOfReachabilityTest { - private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10"); - private final byte[] metricReachability = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private MetricsOfReachability reachability; - private String neighborId = "2929.2929.2929"; - private Ip4Address result; - private boolean result1; - private byte result2; - private ChannelBuffer channelBuffer; - private byte[] result3; - private String result4; - - @Before - public void setUp() throws Exception { - reachability = new MetricsOfReachability(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - result1 = false; - } - - @After - public void tearDown() throws Exception { - reachability = null; - result1 = false; - result3 = null; - channelBuffer = null; - } - - /** - * Tests isDelayIsInternal() getter method. - */ - @Test - public void testIsDelayIsInternal() throws Exception { - reachability.setDelayIsInternal(true); - result1 = reachability.isDelayIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isDelayIsInternal() setter method. - */ - @Test - public void testSetDelayIsInternal() throws Exception { - reachability.setDelayIsInternal(true); - result1 = reachability.isDelayIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isExpenseIsInternal() getter method. - */ - @Test - public void testIsExpenseIsInternal() throws Exception { - reachability.setExpenseIsInternal(true); - result1 = reachability.isExpenseIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isExpenseIsInternal() setter method. - */ - @Test - public void testSetExpenseIsInternal() throws Exception { - reachability.setExpenseIsInternal(true); - result1 = reachability.isExpenseIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isErrorIsInternal() getter method. - */ - @Test - public void testIsErrorIsInternal() throws Exception { - reachability.setErrorIsInternal(true); - result1 = reachability.isErrorIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isErrorIsInternal() setter method. - */ - @Test - public void testSetErrorIsInternal() throws Exception { - reachability.setErrorIsInternal(true); - result1 = reachability.isErrorIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isDefaultIsInternal() getter method. - */ - @Test - public void testIsDefaultIsInternal() throws Exception { - reachability.setDefaultIsInternal(true); - result1 = reachability.isDefaultIsInternal(); - assertThat(result1, is(true)); - } - - /** - * Tests isDefaultIsInternal() setter method. - */ - @Test - public void testSetDefaultIsInternal() throws Exception { - reachability.setDefaultIsInternal(true); - result1 = reachability.isDefaultIsInternal(); - assertThat(result1, is(true)); - } - - @Test - public void testIsDelayMetricSupported() throws Exception { - reachability.setDelayMetricSupported(true); - result1 = reachability.isDelayMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests isDelayMetricSupported() setter method. - */ - @Test - public void testSetDelayMetricSupported() throws Exception { - reachability.setDelayMetricSupported(true); - result1 = reachability.isDelayMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests isExpenseMetricSupported() getter method. - */ - @Test - public void testIsExpenseMetricSupported() throws Exception { - reachability.setExpenseMetricSupported(true); - result1 = reachability.isExpenseMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests isExpenseMetricSupported() setter method. - */ - @Test - public void testSetExpenseMetricSupported() throws Exception { - reachability.setExpenseMetricSupported(true); - result1 = reachability.isExpenseMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests isErrorMetricSupported() getter method. - */ - @Test - public void testIsErrorMetricSupported() throws Exception { - reachability.setErrorMetricSupported(true); - result1 = reachability.isErrorMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests isErrorMetricSupported() setter method. - */ - @Test - public void testSetErrorMetricSupported() throws Exception { - reachability.setErrorMetricSupported(true); - result1 = reachability.isErrorMetricSupported(); - assertThat(result1, is(true)); - } - - /** - * Tests neighborId() getter method. - */ - @Test - public void testNeighborId() throws Exception { - reachability.setNeighborId(neighborId); - result4 = reachability.neighborId(); - assertThat(result4, is(neighborId)); - } - - /** - * Tests neighborId() setter method. - */ - @Test - public void testSetNeighborId() throws Exception { - reachability.setNeighborId(neighborId); - result4 = reachability.neighborId(); - assertThat(result4, is(neighborId)); - } - - /** - * Tests defaultMetric() getter method. - */ - @Test - public void testDefaultMetric() throws Exception { - reachability.setDefaultMetric((byte) 0); - result2 = reachability.defaultMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests defaultMetric() setter method. - */ - @Test - public void testSetDefaultMetric() throws Exception { - reachability.setDefaultMetric((byte) 0); - result2 = reachability.defaultMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests delayMetric() getter method. - */ - @Test - public void testDelayMetric() throws Exception { - reachability.setDelayMetric((byte) 0); - result2 = reachability.delayMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests delayMetric() setter method. - */ - @Test - public void testSetDelayMetric() throws Exception { - reachability.setDelayMetric((byte) 0); - result2 = reachability.delayMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests expenseMetric() getter method. - */ - @Test - public void testExpenseMetric() throws Exception { - reachability.setExpenseMetric((byte) 0); - result2 = reachability.expenseMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests expenseMetric() setter method. - */ - @Test - public void testSetExpenseMetric() throws Exception { - reachability.setExpenseMetric((byte) 0); - result2 = reachability.expenseMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests errorMetric() getter method. - */ - @Test - public void testErrorMetric() throws Exception { - reachability.setErrorMetric((byte) 0); - result2 = reachability.errorMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests errorMetric() setter method. - */ - @Test - public void testSetErrorMetric() throws Exception { - reachability.setErrorMetric((byte) 0); - result2 = reachability.errorMetric(); - assertThat(result2, is((byte) 0)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(metricReachability); - reachability.readFrom(channelBuffer); - assertThat(reachability, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(metricReachability); - reachability.readFrom(channelBuffer); - result3 = reachability.asBytes(); - assertThat(result3, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(reachability.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIsTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIsTest.java deleted file mode 100644 index 72c93c0e0b..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIsTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for NeighborForExtendedIs. - * - * Here we have passed a byte array containing data for 2 neighbors along with - * their Sub TLVs. The test case checks whether the code is able to parse the Sub TLVs - * for each neighbor or not. Along with this it also checks for neighbor id and metric - * assigned to each neighbor. - */ -public class NeighborForExtendedIsTest { - private final byte[] tlv = { - (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x02, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x0a, (byte) 0x3f, (byte) 0x06, (byte) 0x04, (byte) 0x14, (byte) 0x14, (byte) 0x14, - (byte) 0xbe, (byte) 0x08, (byte) 0x04, (byte) 0x14, (byte) 0x14, (byte) 0x14, (byte) 0xd1, (byte) 0x09, - (byte) 0x04, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x0a, (byte) 0x04, (byte) 0x49, - (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x0b, (byte) 0x20, (byte) 0x49, (byte) 0x98, (byte) 0x96, - (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, - (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, - (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, - (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x12, (byte) 0x03, (byte) 0x00, - (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x01, - (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0a, (byte) 0x3f, (byte) 0x06, (byte) 0x04, (byte) 0x1e, - (byte) 0x1e, (byte) 0x1e, (byte) 0xce, (byte) 0x08, (byte) 0x04, (byte) 0x1e, (byte) 0x1e, (byte) 0x1e, - (byte) 0xa9, (byte) 0x09, (byte) 0x04, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x0a, - (byte) 0x04, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x0b, (byte) 0x20, (byte) 0x49, - (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, - (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, - (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, - (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x49, (byte) 0x98, (byte) 0x96, (byte) 0x80, (byte) 0x12, - (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00 - }; - - //tlv2 bytes are for testing the else part of readFrom() method - private final byte[] tlv2 = { - (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x00, (byte) 0x10, (byte) 0x02, (byte) 0x00, (byte) 0x00, - (byte) 0x00, (byte) 0x0a, (byte) 0x06, (byte) 0x2D, (byte) 0x04, (byte) 0x14, (byte) 0x14, (byte) 0x14, - (byte) 0xbe, (byte) 0x2D, (byte) 0xd1, (byte) 0x14, (byte) 0x14, (byte) 0x14, (byte) 0xd1, (byte) 0x09 - }; - private final String neighborId1 = "1000.1000.1002.00"; - private final String neighborId2 = "1000.1000.1001.00"; - private final int metric = 10; - private final int subTlvLength = 6; - private NeighborForExtendedIs neighborForExtendedIs; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - neighborForExtendedIs = new NeighborForExtendedIs(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - neighborForExtendedIs = null; - channelBuffer = null; - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - neighborForExtendedIs.readFrom(channelBuffer); - assertThat(neighborForExtendedIs.teSubTlv().size(), is(subTlvLength)); - assertThat(neighborForExtendedIs.neighborId(), is(neighborId1)); - assertThat(neighborForExtendedIs.metric(), is(metric)); - - neighborForExtendedIs = new NeighborForExtendedIs(); - neighborForExtendedIs.readFrom(channelBuffer); - assertThat(neighborForExtendedIs.teSubTlv().size(), is(subTlvLength)); - assertThat(neighborForExtendedIs.neighborId(), is(neighborId2)); - assertThat(neighborForExtendedIs.metric(), is(metric)); - } - - /** - * Tests else condition of readFrom() method. - */ - @Test - public void testElsePartOfReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv2); - neighborForExtendedIs = new NeighborForExtendedIs(); - neighborForExtendedIs.readFrom(channelBuffer); - assertThat(neighborForExtendedIs.neighborId(), is(neighborId1)); - assertThat(neighborForExtendedIs.metric(), is(metric)); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlvTest.java deleted file mode 100644 index 04e87c8d9b..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlvTest.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for PaddingTlv. - */ -public class PaddingTlvTest { - - private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0}; - private PaddingTlv paddingTlv; - private TlvHeader tlvHeader; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - paddingTlv = new PaddingTlv(tlvHeader); - } - - @After - public void tearDown() throws Exception { - paddingTlv = null; - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - paddingTlv.readFrom(channelBuffer); - assertThat(paddingTlv, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - paddingTlv.readFrom(channelBuffer); - result = paddingTlv.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests toString() getter method. - */ - @Test - public void testToString() throws Exception { - assertThat(paddingTlv.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlvTest.java deleted file mode 100644 index 962cf0c585..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlvTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for ProtocolSupportedTlv. - */ -public class ProtocolSupportedTlvTest { - private final byte[] tlv = {0}; - private ProtocolSupportedTlv protocolSupportedTlv; - private TlvHeader tlvHeader; - private List supported; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - protocolSupportedTlv = null; - channelBuffer = null; - } - - /** - * Tests addProtocolSupported() method. - */ - @Test - public void testAddProtocolSupported() throws Exception { - protocolSupportedTlv.addProtocolSupported((byte) 1); - supported = protocolSupportedTlv.protocolSupported(); - assertThat(supported.size(), is(1)); - } - - /** - * Tests addProtocolSupported() getter method. - */ - @Test - public void testProtocolSupported() throws Exception { - protocolSupportedTlv.addProtocolSupported((byte) 1); - supported = protocolSupportedTlv.protocolSupported(); - assertThat(supported.size(), is(1)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - protocolSupportedTlv.readFrom(channelBuffer); - supported = protocolSupportedTlv.protocolSupported(); - assertThat(supported.size(), is(1)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - protocolSupportedTlv.readFrom(channelBuffer); - result = protocolSupportedTlv.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests toString() method. - */ - @Test - public void testToString() throws Exception { - assertThat(protocolSupportedTlv.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvFinderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvFinderTest.java deleted file mode 100644 index bd9a443a42..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvFinderTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.instanceOf; - -/** - * Unit test class for TlvFinder. - */ -public class TlvFinderTest { - - private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private final byte[] tlv1 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private TlvFinder tlvFinder; - private TlvHeader tlvHeader; - private ChannelBuffer channelBuffer; - private IsisTlv isisTlv; - - @Before - public void setUp() throws Exception { - tlvFinder = new TlvFinder(); - tlvHeader = new TlvHeader(); - } - - @After - public void tearDown() throws Exception { - tlvFinder = null; - isisTlv = null; - } - - /** - * Tests IsisTlv() getter method. - */ - @Test - public void testIsisTlv() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - - tlvHeader.setTlvType(TlvType.AREAADDRESS.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(AreaAddressTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - tlvHeader.setTlvType(TlvType.HOSTNAME.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(HostNameTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - tlvHeader.setTlvType(TlvType.IDRPINFORMATION.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(IdrpInformationTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - tlvHeader.setTlvType(TlvType.IPEXTENDEDREACHABILITY.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(IpExtendedReachabilityTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(IpInterfaceAddressTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - tlvHeader.setTlvType(TlvType.IPINTERNALREACHABILITY.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(IpInternalReachabilityTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(ProtocolSupportedTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - tlvHeader.setTlvType(TlvType.ISREACHABILITY.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(IsReachabilityTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(IsisNeighborTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - tlvHeader.setTlvType(TlvType.LSPENTRY.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(LspEntriesTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv); - tlvHeader.setTlvType(TlvType.PADDING.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(PaddingTlv.class)); - - channelBuffer = ChannelBuffers.copiedBuffer(tlv1); - tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value()); - isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer); - assertThat(isisTlv, instanceOf(AdjacencyStateTlv.class)); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvHeaderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvHeaderTest.java deleted file mode 100644 index 0e7fba25a3..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvHeaderTest.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for TlvHeader. - */ -public class TlvHeaderTest { - - private TlvHeader tlvHeader; - private int result; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - channelBuffer = null; - } - - /** - * Tests tlvLength() getter method. - */ - @Test - public void testTlvLength() throws Exception { - tlvHeader.setTlvLength(1); - result = tlvHeader.tlvLength(); - assertThat(result, is(1)); - } - - /** - * Tests tlvLength() setter method. - */ - @Test - public void testSetTlvLength() throws Exception { - tlvHeader.setTlvLength(1); - result = tlvHeader.tlvLength(); - assertThat(result, is(1)); - } - - /** - * Tests tlvType() getter method. - */ - @Test - public void testTlvType() throws Exception { - tlvHeader.setTlvType(1); - result = tlvHeader.tlvType(); - assertThat(result, is(1)); - } - - /** - * Tests tlvType() setter method. - */ - @Test - public void testSetTlvType() throws Exception { - tlvHeader.setTlvType(1); - result = tlvHeader.tlvType(); - assertThat(result, is(1)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - tlvHeader.readFrom(channelBuffer); - assertThat(tlvHeader, is(notNullValue())); - } - - /** - * Tests asBytes() getter method. - */ - @Test - public void testAsBytes() throws Exception { - assertThat(tlvHeader.asBytes(), is(nullValue())); - } - - /** - * Tests tlvHeaderAsByteArray() method. - */ - @Test - public void testTlvHeaderAsByteArray() throws Exception { - tlvHeader.setTlvLength(1); - tlvHeader.setTlvType(1); - assertThat(tlvHeader.tlvHeaderAsByteArray(), is(notNullValue())); - assertThat(tlvHeader.tlvType(), is(1)); - assertThat(tlvHeader.tlvLength(), is(1)); - } - - /** - * Tests toString() getter method. - */ - @Test - public void testToString() throws Exception { - assertThat(tlvHeader.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytesTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytesTest.java deleted file mode 100644 index 7905eb596c..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytesTest.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv; - -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.MacAddress; -import org.onosproject.isis.controller.IsisInterfaceState; -import org.onosproject.isis.io.util.IsisConstants; - -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for TlvsToBytes. - */ -public class TlvsToBytesTest { - private final String areaAddress = "49"; - private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10"); - private final String systemName = "ROUTER"; - private final String neighborId = "2929.2929.2929"; - private List tlv; - private MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00"); - private String prefix = "192.168.7"; - - /** - * Tests TlvToBytes() method. - */ - @Test - public void testTlvToBytes() throws Exception { - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(TlvType.AREAADDRESS.value()); - tlvHeader.setTlvLength(0); - AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader); - areaAddressTlv.addAddress(areaAddress); - tlv = TlvsToBytes.tlvToBytes(areaAddressTlv); - assertThat(tlv, is(notNullValue())); - - tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value()); - tlvHeader.setTlvLength(0); - ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader); - protocolSupportedTlv.addProtocolSupported((byte) IsisConstants.PROTOCOLSUPPORTED); - tlv = TlvsToBytes.tlvToBytes(protocolSupportedTlv); - assertThat(tlv, is(notNullValue())); - - tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value()); - tlvHeader.setTlvLength(0); - IpInterfaceAddressTlv ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader); - ipInterfaceAddressTlv.addInterfaceAddres(ip4Address); - tlv = TlvsToBytes.tlvToBytes(ipInterfaceAddressTlv); - assertThat(tlv, is(notNullValue())); - - tlvHeader.setTlvType(TlvType.HOSTNAME.value()); - tlvHeader.setTlvLength(0); - HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader); - hostNameTlv.setHostName(systemName); - tlv = TlvsToBytes.tlvToBytes(hostNameTlv); - assertThat(tlv, is(notNullValue())); - - tlvHeader.setTlvType(TlvType.ISREACHABILITY.value()); - tlvHeader.setTlvLength(0); - IsReachabilityTlv isReachabilityTlv = new IsReachabilityTlv(tlvHeader); - isReachabilityTlv.setReserved(0); - MetricsOfReachability metricsOfReachability = new MetricsOfReachability(); - metricsOfReachability.setDefaultMetric((byte) 10); - metricsOfReachability.setDefaultIsInternal(true); - metricsOfReachability.setDelayMetric((byte) 10); - metricsOfReachability.setDelayIsInternal(true); - metricsOfReachability.setDelayMetricSupported(true); - metricsOfReachability.setExpenseMetric((byte) 10); - metricsOfReachability.setExpenseIsInternal(true); - metricsOfReachability.setExpenseMetricSupported(true); - metricsOfReachability.setErrorMetric((byte) 10); - metricsOfReachability.setErrorIsInternal(true); - metricsOfReachability.setErrorMetricSupported(true); - metricsOfReachability.setNeighborId(neighborId); - isReachabilityTlv.addMeticsOfReachability(metricsOfReachability); - tlv = TlvsToBytes.tlvToBytes(isReachabilityTlv); - assertThat(tlv, is(notNullValue())); - - tlvHeader.setTlvType(TlvType.IPINTERNALREACHABILITY.value()); - tlvHeader.setTlvLength(0); - IpInternalReachabilityTlv ipInterReacTlv = new IpInternalReachabilityTlv(tlvHeader); - MetricOfInternalReachability metricOfIntRea = new MetricOfInternalReachability(); - metricOfIntRea.setDefaultMetric((byte) 10); - metricOfIntRea.setDefaultIsInternal(true); - metricOfIntRea.setDefaultDistributionDown(true); - metricOfIntRea.setDelayMetric((byte) 0); - metricOfIntRea.setDelayMetricSupported(false); - metricOfIntRea.setDelayIsInternal(true); - metricOfIntRea.setExpenseMetric((byte) 0); - metricOfIntRea.setExpenseMetricSupported(false); - metricOfIntRea.setExpenseIsInternal(true); - metricOfIntRea.setErrorMetric((byte) 0); - metricOfIntRea.setErrorMetricSupported(false); - metricOfIntRea.setExpenseIsInternal(true); - metricOfIntRea.setIpAddress(ip4Address); - metricOfIntRea.setSubnetAddress(ip4Address); - ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea); - tlv = TlvsToBytes.tlvToBytes(ipInterReacTlv); - assertThat(tlv, is(notNullValue())); - - tlvHeader.setTlvType(TlvType.PADDING.value()); - tlvHeader.setTlvLength(255); - PaddingTlv paddingTlv = new PaddingTlv(tlvHeader); - tlv = TlvsToBytes.tlvToBytes(paddingTlv); - assertThat(tlv, is(notNullValue())); - - tlvHeader.setTlvType(TlvType.IPEXTENDEDREACHABILITY.value()); - tlvHeader.setTlvLength(0); - IpExtendedReachabilityTlv extendedTlv = new IpExtendedReachabilityTlv(tlvHeader); - extendedTlv.setDown(false); - extendedTlv.setMetric(10); - extendedTlv.setPrefix(prefix); - extendedTlv.setPrefixLength(24); - extendedTlv.setSubTlvLength((byte) 0); - extendedTlv.setSubTlvPresence(false); - tlv = TlvsToBytes.tlvToBytes(extendedTlv); - assertThat(tlv, is(notNullValue())); - - tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value()); - tlvHeader.setTlvLength(0); - AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader); - adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.DOWN.value()); - tlv = TlvsToBytes.tlvToBytes(adjacencyStateTlv); - assertThat(tlv, is(notNullValue())); - - tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value()); - tlvHeader.setTlvLength(0); - IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader); - isisNeighborTlv.addNeighbor(macAddress); - tlv = TlvsToBytes.tlvToBytes(isisNeighborTlv); - assertThat(tlv, is(notNullValue())); - - tlvHeader.setTlvType(TlvType.EXTENDEDISREACHABILITY.value()); - tlvHeader.setTlvLength(0); - IsExtendedReachability reachability = new IsExtendedReachability(tlvHeader); - NeighborForExtendedIs forExtendedIs = new NeighborForExtendedIs(); - forExtendedIs.setMetric(10); - forExtendedIs.setNeighborId(neighborId); - reachability.addNeighbor(forExtendedIs); - tlv = TlvsToBytes.tlvToBytes(reachability); - assertThat(tlv, is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroupTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroupTest.java deleted file mode 100644 index f982419fe4..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroupTest.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for AdministrativeGroup. - */ -public class AdministrativeGroupTest { - - private final byte[] packet = {0, 0, 0, 1}; - private AdministrativeGroup administrativeGroup; - private ChannelBuffer channelBuffer; - private TlvHeader tlvHeader; - private byte[] result; - - @Before - public void setUp() throws Exception { - administrativeGroup = new AdministrativeGroup(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - administrativeGroup = null; - channelBuffer = null; - tlvHeader = null; - } - - /** - * Tests administrativeGroup() getter method. - */ - @Test - public void testGetAdministrativeGroup() throws Exception { - administrativeGroup.setAdministrativeGroup(1); - assertThat(administrativeGroup.administrativeGroup(), is(1)); - } - - /** - * Tests administrativeGroup() setter method. - */ - @Test - public void testSetAdministrativeGroup() throws Exception { - administrativeGroup.setAdministrativeGroup(1); - assertThat(administrativeGroup.administrativeGroup(), is(1)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(9); - tlvHeader.setTlvLength(4); - administrativeGroup = new AdministrativeGroup(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - administrativeGroup.readFrom(channelBuffer); - assertThat(administrativeGroup.administrativeGroup(), is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = administrativeGroup.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = administrativeGroup.tlvBodyAsBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(administrativeGroup.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddressTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddressTest.java deleted file mode 100644 index caafa95fda..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddressTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for InterfaceIpAddress. - */ -public class InterfaceIpAddressTest { - private final byte[] packet = {1, 1, 1, 1}; - private final byte[] packet1 = {}; - private NeighborIpAddress interfaceIpAddress; - private TlvHeader tlvHeader; - private Ip4Address ip4Address = Ip4Address.valueOf("1.1.1.1"); - private byte[] result; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - interfaceIpAddress = new NeighborIpAddress(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - interfaceIpAddress = null; - tlvHeader = null; - result = null; - channelBuffer = null; - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(interfaceIpAddress.toString(), is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(3); - tlvHeader.setTlvLength(4); - interfaceIpAddress = new NeighborIpAddress(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - interfaceIpAddress.readFrom(channelBuffer); - assertThat(interfaceIpAddress, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom1() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(3); - tlvHeader.setTlvLength(4); - interfaceIpAddress = new NeighborIpAddress(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - interfaceIpAddress.readFrom(channelBuffer); - assertThat(interfaceIpAddress, is(notNullValue())); - } - - -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidthTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidthTest.java deleted file mode 100644 index 4f2dbda74f..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidthTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for MaximumBandwidth. - */ -public class MaximumBandwidthTest { - - private final byte[] packet = {0, 0, 0, 0}; - private MaximumBandwidth maximumBandwidth; - private TlvHeader header; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - maximumBandwidth = new MaximumBandwidth(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - maximumBandwidth = null; - header = null; - channelBuffer = null; - result = null; - } - - /** - * Tests maximumBandwidth() setter method. - */ - @Test - public void testSetMaximumBandwidth() throws Exception { - maximumBandwidth.setMaximumBandwidth(123456.00f); - assertThat(maximumBandwidth, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - header = new TlvHeader(); - header.setTlvType(6); - header.setTlvLength(4); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - maximumBandwidth = new MaximumBandwidth(header); - maximumBandwidth.readFrom(channelBuffer); - assertThat(maximumBandwidth, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = maximumBandwidth.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(maximumBandwidth.toString(), is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidthTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidthTest.java deleted file mode 100644 index 524a7721b5..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidthTest.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for MaximumReservableBandwidth. - */ -public class MaximumReservableBandwidthTest { - - private final byte[] packet = {0, 0, 0, 0}; - private MaximumReservableBandwidth maximumReservableBandwidth; - private TlvHeader header; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - maximumReservableBandwidth = new MaximumReservableBandwidth(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - maximumReservableBandwidth = null; - header = null; - channelBuffer = null; - result = null; - } - - /** - * Tests maximumBandwidth() setter method. - */ - @Test - public void testSetMaximumBandwidth() throws Exception { - maximumReservableBandwidth.setMaximumBandwidth(123456.78f); - assertThat(maximumReservableBandwidth, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - header = new TlvHeader(); - header.setTlvType(6); - header.setTlvLength(4); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - maximumReservableBandwidth = new MaximumReservableBandwidth(header); - maximumReservableBandwidth.readFrom(channelBuffer); - assertThat(maximumReservableBandwidth, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = maximumReservableBandwidth.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = maximumReservableBandwidth.tlvBodyAsBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(maximumReservableBandwidth.toString(), is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinderTest.java deleted file mode 100644 index 4b672d1f60..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinderTest.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for SubTlvFinder. - */ -public class SubTlvFinderTest { - private final byte[] packet1 = {0, 0, 0, 1}; - private TlvHeader tlvHeader; - private ChannelBuffer channelBuffer; - private TrafficEngineeringSubTlv tlv; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - channelBuffer = null; - } - - @Test - public void testFindSubTlv() throws Exception { - - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(SubTlvType.ADMINISTRATIVEGROUP.value()); - AdministrativeGroup administrativeGroup = new AdministrativeGroup(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer); - assertThat(tlv, is(notNullValue())); - - tlvHeader = new TlvHeader(); - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(SubTlvType.TRAFFICENGINEERINGMETRIC.value()); - TrafficEngineeringMetric trafficEngineeringMetric = new TrafficEngineeringMetric(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer); - assertThat(tlv, is(notNullValue())); - - tlvHeader = new TlvHeader(); - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(SubTlvType.MAXIMUMBANDWIDTH.value()); - MaximumBandwidth maximumBandwidth = new MaximumBandwidth(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer); - assertThat(tlv, is(notNullValue())); - - tlvHeader = new TlvHeader(); - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(SubTlvType.MAXIMUMRESERVABLEBANDWIDTH.value()); - MaximumReservableBandwidth maximumReservableBandwidth = new MaximumReservableBandwidth(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer); - assertThat(tlv, is(notNullValue())); - - tlvHeader = new TlvHeader(); - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(SubTlvType.UNRESERVEDBANDWIDTH.value()); - UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer); - assertThat(tlv, is(notNullValue())); - - tlvHeader = new TlvHeader(); - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(SubTlvType.INTERFACEADDRESS.value()); - InterfaceIpAddress ipInterfaceAddressTlv = new InterfaceIpAddress(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer); - assertThat(tlv, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytesTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytesTest.java deleted file mode 100644 index ae975bf4e7..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytesTest.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for SubTlvToBytes. - */ -public class SubTlvToBytesTest { - private TlvHeader tlvHeader; - private ChannelBuffer channelBuffer; - private List tlv; - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - channelBuffer = EasyMock.createMock(ChannelBuffer.class); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - channelBuffer = null; - } - - @Test - public void testTlvToBytes() throws Exception { - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(9); - AdministrativeGroup administrativeGroup = new AdministrativeGroup(tlvHeader); - tlv = SubTlvToBytes.tlvToBytes(administrativeGroup); - assertThat(tlv, is(notNullValue())); - - tlvHeader = new TlvHeader(); - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(5); - TrafficEngineeringMetric trafficEngineeringMetric = new TrafficEngineeringMetric(tlvHeader); - tlv = SubTlvToBytes.tlvToBytes(trafficEngineeringMetric); - assertThat(tlv, is(notNullValue())); - - tlvHeader = new TlvHeader(); - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(6); - MaximumBandwidth maximumBandwidth = new MaximumBandwidth(tlvHeader); - tlv = SubTlvToBytes.tlvToBytes(maximumBandwidth); - assertThat(tlv, is(notNullValue())); - - tlvHeader = new TlvHeader(); - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(7); - MaximumReservableBandwidth maximumReservableBandwidth = new MaximumReservableBandwidth(tlvHeader); - tlv = SubTlvToBytes.tlvToBytes(maximumReservableBandwidth); - assertThat(tlv, is(notNullValue())); - - tlvHeader = new TlvHeader(); - tlvHeader.setTlvLength(4); - tlvHeader.setTlvType(8); - UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth(tlvHeader); - tlv = SubTlvToBytes.tlvToBytes(unreservedBandwidth); - assertThat(tlv, is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetricTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetricTest.java deleted file mode 100644 index 358e5d4f5a..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetricTest.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -/** - * Unit test class for TrafficEngineeringMetric. - */ -public class TrafficEngineeringMetricTest { - - private final byte[] packet = {0, 0, 1, 1}; - private TrafficEngineeringMetric trafficEngineeringMetric; - private TlvHeader header; - private byte[] result; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - trafficEngineeringMetric = new TrafficEngineeringMetric(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - trafficEngineeringMetric = null; - header = null; - result = null; - channelBuffer = null; - } - - /** - * Tests trafficEngineeringMetric() setter method. - */ - @Test - public void testSetTrafficEngineeringMetric() throws Exception { - trafficEngineeringMetric.setTrafficEngineeringMetric(123456789L); - assertThat(trafficEngineeringMetric, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - header = new TlvHeader(); - header.setTlvLength(4); - header.setTlvType(5); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - trafficEngineeringMetric = new TrafficEngineeringMetric(header); - trafficEngineeringMetric.readFrom(channelBuffer); - assertThat(trafficEngineeringMetric, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = trafficEngineeringMetric.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = trafficEngineeringMetric.tlvBodyAsBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(trafficEngineeringMetric.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidthTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidthTest.java deleted file mode 100644 index 268e09fbfb..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidthTest.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.isispacket.tlv.subtlv; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.io.isispacket.tlv.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for UnreservedBandwidth. - */ -public class UnreservedBandwidthTest { - - private final byte[] packet = {0, 0, 0, 1}; - private UnreservedBandwidth unreservedBandwidth; - private TlvHeader header; - private byte[] result; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - unreservedBandwidth = new UnreservedBandwidth(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - unreservedBandwidth = null; - header = null; - result = null; - channelBuffer = null; - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(unreservedBandwidth.toString(), is(notNullValue())); - } - - /** - * Tests addUnReservedBandwidth() method. - */ - @Test - public void testAddUnReservedBandwidth() throws Exception { - unreservedBandwidth.addUnReservedBandwidth(123456.78f); - assertThat(unreservedBandwidth, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - header = new TlvHeader(); - header.setTlvLength(4); - header.setTlvType(8); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - unreservedBandwidth = new UnreservedBandwidth(header); - unreservedBandwidth.readFrom(channelBuffer); - unreservedBandwidth.readFrom(channelBuffer); - assertThat(unreservedBandwidth, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = unreservedBandwidth.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = unreservedBandwidth.asBytes(); - assertThat(result, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/ChecksumCalculatorTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/ChecksumCalculatorTest.java deleted file mode 100644 index cdc4eafc6d..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/ChecksumCalculatorTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.util; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for ChecksumCalculator. - */ -public class ChecksumCalculatorTest { - - private final byte[] l1Lsp = { - -125, 27, 1, 0, 18, 1, 0, 0, 0, 86, 4, -81, 34, 34, 34, - 34, 34, 34, 0, 0, 0, 0, 0, 9, 99, 11, 1, 1, 4, 3, 73, - 0, 10, -127, 1, -52, -119, 2, 82, 50, -124, 4, -64, -88, 10, 1, -128, - 24, 10, -128, -128, -128, 10, 0, 10, 0, -1, -1, -1, -4, 10, -128, -128, - -128, -64, -88, 10, 0, -1, -1, -1, 0, 2, 12, 0, 10, -128, -128, -128, - 51, 51, 51, 51, 51, 51, 2 - }; - private ChecksumCalculator calculator; - private byte[] result; - private boolean result1; - - @Before - public void setUp() throws Exception { - calculator = new ChecksumCalculator(); - } - - @After - public void tearDown() throws Exception { - calculator = null; - } - - /** - * Tests validateLspCheckSum() method. - */ - @Test - public void testValidateLspCheckSum() throws Exception { - result1 = calculator.validateLspCheckSum(l1Lsp, IsisConstants.CHECKSUMPOSITION, - IsisConstants.CHECKSUMPOSITION + 1); - - assertThat(result1, is(true)); - } - - /** - * Tests calculateLspChecksum() method. - */ - @Test - public void testCalculateLspChecksum() throws Exception { - result = calculator.calculateLspChecksum(l1Lsp, IsisConstants.CHECKSUMPOSITION, - IsisConstants.CHECKSUMPOSITION + 1); - assertThat(result[0], - is(l1Lsp[IsisConstants.CHECKSUMPOSITION])); - assertThat(result[1], - is(l1Lsp[IsisConstants.CHECKSUMPOSITION + 1])); - } -} \ No newline at end of file diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/IsisUtilTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/IsisUtilTest.java deleted file mode 100644 index de96972220..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/IsisUtilTest.java +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.util; - -import com.google.common.primitives.Bytes; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.isis.controller.IsisPduType; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for IsisUtil. - */ -public class IsisUtilTest { - - private final String systemId = "2929.2929.2929"; - private final String lanId = "2929.2929.2929.01"; - private final String areaAddress = "490001"; - private final byte[] l1Lsp = { - -125, 27, 1, 0, 18, 1, 0, 0, 0, 86, 4, -81, 34, 34, 34, - 34, 34, 34, 0, 0, 0, 0, 0, 9, 99, 11, 1, 1, 4, 3, 73, - 0, 10, -127, 1, -52, -119, 2, 82, 50, -124, 4, -64, -88, 10, 1, -128, - 24, 10, -128, -128, -128, 10, 0, 10, 0, -1, -1, -1, -4, 10, -128, -128, - -128, -64, -88, 10, 0, -1, -1, -1, 0, 2, 12, 0, 10, -128, -128, -128, - 51, 51, 51, 51, 51, 51, 2 - }; - private final byte[] intger = {0, 0, 0, 1}; - private Ip4Address ip4Address1 = Ip4Address.valueOf("10.10.10.10"); - private Ip4Address ip4Address2 = Ip4Address.valueOf("10.10.10.11"); - private Ip4Address mask = Ip4Address.valueOf("255.255.255.0"); - private boolean result; - private String result1; - private byte[] result2; - private int result3; - private long result4; - private byte[] prefixBytes = {0, 0, 0, 1}; - private String prefix = "192.16.17"; - - @Before - public void setUp() throws Exception { - - } - - @After - public void tearDown() throws Exception { - - } - - /** - * Tests sameNetwork() method. - */ - @Test - public void testSameNetwork() throws Exception { - result = IsisUtil.sameNetwork(ip4Address1, ip4Address2, mask.toOctets()); - assertThat(result, is(true)); - } - - /** - * Tests systemId() method. - */ - @Test - public void testSystemId() throws Exception { - result1 = IsisUtil.systemId(Bytes.toArray( - IsisUtil.sourceAndLanIdToBytes(systemId))); - assertThat(result1, is(systemId)); - } - - /** - * Tests systemIdPlus() method. - */ - @Test - public void testSystemIdPlus() throws Exception { - result1 = IsisUtil.systemIdPlus(Bytes.toArray( - IsisUtil.sourceAndLanIdToBytes(lanId))); - assertThat(result1, is(lanId)); - } - - /** - * Tests areaAddress() method. - */ - @Test - public void testAreaAddres() throws Exception { - result1 = IsisUtil.areaAddress(Bytes.toArray( - IsisUtil.areaAddressToBytes(areaAddress))); - assertThat(result1, is(areaAddress)); - } - - /** - * Tests areaAddressToBytes() method. - */ - @Test - public void testAreaAddressToBytes() throws Exception { - result2 = Bytes.toArray(IsisUtil.areaAddressToBytes(areaAddress)); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests getPduHeaderLength() method. - */ - @Test - public void testGetPduHeaderLength() throws Exception { - result3 = IsisUtil.getPduHeaderLength(IsisPduType.L1CSNP.value()); - assertThat(result3, is(33)); - result3 = IsisUtil.getPduHeaderLength(IsisPduType.L1PSNP.value()); - assertThat(result3, is(17)); - result3 = IsisUtil.getPduHeaderLength(IsisPduType.L1HELLOPDU.value()); - assertThat(result3, is(27)); - result3 = IsisUtil.getPduHeaderLength(IsisPduType.P2PHELLOPDU.value()); - assertThat(result3, is(20)); - } - - /** - * Tests addLengthAndMarkItInReserved() method. - */ - @Test - public void testAddLengthAndMarkItInReserved() throws Exception { - result2 = IsisUtil.addLengthAndMarkItInReserved(l1Lsp, - IsisConstants.LENGTHPOSITION, IsisConstants.LENGTHPOSITION + 1, - IsisConstants.RESERVEDPOSITION); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests addChecksum() method. - */ - @Test - public void testAddChecksum() throws Exception { - result2 = IsisUtil.addChecksum(l1Lsp, - IsisConstants.CHECKSUMPOSITION, IsisConstants.CHECKSUMPOSITION + 1); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests framePacket() method. - */ - @Test - public void testFramePacket() throws Exception { - result2 = IsisUtil.framePacket(l1Lsp, 2); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests sourceAndLanIdToBytes() method. - */ - @Test - public void testSourceAndLanIdToBytes() throws Exception { - result2 = Bytes.toArray(IsisUtil.sourceAndLanIdToBytes(lanId)); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests getPaddingTlvs() method. - */ - @Test - public void testGetPaddingTlvs() throws Exception { - result2 = IsisUtil.getPaddingTlvs(250); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests convertToTwoBytes() method. - */ - @Test - public void testConvertToTwoBytes() throws Exception { - result2 = IsisUtil.convertToTwoBytes(250); - assertThat(result2.length, is(2)); - } - - /** - * Tests convertToFourBytes() method. - */ - @Test - public void testConvertToFourBytes() throws Exception { - result2 = IsisUtil.convertToFourBytes(250); - assertThat(result2.length, is(4)); - } - - /** - * Tests byteToInteger() method. - */ - @Test - public void testByteToInteger() throws Exception { - result3 = IsisUtil.byteToInteger(intger); - assertThat(result3, is(1)); - } - - /** - * Tests byteToInteger() method. - */ - @Test - public void testByteToLong() throws Exception { - result4 = IsisUtil.byteToLong(intger); - assertThat(result4, is(1L)); - } - - /** - * Tests convertToFourBytes() method. - */ - @Test - public void testConvertToFourBytes1() throws Exception { - result2 = IsisUtil.convertToFourBytes(250L); - assertThat(result2.length, is(4)); - } - - /** - * Tests toFourBitBinary() method. - */ - @Test - public void testToEightBitBinary() throws Exception { - result1 = IsisUtil.toEightBitBinary("01"); - assertThat(result1.length(), is(8)); - } - - /** - * Tests toFourBitBinary() method. - */ - @Test - public void testToFourBitBinary() throws Exception { - result1 = IsisUtil.toFourBitBinary("01"); - assertThat(result1.length(), is(4)); - } - - /** - * Tests convertToThreeBytes() method. - */ - @Test - public void testConvertToThreeBytes() throws Exception { - result2 = IsisUtil.convertToThreeBytes(30); - assertThat(result2.length, is(3)); - } - - /** - * Tests prefixConversion() method. - */ - @Test - public void testPrefixConversion() throws Exception { - result1 = IsisUtil.prefixConversion(prefixBytes); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests prefixToBytes() method. - */ - @Test - public void testPrefixToBytes() throws Exception { - result2 = IsisUtil.prefixToBytes(prefix); - assertThat(result2, is(notNullValue())); - } -} diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/LspGeneratorTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/LspGeneratorTest.java deleted file mode 100644 index d2d7dae194..0000000000 --- a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/util/LspGeneratorTest.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.isis.io.util; - -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.isis.controller.IsisInterface; -import org.onosproject.isis.controller.IsisLsdb; -import org.onosproject.isis.controller.IsisPduType; -import org.onosproject.isis.io.isispacket.IsisHeader; - -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for LspGenerator. - */ -public class LspGeneratorTest { - private LspGenerator generator; - private IsisHeader isisHeader; - private IsisInterface isisInterface; - private IsisLsdb isisLsdb; - - @Before - public void setUp() throws Exception { - generator = new LspGenerator(); - isisLsdb = EasyMock.createMock(IsisLsdb.class); - isisInterface = EasyMock.createMock(IsisInterface.class); - } - - @After - public void tearDown() throws Exception { - generator = null; - } - - /** - * Tests getHeader() method. - */ - @Test - public void testGetHeader() throws Exception { - isisHeader = generator.getHeader(IsisPduType.L1CSNP); - assertThat(isisHeader, is(instanceOf(IsisHeader.class))); - } -} \ No newline at end of file diff --git a/protocols/ospf/api/BUILD b/protocols/ospf/api/BUILD deleted file mode 100644 index 9e01912940..0000000000 --- a/protocols/ospf/api/BUILD +++ /dev/null @@ -1,7 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [ - "@io_netty_netty//jar", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/DeviceInformation.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/DeviceInformation.java deleted file mode 100644 index b63926fd68..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/DeviceInformation.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.onlab.packet.Ip4Address; - -import java.util.List; - -/** - * Representation of an OSPF device information. - */ -public interface DeviceInformation { - - /** - * Gets router id. - * - * @return router id - */ - Ip4Address routerId(); - - /** - * Sets router id. - * - * @param routId router id - */ - void setRouterId(Ip4Address routId); - - /** - * Gets device id. - * - * @return device id - */ - Ip4Address deviceId(); - - /** - * Sets device id. - * - * @param deviceId device id - */ - void setDeviceId(Ip4Address deviceId); - - /** - * Gets list of interface ids. - * - * @return list of interface ids - */ - List interfaceId(); - - /** - * Adds interface id to list. - * - * @param interfaceId interface id - */ - void addInterfaceId(Ip4Address interfaceId); - - /** - * Gets area id. - * - * @return area id - */ - Ip4Address areaId(); - - /** - * Sets area id. - * - * @param areaId area id - */ - void setAreaId(Ip4Address areaId); - - /** - * Gets device information is already created or not. - * - * @return true if device information is already created else false - */ - boolean isAlreadyCreated(); - - /** - * Sets device information is already created or not. - * - * @param alreadyCreated true if device information is already created else false - */ - void setAlreadyCreated(boolean alreadyCreated); - - /** - * Gets device is dr or not. - * - * @return true if device is dr else false - */ - boolean isDr(); - - /** - * Sets device is dr or not. - * - * @param dr true if device is dr else false - */ - void setDr(boolean dr); - - /** - * Gets neighbor id. - * - * @return neighbor id - */ - Ip4Address neighborId(); - - /** - * Sets neighbor id. - * - * @param neighborId neighbor id - */ - void setNeighborId(Ip4Address neighborId); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LinkInformation.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LinkInformation.java deleted file mode 100644 index 4bd9c675a8..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LinkInformation.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.onlab.packet.Ip4Address; - -/** - * Representation of an OSPF link information. - */ -public interface LinkInformation { - - /** - * Gets link id. - * - * @return link id - */ - String linkId(); - - /** - * Sets link id. - * - * @param linkId link id - */ - void setLinkId(String linkId); - - /** - * Gets link information is already created or not. - * - * @return true if link information is already created else false - */ - boolean isAlreadyCreated(); - - /** - * Sets link information is already created or not. - * - * @param alreadyCreated true if link information is already created else false - */ - void setAlreadyCreated(boolean alreadyCreated); - - /** - * Gets is link source id is same as router id or not. - * - * @return true if link source id is not same as router id else false - */ - boolean isLinkSrcIdNotRouterId(); - - /** - * Sets is link source id is same as router id or not. - * - * @param linkSrcIdNotRouterId true if link source id is not same as router id else false - */ - void setLinkSrcIdNotRouterId(boolean linkSrcIdNotRouterId); - - /** - * Gets link destination id. - * - * @return link destination id - */ - Ip4Address linkDestinationId(); - - /** - * Sets link destination id. - * - * @param linkDestinationId link destination id - */ - void setLinkDestinationId(Ip4Address linkDestinationId); - - /** - * Gets link source id. - * - * @return link source id - */ - Ip4Address linkSourceId(); - - /** - * Sets link source id. - * - * @param linkSourceId link source id - */ - void setLinkSourceId(Ip4Address linkSourceId); - - /** - * Gets interface ip address. - * - * @return interface ip address - */ - Ip4Address interfaceIp(); - - /** - * Sets interface ip address. - * - * @param interfaceIp interface ip address - */ - void setInterfaceIp(Ip4Address interfaceIp); - - /** - * Gets link source ip address. - * - * @return link source ip address - */ - Ip4Address linkSourceIpAddress(); - - /** - * Sets link source ip address. - * - * @param linkSourceIpAddress link source ip address - */ - void setLinkSourceIpAddress(Ip4Address linkSourceIpAddress); - - /** - * Gets link destination ip address. - * - * @return link destination ip address - */ - Ip4Address linkDestinationIpAddress(); - - /** - * Sets link destination ip address. - * - * @param linkDestinationIpAddress link destination ip address - */ - void setLinkDestinationIpAddress(Ip4Address linkDestinationIpAddress); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaBin.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaBin.java deleted file mode 100644 index 5f9fdc7520..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaBin.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import java.util.Map; - -/** - * Representation of a bin where an LSA is stored for aging. - * A bin is identified by a bin number and can have one or more LSAs - * stored in a particular bin location. - */ -public interface LsaBin { - - /** - * Adds the given LSA to this bin with the given key. - * - * @param lsaKey key of the stored LSA - * @param lsaWrapper wrapper instance to store - */ - public void addOspfLsa(String lsaKey, LsaWrapper lsaWrapper); - - /** - * Retrieves the LSA from the bin for verification of max age and ls refresh. - * - * @param lsaKey key to search the LSA - * @return LSA Wrapper instance - */ - public LsaWrapper ospfLsa(String lsaKey); - - /** - * Removes the given LSA from the bin. when ever it reaches max age or ls refresh time. - * - * @param lsaKey key to search LSA - * @param lsaWrapper wrapper instance of the particular LSA - */ - public void removeOspfLsa(String lsaKey, LsaWrapper lsaWrapper); - - /** - * Gets the list of LSAs in this bin as key value pair. - * with key being the LSA key formed from the LSA header. - * - * @return list of LSAs in this bin as key value pair - */ - public Map listOfLsa(); - - /** - * Gets the bin number assigned during the initialization process of the bins . - * - * @return the bin number - */ - public int binNumber(); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaWrapper.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaWrapper.java deleted file mode 100644 index caf99f3ede..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsaWrapper.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -/** - * Representation of a wrapper object to store LSA and associated metadata. - * Metadata consists about the origination of LSA, age of LSA when received etc. - */ -public interface LsaWrapper { - /** - * Gets the type of LSA, it can be a router,network,summary,external. - * - * @return lsa type - */ - public OspfLsaType lsaType(); - - /** - * Sets the LSA type during the initialization of wrapper. - * - * @param lsaType lsa type - */ - public void setLsaType(OspfLsaType lsaType); - - /** - * Determines the origination of LSA , this is called during ls refresh interval. - * - * @return true if self originated else false - */ - public boolean isSelfOriginated(); - - /** - * Sets is self originated or not. - * - * @param isSelfOriginated true if self originated else false - */ - public void setIsSelfOriginated(boolean isSelfOriginated); - - - /** - * Age of LSA when received during the adjacency formation. - * - * @return Age of LSA when received - */ - public int lsaAgeReceived(); - - /** - * Sets the Age of LSA when received during the adjacency formation. - * - * @param lsaAgeReceived Age of LSA when received - */ - public void setLsaAgeReceived(int lsaAgeReceived); - - /** - * Gets the LSA present in the wrapper instance. - * - * @return LSA instance - */ - public OspfLsa ospfLsa(); - - /** - * Sets the LSA instance to the wrapper. - * - * @param ospfLsa LSA instance - */ - public void setOspfLsa(OspfLsa ospfLsa); - - /** - * Gets the current LSA Age, using this we calculate current age. - * It is done against the age counter which is incremented every second. - * - * @return lsa age - */ - public int currentAge(); - - /** - * Gets the age counter when received. - * - * @return the age counter when received - */ - public int ageCounterWhenReceived(); - - /** - * Sets the age counter when received. - * - * @param ageCounterWhenReceived the age counter when received - */ - public void setAgeCounterWhenReceived(int ageCounterWhenReceived); - - /** - * Gets the LSA process command, like max age, ls refresh, based on the command set. - * The queue consumer will pick the LSA and start performing the actions, like flooding - * out of the domain or generating a new LSA and flooding. - * - * @return lsa process command - */ - public String lsaProcessing(); - - /** - * Sets the LSA process command, like max age , ls refresh , based on the command set. - * The queue consumer will pick the LSA and start performing the actions, like flooding - * out of the domain or generating a new LSA and flooding. - * - * @param lsaProcessing lsa process command - */ - public void setLsaProcessing(String lsaProcessing); - - /** - * Gets bin number into which the LSA wrapper is put for aging process. - * - * @return bin number - */ - public int binNumber(); - - /** - * Sets bin number into which the LSA wrapper is put for aging process. - * - * @param binNumber bin number - */ - public void setBinNumber(int binNumber); - - /** - * Gets the interface on which the LSA was received. - * - * @return the interface instance - */ - public OspfInterface ospfInterface(); - - /** - * Sets the interface on which the LSA was received, this is used later to flood the information. - * - * @param ospfInterface interface instance - */ - public void setOspfInterface(OspfInterface ospfInterface); - - /** - * Sets the LSDB age. - * Using LSDB age we are calculating age of a particular LSA. - * - * @param lsdbAge lsdbAge instance - */ - public void setLsdbAge(LsdbAge lsdbAge); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsdbAge.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsdbAge.java deleted file mode 100644 index 120bcd5d73..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/LsdbAge.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -/** - * Representation of LSDB aging process. - * The age of each LSA in the database must be incremented by 1 each second. - * We put all the LSAs of a given age into a single bin. The age of an LSA is the - * difference between its age bin and the bin representing LS age 0. - */ -public interface LsdbAge { - - /** - * Adds LSA to bin for aging. - * - * @param binKey key to store the LSA in bin - * @param lsaBin LSA bin instance - */ - public void addLsaBin(Integer binKey, LsaBin lsaBin); - - /** - * Gets LSA from bin, this method is used while processing ls refresh and max age on LSA. - * - * @param binKey key to retrieve the LSA from bin - * @return lsaBin bin instance - */ - public LsaBin getLsaBin(Integer binKey); - - /** - * Adds the lsa to maxAge bin if LSAs age is max age. - * - * @param key key to store the LSA in bin. - * @param wrapper wrapper instance which contains LSA - */ - public void addLsaToMaxAgeBin(String key, LsaWrapper wrapper); - - /** - * Gets the bin number out of LSAs age, in which the LSA can be placed. - * so that age can be calculated. - * - * @param x Can be either age or ageCounter - * @return bin number. - */ - public int age2Bin(int x); - - /** - * Gets the max age bin, a special bin is created which holds only max age LSAs. - * - * @return lsa bin instance - */ - public LsaBin getMaxAgeBin(); - - /** - * Gets the age counter. - * - * @return age counter - */ - public int getAgeCounter(); - - - /** - * Refresh the LSAs which are in the refresh bin. - */ - public void refreshLsa(); - - /** - * If the LSAs have completed the MaxAge stop aging and flood it. - */ - public void maxAgeLsa(); - - /** - * Invoked every 1 second as part of the aging process, and increments age counter. - * It also verifies if any LSA has reached ls refresh time or max age. - */ - public void ageLsaAndFlood(); - - /** - * Starts the aging timer thread which gets invokes every second. - */ - public void startDbAging(); - - /** - * Removes LSA from Bin, when ever it reaches a max age or ls refresh time. - * - * @param lsaWrapper wrapper instance - */ - public void removeLsaFromBin(LsaWrapper lsaWrapper); - - /** - * Gets the age counter roll over. - * - * @return the age counter roll over - */ - public int getAgeCounterRollOver(); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAgent.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAgent.java deleted file mode 100644 index e2b878df87..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAgent.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -/** - * Representation of an OSPF agent. - * It is responsible for keeping track of the current set of routers - * connected to the system. - */ -public interface OspfAgent { - - /** - * Adds a router that has just connected to the system. - * - * @param ospfRouter the router id to add - * @return true if added, false otherwise - */ - boolean addConnectedRouter(OspfRouter ospfRouter); - - /** - * Removes the router which got disconnected from the system. - * - * @param ospfRouter the router id to remove - */ - void removeConnectedRouter(OspfRouter ospfRouter); - - /** - * Notifies that got a packet of link from network and need to add the link. - * - * @param ospfRouter router instance - * @param ospfLinkTed link TED instance - */ - void addLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed); - - /** - * Notifies that got a packet of link from network and need do delete the link. - * - * @param ospfRouter router instance - * @param ospfLinkTed link TED instance - */ - void deleteLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfArea.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfArea.java deleted file mode 100644 index a66160d910..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfArea.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.onlab.packet.Ip4Address; - -import java.util.List; - -/** - * Representation of an OSPF area. OSPF areas are collections of network segments. - * The configuration of OSPF area consists of assigning an area id to each network segment. - * Each area has its own link state database. - */ -public interface OspfArea { - - /** - * Gets the router id associated with the area. - * - * @return router id - */ - Ip4Address routerId(); - - /** - * Sets the router id for this area. - * - * @param routerId router's ip address - */ - void setRouterId(Ip4Address routerId); - - /** - * Gets the area id. - * - * @return area id - */ - Ip4Address areaId(); - - /** - * Sets the area id. - * - * @param areaId area id as an IPv4 address - */ - void setAreaId(Ip4Address areaId); - - /** - * Gets the LSDB instance for this area. - * - * @return LSDB instance for this area - */ - OspfLsdb database(); - - /** - * Checks whether an instance of the given LSA exists in the database. - * - * @param lookupLsa LSA instance to lookup - * @return LSA wrapper instance which contains the LSA - */ - LsaWrapper lsaLookup(OspfLsa lookupLsa); - - /** - * Initializes link state database, this acts as a place holder for storing the received LSA. - */ - void initializeDb(); - - /** - * Sets the options value. - * - * @param options integer value - */ - void setOptions(int options); - - /** - * Gets external routing capability. - * This indicates Whether AS-external-LSAs will be flooded into/throughout the area. - * - * @return true if external routing capable, else false - */ - boolean isExternalRoutingCapability(); - - /** - * Sets external routing capability. - * This indicates Whether AS-external-LSAs will be flooded into/throughout the area. - * - * @param externalRoutingCapability true if external routing capable, else false - */ - void setExternalRoutingCapability(boolean externalRoutingCapability); - - /** - * Gets if the router is opaque enabled or not. - * This indicates whether the router accepts opaque LSA. - * - * @return true if opaque enabled else false - */ - boolean isOpaqueEnabled(); - - /** - * Gets the list of interfaces attached to this area. - * - * @return list of interfaces - */ - List ospfInterfaceList(); - - /** - * Sets the list of interfaces attached to this area. - * - * @param interfacesLst list of interface instances - */ - void setOspfInterfaceList(List interfacesLst); - - /** - * Gets the options value, which indicates the supported optional capabilities. - * - * @return options value - */ - int options(); - - /** - * Gets the opaque enabled options value, which indicates support of opaque capabilities. - * - * @return opaque enabled options value - */ - int opaqueEnabledOptions(); - - /** - * Sets opaque enabled to true or false, which indicates whether the router accepts opaque LSA. - * - * @param isOpaqueEnable true if opaque enabled else false - */ - void setIsOpaqueEnabled(boolean isOpaqueEnable); - - /** - * Refreshes areas, by sending a router LSA and network LSA (in case of DR). - * with a new sequence number. - * - * @param ospfInterface interface instance - */ - void refreshArea(OspfInterface ospfInterface); - - /** - * Verifies no neighbor is in exchange process. - * - * @return boolean indicating that there is no Neighbor in Database Exchange - */ - boolean noNeighborInLsaExchangeProcess(); - - /** - * Checks whether an instance of the given LSA exists in the database belonging to this area. - * If so return true else false. - * - * @param lsa1 LSA instance to compare - * @param lsa2 LSA instance to compare - * @return "same" if both instances are same, "latest" if lsa1 is latest, or "old" if lsa1 is old - */ - String isNewerOrSameLsa(OspfLsa lsa1, OspfLsa lsa2); - - /** - * Whenever we receive an LSA with max age - we put it in the max age bin. - * This is later used to flush LSAs out of the routing domain. - * - * @param key key to add it to LSDB - * @param wrapper LSA wrapper instance - */ - void addLsaToMaxAgeBin(String key, LsaWrapper wrapper); - - /** - * Whenever an LSA is being flushed out or reaches max age, it must be stopped from aging. - * This achieved by removing it from bin. - * - * @param lsaWrapper the LSA wrapper instance to delete - */ - void removeLsaFromBin(LsaWrapper lsaWrapper); - - /** - * Adds the received LSA to LSDB, this method creates an LSA wrapper for the LSA. - * Also adds it to the LSDB of the area. This method is specifically called for - * the self originated LSAs. - * - * @param ospfLsa LSA instance - * @param isSelfOriginated true if the LSA is self originated else false - * @param ospfInterface interface instance - */ - void addLsa(OspfLsa ospfLsa, boolean isSelfOriginated, OspfInterface ospfInterface); - - /** - * Adds the received LSA to LSDB,this method creates an LSA wrapper for the LSA. - * Adds it to the LSDB of the area. - * - * @param ospfLsa LSA instance - * @param ospfInterface interface instance - */ - void addLsa(OspfLsa ospfLsa, OspfInterface ospfInterface); - - /** - * Sets router sequence number for router LSA. - * - * @param newSequenceNumber sequence number - */ - void setDbRouterSequenceNumber(long newSequenceNumber); - - /** - * Gets LSA header of all types of LSAs present in the link state database. - * - * @param excludeMaxAgeLsa need to include(true) or exclude(false) max age LSA - * @param isOpaqueCapable need to include(true) or exclude(false) type 10 Opaque LSA - * @return list of LSA header in the LSDB - */ - List getLsaHeaders(boolean excludeMaxAgeLsa, boolean isOpaqueCapable); - - /** - * Gets the LSA wrapper from link state database based on the parameters passed. - * - * @param lsType type of LSA to form the key - * @param linkStateID link state id to form the key - * @param advertisingRouter advertising router to form the key - * @return LSA wrapper instance which contains the LSA - */ - LsaWrapper getLsa(int lsType, String linkStateID, String advertisingRouter); - -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAreaAddressRange.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAreaAddressRange.java deleted file mode 100644 index 2897d5a9fb..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfAreaAddressRange.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.onlab.packet.Ip4Address; - -/** - * Represents the collection of IP addresses contained in the address range. - */ -public interface OspfAreaAddressRange { - - /** - * Gets the IP address. - * - * @return IP address - */ - public Ip4Address ipAddress(); - - /** - * Sets the IP address. - * - * @param ipAddress IPv4 address - */ - public void setIpAddress(Ip4Address ipAddress); - - /** - * Gets the network mask. - * - * @return network mask - */ - public String mask(); - - /** - * Sets the network mask. - * - * @param mask network mask - */ - public void setMask(String mask); - - /** - * Gets the advertise value, which indicates routing information is condensed at area boundaries. - * - * @return advertise true if advertise flag is set else false - */ - public boolean isAdvertise(); - - /** - * Sets the advertise value, which indicates routing information is condensed at area boundaries. - * - * @param advertise true if advertise flag to set else false - */ - public void setAdvertise(boolean advertise); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfController.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfController.java deleted file mode 100644 index 3435f959f7..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfController.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import com.fasterxml.jackson.databind.JsonNode; - -import java.util.List; -import java.util.Set; - -/** - * Abstraction of an OSPF controller. - * Serves as a one stop shop for obtaining OSPF devices and (un)register listeners on OSPF events. - */ -public interface OspfController { - - /** - * Registers a listener for router meta events. - * - * @param listener the listener to notify - */ - void addRouterListener(OspfRouterListener listener); - - /** - * Unregisters a router listener. - * - * @param listener the listener to unregister - */ - void removeRouterListener(OspfRouterListener listener); - - /** - * Registers a listener for OSPF message events. - * - * @param listener the listener to notify - */ - void addLinkListener(OspfLinkListener listener); - - /** - * Unregisters a link listener. - * - * @param listener the listener to unregister - */ - void removeLinkListener(OspfLinkListener listener); - - /** - * Updates configuration of processes. - * - * @param processesNode process info to update - */ - void updateConfig(JsonNode processesNode); - - /** - * Deletes configuration parameters. - * - * @param processes list of process instance - * @param attribute attribute to delete - */ - void deleteConfig(List processes, String attribute); - - /** - * Gets the list of listeners registered for router events. - * - * @return list of listeners - */ - Set listener(); - - /** - * Gets the list of listeners registered for link events. - * - * @return list of listeners - */ - public Set linkListener(); - - /** - * Gets the configured process. - * - * @return list of process instances - */ - public List getAllConfiguredProcesses(); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfDeviceTed.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfDeviceTed.java deleted file mode 100644 index 58c8876092..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfDeviceTed.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.onlab.packet.Ip4Address; -import org.onlab.packet.Ip6Address; - -import java.util.List; - -/** - * Represents Device Traffic Engineering parameters. - */ -public interface OspfDeviceTed { - - /** - * Obtain list of IPv4 router ids. - * - * @return IPv4 router ids - */ - public List ipv4RouterIds(); - - /** - * Sets list of IPv4 router ids. - * - * @param routerIds list of IPv4 router ids - */ - public void setIpv4RouterIds(List routerIds); - - /** - * Obtain list of IPv6 router id. - * - * @return IPv4 router ids - */ - public List ipv6RouterIds(); - - /** - * Sets list of IPv4 router ids. - * - * @param routerIds list of IPv4 router ids - */ - public void setIpv6RouterIds(List routerIds); - - /** - * Obtain the list of topology ids. - * - * @return list of topology ids - */ - public List topologyIds(); - - /** - * Sets the list of topology ids. - * - * @param topologyIds the list of topology ids - */ - public void setTopologyIds(List topologyIds); - - /** - * Obtains position of device in the network. - * - * @return position of device in the network - */ - public Boolean asbr(); - - /** - * Sets position of device in the network. - * - * @param asbr position of device in the network - */ - public void setAsbr(Boolean asbr); - - /** - * Obtains position of device in the network. - * - * @return position of device in the network - */ - public Boolean abr(); - - /** - * Sets position of device in the network. - * - * @param abr position of device in the network - */ - public void setAbr(Boolean abr); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfInterface.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfInterface.java deleted file mode 100644 index 1c05ad5302..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfInterface.java +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.jboss.netty.channel.ChannelHandlerContext; -import org.onlab.packet.Ip4Address; - -import java.util.Map; - -/** - * Represents an OSPF Interface. - */ -public interface OspfInterface { - - /** - * Returns interface index. - * - * @return interface index - */ - public int interfaceIndex(); - - /** - * Sets interface index. - * - * @param interfaceIndex interface index - */ - public void setInterfaceIndex(int interfaceIndex); - - /** - * Returns OSPF area instance. - * - * @return OSPF area instance - */ - public OspfArea ospfArea(); - - /** - * Sets OSPF area instance. - * - * @param ospfArea OSPF area instance - */ - public void setOspfArea(OspfArea ospfArea); - - /** - * Gets network mask of the interface. - * - * @return network mask - */ - Ip4Address ipNetworkMask(); - - /** - * Sets the value of BDR. - * The BDR is calculated during adjacency formation. - * - * @param bdr backup designated router's IP address - */ - void setBdr(Ip4Address bdr); - - /** - * Sets the value of DR. - * The DR is calculated during adjacency formation. - * - * @param dr designated router's IP address - */ - void setDr(Ip4Address dr); - - /** - * Sets the hello interval time. - * It is the interval at which a hello packet is sent out via this interface. - * - * @param helloIntervalTime an integer interval time - */ - void setHelloIntervalTime(int helloIntervalTime); - - /** - * Sets router dead interval time. - * This is the interval after which this interface will trigger a process to kill neighbor. - * - * @param routerDeadIntervalTime an integer interval time - */ - void setRouterDeadIntervalTime(int routerDeadIntervalTime); - - /** - * Sets interface type. - * This indicates whether the interface is on point to point mode or broadcast mode. - * - * @param interfaceType an integer represents interface type - */ - void setInterfaceType(int interfaceType); - - /** - * Sets IP Address of this interface. - * - * @param ipAddress IP address - */ - void setIpAddress(Ip4Address ipAddress); - - /** - * Sets IP network mask. - * - * @param ipNetworkMask network mask - */ - void setIpNetworkMask(Ip4Address ipNetworkMask); - - /** - * Sets retransmit interval which indicates the number of seconds between LSA retransmissions. - * - * @param reTransmitInterval an integer represents interval - */ - void setReTransmitInterval(int reTransmitInterval); - - /** - * Sets MTU. - * - * @param mtu an integer represents max transfer unit - */ - void setMtu(int mtu); - - /** - * Sets router priority. - * - * @param routerPriority value - */ - void setRouterPriority(int routerPriority); - - /** - * Gets the IP address. - * - * @return an string represents IP address - */ - Ip4Address ipAddress(); - - /** - * Gets the interface type. - * - * @return an integer represents interface type - */ - int interfaceType(); - - /** - * Gets the MTU. - * - * @return an integer representing max transfer unit - */ - int mtu(); - - /** - * Gets the list of neighbors associated with the interface. - * - * @return listOfNeighbors as key value pair - */ - Map listOfNeighbors(); - - /** - * Gets the IP address of the BDR. - * - * @return bdr BDR's IP address - */ - Ip4Address bdr(); - - /** - * Gets the ip address of the DR.. - * - * @return dr DR's IP address - */ - Ip4Address dr(); - - /** - * Gets hello interval time in seconds, this defines how often we send the hello packet. - * - * @return hello interval time in seconds - */ - int helloIntervalTime(); - - /** - * Gets retransmit interval. - * - * @return reTransmitInterval an integer represents interval - */ - int reTransmitInterval(); - - /** - * Gets router dead interval time. - * This defines how long we should wait for hello packets before we declare the neighbor is dead. - * - * @return routerDeadIntervalTime an integer interval time - */ - int routerDeadIntervalTime(); - - /** - * Gets router priority. - * - * @return routerPriority value - */ - int routerPriority(); - - /** - * Adds the given neighboring router to the neighbor map. - * - * @param ospfNbr neighbor instance - */ - void addNeighbouringRouter(OspfNbr ospfNbr); - - /** - * Gets the neighbor instance from listOfNeighbors map for the given neighbor ID. - * - * @param neighborId neighbors id - * @return ospfNbr neighbor instance - */ - OspfNbr neighbouringRouter(String neighborId); - - /** - * Checks the given neighbor is in the neighbor list. - * - * @param neighborId neighbors id - * @return true if neighbor in list else false - */ - boolean isNeighborInList(String neighborId); - - /** - * Removes LSA headers from the map in which LSA headers are stored. - * - * @param lsaKey key used to store lsa in map - */ - void removeLsaFromNeighborMap(String lsaKey); - - /** - * When an OSPF message received it is handed over to this method. - * Based on the type of the OSPF message received it will be handed over - * to corresponding message handler methods. - * - * @param ospfMessage received OSPF message - * @param ctx channel handler context instance. - */ - void processOspfMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx); - - /** - * Represents an interface is up and connected. - */ - void interfaceUp(); - - /** - * Starts the timer which waits for configured seconds and sends Delayed Ack Packet. - */ - void startDelayedAckTimer(); - - /** - * Stops the delayed acknowledge timer. - */ - void stopDelayedAckTimer(); - - /** - * Starts the hello timer which sends hello packet every configured seconds. - */ - void startHelloTimer(); - - /** - * Stops the hello timer. - */ - void stopHelloTimer(); - - /** - * Gets called when an interface is down. - * All interface variables are reset, and interface timers disabled. - * Also all neighbor connections associated with the interface are destroyed. - */ - void interfaceDown(); - - /** - * Removes all the neighbors. - */ - void removeNeighbors(); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLink.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLink.java deleted file mode 100644 index b5b51764ea..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLink.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.onlab.packet.IpAddress; - -import java.util.List; - -/** - * Abstraction of an OSPF Link. - */ -public interface OspfLink { - - /** - * Gets IP address of the Router. - * - * @return IP address of router - */ - IpAddress remoteRouterId(); - - /** - * Gets the area id for this device. - * - * @return the area id - */ - int areaIdOfInterface(); - - /** - * Gets IP address of the interface. - * - * @return IP address of the interface - */ - IpAddress interfaceIp(); - - /** - * Gets list of the link TED. - * - * @return list of the link TED - */ - List linkTedLists(); - - /** - * Sets IP address of the router. - * - * @param routerIp router's IP address - */ - void setRouterIp(IpAddress routerIp); - - /** - * Sets the area id for this device. - * - * @param areaIdOfInterface area id - */ - void setAreaIdOfInterface(int areaIdOfInterface); - - /** - * Sets IP address of the interface. - * - * @param interfaceIp IP address of the interface. - */ - void setInterfaceIp(IpAddress interfaceIp); - - /** - * Sets list of the link TED. - * - * @param linkTedLists list of the link TED - */ - void setLinkTedLists(List linkTedLists); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkListener.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkListener.java deleted file mode 100644 index 7bbaf7d609..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkListener.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -/** - * Abstraction of an OSPF link listener. - */ -public interface OspfLinkListener { - - /** - * Notifies that we got a link from network. - * - * @param ospfRouter router instance - * @param ospfLinkTed link TED information of router - */ - void addLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed); - - /** - * Notifies that a link got removed from network. - * - * @param ospfRouter router instance - * @param ospfLinkTed link TED information of router - */ - void deleteLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkTed.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkTed.java deleted file mode 100644 index f0e5614b35..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLinkTed.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.onlab.packet.Ip4Address; -import org.onlab.packet.Ip6Address; -import org.onlab.util.Bandwidth; - -import java.util.List; - -/** - * Represents OSPF Link Traffic Engineering parameters. - */ -public interface OspfLinkTed { - - /** - * Provides maximum bandwidth can be used on the link. - * - * @return maximum bandwidth - */ - public Bandwidth maximumLink(); - - /** - * Sets maximum band width. - * - * @param bandwidth maximum bandwidth - */ - public void setMaximumLink(Bandwidth bandwidth); - - /** - * Amount of bandwidth reservable on the link. - * - * @return unreserved bandwidth - */ - public List maxUnResBandwidth(); - - /** - * Sets max bandwidth that is not reserved on the link. - * - * @param bandwidth max bandwidth that is not reserved on the link - */ - public void setMaxUnResBandwidth(Bandwidth bandwidth); - - /** - * Provides max bandwidth that can be reserved on the link. - * - * @return max bandwidth reserved - */ - public Bandwidth maxReserved(); - - /** - * Sets max bandwidth that can be reserved on the link. - * - * @param bandwidth max bandwidth that can be reserved on the link - */ - public void setMaxReserved(Bandwidth bandwidth); - - /** - * Provides Traffic Engineering metric for the link. - * - * @return Traffic Engineering metric - */ - public Integer teMetric(); - - /** - * Sets Traffic Engineering metric for the link. - * - * @param teMetric Traffic Engineering metric for the link - */ - public void setTeMetric(Integer teMetric); - - /** - * Provides IPv4 router-Id of local node. - * - * @return IPv4 router-Id of local node - */ - public List ipv4LocRouterId(); - - /** - * Sets IPv4 router-Id of local node. - * - * @param routerIds IPv4 router-Id of local node - */ - public void setIpv4LocRouterId(List routerIds); - - /** - * Provides IPv6 router-Id of local node. - * - * @return IPv6 router-Id of local node - */ - public List ipv6LocRouterId(); - - /** - * Sets IPv6 router-Id of local node. - * - * @param routerIds IPv6 router-Id of local node - */ - public void setIpv6LocRouterId(List routerIds); - - /** - * Provides IPv4 router-Id of remote node. - * - * @return IPv4 router-Id of remote node - */ - public List ipv4RemRouterId(); - - /** - * Sets IPv4 router-Id of remote node. - * - * @param routerIds IPv4 router-Id of remote node - */ - public void setIpv4RemRouterId(List routerIds); - - /** - * Provides IPv6 router-Id of remote node. - * - * @return IPv6 router-Id of remote node - */ - public List ipv6RemRouterId(); - - /** - * Sets IPv6 router-Id of remote node. - * - * @param routerIds IPv6 router-Id of remote node - */ - public void setIpv6RemRouterId(List routerIds); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsa.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsa.java deleted file mode 100644 index c9d37fcd3c..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsa.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -/** - * Represents an OSPF LSA. - */ -public interface OspfLsa { - - /** - * Gets the type of OSPF LSA. - * - * @return OSPF LSA type instance - */ - OspfLsaType getOspfLsaType(); - - /** - * Gets the age of LSA. - * - * @return age of LSA - */ - int age(); - - /** - * Gets the LSA header instance. - * - * @return this instance - */ - public OspfLsa lsaHeader(); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsaType.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsaType.java deleted file mode 100644 index db05055088..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsaType.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -/** - * Represents OSPF LSA types. - */ -public enum OspfLsaType { - - ROUTER(1), - NETWORK(2), - SUMMARY(3), - ASBR_SUMMARY(4), - EXTERNAL_LSA(5), - LINK_LOCAL_OPAQUE_LSA(9), - AREA_LOCAL_OPAQUE_LSA(10), - AS_OPAQUE_LSA(11), - UNDEFINED(20); - - private int value; - - /** - * Creates an instance of OSPF LSA type. - * - * @param value represents LSA type - */ - OspfLsaType(int value) { - this.value = value; - } - - /** - * Gets the value representing LSA type. - * - * @return value represents LSA type - */ - public int value() { - return value; - } -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsdb.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsdb.java deleted file mode 100644 index 3d3c170998..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfLsdb.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import java.util.List; - -/** - * Represents an OSPF link state database. - */ -public interface OspfLsdb { - - /** - * Initializes the link state database. - */ - public void initializeDb(); - - /** - * Gets all LSA headers. - * - * @param excludeMaxAgeLsa exclude the max age LSAs - * @param isOpaqueCapable is opaque capable or not - * @return List of LSA headers - */ - public List getAllLsaHeaders(boolean excludeMaxAgeLsa, boolean isOpaqueCapable); - - /** - * Finds the LSA from appropriate LSA maps. - * - * @param lsType type of LSA - * @param lsaKey key - * @return LSA wrapper object - */ - public LsaWrapper findLsa(int lsType, String lsaKey); - - /** - * Adds the LSA to maxAge bin. - * - * @param key key - * @param lsaWrapper LSA wrapper instance - */ - public void addLsaToMaxAgeBin(String key, Object lsaWrapper); - - /** - * Removes LSA from bin. - * - * @param lsaWrapper LSA wrapper instance - */ - public void removeLsaFromBin(Object lsaWrapper); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfMessage.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfMessage.java deleted file mode 100644 index 460457fe64..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfMessage.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.exceptions.OspfParseException; - -/** - * Representation of an OSPF message. - */ -public interface OspfMessage { - - /** - * Returns the interface index on which the message received. - * - * @return interface index on which the message received - */ - int interfaceIndex(); - - /** - * Sets the interface index on which the message received. - * - * @param interfaceIndex interface index on which the message received - */ - void setInterfaceIndex(int interfaceIndex); - - /** - * Returns the type of OSPF message. - * - * @return OSPF message type - */ - public OspfPacketType ospfMessageType(); - - /** - * Reads from ChannelBuffer and initializes the type of LSA. - * - * @param channelBuffer channel buffer instance - * @throws OspfParseException might throws exception while parsing buffer - */ - void readFrom(ChannelBuffer channelBuffer) throws OspfParseException; - - /** - * Returns OSPFMessage as byte array. - * - * @return OSPF message as bytes - */ - byte[] asBytes(); - - /** - * Sets the source IP address. - * - * @param sourceIp IP address - */ - public void setSourceIp(Ip4Address sourceIp); - - /** - * Gets the destination IP address. - * - * @return destination IP address - */ - public Ip4Address destinationIp(); - - /** - * Sets destination IP. - * - * @param destinationIp destination IP address - */ - public void setDestinationIp(Ip4Address destinationIp); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNbr.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNbr.java deleted file mode 100644 index 9a62fad547..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNbr.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.jboss.netty.channel.Channel; -import org.onlab.packet.Ip4Address; - -import java.util.Map; - -/** - * Represents an OSPF neighbor. - */ -public interface OspfNbr { - - /** - * Gets neighbor's id. - * - * @return neighbor's id - */ - public Ip4Address neighborId(); - - /** - * Gets router priority. - * - * @return router priority - */ - public int routerPriority(); - - /** - * Gets the IP address of this neighbor. - * - * @return the IP address of this neighbor - */ - public Ip4Address neighborIpAddr(); - - /** - * Gets the neighbor's DR address. - * - * @return neighbor's DR address - */ - public Ip4Address neighborDr(); - - /** - * Gets the neighbor's BDR address. - * - * @return neighbor's BDR address - */ - Ip4Address neighborBdr(); - - /** - * Determines whether an adjacency should be established/maintained with the neighbor. - * - * @param ch netty channel instance - */ - void adjOk(Channel ch); - - /** - * Gets the pending re transmit list as a map. - * - * @return pending re transmit list as a map - */ - Map getPendingReTxList(); - - /** - * Sets the neighbor's id. - * - * @param neighborId neighbor's id - */ - void setNeighborId(Ip4Address neighborId); - - /** - * Sets the neighbor's BDR address. - * - * @param neighborBdr neighbor's BDR address - */ - void setNeighborBdr(Ip4Address neighborBdr); - - /** - * Sets the neighbor's DR address. - * - * @param neighborDr neighbor's DR address - */ - void setNeighborDr(Ip4Address neighborDr); - - /** - * Sets router priority. - * - * @param routerPriority router priority - */ - void setRouterPriority(int routerPriority); - - /** - * Sets the neighbor is opaque enabled or not. - * - * @param isOpaqueCapable true if the neighbor is opaque enabled else false - */ - void setIsOpaqueCapable(boolean isOpaqueCapable); - - /** - * Sets neighbor is master or not. - * - * @param isMaster neighbor is master or not - */ - void setIsMaster(int isMaster); - - /** - * Gets the DD sequence number. - * - * @return DD sequence number - */ - long ddSeqNum(); - - /** - * Sets the DD sequence number. - * - * @param ddSeqNum DD sequence number - */ - void setDdSeqNum(long ddSeqNum); - - /** - * Gets neighbor is master or not. - * - * @return true if neighbor is master else false - */ - int isMaster(); - - /** - * Gets the options value. - * - * @return options value - */ - int options(); - - /** - * Sets the options value. - * - * @param options options value - */ - void setOptions(int options); - - /** - * An invalid request for LSA has been received. - * This indicates an error in the Database Exchange process. Actions to be performed - * are the same as in seqNumMismatch. In addition, stop the possibly activated - * retransmission timer. - * - * @param ch netty channel instance - */ - void badLSReq(Channel ch); - - /** - * Gets the LS request list. - * - * @return LS request list - */ - Map getLsReqList(); - - /** - * Gets the reTxList instance. - * - * @return reTxList instance - */ - Map getReTxList(); - - /** - * Gets if the neighbor is opaque enabled or not. - * - * @return true if the neighbor is opaque enabled else false. - */ - public boolean isOpaqueCapable(); - - /** - * Gets the neighbor's state. - * - * @return neighbor's state - */ - OspfNeighborState getState(); - - /** - * Starts the inactivity timer. - */ - void startInactivityTimeCheck(); - - /** - * Stops the inactivity timer. - */ - void stopInactivityTimeCheck(); - - /** - * Sets router dead interval. - * - * @param routerDeadInterval router dead interval - */ - void setRouterDeadInterval(int routerDeadInterval); - - /** - * Stops the flooding timer. - */ - void stopFloodingTimer(); - - /** - * Stops the Dd Retransmission executor task. - */ - void stopRxMtDdTimer(); - - /** - * Stops Ls request retransmission executor task. - */ - void stopRxMtLsrTimer(); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNeighborState.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNeighborState.java deleted file mode 100644 index 8019f49663..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfNeighborState.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -/** - * Enum representing OSPF neighbor state. - */ -public enum OspfNeighborState { - - DOWN(1), - ATTEMPT(2), - INIT(3), - TWOWAY(4), - EXSTART(5), - EXCHANGE(6), - LOADING(7), - FULL(8); - - private int value; - - /** - * Creates an OSPF neighbor state. - * - * @param value represents neighbors state - */ - OspfNeighborState(int value) { - this.value = value; - } - - /** - * Gets value of neighbor state. - * - * @return value represents neighbors state - */ - public int getValue() { - return value; - } -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfPacketType.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfPacketType.java deleted file mode 100644 index 810b700614..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfPacketType.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -/** - * Representation of different OSPF packet types. - */ -public enum OspfPacketType { - - /** - * OSPF hello packet. - */ - HELLO(1), - /** - * OSPF device description packet. - */ - DD(2), - /** - * OSPF link state request packet. - */ - LSREQUEST(3), - /** - * OSPF link state update packet. - */ - LSUPDATE(4), - /** - * OSPF link state acknowledge packet. - */ - LSAACK(5); - - private int value; - - /** - * Creates instance of OSPF packet types. - * - * @param value OSPF packet types - */ - OspfPacketType(int value) { - this.value = value; - } - - /** - * Gets the value. - * - * @return value - */ - public int value() { - return value; - } -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfProcess.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfProcess.java deleted file mode 100644 index 767184c7b0..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfProcess.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package org.onosproject.ospf.controller; - -import java.util.List; - -/** - * Represents an OSPF Process. - */ -public interface OspfProcess { - - /** - * Gets the list of areas belonging to this process. - * - * @return list of areas belonging to this process - */ - public List areas(); - - /** - * Sets the list of areas belonging to this process. - * - * @param areas list of areas belonging to this process - */ - public void setAreas(List areas); - - /** - * Gets the process id. - * - * @return process id - */ - public String processId(); - - /** - * Sets the process id. - * - * @param processId the process id - */ - public void setProcessId(String processId); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouter.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouter.java deleted file mode 100644 index 38b30131dc..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouter.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.onlab.packet.Ip4Address; - -/** - * Abstraction of an OSPF Router. - */ -public interface OspfRouter { - - /** - * Gets IP address of the router. - * - * @return IP address of the router - */ - Ip4Address routerIp(); - - /** - * Gets the area id for this device. - * - * @return the area id for this device - */ - Ip4Address areaIdOfInterface(); - - /** - * Gets IP address of the interface. - * - * @return IP address of the interface - */ - Ip4Address interfaceId(); - - /** - * Gets list of device TED. - * - * @return list of device TED. - */ - OspfDeviceTed deviceTed(); - - /** - * Sets IP address of the Router. - * - * @param routerIp IP address of the router - */ - void setRouterIp(Ip4Address routerIp); - - /** - * Sets area id in which this device belongs to. - * - * @param areaIdOfInterface area id in which this device belongs to - */ - void setAreaIdOfInterface(Ip4Address areaIdOfInterface); - - /** - * Sets IP address of the interface. - * - * @param interfaceId IP address of the interface - */ - void setInterfaceId(Ip4Address interfaceId); - - /** - * Sets the device TED information. - * - * @param deviceTed device TED instance - */ - void setDeviceTed(OspfDeviceTed deviceTed); - - /** - * Gets if router is opaque enabled. - * - * @return true if router is opaque enabled else false. - */ - boolean isOpaque(); - - /** - * Sets true if device is opaque enable if not sets false. - * - * @param opaque true if device is opaque enable if not sets false - */ - void setOpaque(boolean opaque); - - /** - * Gets IP address of the advertising router. - * - * @return IP address of the advertising router - */ - Ip4Address neighborRouterId(); - - /** - * Sets IP address of the advertising router. - * - * @param advertisingRouterId IP address of the advertising router - */ - void setNeighborRouterId(Ip4Address advertisingRouterId); - - - /** - * Gets if the router id DR or not. - * - * @return true if the router is DR else false - */ - boolean isDr(); - - /** - * Sets if the router id DR or not. - * - * @param dr true if the router is DR else false - */ - void setDr(boolean dr); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterId.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterId.java deleted file mode 100644 index 22c91f48ec..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterId.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.ospf.controller; - -import org.onlab.packet.IpAddress; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkArgument; - -/** - * Represents an OSPF router id. - */ -public class OspfRouterId { - - private static final String SCHEME = "l3"; - private static final long UNKNOWN = 0; - private final IpAddress ipAddress; - - /** - * Creates an instance of OSPF router id. - * - * @param ipAddress IP address of the router - */ - public OspfRouterId(IpAddress ipAddress) { - this.ipAddress = ipAddress; - } - - /** - * Creates an instance from ip address. - * - * @param ipAddress IP address - * @return OSPF router id instance - */ - public static OspfRouterId ospfRouterId(IpAddress ipAddress) { - return new OspfRouterId(ipAddress); - } - - /** - * Creates OSPF router id instance from the URI. - * - * @param uri device URI - * @return OSPF router id instance - */ - public static OspfRouterId ospfRouterId(URI uri) { - checkArgument(uri.getScheme().equals(SCHEME), "Unsupported URI scheme"); - return new OspfRouterId(IpAddress.valueOf(uri.getSchemeSpecificPart())); - } - - /** - * Returns device URI from the given router id. - * - * @param ospfRouterId router id instance - * @return device URI - */ - public static URI uri(OspfRouterId ospfRouterId) { - return uri(ospfRouterId.ipAddress()); - } - - /** - * Returns device URI from the given IP address. - * - * @param ipAddress device IP address - * @return device URI - */ - public static URI uri(IpAddress ipAddress) { - try { - return new URI(SCHEME, ipAddress.toString(), null); - } catch (URISyntaxException e) { - return null; - } - } - - /** - * Returns the IP address. - * - * @return IP address - */ - public IpAddress ipAddress() { - return ipAddress; - } - - @Override - public String toString() { - return ipAddress.toString(); - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof OspfRouterId)) { - return false; - } - - OspfRouterId otherOspfRouterId = (OspfRouterId) other; - return Objects.equals(ipAddress, otherOspfRouterId.ipAddress); - } - - @Override - public int hashCode() { - return Objects.hash(ipAddress); - } -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterListener.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterListener.java deleted file mode 100644 index 62f2e6322f..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/OspfRouterListener.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -/** - * Abstraction of an OSPF Router Listener. - * Allows for providers interested in switch events to be notified. - */ -public interface OspfRouterListener { - - /** - * Notifies that a router is added. - * - * @param ospfRouter OSPF router instance - */ - void routerAdded(OspfRouter ospfRouter); - - /** - * Notifies that a router is removed. - * - * @param ospfRouter OSPF router instance - */ - void routerRemoved(OspfRouter ospfRouter); - - /** - * Notifies that the router has changed in some way. - * - * @param ospfRouter OSPF router instance - */ - void routerChanged(OspfRouter ospfRouter); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/TopologyForDeviceAndLink.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/TopologyForDeviceAndLink.java deleted file mode 100644 index 9d6dd64121..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/TopologyForDeviceAndLink.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.onlab.packet.Ip4Address; - -import java.util.List; -import java.util.Map; - -/** - * Represents IP topology for OSPF device and link details. - */ -public interface TopologyForDeviceAndLink { - - /** - * Gets the device information. - * - * @return device information - */ - Map deviceInformationMap(); - - /** - * Sets the device information. - * - * @param key key used to store in map - * @param deviceInformationMap device information instance - */ - void setDeviceInformationMap(String key, DeviceInformation deviceInformationMap); - - /** - * Gets the link information. - * - * @return link information - */ - Map linkInformationMap(); - - /** - * Sets link information. - * - * @param key key used to store in map - * @param linkInformationMap link information instance - */ - void setLinkInformationMap(String key, LinkInformation linkInformationMap); - - /** - * Removes link information. - * - * @param key key used to remove from map - */ - void removeLinkInformationMap(String key); - - /** - * Adds device information. - * - * @param ospfLsa LSA instance - * @param ospfInterface interface instance - * @param ospfArea area instance - */ - void addLocalDevice(OspfLsa ospfLsa, OspfInterface ospfInterface, OspfArea ospfArea); - - /** - * Removes device information. - * - * @param key key used to remove from map - */ - void removeDeviceInformationMap(String key); - - /** - * Removes links from link information map. - * - * @param routerId router's IP address - */ - void removeLinks(Ip4Address routerId); - - /** - * Gets OSPF link TED details. - * - * @param key key used to retrieve from map - * @return links TED information - */ - OspfLinkTed getOspfLinkTedHashMap(String key); - - /** - * Gets all the router information to be deleted. - * - * @param ospfLsa LSA instance - * @param ospfArea area instance - * @return list of router information which needs to delete from device list - */ - List getDeleteRouterInformation(OspfLsa ospfLsa, OspfArea ospfArea); - - /** - * Updates the device and link information. - * - * @param ospfLsa LSA instance - * @param ospfArea area instance - */ - void updateLinkInformation(OspfLsa ospfLsa, OspfArea ospfArea); - - /** - * Gets device information as map. - * - * @return deviceInformationMap to delete from core - */ - Map deviceInformationMapToDelete(); - - /** - * Sets device information as map. - * - * @param key key to store in device info map - * @param deviceInformationMapToDelete device information instance - */ - void setDeviceInformationMapToDelete(String key, DeviceInformation deviceInformationMapToDelete); - - /** - * Removes device information from deviceInformationMapToDelete. - * - * @param key key to remove device information - */ - void removeDeviceInformationMapFromDeleteMap(String key); - - /** - * Gets device information as map for Point-To-Point. - * - * @return deviceInformationMap - */ - Map deviceInformationMapForPointToPoint(); - - /** - * Sets device information as map for Point-To-Point. - * - * @param key key to store in device info - * @param deviceInformationMap device information instance - */ - void setDeviceInformationMapForPointToPoint(String key, DeviceInformation deviceInformationMap); - - /** - * Gets link information as map for Point-To-Point. - * - * @return linkInformationMap - */ - Map linkInformationMapForPointToPoint(); - - /** - * Sets link information as map for Point-To-Point. - * - * @param key key to store link info - * @param linkInformationMap link information instance - */ - void setLinkInformationMapForPointToPoint(String key, LinkInformation linkInformationMap); -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/package-info.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/package-info.java deleted file mode 100644 index 9233eeed07..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/controller/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ospf api interfaces. - */ -package org.onosproject.ospf.controller; \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/OspfParseException.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/OspfParseException.java deleted file mode 100644 index c22838193b..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/OspfParseException.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.exceptions; - -import com.google.common.base.MoreObjects; - -/** - * Representation of a custom exception for OSPF. - */ -public class OspfParseException extends Exception { - - private static final long serialVersionUID = 1L; - private byte errorCode; - private byte errorSubCode; - - /** - * Creates a new OSPF exception. - */ - public OspfParseException() { - super(); - } - - /** - * Creates a new OSPF exception based on the given arguments. - * - * @param message the detail of exception in string - * @param cause underlying cause of the error - */ - public OspfParseException(final String message, final Throwable cause) { - super(message, cause); - } - - /** - * Creates a new OSPF exception for the given message. - * - * @param message the detail of exception in string - */ - public OspfParseException(final String message) { - super(message); - } - - /** - * Creates a new OSPF exception from throwable instance. - * - * @param cause underlying cause of the error - */ - public OspfParseException(final Throwable cause) { - super(cause); - } - - /** - * Creates a new OSPF exception from error code and error sub code. - * - * @param errorCode error code of OSPF message - * @param errorSubCode error sub code of OSPF message - */ - public OspfParseException(final byte errorCode, final byte errorSubCode) { - super(); - this.errorCode = errorCode; - this.errorSubCode = errorSubCode; - } - - /** - * Returns error code for this exception. - * - * @return error code for this exception - */ - public byte errorCode() { - return this.errorCode; - } - - /** - * Returns error sub code for this exception. - * - * @return error sub code for this exception - */ - public byte errorSubCode() { - return this.errorSubCode; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("errorCode", errorCode) - .add("errorSubCode", errorSubCode) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/package-info.java b/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/package-info.java deleted file mode 100644 index db2cc81bfb..0000000000 --- a/protocols/ospf/api/src/main/java/org/onosproject/ospf/exceptions/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF exception types. - */ -package org.onosproject.ospf.exceptions; \ No newline at end of file diff --git a/protocols/ospf/api/src/test/java/org/onosproject/ospf/controller/OspfRouterIdTest.java b/protocols/ospf/api/src/test/java/org/onosproject/ospf/controller/OspfRouterIdTest.java deleted file mode 100644 index 6944a6f297..0000000000 --- a/protocols/ospf/api/src/test/java/org/onosproject/ospf/controller/OspfRouterIdTest.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.IpAddress; - -import java.net.URI; - -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfRouterId. - */ -public class OspfRouterIdTest { - - private OspfRouterId ospfRouterId; - - @Before - public void setUp() throws Exception { - ospfRouterId = new OspfRouterId(IpAddress.valueOf("2.2.2.2")); - } - - @After - public void tearDown() throws Exception { - ospfRouterId = null; - } - - /** - * Tests constructor. - */ - @Test - public void testOspfRouterId() throws Exception { - assertThat(OspfRouterId.ospfRouterId(IpAddress.valueOf("2.2.2.2")), instanceOf(OspfRouterId.class)); - - } - - /** - * Tests ipAddress() getter method. - */ - @Test - public void testIpAddress() throws Exception { - assertThat(ospfRouterId.ipAddress(), instanceOf(IpAddress.class)); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(ospfRouterId.toString(), is(notNullValue())); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(ospfRouterId.equals(new OspfRouterId(IpAddress.valueOf("3.3.3.3"))), is(false)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - assertThat(ospfRouterId.hashCode(), is(notNullValue())); - } - - /** - * Tests constructor. - */ - @Test - public void testOspfRouterId1() throws Exception { - assertThat(OspfRouterId.ospfRouterId(OspfRouterId.uri(ospfRouterId)), instanceOf(OspfRouterId.class)); - } - - /** - * Tests uri() method. - */ - @Test - public void testUri() throws Exception { - assertThat(OspfRouterId.uri(IpAddress.valueOf("2.2.2.2")), instanceOf(URI.class)); - } - - /** - * Tests uri() method.. - */ - @Test - public void testUri1() throws Exception { - assertThat(OspfRouterId.uri(ospfRouterId), instanceOf(URI.class)); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/BUILD b/protocols/ospf/ctl/BUILD deleted file mode 100644 index de94b39b12..0000000000 --- a/protocols/ospf/ctl/BUILD +++ /dev/null @@ -1,10 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [ - "@io_netty_netty//jar", - "//protocols/ospf/api:onos-protocols-ospf-api", - "//protocols/ospf/protocol:onos-protocols-ospf-protocol", -] - -osgi_jar_with_tests( - exclude_tests = ["org.onosproject.ospf.controller.impl.OspfPipelineFactoryTest"], - deps = COMPILE_DEPS, -) diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/Configuration.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/Configuration.java deleted file mode 100644 index 65ea80c644..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/Configuration.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.area; - -import com.google.common.base.MoreObjects; -import org.onosproject.ospf.controller.OspfProcess; - -import java.util.List; - -/** - * Representation of an OSPF configuration data. - */ -public class Configuration { - private List processes; - private String method; - - /** - * Gets the configured processes. - * - * @return list of configured processes. - */ - public List getProcesses() { - return processes; - } - - /** - * Sets the configured processes. - * - * @param processes configured processes - */ - public void setProcesses(List processes) { - this.processes = processes; - } - - /** - * Gets whether to update, add or delete configuration. - * - * @return update, add or delete configuration - */ - public String getMethod() { - return method; - } - - /** - * Sets whether to update, add or delete configuration. - * - * @param method configuration method. - */ - public void setMethod(String method) { - this.method = method; - } - - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("method", method) - .add("processes", processes) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImpl.java deleted file mode 100644 index 3848b2466a..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImpl.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.area; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfAreaAddressRange; - -/** - * Representation of an area address ranges. - * Address ranges are used in order to aggregate routing information at area boundaries. - * Each address range is specified by an [address,mask] pair and a status indication of - * either advertise or do not advertise - */ -public class OspfAreaAddressRangeImpl implements OspfAreaAddressRange { - - private Ip4Address ipAddress; - private String mask; - private boolean advertise; - - /** - * Gets the IP address. - * - * @return IP address - */ - public Ip4Address ipAddress() { - return ipAddress; - } - - /** - * Sets the IP address. - * - * @param ipAddress IP address - */ - public void setIpAddress(Ip4Address ipAddress) { - this.ipAddress = ipAddress; - } - - /** - * Gets the network mask. - * - * @return network mask - */ - public String mask() { - return mask; - } - - /** - * Sets the network mask. - * - * @param mask network mask value - */ - public void setMask(String mask) { - this.mask = mask; - } - - /** - * Gets the advertise value. - * - * @return advertise value - */ - public boolean isAdvertise() { - return advertise; - } - - /** - * Sets the advertise value. - * - * @param advertise advertise value - */ - public void setAdvertise(boolean advertise) { - this.advertise = advertise; - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof OspfAreaAddressRangeImpl)) { - return false; - } - OspfAreaAddressRangeImpl otherAreaAddressRange = (OspfAreaAddressRangeImpl) other; - return Objects.equal(ipAddress, otherAreaAddressRange.ipAddress) && - Objects.equal(mask, otherAreaAddressRange.mask) && - Objects.equal(advertise, otherAreaAddressRange.advertise); - } - - @Override - public int hashCode() { - return Objects.hashCode(ipAddress, mask, advertise); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("ipAddress", ipAddress) - .add("mask", mask) - .add("advertise", advertise) - .toString(); - } -} diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaImpl.java deleted file mode 100644 index 7a74637928..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaImpl.java +++ /dev/null @@ -1,729 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.area; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.LsaWrapper; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.OspfLsdb; -import org.onosproject.ospf.controller.OspfNbr; -import org.onosproject.ospf.controller.OspfNeighborState; -import org.onosproject.ospf.controller.impl.OspfNbrImpl; -import org.onosproject.ospf.controller.lsdb.OspfLsdbImpl; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink; -import org.onosproject.ospf.protocol.lsa.types.NetworkLsa; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.util.ChecksumCalculator; -import org.onosproject.ospf.protocol.util.OspfInterfaceState; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -/** - * Representation an OSPF area and related information. - */ -public class OspfAreaImpl implements OspfArea { - private static final Logger log = LoggerFactory.getLogger(OspfAreaImpl.class); - /** - * Whether AS-external-LSAs will be flooded into/throughout the area. - */ - private boolean externalRoutingCapability; - - /** - * Represents a list of all router's interfaces associated with this area. - */ - private List ospfInterfaceList; - /** - * The LS Database for this area. It includes router-LSAs, network-LSAs and. - * summary-LSAs. AS-external-LSAs are hold in the OSPF class itself. - */ - private OspfLsdbImpl database; - /** - * A 32-bit number identifying the area. - */ - private Ip4Address areaId; - /** - * Router ID. - */ - private Ip4Address routerId; - /** - * Represents Options like external, opaque capabilities. - */ - private int options; - /** - * Represents Opaque Enable or not. - */ - private boolean isOpaqueEnable; - - /** - * Creates an instance of area implementation. - */ - public OspfAreaImpl() { - database = new OspfLsdbImpl(this); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - OspfAreaImpl that = (OspfAreaImpl) o; - return Objects.equal(areaId, that.areaId) && - Objects.equal(routerId, that.routerId) && - Objects.equal(externalRoutingCapability, that.externalRoutingCapability) && - Objects.equal(ospfInterfaceList.size(), that.ospfInterfaceList.size()) && - Objects.equal(database, that.database); - } - - @Override - public int hashCode() { - return Objects.hashCode(areaId, routerId, externalRoutingCapability, - ospfInterfaceList, database); - } - - /** - * Gets the router id. - * - * @return router id - */ - public Ip4Address routerId() { - return routerId; - } - - /** - * Sets the router id. - * - * @param routerId router id - */ - @JsonProperty("routerId") - public void setRouterId(Ip4Address routerId) { - this.routerId = routerId; - } - - /** - * Sets opaque enabled to true or false. - * - * @param isOpaqueEnable true if opaque enabled else false - */ - @JsonProperty("isOpaqueEnable") - public void setIsOpaqueEnabled(boolean isOpaqueEnable) { - this.isOpaqueEnable = isOpaqueEnable; - } - - /** - * Gets is opaque enabled or not. - * - * @return true if opaque enabled else false - */ - public boolean isOpaqueEnabled() { - return this.isOpaqueEnable; - } - - /** - * Initializes link state database. - */ - public void initializeDb() { - - database.initializeDb(); - } - - /** - * Refreshes the OSPF area information . - * Gets called as soon as the interface is down or neighbor full Router LSA is updated. - * - * @param ospfInterface OSPF interface instance - */ - @Override - public void refreshArea(OspfInterface ospfInterface) { - OspfInterfaceImpl ospfInterfaceImpl = (OspfInterfaceImpl) ospfInterface; - log.debug("Inside refreshArea...!!!"); - //If interface state is DR build network LSA. - if (ospfInterfaceImpl.state() == OspfInterfaceState.DR) { - if (ospfInterface.listOfNeighbors().size() > 0) { - //Get the NetworkLsa - NetworkLsa networkLsa = null; - try { - networkLsa = buildNetworkLsa(ospfInterface.ipAddress(), ospfInterface.ipNetworkMask()); - } catch (Exception e) { - log.debug("Error while building NetworkLsa {}", e.getMessage()); - } - //Add the NetworkLsa to lsdb - database.addLsa(networkLsa, true, ospfInterface); - addToOtherNeighborLsaTxList(networkLsa); - } else { - log.debug("No Neighbors hence not creating NetworkLSA...!!!"); - } - } - //Get the router LSA - RouterLsa routerLsa = null; - try { - routerLsa = buildRouterLsa(ospfInterface); - } catch (Exception e) { - log.debug("Error while building RouterLsa {}", e.getMessage()); - } - //Add the RouterLSA to lsdb - database.addLsa(routerLsa, true, ospfInterface); - addToOtherNeighborLsaTxList(routerLsa); - } - - /** - * Builds a network LSA. - * - * @param interfaceIp interface IP address - * @param mask interface network mask - * @return NetworkLsa instance - * @throws OspfParseException might throws exception - */ - public NetworkLsa buildNetworkLsa(Ip4Address interfaceIp, Ip4Address mask) throws OspfParseException { - // generate the Router-LSA for this Area. - NetworkLsa networkLsa = new NetworkLsa(); - networkLsa.setAdvertisingRouter(routerId); - networkLsa.setLinkStateId(interfaceIp.toString()); - networkLsa.setLsType(OspfLsaType.NETWORK.value()); - networkLsa.setAge(1); - networkLsa.setOptions(2); - networkLsa.setNetworkMask(mask); - //Adding our own router. - networkLsa.addAttachedRouter(routerId()); - Iterator iter = ospfInterfaceList.iterator(); - OspfInterfaceImpl ospfInterface = null; - while (iter.hasNext()) { - ospfInterface = (OspfInterfaceImpl) iter.next(); - if (ospfInterface.ipAddress().equals(interfaceIp)) { - break; - } - } - if (ospfInterface != null) { - List neighborsInFullState = getNeighborsInFullState(ospfInterface); - if (neighborsInFullState != null) { - for (OspfNbr ospfnbr : neighborsInFullState) { - networkLsa.addAttachedRouter(ospfnbr.neighborId()); - log.debug("Adding attached neighbor:: {}", ospfnbr.neighborId()); - } - } - } - networkLsa.setLsSequenceNo(database.getLsSequenceNumber(OspfLsaType.NETWORK)); - //Find the byte length and add it in lsa object - ChecksumCalculator checksum = new ChecksumCalculator(); - byte[] lsaBytes = networkLsa.asBytes(); - networkLsa.setLsPacketLen(lsaBytes.length); - //Convert lsa object to byte again to reflect the packet length which we added. - lsaBytes = networkLsa.asBytes(); - //find the checksum - byte[] twoByteChecksum = checksum.calculateLsaChecksum(lsaBytes, - OspfUtil.LSAPACKET_CHECKSUM_POS1, - OspfUtil.LSAPACKET_CHECKSUM_POS2); - int checkSumVal = OspfUtil.byteToInteger(twoByteChecksum); - networkLsa.setLsCheckSum(checkSumVal); - return networkLsa; - } - - /** - * Builds Router LSA. - * - * @param ospfInterface Interface instance - * @return routerLsa Router LSA instance - * @throws OspfParseException might throws exception - */ - public RouterLsa buildRouterLsa(OspfInterface ospfInterface) throws OspfParseException { - // generate the Router-LSA for this Area. - RouterLsa routerLsa = new RouterLsa(); - routerLsa.setAdvertisingRouter(routerId); - routerLsa.setLinkStateId(routerId.toString()); - routerLsa.setLsType(OspfLsaType.ROUTER.value()); - routerLsa.setAge(1); - routerLsa.setOptions(options); - routerLsa.setAreaBorderRouter(false); - routerLsa.setAsBoundaryRouter(false); - routerLsa.setVirtualEndPoint(false); - buildLinkForRouterLsa(routerLsa, ospfInterface); - routerLsa.setLsSequenceNo(database.getLsSequenceNumber(OspfLsaType.ROUTER)); - //Find the byte length and add it in lsa object - ChecksumCalculator checksum = new ChecksumCalculator(); - byte[] lsaBytes = routerLsa.asBytes(); - routerLsa.setLsPacketLen(lsaBytes.length); - //Convert lsa object to byte again to reflect the packet length which we added. - lsaBytes = routerLsa.asBytes(); - //find the checksum - byte[] twoByteChecksum = checksum.calculateLsaChecksum(lsaBytes, - OspfUtil.LSAPACKET_CHECKSUM_POS1, - OspfUtil.LSAPACKET_CHECKSUM_POS2); - int checkSumVal = OspfUtil.byteToInteger(twoByteChecksum); - routerLsa.setLsCheckSum(checkSumVal); - return routerLsa; - } - - /** - * Builds LSA link for router LSA. - * - * @param routerLsa router LSA instance - * @param ospfInterface interface instance - */ - private void buildLinkForRouterLsa(RouterLsa routerLsa, OspfInterface ospfInterface) { - OspfInterfaceImpl nextInterface; - Iterator interfaces = ospfInterfaceList.iterator(); - while (interfaces.hasNext()) { - nextInterface = (OspfInterfaceImpl) interfaces.next(); - if (nextInterface.state() == OspfInterfaceState.DOWN) { - continue; - } else if (nextInterface.state() == OspfInterfaceState.LOOPBACK) { - OspfLsaLink link = new OspfLsaLink(); - link.setLinkData("-1"); - link.setLinkId(nextInterface.ipAddress().toString()); - link.setLinkType(3); - link.setMetric(0); - link.setTos(0); - routerLsa.addRouterLink(link); - routerLsa.incrementLinkNo(); - } else if (nextInterface.state() == OspfInterfaceState.POINT2POINT) { - // adding all neighbour routers - List neighborsInFullState = getNeighborsInFullState(nextInterface); - if (neighborsInFullState != null) { - log.debug("Adding OspfLsaLink ::neighborsInFullState {}, InterfaceIP: {}", - neighborsInFullState.size(), nextInterface.ipAddress()); - for (OspfNbr ospfnbr : neighborsInFullState) { - OspfLsaLink link = new OspfLsaLink(); - link.setLinkData(nextInterface.ipAddress().toString()); - link.setLinkId(ospfnbr.neighborId().toString()); - link.setLinkType(1); - link.setMetric(0); - link.setTos(0); - routerLsa.addRouterLink(link); - routerLsa.incrementLinkNo(); - log.debug("Added OspfLsaLink :: {}, neighborIP: {}, routerLinks: {}", - ospfnbr.neighborId(), ospfnbr.neighborIpAddr(), routerLsa.noLink()); - } - } - // adding the self address - OspfLsaLink link = new OspfLsaLink(); - link.setLinkData(nextInterface.ipNetworkMask().toString()); - link.setLinkId(nextInterface.ipAddress().toString()); - link.setLinkType(3); - link.setMetric(0); - link.setTos(0); - routerLsa.addRouterLink(link); - routerLsa.incrementLinkNo(); - } else { - buildLinkForRouterLsaBroadcast(routerLsa, nextInterface); - } - } - } - - /** - * Builds LSA link for router LSA. - * - * @param routerLsa router LSA instance - * @param ospfInterface interface instance - */ - private void buildLinkForRouterLsaBroadcast(RouterLsa routerLsa, OspfInterface ospfInterface) { - OspfInterfaceImpl ospfInterfaceImpl = (OspfInterfaceImpl) ospfInterface; - if (ospfInterfaceImpl.state() == OspfInterfaceState.WAITING) { - OspfLsaLink link = new OspfLsaLink(); - link.setLinkData(ospfInterface.ipNetworkMask().toString()); - //Link id should be set to ip network number - link.setLinkId(ospfInterface.ipAddress().toString()); - link.setLinkType(3); - link.setMetric(0); - link.setTos(0); - routerLsa.addRouterLink(link); - routerLsa.incrementLinkNo(); - } else if (ospfInterfaceImpl.state() == OspfInterfaceState.DR) { - OspfLsaLink link = new OspfLsaLink(); - link.setLinkData(ospfInterface.ipAddress().toString()); - link.setLinkId(ospfInterface.ipAddress().toString()); - link.setLinkType(2); - link.setMetric(0); - link.setTos(0); - routerLsa.addRouterLink(link); - routerLsa.incrementLinkNo(); - } else if (ospfInterfaceImpl.state() == OspfInterfaceState.BDR || - ospfInterfaceImpl.state() == OspfInterfaceState.DROTHER) { - OspfLsaLink link = new OspfLsaLink(); - link.setLinkData(ospfInterface.ipAddress().toString()); - link.setLinkId(ospfInterface.dr().toString()); - link.setLinkType(2); - link.setMetric(0); - link.setTos(0); - routerLsa.addRouterLink(link); - routerLsa.incrementLinkNo(); - } - } - - /** - * Gets the area id. - * - * @return area id - */ - public Ip4Address areaId() { - return areaId; - } - - /** - * Sets the area id. - * - * @param areaId area id - */ - @JsonProperty("areaId") - public void setAreaId(Ip4Address areaId) { - this.areaId = areaId; - } - - /** - * Gets external routing capability. - * - * @return true if external routing capable, else false - */ - public boolean isExternalRoutingCapability() { - return externalRoutingCapability; - } - - /** - * Sets external routing capability. - * - * @param externalRoutingCapability true if external routing capable, else false - */ - @JsonProperty("externalRoutingCapability") - public void setExternalRoutingCapability(boolean externalRoutingCapability) { - this.externalRoutingCapability = externalRoutingCapability; - } - - /** - * Gets the list of interfaces in this area. - * - * @return list of interfaces - */ - public List ospfInterfaceList() { - return ospfInterfaceList; - } - - /** - * Sets the list of interfaces attached to the area. - * - * @param ospfInterfaceList list of OspfInterface instances - */ - @JsonProperty("interface") - public void setOspfInterfaceList(List ospfInterfaceList) { - this.ospfInterfaceList = ospfInterfaceList; - } - - /** - * Checks all neighbors belonging to this area whether they are in state EXCHANGE or LOADING. - * Return false if there is at least one, else return true. This Method is used by - * "processReceivedLsa()" in the neighbor class. - * - * @return boolean indicating that there is no Neighbor in Database Exchange - */ - public boolean noNeighborInLsaExchangeProcess() { - OspfInterfaceImpl nextInterface; - OspfNeighborState nextNeighborState; - Iterator interfaces = ospfInterfaceList.iterator(); - while (interfaces.hasNext()) { - nextInterface = (OspfInterfaceImpl) interfaces.next(); - Iterator neighbors = nextInterface.listOfNeighbors().values().iterator(); - while (neighbors.hasNext()) { - nextNeighborState = ((OspfNbrImpl) neighbors.next()).getState(); - if (nextNeighborState == OspfNeighborState.EXCHANGE || - nextNeighborState == OspfNeighborState.LOADING) { - return false; - } - } - } - return true; - } - - /** - * Gets header of all types of LSAs. - * - * @param excludeMaxAgeLsa need to include(true) or exclude(false) maxage lsa's - * @param isOpaquecapable need to include(true) or exclude(false) Type 10 Opaque lsa's - * @return list of lsa header in the lsdb - */ - public List getLsaHeaders(boolean excludeMaxAgeLsa, boolean isOpaquecapable) { - return database.getAllLsaHeaders(excludeMaxAgeLsa, isOpaquecapable); - } - - /** - * Gets the LSA from LSDB based on the input. - * - * @param lsType type of lsa to form the key - * @param linkStateID link state id to form the key - * @param advertisingRouter advertising router to form the key - * @return lsa wrapper instance which contains the Lsa - */ - public LsaWrapper getLsa(int lsType, String linkStateID, String advertisingRouter) { - String lsaKey = lsType + "-" + linkStateID + "-" + advertisingRouter; - if (lsType == OspfParameters.LINK_LOCAL_OPAQUE_LSA || lsType == OspfParameters.AREA_LOCAL_OPAQUE_LSA || - lsType == OspfParameters.AS_OPAQUE_LSA) { - try { - byte[] linkStateAsBytes = InetAddress.getByName(linkStateID).getAddress(); - - int opaqueType = linkStateAsBytes[0]; - int opaqueId = OspfUtil.byteToInteger(Arrays.copyOfRange(linkStateAsBytes, 1, - linkStateAsBytes.length)); - lsaKey = lsType + "-" + opaqueType + opaqueId + "-" + advertisingRouter; - } catch (UnknownHostException uhe) { - log.warn("Can't resolve host in Lsa wrapper", uhe); - return null; - } - } - return database.findLsa(lsType, lsaKey); - } - - - /** - * Checks whether an instance of the given LSA exists in the database belonging to this area. - * If so return true else false. - * - * @param lookupLsa ospf LSA instance to lookup - * @return LSA wrapper instance which contains the Lsa - */ - public LsaWrapper lsaLookup(OspfLsa lookupLsa) { - return database.lsaLookup((LsaHeader) lookupLsa); - } - - /** - * Checks whether an instance of the given LSA exists in the database belonging to this area. - * If so return true else false. - * - * @param lsa1 OSPF LSA instance to compare - * @param lsa2 OSPF LSA instance to compare - * @return "same" if both instances are same, "latest" if lsa1 is latest, or "old" if lsa1 is old - */ - public String isNewerOrSameLsa(OspfLsa lsa1, OspfLsa lsa2) { - return database.isNewerOrSameLsa((LsaHeader) lsa1, (LsaHeader) lsa2); - } - - /** - * Methods gets called from ChannelHandler to add the received LSA to LSDB. - * - * @param ospfLsa OSPF LSA instance - * @param ospfInterface OSPF interface instance - */ - public void addLsa(OspfLsa ospfLsa, OspfInterface ospfInterface) { - //second param is false as lsa from network - database.addLsa((LsaHeader) ospfLsa, false, ospfInterface); - } - - /** - * Methods gets called from ChannelHandler to add the received LSA to LSDB. - * - * @param ospfLsa OSPF LSA instance - * @param isSelfOriginated true if the LSA is self originated. Else false - * @param ospfInterface OSPF interface instance - */ - public void addLsa(OspfLsa ospfLsa, boolean isSelfOriginated, OspfInterface ospfInterface) { - database.addLsa((LsaHeader) ospfLsa, isSelfOriginated, ospfInterface); - } - - /** - * Adds the LSA to maxAge bin. - * - * @param key key to add it to LSDB - * @param wrapper LSA wrapper instance - */ - public void addLsaToMaxAgeBin(String key, LsaWrapper wrapper) { - database.addLsaToMaxAgeBin(key, wrapper); - } - - /** - * Sets router sequence number for router LSA. - * - * @param newSequenceNumber sequence number - */ - public void setDbRouterSequenceNumber(long newSequenceNumber) { - database.setRouterLsaSeqNo(newSequenceNumber); - } - - /** - * Methods gets called from ChannelHandler to delete the LSA. - * - * @param ospfLsa the LSA instance to delete - */ - public void deleteLsa(LsaHeader ospfLsa) { - database.deleteLsa(ospfLsa); - } - - /** - * Removes LSA from bin. - * - * @param lsaWrapper the LSA wrapper instance to delete - */ - public void removeLsaFromBin(LsaWrapper lsaWrapper) { - database.removeLsaFromBin(lsaWrapper); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("areaID", areaId) - .add("ospfInterfaceList", ospfInterfaceList) - .add("externalRoutingCapability", externalRoutingCapability) - .toString(); - } - - /** - * Checks all Neighbors belonging to this Area whether they are in state lesser than the EXCHANGE. - * Creates list of such neighbors - * Returns list of neighbors who satisfy the conditions - * - * @param ospfInterface OSPF interface instance - * @return List of interfaces having state lesser than exchange - */ - public List getNeighborsInFullState(OspfInterface ospfInterface) { - - List listEligibleNeighbors = null; - OspfNbrImpl ospfNeighbor = null; - OspfNeighborState nextNeighborState; - Iterator nbrInterface = ospfInterface.listOfNeighbors().values().iterator(); - while (nbrInterface.hasNext()) { - ospfNeighbor = (OspfNbrImpl) nbrInterface.next(); - nextNeighborState = ospfNeighbor.getState(); - if (nextNeighborState.getValue() == OspfNeighborState.FULL.getValue()) { - if (listEligibleNeighbors == null) { - listEligibleNeighbors = new ArrayList(); - listEligibleNeighbors.add(ospfNeighbor); - } else { - listEligibleNeighbors.add(ospfNeighbor); - } - } - } - return listEligibleNeighbors; - } - - /** - * Gets the LSDB LSA key from LSA header. - * - * @param lsaHeader LSA header instance - * @return key LSA key - */ - public String getLsaKey(LsaHeader lsaHeader) { - return database.getLsaKey(lsaHeader); - } - - /** - * Adds the received LSA in other neighbors tx list. - * - * @param recLsa LSA Header instance - */ - public void addToOtherNeighborLsaTxList(LsaHeader recLsa) { - //Add the received LSA in other neighbors retransmission list. - log.debug("OspfAreaImpl: addToOtherNeighborLsaTxList"); - List ospfInterfaces = ospfInterfaceList(); - for (OspfInterface ospfInterfaceFromArea : ospfInterfaces) { - Map neighbors = ospfInterfaceFromArea.listOfNeighbors(); - for (Object neighborIP : neighbors.keySet()) { - OspfNbrImpl nbr = (OspfNbrImpl) neighbors.get(neighborIP); - if (nbr.getState().getValue() < OspfNeighborState.EXCHANGE.getValue()) { - continue; - } - String key = database.getLsaKey(recLsa); - if (nbr.getState() == OspfNeighborState.EXCHANGE || nbr.getState() == OspfNeighborState.LOADING) { - if (nbr.getLsReqList().containsKey(key)) { - LsaWrapper lsWrapper = lsaLookup(recLsa); - if (lsWrapper != null) { - LsaHeader ownLsa = (LsaHeader) lsWrapper.ospfLsa(); - String status = isNewerOrSameLsa(recLsa, ownLsa); - if (status.equals("old")) { - continue; - } else if (status.equals("same")) { - log.debug("OspfAreaImpl: addToOtherNeighborLsaTxList: " + - "Removing lsa from reTxtList {}", key); - nbr.getLsReqList().remove(key); - continue; - } else { - log.debug("OspfAreaImpl: addToOtherNeighborLsaTxList: " + - "Removing lsa from reTxtList {}", key); - nbr.getLsReqList().remove(key); - } - } - } - } - if (recLsa.advertisingRouter().toString().equals((String) neighborIP)) { - continue; - } - if ((recLsa.lsType() == OspfParameters.LINK_LOCAL_OPAQUE_LSA || - recLsa.lsType() == OspfParameters.AREA_LOCAL_OPAQUE_LSA)) { - if (nbr.isOpaqueCapable()) { - log.debug("OspfAreaImpl: addToOtherNeighborLsaTxList: Adding lsa to reTxtList {}", - recLsa); - nbr.getReTxList().put(key, recLsa); - } - } else { - log.debug("OspfAreaImpl: addToOtherNeighborLsaTxList: Adding lsa to reTxtList {}", - recLsa); - nbr.getReTxList().put(key, recLsa); - } - } - } - } - - /** - * Gets the options value. - * - * @return options value - */ - public int options() { - return options; - } - - /** - * Sets the options value. - * - * @param options options value - */ - public void setOptions(int options) { - this.options = options; - } - - /** - * Gets the opaque enabled options value. - * - * @return opaque enabled options value - */ - public int opaqueEnabledOptions() { - return Integer.parseInt(OspfParameters.OPAQUE_ENABLED_OPTION_VALUE, 2); - } - - /** - * Gets the lsdb instance for this area. - * - * @return lsdb instance - */ - public OspfLsdb database() { - return database; - } -} diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfInterfaceImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfInterfaceImpl.java deleted file mode 100644 index be503c2332..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfInterfaceImpl.java +++ /dev/null @@ -1,1801 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.ospf.controller.area; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelFuture; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.LsaWrapper; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLinkTed; -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.controller.OspfMessage; -import org.onosproject.ospf.controller.OspfNbr; -import org.onosproject.ospf.controller.OspfNeighborState; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.controller.OspfRouter; -import org.onosproject.ospf.controller.TopologyForDeviceAndLink; -import org.onosproject.ospf.controller.impl.Controller; -import org.onosproject.ospf.controller.impl.OspfNbrImpl; -import org.onosproject.ospf.controller.impl.TopologyForDeviceAndLinkImpl; -import org.onosproject.ospf.controller.lsdb.LsaWrapperImpl; -import org.onosproject.ospf.controller.lsdb.OspfLsdbImpl; -import org.onosproject.ospf.controller.util.OspfEligibleRouter; -import org.onosproject.ospf.controller.util.OspfInterfaceType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.ospfpacket.OspfMessageWriter; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; -import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge; -import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest; -import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate; -import org.onosproject.ospf.protocol.util.ChecksumCalculator; -import org.onosproject.ospf.protocol.util.OspfInterfaceState; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -/** - * Representation of an OSPF interface. - */ -public class OspfInterfaceImpl implements OspfInterface { - private static final Logger log = LoggerFactory.getLogger(OspfInterfaceImpl.class); - private int interfaceIndex; - private Ip4Address ipAddress; - private Ip4Address ipNetworkMask; - private Channel channel = null; - private int helloIntervalTime; - private int routerDeadIntervalTime; - private int routerPriority; - private int interfaceType; - private int mtu; - private int reTransmitInterval; - private Ip4Address dr; - private Ip4Address bdr; - private OspfInterfaceState state; - private List linkStateHeaders = new ArrayList<>(); - private Map listOfNeighbors = new ConcurrentHashMap<>(); - private Map listOfNeighborMap = new ConcurrentHashMap<>(); - private long delay = 0; - private InternalHelloTimer helloTimerTask; - private InternalWaitTimer waitTimerTask; - private InternalDelayedAckTimer delayedAckTimerTask; - private ScheduledExecutorService exServiceHello; - private ScheduledExecutorService exServiceWait; - private ScheduledExecutorService exServiceDelayedAck; - private boolean isDelayedAckTimerScheduled = false; - private int delayedAckTimerInterval = 2500; - private int interfaceTypeOldValue = 0; - private TopologyForDeviceAndLink topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl(); - private OspfArea ospfArea; - private Controller controller; - - - /** - * Gets the interface state. - * - * @return interfaceState state of the interface - */ - public OspfInterfaceState state() { - return state; - } - - /** - * Sets the interface state. - * - * @param ospfInterfaceState interface state enum instance - */ - public void setState(OspfInterfaceState ospfInterfaceState) { - this.state = ospfInterfaceState; - } - - /** - * Sets the netty channel. - * - * @param channel channel - */ - public void setChannel(Channel channel) { - this.channel = channel; - } - - /** - * Returns OSPF area instance. - * - * @return OSPF area instance - */ - @Override - public OspfArea ospfArea() { - return ospfArea; - } - - /** - * Sets OSPF controller instance. - * - * @param controller OSPF controller instance - */ - public void setController(Controller controller) { - this.controller = controller; - } - - /** - * Sets OSPF area instance. - * - * @param ospfArea OSPF area instance - */ - @Override - public void setOspfArea(OspfArea ospfArea) { - this.ospfArea = ospfArea; - } - - /** - * Gets interface state. - * - * @return interface state - */ - public String interfaceState() { - return state.interfaceState(); - } - - /** - * Gets link state headers. - * - * @return get the list of lsa headers - */ - public List linkStateHeaders() { - Set key = listOfNeighborMap.keySet(); - for (String keys : key) { - LsaHeader lsaHeader = listOfNeighborMap.get(keys); - linkStateHeaders.add(lsaHeader); - } - return linkStateHeaders; - } - - /** - * Gets IP network mask. - * - * @return network mask - */ - @Override - public Ip4Address ipNetworkMask() { - return ipNetworkMask; - } - - /** - * Sets IP network mask. - * - * @param ipNetworkMask network mask - */ - @Override - public void setIpNetworkMask(Ip4Address ipNetworkMask) { - this.ipNetworkMask = ipNetworkMask; - } - - /** - * Adds neighboring router to list. - * - * @param ospfNbr ospfNbr instance - */ - @Override - public void addNeighbouringRouter(OspfNbr ospfNbr) { - listOfNeighbors.put(ospfNbr.neighborId().toString(), ospfNbr); - } - - /** - * Gets the neighbour details from listOfNeighbors map. - * - * @param neighborId neighbors id - * @return ospfNbr neighbor instance - */ - @Override - public OspfNbr neighbouringRouter(String neighborId) { - return listOfNeighbors.get(neighborId); - } - - /** - * Removes all the neighbors. - */ - @Override - public void removeNeighbors() { - Set neighbors = listOfNeighbors.keySet(); - for (String neighborId : neighbors) { - removeNeighbor(listOfNeighbors.get(neighborId)); - log.debug("Neighbor removed - {}", neighborId); - } - listOfNeighbors.clear(); - } - - /** - * Removes neighbor from the interface neighbor map. - * - * @param ospfNeighbor OSPF neighbor instance - */ - public void removeNeighbor(OspfNbr ospfNeighbor) { - log.debug("Neighbor removed - {}", ospfNeighbor.neighborId()); - ospfNeighbor.stopInactivityTimeCheck(); - ospfNeighbor.stopFloodingTimer(); - ospfNeighbor.stopRxMtDdTimer(); - ospfNeighbor.stopRxMtLsrTimer(); - - listOfNeighbors.remove(ospfNeighbor.neighborId().toString()); - } - - - /** - * Adds LSA header to map. - * - * @param lsaHeader LSA header instance - */ - public void addLsaHeaderForDelayAck(LsaHeader lsaHeader) { - String key = lsaHeader.lsType() + "-" + lsaHeader.linkStateId() + "-" + - lsaHeader.advertisingRouter(); - if (lsaHeader.lsType() == OspfParameters.LINK_LOCAL_OPAQUE_LSA || - lsaHeader.lsType() == OspfParameters.AREA_LOCAL_OPAQUE_LSA || - lsaHeader.lsType() == OspfParameters.AS_OPAQUE_LSA) { - OpaqueLsaHeader header = (OpaqueLsaHeader) lsaHeader; - key = lsaHeader.lsType() + "-" + header.opaqueType() + header.opaqueId() - + "-" + lsaHeader.advertisingRouter(); - } - - log.debug("Adding LSA key {} for delayed Ack", key); - listOfNeighborMap.put(key, lsaHeader); - } - - /** - * Removes LSA header from map. - * - * @param lsaKey key used to store LSA in map - */ - @Override - public void removeLsaFromNeighborMap(String lsaKey) { - listOfNeighborMap.remove(lsaKey); - } - - /** - * Checks neighbor is in the list or not. - * - * @param neighborId neighbors id - * @return true if neighbor in list else false - */ - @Override - public boolean isNeighborInList(String neighborId) { - return listOfNeighbors.containsKey(neighborId); - } - - /** - * Gets the list of neighbors. - * - * @return listOfNeighbors as key value pair - */ - @Override - public Map listOfNeighbors() { - return listOfNeighbors; - } - - /** - * Sets the list of neighbors. - * - * @param listOfNeighbors as key value pair - */ - public void setListOfNeighbors(HashMap listOfNeighbors) { - this.listOfNeighbors = listOfNeighbors; - } - - /** - * Returns interface index. - * - * @return interface index - */ - @Override - public int interfaceIndex() { - return interfaceIndex; - } - - /** - * Set interface index. - * - * @param interfaceIndex interface index - */ - @Override - public void setInterfaceIndex(int interfaceIndex) { - this.interfaceIndex = interfaceIndex; - } - - /** - * Gets the IP address. - * - * @return IP address - */ - @Override - public Ip4Address ipAddress() { - return ipAddress; - } - - /** - * Sets the interface IP address. - * - * @param ipAddress interface IP address - */ - @Override - public void setIpAddress(Ip4Address ipAddress) { - this.ipAddress = ipAddress; - } - - /** - * Gets router priority. - * - * @return routerPriority value - */ - @Override - public int routerPriority() { - return routerPriority; - } - - /** - * Sets router priority. - * - * @param routerPriority value - */ - @Override - public void setRouterPriority(int routerPriority) { - this.routerPriority = routerPriority; - } - - /** - * Gets hello interval time. - * - * @return hello interval time - */ - @Override - public int helloIntervalTime() { - return helloIntervalTime; - } - - /** - * Sets hello interval time. - * - * @param helloIntervalTime an integer interval time - */ - @Override - public void setHelloIntervalTime(int helloIntervalTime) { - this.helloIntervalTime = helloIntervalTime; - } - - /** - * Gets router dead interval time. - * - * @return router dead interval time - */ - @Override - public int routerDeadIntervalTime() { - return routerDeadIntervalTime; - } - - /** - * Sets router dead interval time. - * - * @param routerDeadIntervalTime router dead interval time - */ - @Override - public void setRouterDeadIntervalTime(int routerDeadIntervalTime) { - this.routerDeadIntervalTime = routerDeadIntervalTime; - } - - /** - * Gets interface type. - * - * @return interfaceType an integer represents interface type - */ - @Override - public int interfaceType() { - return interfaceType; - } - - /** - * Sets interface type. - * - * @param interfaceType interface type - */ - @Override - public void setInterfaceType(int interfaceType) { - this.interfaceType = interfaceType; - } - - /** - * Gets max transfer unit. - * - * @return mtu an integer represents max transfer unit - */ - @Override - public int mtu() { - return mtu; - } - - /** - * Sets max transfer unit. - * - * @param mtu max transfer unit - */ - @Override - public void setMtu(int mtu) { - this.mtu = mtu; - } - - /** - * Gets retransmit interval. - * - * @return retransmit interval - */ - @Override - public int reTransmitInterval() { - return reTransmitInterval; - } - - /** - * Sets retransmit interval. - * - * @param reTransmitInterval retransmit interval - */ - @Override - public void setReTransmitInterval(int reTransmitInterval) { - this.reTransmitInterval = reTransmitInterval; - } - - /** - * Gets designated routers IP address. - * - * @return dr designated routers IP address - */ - @Override - public Ip4Address dr() { - return dr; - } - - /** - * Sets designated routers IP address. - * - * @param dr designated routers IP address - */ - @Override - public void setDr(Ip4Address dr) { - this.dr = dr; - } - - /** - * Gets backup designated routers IP address. - * - * @return bdr backup designated routers IP address - */ - @Override - public Ip4Address bdr() { - return bdr; - } - - /** - * Sets backup designated routers IP address. - * - * @param bdr backup designated routers IP address - */ - @Override - public void setBdr(Ip4Address bdr) { - this.bdr = bdr; - } - - /** - * Represents an interface is up and connected. - */ - @Override - public void interfaceUp() { - log.debug("OSPFInterfaceChannelHandler::interfaceUp...!!!"); - if (interfaceType() == OspfInterfaceType.POINT_TO_POINT.value()) { - setState(OspfInterfaceState.POINT2POINT); - interfaceTypeOldValue = interfaceType(); - log.debug("OSPFInterfaceChannelHandler::InterfaceType {} state {} ", - interfaceType(), state()); - } else if (interfaceType() == OspfInterfaceType.BROADCAST.value()) { - //if router priority is 0, move the state to DROther - interfaceTypeOldValue = interfaceType(); - if (routerPriority() == 0) { - setState(OspfInterfaceState.DROTHER); - } else { - log.debug("OSPFInterfaceChannelHandler::InterfaceType {} state {} RouterPriority {}", - interfaceType(), - state(), routerPriority()); - setState(OspfInterfaceState.WAITING); - //start wait timer - like inactivity timer with router deadInterval - startWaitTimer(); - } - } - // Start hello timer with interval from config - convert seconds to milliseconds - startHelloTimer(); - ospfArea.refreshArea(this); - } - - - /** - * Gets called when a BDR was detected before the wait timer expired. - * - * @param ch channel instance - */ - public void backupSeen(Channel ch) { - log.debug("OSPFInterfaceChannelHandler::backupSeen "); - if (state() == OspfInterfaceState.WAITING) { - electRouter(ch); - } - } - - /** - * Gets called when no hello message received for particular period. - * - * @param ch channel instance - */ - public void waitTimer(Channel ch) { - log.debug("OSPFInterfaceChannelHandler::waitTimer "); - //According to RFC-2328 section 9.4 - if (state() == OspfInterfaceState.WAITING) { - electRouter(ch); - } - } - - /** - * Initiates DR election process. - * - * @param ch netty channel instance - */ - public void callDrElection(Channel ch) { - log.debug("OSPFInterfaceChannelHandler::callDrElection "); - //call when timer expired - //no hello message received for particular interval - //section 9.4 - electRouter(ch); - interfaceTypeOldValue = interfaceType(); - } - - /** - * Neighbor change event is triggered when the router priority gets changed. - */ - public void neighborChange() { - log.debug("OSPFInterfaceChannelHandler::neighborChange "); - if (state() == OspfInterfaceState.DR || state() == OspfInterfaceState.BDR || - state() == OspfInterfaceState.DROTHER) { - electRouter(channel); - } - } - - /** - * Gets called when an interface is down. - * All interface variables are reset, and interface timers disabled. - * Also all neighbor connections associated with the interface are destroyed. - */ - @Override - public void interfaceDown() { - log.debug("OSPFInterfaceChannelHandler::interfaceDown "); - stopHelloTimer(); - listOfNeighbors().clear(); - setState(OspfInterfaceState.DOWN); - } - - /** - * When an OSPF message received it is handed over to this method. - * Based on the type of the OSPF message received it will be handed over - * to corresponding message handler methods. - * - * @param ospfMessage received OSPF message - * @param ctx channel handler context instance. - */ - @Override - public void processOspfMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) { - log.debug("OspfChannelHandler::processOspfMessage...!!!"); - - if (!validateMessage(ospfMessage)) { - return; - } - - try { - switch (ospfMessage.ospfMessageType().value()) { - case OspfParameters.HELLO: - processHelloMessage(ospfMessage, ctx); - break; - case OspfParameters.DD: - processDdMessage(ospfMessage, ctx); - break; - case OspfParameters.LSREQUEST: - processLsRequestMessage(ospfMessage, ctx); - break; - case OspfParameters.LSUPDATE: - processLsUpdateMessage(ospfMessage, ctx); - break; - case OspfParameters.LSACK: - processLsAckMessage(ospfMessage, ctx); - break; - default: - log.debug("Unknown packet to process...!!!"); - break; - } - } catch (OspfParseException ope) { - log.debug("Error parsing packet", ope); - } - } - - /** - * Validates the OSPF message received. - * - * @param ospfMessage OSPF message. - * @return true if it is a valid else false. - */ - private boolean validateMessage(OspfMessage ospfMessage) { - boolean isValid = true; - OspfPacketHeader header = (OspfPacketHeader) ospfMessage; - - //added the check to eliminate self origin packets also two interfaces on same router. - if (!header.sourceIp().equals(ipAddress()) && !header.routerId().equals( - ospfArea.routerId())) { - //Verify the checksum - ChecksumCalculator checksum = new ChecksumCalculator(); - if (!checksum.isValidOspfCheckSum(ospfMessage, OspfUtil.OSPFPACKET_CHECKSUM_POS1, - OspfUtil.OSPFPACKET_CHECKSUM_POS2)) { - log.debug("Checksum mismatch. Received packet type {} ", ospfMessage.ospfMessageType()); - return false; - } - if (((OspfPacketHeader) ospfMessage).ospfVersion() != OspfUtil.OSPF_VERSION_2) { - log.debug("Received osfpMessage Version should match with Interface Version "); - return false; - } - if (!((OspfPacketHeader) ospfMessage).areaId().equals(ospfArea.areaId())) { - log.debug("Received ospf packets are from different area than our Area ID. " + - "Received Area ID {}, Our AreaId {} ", - ((OspfPacketHeader) ospfMessage).areaId(), ospfArea.areaId()); - return false; - } - - //According to RFC-2328 (8.2) - /* - * ABR should receive packets from backbone 0.0.0.0 as we are not acting as ABR - * we are rejecting the packet. - */ - if (((OspfPacketHeader) ospfMessage).areaId().equals(Ip4Address.valueOf("0.0.0.0"))) { - log.debug("ABR should receive packets from backbone 0.0.0.0 as we are not acting as " + - "ABR we are rejecting the ospf packet"); - return false; - } - if (interfaceType() == OspfInterfaceType.BROADCAST.value() && - !OspfUtil.sameNetwork(((OspfPacketHeader) ospfMessage).sourceIp(), - ipAddress(), ipNetworkMask())) { - log.debug("Received packets from different subnets. Discarding...!!!"); - return false; - } - } else { - isValid = false; - } - - return isValid; - } - - /** - * Processes Hello message. - * - * @param ospfMessage OSPF message instance. - * @param ctx context instance. - */ - void processHelloMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) { - Channel channel = ctx.getChannel(); - log.debug("OspfChannelHandler::processHelloMessage...!!!"); - HelloPacket helloPacket = (HelloPacket) ospfMessage; - - // processing of hello packet as per RFC 2328 section 10.5 - log.debug("OspfChannelHandler::processHelloMessage::Interface Type {} OSPFInterfaceState {} ", - interfaceType(), state()); - - if (interfaceType() != OspfInterfaceType.POINT_TO_POINT.value()) { - if (!helloPacket.networkMask().equals(ipNetworkMask())) { - log.debug("OspfChannelHandler::processHelloMessage::Hello Packet Received does not " + - "match the same network mask as the configure Interface"); - return; - } - } - if (helloPacket.helloInterval() != helloIntervalTime()) { - log.debug("OspfChannelHandler::processHelloMessage::Hello Packet Received have the same " + - "hello interval as configured Interface"); - return; - } - if (helloPacket.routerDeadInterval() != routerDeadIntervalTime()) { - log.debug("OspfChannelHandler::processHelloMessage::Hello Packet Received have the same " + - "Router Dead interval as configured Interface"); - return; - } - - if (interfaceType == OspfInterfaceType.POINT_TO_POINT.value() && - !helloPacket.dr().equals(OspfUtil.DEFAULTIP)) { - log.debug("OspfChannelHandler::processHelloMessage:: Neighbor in broadcast network"); - return; - } - - if (interfaceType == OspfInterfaceType.POINT_TO_POINT.value()) { - // to verify if the neighbor which sent the hello is present in the OSPF Interface neighboring list . - OspfNbr nbr; - if (!isNeighborInList(helloPacket.routerId().toString())) { - nbr = new OspfNbrImpl(ospfArea, this, helloPacket.sourceIp(), - helloPacket.routerId(), helloPacket.options(), topologyForDeviceAndLink); - addNeighbouringRouter(nbr); - } else { - nbr = neighbouringRouter(helloPacket.routerId().toString()); - nbr.setRouterPriority(helloPacket.routerPriority()); - } - if (!helloPacket.containsNeighbour(ospfArea.routerId())) { - ((OspfNbrImpl) nbr).oneWayReceived(helloPacket, channel); - } else { - ((OspfNbrImpl) nbr).twoWayReceived(helloPacket, ctx.getChannel()); - } - } else if (interfaceType == OspfInterfaceType.BROADCAST.value()) { - - if (state() == OspfInterfaceState.WAITING) { - if ((!helloPacket.dr().equals(Ip4Address.valueOf("0.0.0.0"))) && - (!helloPacket.bdr().equals(Ip4Address.valueOf("0.0.0.0")))) { - stopWaitTimer(); - setDr(helloPacket.dr()); - setBdr(helloPacket.bdr()); - if (helloPacket.dr().equals(ipAddress())) { - setState(OspfInterfaceState.DR); - //refresh router Lsa - ospfArea.refreshArea(this); - } else if (helloPacket.bdr().equals(ipAddress())) { - setState(OspfInterfaceState.BDR); - //refresh router Lsa - ospfArea.refreshArea(this); - } else { - setState(OspfInterfaceState.DROTHER); - ospfArea.refreshArea(this); - } - - } else if (!helloPacket.dr().equals(Ip4Address.valueOf("0.0.0.0")) || - !helloPacket.bdr().equals(Ip4Address.valueOf("0.0.0.0"))) { - setDr(helloPacket.dr()); - setBdr(helloPacket.bdr()); - } - Ip4Address sourceIp = helloPacket.sourceIp(); - OspfNbr nbr; - if (!isNeighborInList(helloPacket.routerId().toString())) { - nbr = new OspfNbrImpl(ospfArea, this, sourceIp, helloPacket.routerId(), - helloPacket.options(), topologyForDeviceAndLink); - nbr.setNeighborId(helloPacket.routerId()); - nbr.setNeighborBdr(helloPacket.bdr()); - nbr.setNeighborDr(helloPacket.dr()); - nbr.setRouterPriority(helloPacket.routerPriority()); - addNeighbouringRouter(nbr); - } else { - nbr = neighbouringRouter(helloPacket.routerId().toString()); - nbr.setRouterPriority(helloPacket.routerPriority()); - } - if (!helloPacket.containsNeighbour(ospfArea.routerId())) { - ((OspfNbrImpl) nbr).oneWayReceived(helloPacket, channel); - } else { - ((OspfNbrImpl) nbr).twoWayReceived(helloPacket, ctx.getChannel()); - } - - if (helloPacket.dr().equals(sourceIp)) { - if (helloPacket.bdr().equals(Ip4Address.valueOf("0.0.0.0"))) { - // call backup seen - stopWaitTimer(); - backupSeen(ctx.getChannel()); - } - } - - if (helloPacket.bdr().equals(sourceIp)) { - // call backup seen - stopWaitTimer(); - backupSeen(ctx.getChannel()); - } - } else { - - if ((!helloPacket.dr().equals(Ip4Address.valueOf("0.0.0.0")) || - !helloPacket.bdr().equals(Ip4Address.valueOf("0.0.0.0"))) - && routerPriority() == 0) { - setDr(helloPacket.dr()); - setBdr(helloPacket.bdr()); - } - //To verify if the neighbor which sent the hello is present in the OSPF Interface neighboring list . - Ip4Address sourceIp = helloPacket.sourceIp(); - OspfNbr nbr; - if (!isNeighborInList(helloPacket.routerId().toString())) { - nbr = new OspfNbrImpl(ospfArea, this, sourceIp, helloPacket.routerId(), - helloPacket.options(), topologyForDeviceAndLink); - nbr.setNeighborId(helloPacket.routerId()); - nbr.setNeighborBdr(helloPacket.bdr()); - nbr.setNeighborDr(helloPacket.dr()); - nbr.setRouterPriority(helloPacket.routerPriority()); - addNeighbouringRouter(nbr); - ((OspfNbrImpl) nbr).oneWayReceived(helloPacket, channel); - } else { - log.debug("OspfChannelHandler::NeighborInList::helloPacket.bdr(): {}, " + - "helloPacket.dr(): {}", helloPacket.bdr(), helloPacket.dr()); - nbr = neighbouringRouter(helloPacket.routerId().toString()); - nbr.setRouterPriority(helloPacket.routerPriority()); - if (!helloPacket.containsNeighbour(ospfArea.routerId())) { - ((OspfNbrImpl) nbr).oneWayReceived(helloPacket, channel); - } else { - ((OspfNbrImpl) nbr).twoWayReceived(helloPacket, ctx.getChannel()); - } - if (nbr.routerPriority() != helloPacket.routerPriority()) { - nbr.setNeighborBdr(helloPacket.bdr()); - nbr.setNeighborDr(helloPacket.dr()); - neighborChange(); - } - - - if (nbr.neighborIpAddr().equals(helloPacket.dr()) && - !(nbr.neighborIpAddr().equals(nbr.neighborDr()))) { - nbr.setNeighborBdr(helloPacket.bdr()); - nbr.setNeighborDr(helloPacket.dr()); - neighborChange(); - } - - if (!(nbr.neighborIpAddr().equals(helloPacket.dr())) && - (nbr.neighborIpAddr().equals(nbr.neighborDr()))) { - nbr.setNeighborBdr(helloPacket.bdr()); - nbr.setNeighborDr(helloPacket.dr()); - neighborChange(); - } - - if (nbr.neighborIpAddr().equals(helloPacket.bdr()) && - !(nbr.neighborIpAddr().equals(nbr.neighborBdr()))) { - nbr.setNeighborBdr(helloPacket.bdr()); - nbr.setNeighborDr(helloPacket.dr()); - neighborChange(); - } - - if (!(nbr.neighborIpAddr().equals(helloPacket.bdr())) && - (nbr.neighborIpAddr().equals(nbr.neighborBdr()))) { - nbr.setNeighborBdr(helloPacket.bdr()); - nbr.setNeighborDr(helloPacket.dr()); - neighborChange(); - } - - nbr.setNeighborBdr(helloPacket.bdr()); - nbr.setNeighborDr(helloPacket.dr()); - } - } - } - } - - /** - * process the DD message which received. - * - * @param ospfMessage OSPF message instance. - * @param ctx channel handler context instance - */ - void processDdMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) { - log.debug("OspfChannelHandler::processDdMessage...!!!"); - Channel channel = ctx.getChannel(); - DdPacket ddPacket = (DdPacket) ospfMessage; - log.debug("Got DD packet from {}", ddPacket.sourceIp()); - //check it is present in listOfNeighbors - Ip4Address neighbourId = ddPacket.routerId(); - OspfNbr nbr = neighbouringRouter(neighbourId.toString()); - - if (nbr != null) { - log.debug("OspfChannelHandler::processDdMessage:: OSPFNeighborState {}", nbr.getState()); - // set options for the NBR - nbr.setIsOpaqueCapable(ddPacket.isOpaqueCapable()); - if (ddPacket.imtu() > mtu()) { - log.debug("the MTU size is greater than the interface MTU"); - return; - } - if (nbr.getState() == OspfNeighborState.DOWN) { - return; - } - if (nbr.getState() == OspfNeighborState.ATTEMPT) { - return; - } - if (nbr.getState() == OspfNeighborState.TWOWAY) { - nbr.adjOk(channel); - return; - } - //if init is the state call twoWayReceived - if (nbr.getState() == OspfNeighborState.INIT) { - ((OspfNbrImpl) nbr).twoWayReceived(ddPacket, ctx.getChannel()); - } else if (nbr.getState() == OspfNeighborState.EXSTART) { - //get I,M,MS Bits - int initialize = ddPacket.isInitialize(); - int more = ddPacket.isMore(); - int masterOrSlave = ddPacket.isMaster(); - int options = ddPacket.options(); - nbr.setOptions(options); - - if (initialize == OspfUtil.INITIALIZE_SET && more == OspfUtil.MORE_SET && - masterOrSlave == OspfUtil.IS_MASTER) { - if (ddPacket.getLsaHeaderList().isEmpty()) { - if (OspfUtil.ipAddressToLong(ddPacket.routerId().toString()) > - OspfUtil.ipAddressToLong(ospfArea.routerId().toString())) { - nbr.setIsMaster(OspfUtil.IS_MASTER); - ((OspfNbrImpl) nbr).setLastDdPacket(ddPacket); - nbr.setDdSeqNum(ddPacket.sequenceNo()); - nbr.setOptions(ddPacket.options()); - ((OspfNbrImpl) nbr).negotiationDone(ddPacket, true, ddPacket.getLsaHeaderList(), - ctx.getChannel()); - } - } - } - if (initialize == OspfUtil.INITIALIZE_NOTSET && masterOrSlave == OspfUtil.NOT_MASTER) { - if (nbr.ddSeqNum() == ddPacket.sequenceNo()) { - if (OspfUtil.ipAddressToLong(ddPacket.routerId().toString()) < - OspfUtil.ipAddressToLong(ospfArea.routerId().toString())) { - ((OspfNbrImpl) nbr).setLastDdPacket(ddPacket); - nbr.setOptions(ddPacket.options()); - nbr.setDdSeqNum(nbr.ddSeqNum() + 1); - ((OspfNbrImpl) nbr).negotiationDone(ddPacket, false, ddPacket.getLsaHeaderList(), - ctx.getChannel()); - } - } - } - - } else if (nbr.getState() == OspfNeighborState.EXCHANGE) { - //get I,M,MS Bits - log.debug("Neighbor state:: EXCHANGE"); - boolean isDuplicateDDPacket = compareDdPackets(ddPacket, ((OspfNbrImpl) nbr).lastDdPacket()); - int initialize = ddPacket.isInitialize(); - int more = ddPacket.isMore(); - int masterOrSlave = ddPacket.isMaster(); - int options = ddPacket.options(); - - if (!isDuplicateDDPacket) { - //if dd packet is not duplicate then continue - if (nbr.isMaster() != masterOrSlave) { - DdPacket newResPacket = - (DdPacket) ((OspfNbrImpl) nbr).seqNumMismatch("Master/Slave Inconsistency"); - newResPacket.setDestinationIp(ddPacket.sourceIp()); - log.debug("Sending back DDPacket to {}", ddPacket.sourceIp()); - byte[] messageToWrite = getMessage(newResPacket); - ctx.getChannel().write(messageToWrite); - } else if (initialize == 1) { - DdPacket newResPacket = - (DdPacket) ((OspfNbrImpl) nbr).seqNumMismatch("Initialize bit inconsistency"); - newResPacket.setDestinationIp(ddPacket.sourceIp()); - log.debug("Sending back DDPacket to {}", ddPacket.sourceIp()); - byte[] messageToWrite = getMessage(newResPacket); - ctx.getChannel().write(messageToWrite); - } else { - - if (masterOrSlave == OspfUtil.NOT_MASTER) { - if (ddPacket.sequenceNo() == nbr.ddSeqNum()) { - //Process the DD Packet - ((OspfNbrImpl) nbr).processDdPacket(false, ddPacket, ctx.getChannel()); - log.debug("Received DD Packet"); - } else { - DdPacket newResPacket = - (DdPacket) ((OspfNbrImpl) nbr).seqNumMismatch("Sequence Number Mismatch"); - newResPacket.setDestinationIp(ddPacket.sourceIp()); - log.debug("Sending back DDPacket to {}", ddPacket.sourceIp()); - byte[] messageToWrite = getMessage(newResPacket); - ctx.getChannel().write(messageToWrite); - } - } else { - //we are the slave - if (ddPacket.sequenceNo() == (nbr.ddSeqNum() + 1)) { - ((OspfNbrImpl) nbr).setLastDdPacket(ddPacket); - ((OspfNbrImpl) nbr).processDdPacket(true, ddPacket, ctx.getChannel()); - log.debug("Process DD Packet"); - } else { - DdPacket newResPacket = - (DdPacket) ((OspfNbrImpl) nbr).seqNumMismatch("options inconsistency"); - newResPacket.setDestinationIp(ddPacket.sourceIp()); - log.debug("Sending back DDPacket to {}", ddPacket.sourceIp()); - byte[] messageToWrite = getMessage(newResPacket); - ctx.getChannel().write(messageToWrite); - } - } - } - } else { - if (masterOrSlave == OspfUtil.NOT_MASTER) { - return; - } else { - DdPacket newResPacket = ((OspfNbrImpl) nbr).lastSentDdPacket(); - log.debug("Sending back DDPacket to {}", ddPacket.sourceIp()); - byte[] messageToWrite = getMessage(newResPacket); - ctx.getChannel().write(messageToWrite); - } - } - } else if (nbr.getState() == OspfNeighborState.LOADING || nbr.getState() == OspfNeighborState.FULL) { - //In case if we are slave then we have to send the last received DD Packet - int options = ddPacket.options(); - if (nbr.options() != options) { - OspfMessage newResPacket = ((OspfNbrImpl) nbr).seqNumMismatch("Initialize bit inconsistency"); - newResPacket.setDestinationIp(ddPacket.sourceIp()); - byte[] messageToWrite = getMessage(newResPacket); - ctx.getChannel().write(messageToWrite); - } else if (ddPacket.isInitialize() == OspfUtil.INITIALIZE_SET) { - OspfMessage newResPacket = ((OspfNbrImpl) nbr).seqNumMismatch("Initialize bit inconsistency"); - newResPacket.setDestinationIp(ddPacket.sourceIp()); - byte[] messageToWrite = getMessage(newResPacket); - ctx.getChannel().write(messageToWrite); - } - boolean isDuplicate = compareDdPackets(ddPacket, ((OspfNbrImpl) nbr).lastDdPacket()); - //we are master - if (nbr.isMaster() != OspfUtil.IS_MASTER) { - // check if the packet is duplicate, duplicates should be discarded by the master - if (isDuplicate) { - log.debug("received a duplicate DD packet"); - } - } else { - //The slave must respond to duplicates by repeating the last Database Description packet - //that it had sent. - if (isDuplicate) { - ddPacket.setDestinationIp(ddPacket.sourceIp()); - byte[] messageToWrite = getMessage(((OspfNbrImpl) nbr).lastSentDdPacket()); - ctx.getChannel().write(messageToWrite); - log.debug("Sending back the duplicate packet "); - } - } - } - } - } - - /** - * Process the Ls Request message. - * - * @param ospfMessage OSPF message instance. - * @param ctx channel handler context instance. - */ - void processLsRequestMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) { - log.debug("OspfChannelHandler::processLsRequestMessage...!!!"); - Channel channel = ctx.getChannel(); - LsRequest lsrPacket = (LsRequest) ospfMessage; - OspfNbr nbr = neighbouringRouter(lsrPacket.routerId().toString()); - - if (nbr.getState() == OspfNeighborState.EXCHANGE || nbr.getState() == OspfNeighborState.LOADING || - nbr.getState() == OspfNeighborState.FULL) { - - LsRequest reqMsg = (LsRequest) ospfMessage; - if (reqMsg.getLinkStateRequests().isEmpty()) { - log.debug("Received Link State Request Vector is Empty "); - return; - } else { - //Send the LsUpdate back - ListIterator listItr = reqMsg.getLinkStateRequests().listIterator(); - while (listItr.hasNext()) { - LsUpdate lsupdate = new LsUpdate(); - lsupdate.setOspfVer(OspfUtil.OSPF_VERSION); - lsupdate.setOspftype(OspfPacketType.LSUPDATE.value()); - lsupdate.setRouterId(ospfArea.routerId()); - lsupdate.setAreaId(ospfArea.areaId()); - lsupdate.setAuthType(OspfUtil.NOT_ASSIGNED); - lsupdate.setAuthentication(OspfUtil.NOT_ASSIGNED); - lsupdate.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - lsupdate.setChecksum(OspfUtil.NOT_ASSIGNED); - - //limit to mtu - int currentLength = OspfUtil.OSPF_HEADER_LENGTH + OspfUtil.FOUR_BYTES; - int maxSize = mtu() - - OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header. - int noLsa = 0; - while (listItr.hasNext()) { - LsRequestPacket lsRequest = listItr.next(); - // to verify length of the LSA - LsaWrapper wrapper = ospfArea.getLsa(lsRequest.lsType(), lsRequest.linkStateId(), - lsRequest.ownRouterId()); - if (wrapper != null) { - OspfLsa ospflsa = wrapper.ospfLsa(); - if ((currentLength + ((LsaWrapperImpl) wrapper).lsaHeader().lsPacketLen()) >= maxSize) { - listItr.previous(); - break; - } - if (ospflsa != null) { - lsupdate.addLsa(ospflsa); - noLsa++; - - currentLength = currentLength + ((LsaWrapperImpl) wrapper).lsaHeader().lsPacketLen(); - } else { - nbr.badLSReq(channel); - } - } - } - lsupdate.setNumberOfLsa(noLsa); - //set the destination - if (state() == OspfInterfaceState.DR || - state() == OspfInterfaceState.BDR || - state() == OspfInterfaceState.POINT2POINT) { - lsupdate.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS); - } else if (state() == OspfInterfaceState.DROTHER) { - lsupdate.setDestinationIp(OspfUtil.ALL_DROUTERS); - } - byte[] messageToWrite = getMessage(lsupdate); - ctx.getChannel().write(messageToWrite); - } - } - } - } - - /** - * Process the ls update message. - * - * @param ospfMessage OSPF message instance. - * @param ctx channel handler context instance. - * @throws OspfParseException on parsing error - */ - void processLsUpdateMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) throws OspfParseException { - log.debug("OspfChannelHandler::processLsUpdateMessage"); - LsUpdate lsUpdate = (LsUpdate) ospfMessage; - String neighbourId = lsUpdate.routerId().toString(); - //LSUpdate packet has been associated with a particular neighbor. - //Neighbor should not be in lesser state than Exchange. - if (isNeighborInList(neighbourId)) { - OspfNbrImpl nbr = (OspfNbrImpl) neighbouringRouter(neighbourId); - if (nbr.getState() == OspfNeighborState.EXCHANGE || - nbr.getState() == OspfNeighborState.LOADING) { - nbr.processLsUpdate(lsUpdate, ctx.getChannel()); - } else if (nbr.getState() == OspfNeighborState.FULL) { - if (lsUpdate.noLsa() != 0) { - List list = lsUpdate.getLsaList(); - Iterator itr = list.iterator(); - while (itr.hasNext()) { - LsaHeader lsa = (LsaHeader) itr.next(); - nbr.processReceivedLsa(lsa, true, ctx.getChannel(), lsUpdate.sourceIp()); - } - } else { - return; - } - } - } - } - - /** - * Process the ls acknowledge message. - * - * @param ospfMessage OSPF message instance. - * @param ctx channel handler context instance. - */ - void processLsAckMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) { - log.debug("OspfChannelHandler::processLsAckMessage"); - LsAcknowledge lsAckPacket = (LsAcknowledge) ospfMessage; - //check it is present in listOfNeighbors - OspfNbrImpl nbr = (OspfNbrImpl) neighbouringRouter(lsAckPacket.routerId().toString()); - if (nbr != null) { - if (nbr.getState().getValue() < OspfNeighborState.EXCHANGE.getValue()) { - // discard the packet. - return; - } else { - // process ls acknowledgements - Iterator itr = lsAckPacket.getLinkStateHeaders().iterator(); - while (itr.hasNext()) { - LsaHeader lsRequest = (LsaHeader) itr.next(); - - OspfLsa ospfLsa = - nbr.getPendingReTxList().get(((OspfAreaImpl) ospfArea).getLsaKey(lsRequest)); - if (ospfLsa != null) { - String isSame = ((OspfLsdbImpl) ospfArea.database()).isNewerOrSameLsa( - lsRequest, (LsaHeader) ospfLsa); - if (isSame.equals("same")) { - nbr.getPendingReTxList().remove(((OspfAreaImpl) ospfArea).getLsaKey(lsRequest)); - } - } - } - } - } - } - - /** - * Compares two Dd Packets to check whether its duplicate or not. - * - * @param receivedDPacket received DD packet from network. - * @param lastDdPacket Last DdPacket which we sent. - * @return true if it is a duplicate packet else false. - */ - public boolean compareDdPackets(DdPacket receivedDPacket, DdPacket lastDdPacket) { - if (receivedDPacket.isInitialize() == lastDdPacket.isInitialize()) { - if (receivedDPacket.isMaster() == lastDdPacket.isMaster()) { - if (receivedDPacket.isMore() == lastDdPacket.isMore()) { - if (receivedDPacket.options() == lastDdPacket.options()) { - if (receivedDPacket.sequenceNo() == lastDdPacket.sequenceNo()) { - return true; - } - } - } - } - } - return false; - } - - /** - * Starts the hello timer which sends hello packet every configured seconds. - */ - @Override - public void startHelloTimer() { - log.debug("OSPFInterfaceChannelHandler::startHelloTimer"); - exServiceHello = Executors.newSingleThreadScheduledExecutor(); - helloTimerTask = new InternalHelloTimer(); - final ScheduledFuture helloHandle = - exServiceHello.scheduleAtFixedRate(helloTimerTask, delay, helloIntervalTime, TimeUnit.SECONDS); - } - - /** - * Stops the hello timer. - */ - @Override - public void stopHelloTimer() { - log.debug("OSPFInterfaceChannelHandler::stopHelloTimer "); - exServiceHello.shutdown(); - } - - /** - * Starts the wait timer. - */ - public void startWaitTimer() { - log.debug("OSPFNbr::startWaitTimer"); - exServiceWait = Executors.newSingleThreadScheduledExecutor(); - waitTimerTask = new InternalWaitTimer(); - final ScheduledFuture waitTimerHandle = - exServiceWait.schedule(waitTimerTask, routerDeadIntervalTime(), TimeUnit.SECONDS); - } - - /** - * Stops the wait timer. - */ - public void stopWaitTimer() { - log.debug("OSPFNbr::stopWaitTimer "); - exServiceWait.shutdown(); - } - - /** - * Starts the timer which waits for configured seconds and sends Delayed Ack Packet. - */ - @Override - public void startDelayedAckTimer() { - if (!isDelayedAckTimerScheduled) { - log.debug("Started DelayedAckTimer...!!!"); - exServiceDelayedAck = Executors.newSingleThreadScheduledExecutor(); - delayedAckTimerTask = new InternalDelayedAckTimer(); - final ScheduledFuture delayAckHandle = - exServiceDelayedAck.scheduleAtFixedRate(delayedAckTimerTask, delayedAckTimerInterval, - delayedAckTimerInterval, TimeUnit.MILLISECONDS); - isDelayedAckTimerScheduled = true; - } - } - - /** - * Stops the delayed acknowledge timer. - */ - @Override - public void stopDelayedAckTimer() { - if (isDelayedAckTimerScheduled) { - log.debug("Stopped DelayedAckTimer...!!!"); - isDelayedAckTimerScheduled = false; - exServiceDelayedAck.shutdown(); - } - } - - /** - * Performs DR election. - * - * @param ch Netty Channel instance. - */ - public void electRouter(Channel ch) { - - Ip4Address currentDr = dr(); - Ip4Address currentBdr = bdr(); - OspfInterfaceState oldState = state(); - OspfInterfaceState newState; - - log.debug("OSPFInterfaceChannelHandler::electRouter -> currentDr: {}, currentBdr: {}", - currentDr, currentBdr); - List eligibleRouters = calculateListOfEligibleRouters(new OspfEligibleRouter()); - - log.debug("OSPFInterfaceChannelHandler::electRouter -> eligibleRouters: {}", eligibleRouters); - OspfEligibleRouter electedBdr = electBdr(eligibleRouters); - OspfEligibleRouter electedDr = electDr(eligibleRouters, electedBdr); - - setBdr(electedBdr.getIpAddress()); - setDr(electedDr.getIpAddress()); - - if (electedBdr.getIpAddress().equals(ipAddress()) && - !electedBdr.getIpAddress().equals(currentBdr)) { - setState(OspfInterfaceState.BDR); - } - - if (electedDr.getIpAddress().equals(ipAddress()) && - !electedDr.getIpAddress().equals(currentDr)) { - setState(OspfInterfaceState.DR); - } - - if (state() != oldState && - !(state() == OspfInterfaceState.DROTHER && - oldState.value() < OspfInterfaceState.DROTHER.value())) { - log.debug("Recalculating as the State is changed "); - log.debug("OSPFInterfaceChannelHandler::electRouter -> currentDr: {}, currentBdr: {}", - currentDr, currentBdr); - eligibleRouters = calculateListOfEligibleRouters(new OspfEligibleRouter()); - - log.debug("OSPFInterfaceChannelHandler::electRouter -> eligibleRouters: {}", eligibleRouters); - electedBdr = electBdr(eligibleRouters); - electedDr = electDr(eligibleRouters, electedBdr); - - setBdr(electedBdr.getIpAddress()); - setDr(electedDr.getIpAddress()); - } - - if (electedBdr.getIpAddress().equals(ipAddress()) && - !electedBdr.getIpAddress().equals(currentBdr)) { - setState(OspfInterfaceState.BDR); - ospfArea.refreshArea(this); - } - - if (electedDr.getIpAddress().equals(ipAddress()) && - !electedDr.getIpAddress().equals(currentDr)) { - setState(OspfInterfaceState.DR); - //Refresh Router Lsa & Network Lsa - ospfArea.refreshArea(this); - } - - if (currentDr != electedDr.getIpAddress() || currentBdr != electedBdr.getIpAddress()) { - Set negibhorIdList; - negibhorIdList = listOfNeighbors().keySet(); - for (String routerid : negibhorIdList) { - OspfNbrImpl nbr = (OspfNbrImpl) neighbouringRouter(routerid); - if (nbr.getState().getValue() >= OspfNeighborState.TWOWAY.getValue()) { - nbr.adjOk(ch); - } - } - } - - log.debug("OSPFInterfaceChannelHandler::electRouter -> ElectedDR: {}, ElectedBDR: {}", - electedDr.getIpAddress(), electedBdr.getIpAddress()); - } - - - /** - * BDR Election process. Find the list of eligible router to participate in the process. - * - * @param electedDr router elected as DR. - * @return list of eligible routers - */ - public List calculateListOfEligibleRouters(OspfEligibleRouter electedDr) { - log.debug("OSPFNbr::calculateListOfEligibleRouters "); - Set neighborIdList; - List eligibleRouters = new ArrayList<>(); - - neighborIdList = listOfNeighbors().keySet(); - for (String routerId : neighborIdList) { - OspfNbrImpl nbr = (OspfNbrImpl) neighbouringRouter(routerId); - if (nbr.getState().getValue() >= OspfNeighborState.TWOWAY.getValue() && - nbr.routerPriority() > 0) { - OspfEligibleRouter router = new OspfEligibleRouter(); - router.setIpAddress(nbr.neighborIpAddr()); - router.setRouterId(nbr.neighborId()); - router.setRouterPriority(nbr.routerPriority()); - if (nbr.neighborDr().equals(nbr.neighborIpAddr()) || - electedDr.getIpAddress().equals(nbr.neighborIpAddr())) { - router.setIsDr(true); - } else if (nbr.neighborBdr().equals(nbr.neighborIpAddr())) { - router.setIsBdr(true); - } - eligibleRouters.add(router); - } - } - // interface does not have states like two and all - if (routerPriority() > 0) { - OspfEligibleRouter router = new OspfEligibleRouter(); - router.setIpAddress(ipAddress()); - router.setRouterId(ospfArea.routerId()); - router.setRouterPriority(routerPriority()); - if (dr().equals(ipAddress()) || - electedDr.getIpAddress().equals(ipAddress())) { - router.setIsDr(true); - } else if (bdr().equals(ipAddress()) && - !dr().equals(ipAddress())) { - router.setIsBdr(true); - } - - eligibleRouters.add(router); - } - - return eligibleRouters; - } - - /** - * Based on router priority assigns BDR. - * - * @param eligibleRouters list of routers to participate in bdr election. - * @return OSPF Eligible router instance. - */ - public OspfEligibleRouter electBdr(List eligibleRouters) { - log.debug("OSPFInterfaceChannelHandler::electBdr -> eligibleRouters: {}", eligibleRouters); - List declaredAsBdr = new ArrayList<>(); - List notDrAndBdr = new ArrayList<>(); - for (OspfEligibleRouter router : eligibleRouters) { - if (router.isBdr()) { - declaredAsBdr.add(router); - } - if (!router.isBdr() && !router.isDr()) { - notDrAndBdr.add(router); - } - } - - OspfEligibleRouter electedBdr = new OspfEligibleRouter(); - if (!declaredAsBdr.isEmpty()) { - if (declaredAsBdr.size() == 1) { - electedBdr = declaredAsBdr.get(0); - } else if (declaredAsBdr.size() > 1) { - electedBdr = selectRouterBasedOnPriority(declaredAsBdr); - } - } else { - if (notDrAndBdr.size() == 1) { - electedBdr = notDrAndBdr.get(0); - } else if (notDrAndBdr.size() > 1) { - electedBdr = selectRouterBasedOnPriority(notDrAndBdr); - } - } - - electedBdr.setIsBdr(true); - electedBdr.setIsDr(false); - - return electedBdr; - } - - /** - * DR Election process. - * - * @param eligibleRouters list of eligible routers. - * @param electedBdr Elected Bdr, OSPF eligible router instance. - * @return OSPF eligible router instance. - */ - public OspfEligibleRouter electDr(List eligibleRouters, - OspfEligibleRouter electedBdr) { - - List declaredAsDr = new ArrayList<>(); - for (OspfEligibleRouter router : eligibleRouters) { - if (router.isDr()) { - declaredAsDr.add(router); - } - } - - OspfEligibleRouter electedDr = new OspfEligibleRouter(); - if (!declaredAsDr.isEmpty()) { - if (declaredAsDr.size() == 1) { - electedDr = declaredAsDr.get(0); - } else if (eligibleRouters.size() > 1) { - electedDr = selectRouterBasedOnPriority(declaredAsDr); - } - } else { - electedDr = electedBdr; - electedDr.setIsDr(true); - electedDr.setIsBdr(false); - } - - return electedDr; - } - - /** - * DR election process. - * - * @param routersList list of eligible routers. - * @return OSPF eligible router instance. - */ - public OspfEligibleRouter selectRouterBasedOnPriority(List routersList) { - - OspfEligibleRouter initialRouter = routersList.get(0); - - for (int i = 1; i < routersList.size(); i++) { - OspfEligibleRouter router = routersList.get(i); - if (router.getRouterPriority() > initialRouter.getRouterPriority()) { - initialRouter = router; - } else if (router.getRouterPriority() == initialRouter.getRouterPriority()) { - try { - if (OspfUtil.ipAddressToLong(router.getIpAddress().toString()) > - OspfUtil.ipAddressToLong(initialRouter.getIpAddress().toString())) { - initialRouter = router; - } - } catch (Exception e) { - log.debug("OSPFInterfaceChannelHandler::selectRouterBasedOnPriority ->" + - " eligibleRouters: {}", initialRouter); - } - } - } - - return initialRouter; - } - - /** - * Adds device information. - * - * @param ospfRouter OSPF router instance - */ - public void addDeviceInformation(OspfRouter ospfRouter) { - controller.addDeviceDetails(ospfRouter); - } - - /** - * removes device information. - * - * @param ospfRouter OSPF neighbor instance - */ - public void removeDeviceInformation(OspfRouter ospfRouter) { - controller.removeDeviceDetails(ospfRouter); - } - - /** - * Adds link information. - * - * @param ospfRouter OSPF router instance - * @param ospfLinkTed list link ted instances - */ - public void addLinkInformation(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) { - controller.addLinkDetails(ospfRouter, ospfLinkTed); - } - - /** - * Removes link information. - * - * @param ospfRouter OSPF router instance - * @param ospfLinkTed OSPF link TED instance - */ - public void removeLinkInformation(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) { - controller.removeLinkDetails(ospfRouter, ospfLinkTed); - } - - /** - * Gets message as bytes. - * - * @param ospfMessage OSPF message - * @return OSPF message - */ - private byte[] getMessage(OspfMessage ospfMessage) { - OspfMessageWriter messageWriter = new OspfMessageWriter(); - if (state().equals(OspfInterfaceState.POINT2POINT)) { - ospfMessage.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS); - } - return (messageWriter.getMessage(ospfMessage, interfaceIndex, state.value())); - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - OspfInterfaceImpl that = (OspfInterfaceImpl) o; - return Objects.equal(helloIntervalTime, that.helloIntervalTime) && - Objects.equal(routerDeadIntervalTime, that.routerDeadIntervalTime) && - Objects.equal(routerPriority, that.routerPriority) && - Objects.equal(interfaceType, that.interfaceType) && - Objects.equal(mtu, that.mtu) && - Objects.equal(reTransmitInterval, that.reTransmitInterval) && - Objects.equal(ipAddress, that.ipAddress) && - Objects.equal(ipNetworkMask, that.ipNetworkMask) && - Objects.equal(listOfNeighbors, that.listOfNeighbors) && - Objects.equal(dr, that.dr) && - Objects.equal(bdr, that.bdr); - } - - @Override - public int hashCode() { - return Objects.hashCode(ipAddress, ipNetworkMask, helloIntervalTime, - routerDeadIntervalTime, routerPriority, listOfNeighbors, - interfaceType, mtu, reTransmitInterval, dr, bdr); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("ipAddress", ipAddress) - .add("routerPriority", routerPriority) - .add("helloIntervalTime", helloIntervalTime) - .add("routerDeadIntervalTime", routerDeadIntervalTime) - .add("interfaceType", interfaceType) - .add("mtu", mtu) - .add("reTransmitInterval", reTransmitInterval) - .add("dr", dr) - .add("bdr", bdr) - .toString(); - } - - /** - * Represents a Hello task which sent a hello message every configured time interval. - */ - private class InternalHelloTimer implements Runnable { - - /** - * Creates an instance of Hello Timer. - */ - InternalHelloTimer() { - } - - @Override - public void run() { - if (channel != null && channel.isOpen() && channel.isConnected()) { - if (interfaceType() == OspfInterfaceType.BROADCAST.value()) { - if (interfaceTypeOldValue != interfaceType()) { - try { - callDrElection(channel); - } catch (Exception e) { - log.debug("Error while calling interfaceUp {}", e.getMessage()); - } - } - } else { - if (interfaceTypeOldValue != interfaceType()) { - interfaceTypeOldValue = interfaceType(); - } - } - HelloPacket hellopacket = new HelloPacket(); - //Headers - hellopacket.setOspfVer(OspfUtil.OSPF_VERSION); - hellopacket.setOspftype(OspfPacketType.HELLO.value()); - hellopacket.setOspfPacLength(0); //will be modified while encoding - hellopacket.setRouterId(ospfArea.routerId()); - hellopacket.setAreaId(ospfArea.areaId()); - hellopacket.setChecksum(0); //will be modified while encoding - hellopacket.setAuthType(OspfUtil.NOT_ASSIGNED); - hellopacket.setAuthentication(OspfUtil.NOT_ASSIGNED); - //Body - hellopacket.setNetworkMask(ipNetworkMask()); - hellopacket.setOptions(ospfArea.options()); - hellopacket.setHelloInterval(helloIntervalTime()); - hellopacket.setRouterPriority(routerPriority()); - hellopacket.setRouterDeadInterval(routerDeadIntervalTime()); - hellopacket.setDr(dr()); - hellopacket.setBdr(bdr()); - - Map listOfNeighbors = listOfNeighbors(); - Set keys = listOfNeighbors.keySet(); - Iterator itr = keys.iterator(); - while (itr.hasNext()) { - String nbrKey = (String) itr.next(); - OspfNbrImpl nbr = (OspfNbrImpl) listOfNeighbors.get(nbrKey); - if (nbr.getState() != OspfNeighborState.DOWN) { - hellopacket.addNeighbor(Ip4Address.valueOf(nbrKey)); - } - } - // build a hello Packet - if (channel == null || !channel.isOpen() || !channel.isConnected()) { - log.debug("Hello Packet not sent !!.. Channel Issue..."); - return; - } - - hellopacket.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS); - byte[] messageToWrite = getMessage(hellopacket); - ChannelFuture future = channel.write(messageToWrite); - if (future.isSuccess()) { - log.debug("Hello Packet successfully sent !!"); - } else { - future.awaitUninterruptibly(); - } - - } - } - } - - /** - * Represents a Wait Timer task which waits the interface state to become WAITING. - * It initiates DR election process. - */ - private class InternalWaitTimer implements Runnable { - Channel ch; - - /** - * Creates an instance of Wait Timer. - */ - InternalWaitTimer() { - this.ch = channel; - } - - @Override - public void run() { - log.debug("Wait timer expires..."); - if (ch != null && ch.isConnected()) { - try { - waitTimer(ch); - } catch (Exception e) { - log.debug("Exception at wait timer ...!!!"); - } - } - } - } - - /** - * Represents a task which sent a LS Acknowledge from the link state headers list. - */ - private class InternalDelayedAckTimer implements Runnable { - Channel ch; - - /** - * Creates an instance of Delayed acknowledge timer. - */ - InternalDelayedAckTimer() { - this.ch = channel; - } - - @Override - public void run() { - if (!linkStateHeaders().isEmpty()) { - isDelayedAckTimerScheduled = true; - if (ch != null && ch.isConnected()) { - - List listOfLsaHeadersAcknowledged = new ArrayList<>(); - List listOfLsaHeaders = linkStateHeaders(); - log.debug("Delayed Ack, Number of Lsa's to Ack {}", listOfLsaHeaders.size()); - Iterator itr = listOfLsaHeaders.iterator(); - while (itr.hasNext()) { - LsAcknowledge ackContent = new LsAcknowledge(); - //Setting OSPF Header - ackContent.setOspfVer(OspfUtil.OSPF_VERSION); - ackContent.setOspftype(OspfPacketType.LSAACK.value()); - ackContent.setRouterId(ospfArea.routerId()); - ackContent.setAreaId(ospfArea.areaId()); - ackContent.setAuthType(OspfUtil.NOT_ASSIGNED); - ackContent.setAuthentication(OspfUtil.NOT_ASSIGNED); - ackContent.setOspfPacLength(OspfUtil.NOT_ASSIGNED); - ackContent.setChecksum(OspfUtil.NOT_ASSIGNED); - //limit to mtu - int currentLength = OspfUtil.OSPF_HEADER_LENGTH; - int maxSize = mtu() - - OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header. - while (itr.hasNext()) { - if ((currentLength + OspfUtil.LSA_HEADER_LENGTH) >= maxSize) { - break; - } - LsaHeader lsaHeader = (LsaHeader) itr.next(); - ackContent.addLinkStateHeader(lsaHeader); - currentLength = currentLength + OspfUtil.LSA_HEADER_LENGTH; - listOfLsaHeadersAcknowledged.add(lsaHeader); - log.debug("Delayed Ack, Added Lsa's to Ack {}", lsaHeader); - } - - log.debug("Delayed Ack, Number of Lsa's in LsAck packet {}", - ackContent.getLinkStateHeaders().size()); - - //set the destination - if (state() == OspfInterfaceState.DR || state() == OspfInterfaceState.BDR - || state() == OspfInterfaceState.POINT2POINT) { - ackContent.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS); - } else if (state() == OspfInterfaceState.DROTHER) { - ackContent.setDestinationIp(OspfUtil.ALL_DROUTERS); - } - byte[] messageToWrite = getMessage(ackContent); - ch.write(messageToWrite); - - for (LsaHeader lsa : listOfLsaHeadersAcknowledged) { - linkStateHeaders().remove(lsa); - removeLsaFromNeighborMap(((OspfAreaImpl) ospfArea).getLsaKey(lsa)); - } - } - } - } - } - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfProcessImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfProcessImpl.java deleted file mode 100644 index 26666adb66..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfProcessImpl.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.area; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.MoreObjects; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfProcess; - -import java.util.List; - -/** - * Representation of the configuration data for OSPF Process, which will be configured using rest URI. - */ -public class OspfProcessImpl implements OspfProcess { - - private String processId; - private List areas; - - /** - * Gets the list of areas belonging to this process. - * - * @return list of areas belonging to this process - */ - public List areas() { - return areas; - } - - /** - * Sets the list of areas belonging to this process. - * - * @param areas list of areas belonging to this process - */ - @JsonProperty("areas") - public void setAreas(List areas) { - this.areas = areas; - } - - /** - * Gets the process id. - * - * @return process id - */ - public String processId() { - return processId; - } - - /** - * Sets the process id. - * - * @param processId the process id - */ - @JsonProperty("processId") - public void setProcessId(String processId) { - this.processId = processId; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("areas", areas) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/package-info.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/package-info.java deleted file mode 100644 index c8e3c92fa1..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF controller. - */ -package org.onosproject.ospf.controller.area; \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/Controller.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/Controller.java deleted file mode 100644 index 8e8e5f31e0..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/Controller.java +++ /dev/null @@ -1,376 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.jboss.netty.bootstrap.ClientBootstrap; -import org.jboss.netty.channel.AdaptiveReceiveBufferSizePredictor; -import org.jboss.netty.channel.ChannelFuture; -import org.jboss.netty.channel.ChannelFutureListener; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.FixedReceiveBufferSizePredictorFactory; -import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.TpPort; -import org.onosproject.net.driver.DriverService; -import org.onosproject.ospf.controller.OspfAgent; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLinkTed; -import org.onosproject.ospf.controller.OspfProcess; -import org.onosproject.ospf.controller.OspfRouter; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.NetworkInterface; -import java.util.Enumeration; -import java.util.List; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -import static org.onlab.util.Tools.groupedThreads; - -/** - * Representation of an OSPF controller. - */ -public class Controller { - protected static final int BUFFER_SIZE = 4 * 1024 * 1024; - private static final Logger log = LoggerFactory.getLogger(Controller.class); - private static final int RETRY_INTERVAL = 4; - private final int peerWorkerThreads = 16; - protected long systemStartTime; - byte[] configPacket = null; - private List processes = null; - private OspfInterfaceChannelHandler ospfChannelHandler; - private NioClientSocketChannelFactory peerExecFactory; - private ClientBootstrap peerBootstrap = null; - private TpPort ospfPort = TpPort.tpPort(OspfUtil.SPORT); - private ScheduledExecutorService connectExecutor = null; - private int connectRetryCounter = 0; - private int connectRetryTime; - private DriverService driverService; - private OspfAgent agent; - - /** - * Deactivates OSPF controller. - */ - public void ospfDeactivate() { - peerExecFactory.shutdown(); - } - - /** - * Updates the processes configuration. - * - * @param ospfProcesses list of OSPF process instances - */ - public void updateConfig(List ospfProcesses) { - log.debug("Controller::UpdateConfig called"); - configPacket = new byte[OspfUtil.CONFIG_LENGTH]; - byte numberOfInterface = 0; // number of interfaces to configure - configPacket[0] = (byte) 0xFF; // its a conf packet - identifier - for (OspfProcess ospfProcess : ospfProcesses) { - log.debug("OspfProcessDetails : " + ospfProcess); - for (OspfArea ospfArea : ospfProcess.areas()) { - for (OspfInterface ospfInterface : ospfArea.ospfInterfaceList()) { - log.debug("OspfInterfaceDetails : " + ospfInterface); - numberOfInterface++; - configPacket[2 * numberOfInterface] = (byte) ospfInterface.interfaceIndex(); - configPacket[(2 * numberOfInterface) + 1] = (byte) 4; - } - } - } - configPacket[1] = numberOfInterface; - //First time configuration - if (processes == null) { - if (ospfProcesses.size() > 0) { - processes = ospfProcesses; - connectPeer(); - } - } else { - ospfChannelHandler.updateInterfaceMap(ospfProcesses); - //Send the config packet - ospfChannelHandler.sentConfigPacket(configPacket); - } - } - - /** - * Initializes the netty client channel connection. - */ - private void initConnection() { - if (peerBootstrap != null) { - return; - } - peerBootstrap = createPeerBootStrap(); - - peerBootstrap.setOption("reuseAddress", true); - peerBootstrap.setOption("tcpNoDelay", true); - peerBootstrap.setOption("keepAlive", true); - peerBootstrap.setOption("receiveBufferSize", Controller.BUFFER_SIZE); - peerBootstrap.setOption("receiveBufferSizePredictorFactory", - new FixedReceiveBufferSizePredictorFactory( - Controller.BUFFER_SIZE)); - peerBootstrap.setOption("receiveBufferSizePredictor", - new AdaptiveReceiveBufferSizePredictor(64, 4096, 65536)); - peerBootstrap.setOption("child.keepAlive", true); - peerBootstrap.setOption("child.tcpNoDelay", true); - peerBootstrap.setOption("child.sendBufferSize", Controller.BUFFER_SIZE); - peerBootstrap.setOption("child.receiveBufferSize", Controller.BUFFER_SIZE); - peerBootstrap.setOption("child.receiveBufferSizePredictorFactory", - new FixedReceiveBufferSizePredictorFactory( - Controller.BUFFER_SIZE)); - peerBootstrap.setOption("child.reuseAddress", true); - - ospfChannelHandler = new OspfInterfaceChannelHandler(this, processes); - ChannelPipelineFactory pfact = new OspfPipelineFactory(ospfChannelHandler); - peerBootstrap.setPipelineFactory(pfact); - } - - /** - * Creates peer boot strap. - * - * @return client bootstrap instance - */ - private ClientBootstrap createPeerBootStrap() { - - if (peerWorkerThreads == 0) { - peerExecFactory = new NioClientSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/ospf", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/ospf", "worker-%d"))); - return new ClientBootstrap(peerExecFactory); - } else { - peerExecFactory = new NioClientSocketChannelFactory( - Executors.newCachedThreadPool(groupedThreads("onos/ospf", "boss-%d")), - Executors.newCachedThreadPool(groupedThreads("onos/ospf", "worker-%d")), - peerWorkerThreads); - return new ClientBootstrap(peerExecFactory); - } - } - - /** - * Gets all configured processes. - * - * @return all configured processes - */ - public List getAllConfiguredProcesses() { - return processes; - } - - /** - * Adds device details. - * - * @param ospfRouter OSPF router instance - */ - public void addDeviceDetails(OspfRouter ospfRouter) { - agent.addConnectedRouter(ospfRouter); - } - - /** - * Removes device details. - * - * @param ospfRouter OSPF router instance - */ - public void removeDeviceDetails(OspfRouter ospfRouter) { - agent.removeConnectedRouter(ospfRouter); - } - - /** - * Adds link details. - * - * @param ospfRouter OSPF router instance - * @param ospfLinkTed OSPF link ted instance - */ - public void addLinkDetails(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) { - agent.addLink(ospfRouter, ospfLinkTed); - } - - /** - * Removes link details. - * - * @param ospfRouter OSPF router instance - * @param ospfLinkTed OSPF link ted instance - */ - public void removeLinkDetails(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) { - agent.deleteLink(ospfRouter, ospfLinkTed); - } - - /** - * Initializes internal data structures. - */ - public void init() { - this.systemStartTime = System.currentTimeMillis(); - } - - /** - * Starts the controller. - * - * @param ag OSPF agent instance - * @param driverService driver service instance - */ - public void start(OspfAgent ag, DriverService driverService) { - log.info("Starting OSPF controller...!!!"); - this.agent = ag; - this.driverService = driverService; - this.init(); - } - - /** - * Stops the Controller. - */ - public void stop() { - log.info("Stopping OSPF controller...!!!"); - ospfDeactivate(); - processes.clear(); - } - - /** - * Returns interface IP by index. - * - * @param interfaceIndex interface index - * @return interface IP by index - */ - private Ip4Address getInterfaceIp(int interfaceIndex) { - Ip4Address ipAddress = null; - try { - NetworkInterface networkInterface = NetworkInterface.getByIndex(interfaceIndex); - Enumeration ipAddresses = networkInterface.getInetAddresses(); - while (ipAddresses.hasMoreElements()) { - InetAddress address = (InetAddress) ipAddresses.nextElement(); - if (!address.isLinkLocalAddress()) { - ipAddress = Ip4Address.valueOf(address.getAddress()); - break; - } - } - } catch (Exception e) { - log.debug("Error while getting Interface IP by index"); - return OspfUtil.DEFAULTIP; - } - - return ipAddress; - } - - /** - * Returns interface mask by index. - * - * @param interfaceIndex interface index - * @return interface IP by index - */ - private String getInterfaceMask(int interfaceIndex) { - String subnetMask = null; - try { - Ip4Address ipAddress = getInterfaceIp(interfaceIndex); - NetworkInterface networkInterface = NetworkInterface.getByInetAddress( - InetAddress.getByName(ipAddress.toString())); - Enumeration ipAddresses = networkInterface.getInetAddresses(); - int index = 0; - while (ipAddresses.hasMoreElements()) { - InetAddress address = (InetAddress) ipAddresses.nextElement(); - if (!address.isLinkLocalAddress()) { - break; - } - index++; - } - int prfLen = networkInterface.getInterfaceAddresses().get(index).getNetworkPrefixLength(); - int shft = 0xffffffff << (32 - prfLen); - int oct1 = ((byte) ((shft & 0xff000000) >> 24)) & 0xff; - int oct2 = ((byte) ((shft & 0x00ff0000) >> 16)) & 0xff; - int oct3 = ((byte) ((shft & 0x0000ff00) >> 8)) & 0xff; - int oct4 = ((byte) (shft & 0x000000ff)) & 0xff; - subnetMask = oct1 + "." + oct2 + "." + oct3 + "." + oct4; - } catch (Exception e) { - log.debug("Error while getting Interface network mask by index"); - return subnetMask; - } - - return subnetMask; - } - - /** - * Disconnects the executor. - */ - public void disconnectExecutor() { - if (connectExecutor != null) { - connectExecutor.shutdown(); - connectExecutor = null; - } - } - - /** - * Connects to peer. - */ - public void connectPeer() { - scheduleConnectionRetry(this.connectRetryTime); - } - - /** - * Retry connection with exponential back-off mechanism. - * - * @param retryDelay retry delay - */ - private void scheduleConnectionRetry(long retryDelay) { - if (this.connectExecutor == null) { - this.connectExecutor = Executors.newSingleThreadScheduledExecutor(); - } - this.connectExecutor.schedule(new ConnectionRetry(), retryDelay, TimeUnit.MINUTES); - } - - /** - * Implements OSPF connection and manages connection to peer with back-off mechanism in case of failure. - */ - class ConnectionRetry implements Runnable { - @Override - public void run() { - log.debug("Connect to peer {}", OspfUtil.SHOST); - initConnection(); - ospfChannelHandler.sentConfigPacket(configPacket); - InetSocketAddress connectToSocket = new InetSocketAddress(OspfUtil.SHOST, ospfPort.toInt()); - try { - peerBootstrap.connect(connectToSocket).addListener(new ChannelFutureListener() { - @Override - public void operationComplete(ChannelFuture future) { - if (!future.isSuccess()) { - connectRetryCounter++; - log.error("Connection failed, ConnectRetryCounter {} remote host {}", connectRetryCounter, - OspfUtil.SHOST); - /* - * Reconnect to peer on failure is exponential till 4 mins, later on retry after every 4 - * mins. - */ - if (connectRetryTime < RETRY_INTERVAL) { - connectRetryTime = (connectRetryTime != 0) ? connectRetryTime * 2 : 1; - } - scheduleConnectionRetry(connectRetryTime); - } else { - //Send the config packet - ospfChannelHandler.sentConfigPacket(configPacket); - connectRetryCounter++; - log.info("Connected to remote host {}, Connect Counter {}", OspfUtil.SHOST, - connectRetryCounter); - disconnectExecutor(); - - return; - } - } - }); - } catch (Exception e) { - log.info("Connect peer exception : " + e.toString()); - disconnectExecutor(); - } - } - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/DeviceInformationImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/DeviceInformationImpl.java deleted file mode 100644 index b827c28ff9..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/DeviceInformationImpl.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.DeviceInformation; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an OSPF device information. - */ -public class DeviceInformationImpl implements DeviceInformation { - - Ip4Address deviceId; - Ip4Address routerId; - List interfaceId = new ArrayList<>(); - Ip4Address areaId; - boolean alreadyCreated; - boolean isDr; - - Ip4Address neighborId; - - /** - * Gets router id. - * - * @return router id - */ - public Ip4Address routerId() { - return routerId; - } - - /** - * Sets router id. - * - * @param routerId router id - */ - public void setRouterId(Ip4Address routerId) { - this.routerId = routerId; - } - - /** - * Gets device id. - * - * @return device id - */ - public Ip4Address deviceId() { - return deviceId; - } - - /** - * Sets device id. - * - * @param deviceId device id - */ - public void setDeviceId(Ip4Address deviceId) { - this.deviceId = deviceId; - } - - /** - * Gets interface id list. - * - * @return interface id list - */ - public List interfaceId() { - return this.interfaceId; - } - - /** - * Adds interface id to list. - * - * @param interfaceId interface id - */ - public void addInterfaceId(Ip4Address interfaceId) { - this.interfaceId.add(interfaceId); - } - - /** - * Gets area id. - * - * @return area id - */ - public Ip4Address areaId() { - return areaId; - } - - /** - * Sets area id. - * - * @param areaId area id - */ - public void setAreaId(Ip4Address areaId) { - this.areaId = areaId; - } - - /** - * Gets is already created or not. - * - * @return true if already created else false - */ - public boolean isAlreadyCreated() { - return alreadyCreated; - } - - /** - * Sets is already created or not. - * - * @param alreadyCreated true or false - */ - public void setAlreadyCreated(boolean alreadyCreated) { - this.alreadyCreated = alreadyCreated; - } - - /** - * Gets is DR or not. - * - * @return true if DR else false - */ - public boolean isDr() { - return isDr; - } - - /** - * Stes DR or not. - * - * @param dr true or false - */ - public void setDr(boolean dr) { - this.isDr = dr; - } - - /** - * Gets neighbor id. - * - * @return neighbor id - */ - public Ip4Address neighborId() { - return neighborId; - } - - /** - * Sets neighbor id. - * - * @param neighborId neighbor id - */ - public void setNeighborId(Ip4Address neighborId) { - this.neighborId = neighborId; - } -} diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/LinkInformationImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/LinkInformationImpl.java deleted file mode 100644 index aa29d61bc8..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/LinkInformationImpl.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.LinkInformation; - -/** - * Representation of an OSPF link information.. - */ -public class LinkInformationImpl implements LinkInformation { - - String linkId; - Ip4Address linkSourceId; - Ip4Address linkDestinationId; - Ip4Address interfaceIp; - boolean linkSrcIdNotRouterId; - boolean alreadyCreated; - Ip4Address linkSourceIpAddress; - Ip4Address linkDestinationIpAddress; - - /** - * Gets link id. - * - * @return link id - */ - public String linkId() { - return linkId; - } - - /** - * Sets link id. - * - * @param linkId link id - */ - public void setLinkId(String linkId) { - this.linkId = linkId; - } - - /** - * Gets is already created or not. - * - * @return true if already created else false - */ - public boolean isAlreadyCreated() { - return alreadyCreated; - } - - /** - * Sets is already created or not. - * - * @param alreadyCreated true or false - */ - public void setAlreadyCreated(boolean alreadyCreated) { - this.alreadyCreated = alreadyCreated; - } - - /** - * Gets is link source id is not router id. - * - * @return true if link source id is router id else false - */ - public boolean isLinkSrcIdNotRouterId() { - return linkSrcIdNotRouterId; - } - - /** - * Sets is link source id is not router id. - * - * @param linkSrcIdNotRouterId true or false - */ - public void setLinkSrcIdNotRouterId(boolean linkSrcIdNotRouterId) { - this.linkSrcIdNotRouterId = linkSrcIdNotRouterId; - } - - /** - * Gets link destination id. - * - * @return link destination id - */ - public Ip4Address linkDestinationId() { - return linkDestinationId; - } - - /** - * Sets link destination id. - * - * @param linkDestinationId link destination id - */ - public void setLinkDestinationId(Ip4Address linkDestinationId) { - this.linkDestinationId = linkDestinationId; - } - - /** - * Gets link source id. - * - * @return link source id - */ - public Ip4Address linkSourceId() { - return linkSourceId; - } - - /** - * Sets link source id. - * - * @param linkSourceId link source id - */ - public void setLinkSourceId(Ip4Address linkSourceId) { - this.linkSourceId = linkSourceId; - } - - /** - * Gets interface IP address. - * - * @return interface IP address - */ - public Ip4Address interfaceIp() { - return interfaceIp; - } - - /** - * Sets interface IP address. - * - * @param interfaceIp interface IP address - */ - public void setInterfaceIp(Ip4Address interfaceIp) { - this.interfaceIp = interfaceIp; - } - - /** - * Gets link source IP address. - * - * @return link source IP address - */ - public Ip4Address linkSourceIpAddress() { - return linkSourceIpAddress; - } - - /** - * Sets link source IP address. - * - * @param linkSourceIpAddress link source IP address - */ - public void setLinkSourceIpAddress(Ip4Address linkSourceIpAddress) { - this.linkSourceIpAddress = linkSourceIpAddress; - } - - /** - * Gets link destination IP address. - * - * @return link destination IP address - */ - public Ip4Address linkDestinationIpAddress() { - return linkDestinationIpAddress; - } - - /** - * Sets link destination IP address. - * - * @param linkDestinationIpAddress link destination IP address - */ - public void setLinkDestinationIpAddress(Ip4Address linkDestinationIpAddress) { - this.linkDestinationIpAddress = linkDestinationIpAddress; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfConfigUtil.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfConfigUtil.java deleted file mode 100644 index 21734960bf..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfConfigUtil.java +++ /dev/null @@ -1,332 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfProcess; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.controller.area.OspfProcessImpl; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; - -/** - * Representation of OSPF network configuration parsing util. - */ -public final class OspfConfigUtil { - public static final String PROCESSID = "processId"; - public static final String AREAS = "areas"; - public static final String INTERFACEINDEX = "interfaceIndex"; - public static final String AREAID = "areaId"; - public static final String ROUTERID = "routerId"; - public static final String INTERFACE = "interface"; - public static final String HELLOINTERVAL = "helloIntervalTime"; - public static final String ROUTERDEADINTERVAL = "routerDeadIntervalTime"; - public static final String INTERFACETYPE = "interfaceType"; - public static final String EXTERNALROUTINGCAPABILITY = "externalRoutingCapability"; - private static final Logger log = LoggerFactory.getLogger(OspfConfigUtil.class); - private static final String ISOPAQUE = "isOpaqueEnable"; - - /** - * Creates an instance of this. - */ - private OspfConfigUtil() { - - } - - /** - * Returns list of OSPF process from the json nodes. - * - * @param jsonNodes represents one or more OSPF process configuration - * @return list of OSPF processes. - */ - public static List processes(JsonNode jsonNodes) { - List ospfProcesses = new ArrayList<>(); - if (jsonNodes == null) { - return ospfProcesses; - } - //From each Process nodes, get area and related interface details. - jsonNodes.forEach(jsonNode -> { - List areas = new ArrayList<>(); - //Get configured areas for the process. - for (JsonNode areaNode : jsonNode.path(AREAS)) { - List interfaceList = new ArrayList<>(); - for (JsonNode interfaceNode : areaNode.path(INTERFACE)) { - OspfInterface ospfInterface = interfaceDetails(interfaceNode); - if (ospfInterface != null) { - interfaceList.add(ospfInterface); - } - } - //Get the area details - OspfArea area = areaDetails(areaNode); - if (area != null) { - area.setOspfInterfaceList(interfaceList); - areas.add(area); - } - } - OspfProcess process = new OspfProcessImpl(); - process.setProcessId(jsonNode.path(PROCESSID).asText()); - process.setAreas(areas); - ospfProcesses.add(process); - }); - - return ospfProcesses; - } - - /** - * Returns interface IP by index. - * - * @param interfaceIndex interface index - * @return interface IP by index - */ - private static Ip4Address getInterfaceIp(int interfaceIndex) { - Ip4Address ipAddress = null; - try { - NetworkInterface networkInterface = NetworkInterface.getByIndex(interfaceIndex); - Enumeration ipAddresses = networkInterface.getInetAddresses(); - while (ipAddresses.hasMoreElements()) { - InetAddress address = (InetAddress) ipAddresses.nextElement(); - if (!address.isLinkLocalAddress()) { - ipAddress = Ip4Address.valueOf(address.getAddress()); - break; - } - } - } catch (Exception e) { - log.debug("Error while getting Interface IP by index"); - return OspfUtil.DEFAULTIP; - } - return ipAddress; - } - - /** - * Returns interface MAC by index. - * - * @param interfaceIndex interface index - * @return interface IP by index - */ - private static String getInterfaceMask(int interfaceIndex) { - String subnetMask = null; - try { - Ip4Address ipAddress = getInterfaceIp(interfaceIndex); - NetworkInterface networkInterface = NetworkInterface.getByInetAddress( - InetAddress.getByName(ipAddress.toString())); - Enumeration ipAddresses = networkInterface.getInetAddresses(); - int index = 0; - while (ipAddresses.hasMoreElements()) { - InetAddress address = (InetAddress) ipAddresses.nextElement(); - if (!address.isLinkLocalAddress()) { - break; - } - index++; - } - int prfLen = networkInterface.getInterfaceAddresses().get(index).getNetworkPrefixLength(); - int shft = 0xffffffff << (32 - prfLen); - int oct1 = ((byte) ((shft & 0xff000000) >> 24)) & 0xff; - int oct2 = ((byte) ((shft & 0x00ff0000) >> 16)) & 0xff; - int oct3 = ((byte) ((shft & 0x0000ff00) >> 8)) & 0xff; - int oct4 = ((byte) (shft & 0x000000ff)) & 0xff; - subnetMask = oct1 + "." + oct2 + "." + oct3 + "." + oct4; - } catch (Exception e) { - log.debug("Error while getting Interface network mask by index"); - return subnetMask; - } - return subnetMask; - } - - /** - * Checks if valid digit or not. - * - * @param strInput input value - * @return true if valid else false - */ - private static boolean isValidDigit(String strInput) { - boolean isValid = true; - if (isPrimitive(strInput)) { - int input = Integer.parseInt(strInput); - if (input < 1 || input > 255) { - log.debug("Wrong config input value: {}", strInput); - isValid = false; - } else { - isValid = true; - } - - } else { - isValid = false; - } - - return isValid; - } - - /** - * Checks if primitive or not. - * - * @param value input value - * @return true if number else false - */ - private static boolean isPrimitive(String value) { - boolean status = true; - value = value.trim(); - if (value.length() < 1) { - return false; - } - for (int i = 0; i < value.length(); i++) { - char c = value.charAt(i); - if (!Character.isDigit(c)) { - status = false; - break; - } - } - - return status; - } - - /** - * Checks if boolean or not. - * - * @param value input value - * @return true if boolean else false - */ - private static boolean isBoolean(String value) { - boolean status = false; - value = value.trim(); - if (value.equals("true") || value.equals("false")) { - return true; - } - - return status; - } - - /** - * Checks if given id is valid or not. - * - * @param value input value - * @return true if valid else false - */ - private static boolean isValidIpAddress(String value) { - boolean status = true; - try { - Ip4Address ipAddress = Ip4Address.valueOf(value); - } catch (Exception e) { - log.debug("Invalid IP address string: {}", value); - return false; - } - - return status; - } - - /** - * Returns OSPF area instance from configuration. - * - * @param areaNode area configuration - * @return OSPF area instance - */ - private static OspfArea areaDetails(JsonNode areaNode) { - OspfArea area = new OspfAreaImpl(); - String areaId = areaNode.path(AREAID).asText(); - if (isValidIpAddress(areaId)) { - area.setAreaId(Ip4Address.valueOf(areaId)); - } else { - log.debug("Wrong areaId: {}", areaId); - return null; - } - String routerId = areaNode.path(ROUTERID).asText(); - if (isValidIpAddress(routerId)) { - area.setRouterId(Ip4Address.valueOf(routerId)); - } else { - log.debug("Wrong routerId: {}", routerId); - return null; - } - String routingCapability = areaNode.path(EXTERNALROUTINGCAPABILITY).asText(); - if (isBoolean(routingCapability)) { - area.setExternalRoutingCapability(Boolean.valueOf(routingCapability)); - } else { - log.debug("Wrong routingCapability: {}", routingCapability); - return null; - } - String isOpaqueEnabled = areaNode.path(ISOPAQUE).asText(); - if (isBoolean(isOpaqueEnabled)) { - area.setIsOpaqueEnabled(Boolean.valueOf(isOpaqueEnabled)); - } else { - log.debug("Wrong isOpaqueEnabled: {}", isOpaqueEnabled); - return null; - } - area.setOptions(OspfUtil.HELLO_PACKET_OPTIONS); - - return area; - } - - /** - * Returns OSPF interface instance from configuration. - * - * @param interfaceNode interface configuration - * @return OSPF interface instance - */ - private static OspfInterface interfaceDetails(JsonNode interfaceNode) { - OspfInterface ospfInterface = new OspfInterfaceImpl(); - String index = interfaceNode.path(INTERFACEINDEX).asText(); - if (isValidDigit(index)) { - ospfInterface.setInterfaceIndex(Integer.parseInt(index)); - } else { - log.debug("Wrong interface index: {}", index); - return null; - } - Ip4Address interfaceIp = getInterfaceIp(ospfInterface.interfaceIndex()); - if (interfaceIp.equals(OspfUtil.DEFAULTIP)) { - return null; - } - ospfInterface.setIpAddress(interfaceIp); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf(getInterfaceMask( - ospfInterface.interfaceIndex()))); - ospfInterface.setBdr(OspfUtil.DEFAULTIP); - ospfInterface.setDr(OspfUtil.DEFAULTIP); - String helloInterval = interfaceNode.path(HELLOINTERVAL).asText(); - if (isValidDigit(helloInterval)) { - ospfInterface.setHelloIntervalTime(Integer.parseInt(helloInterval)); - } else { - log.debug("Wrong hello interval: {}", helloInterval); - return null; - } - String routerDeadInterval = interfaceNode.path(ROUTERDEADINTERVAL).asText(); - if (isValidDigit(routerDeadInterval)) { - ospfInterface.setRouterDeadIntervalTime(Integer.parseInt(routerDeadInterval)); - } else { - log.debug("Wrong routerDeadInterval: {}", routerDeadInterval); - return null; - } - String interfaceType = interfaceNode.path(INTERFACETYPE).asText(); - if (isValidDigit(interfaceType)) { - ospfInterface.setInterfaceType(Integer.parseInt(interfaceType)); - } else { - log.debug("Wrong interfaceType: {}", interfaceType); - return null; - } - ospfInterface.setReTransmitInterval(OspfUtil.RETRANSMITINTERVAL); - ospfInterface.setMtu(OspfUtil.MTU); - ospfInterface.setRouterPriority(OspfUtil.ROUTER_PRIORITY); - - return ospfInterface; - } -} diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfControllerImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfControllerImpl.java deleted file mode 100644 index dc63617b24..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfControllerImpl.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.ospf.controller.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.Sets; -import org.onosproject.net.driver.DriverService; -import org.onosproject.ospf.controller.OspfAgent; -import org.onosproject.ospf.controller.OspfController; -import org.onosproject.ospf.controller.OspfLinkListener; -import org.onosproject.ospf.controller.OspfLinkTed; -import org.onosproject.ospf.controller.OspfProcess; -import org.onosproject.ospf.controller.OspfRouter; -import org.onosproject.ospf.controller.OspfRouterListener; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -/** - * Representation of an OSPF controller implementation. - * Serves as a one stop shop for obtaining OSPF devices and (un)register listeners on OSPF events - */ -@Component(immediate = true, service = OspfController.class) -public class OspfControllerImpl implements OspfController { - - private static final Logger log = LoggerFactory.getLogger(OspfControllerImpl.class); - private final Controller ctrl = new Controller(); - @Reference(cardinality = ReferenceCardinality.MANDATORY) - protected DriverService driverService; - protected Set ospfRouterListener = new HashSet<>(); - protected Set ospfLinkListener = Sets.newHashSet(); - protected OspfAgent agent = new InternalDeviceConfig(); - - @Activate - public void activate() { - log.info("OSPFControllerImpl activate...!!!"); - ctrl.start(agent, driverService); - log.info("Started"); - } - - @Deactivate - public void deactivate() { - ctrl.stop(); - log.info("Stopped"); - } - - - @Override - public void addRouterListener(OspfRouterListener listener) { - if (!ospfRouterListener.contains(listener)) { - this.ospfRouterListener.add(listener); - } - } - - @Override - public void removeRouterListener(OspfRouterListener listener) { - this.ospfRouterListener.remove(listener); - } - - @Override - public void addLinkListener(OspfLinkListener listener) { - ospfLinkListener.add(listener); - - } - - @Override - public void removeLinkListener(OspfLinkListener listener) { - ospfLinkListener.remove(listener); - - } - - @Override - public Set listener() { - return ospfRouterListener; - } - - @Override - public Set linkListener() { - return ospfLinkListener; - } - - - @Override - public List getAllConfiguredProcesses() { - List processes = ctrl.getAllConfiguredProcesses(); - return processes; - } - - @Override - public void updateConfig(JsonNode processesNode) { - try { - List ospfProcesses = OspfConfigUtil.processes(processesNode); - //if there is interface details then update configuration - if (!ospfProcesses.isEmpty() && - ospfProcesses.get(0).areas() != null && !ospfProcesses.get(0).areas().isEmpty() && - ospfProcesses.get(0).areas().get(0) != null && - !ospfProcesses.get(0).areas().get(0).ospfInterfaceList().isEmpty()) { - ctrl.updateConfig(ospfProcesses); - } - } catch (Exception e) { - log.debug("Error::updateConfig::{}", e.getMessage()); - } - } - - @Override - public void deleteConfig(List processes, String attribute) { - } - - /** - * Notifier for internal OSPF device and link changes. - */ - private class InternalDeviceConfig implements OspfAgent { - - @Override - public boolean addConnectedRouter(OspfRouter ospfRouter) { - for (OspfRouterListener l : listener()) { - l.routerAdded(ospfRouter); - } - return true; - } - - @Override - public void removeConnectedRouter(OspfRouter ospfRouter) { - for (OspfRouterListener l : listener()) { - l.routerRemoved(ospfRouter); - } - } - - @Override - public void addLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) { - for (OspfLinkListener l : linkListener()) { - l.addLink(ospfRouter, ospfLinkTed); - } - - } - - @Override - public void deleteLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) { - for (OspfLinkListener l : linkListener()) { - l.deleteLink(ospfRouter, ospfLinkTed); - } - } - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImpl.java deleted file mode 100644 index 298074dae4..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImpl.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.onlab.packet.Ip4Address; -import org.onlab.packet.Ip6Address; -import org.onosproject.ospf.controller.OspfDeviceTed; - -import java.util.List; - -/** - * Representation of an OSPF device Traffic Engineering details. - */ -public class OspfDeviceTedImpl implements OspfDeviceTed { - - List ipv4RouterIds; - List ipv6RouterIds; - List topologyIds; - Boolean asbr; - Boolean abr; - - /** - * Gets list of IPv4 router id. - * - * @return list of IPv4 router id - */ - public List ipv4RouterIds() { - return ipv4RouterIds; - } - - @Override - public void setIpv4RouterIds(List ipv4RouterIds) { - this.ipv4RouterIds = ipv4RouterIds; - } - - /** - * Gets if router is area border router or not. - * - * @return true if it is area border router else false - */ - public Boolean abr() { - return abr; - } - - @Override - public void setAbr(Boolean abr) { - this.abr = abr; - } - - /** - * Gets if router is autonomous system border router or not. - * - * @return true or false - */ - public Boolean asbr() { - return asbr; - } - - @Override - public void setAsbr(Boolean asbr) { - this.asbr = asbr; - } - - /** - * Gets list of topology id's. - * - * @return list of topology id's - */ - public List topologyIds() { - return topologyIds; - } - - @Override - public void setTopologyIds(List topologyIds) { - this.topologyIds = topologyIds; - } - - /** - * Gets list of ipv6 router id's. - * - * @return list of ipv6 router id's - */ - public List ipv6RouterIds() { - return ipv6RouterIds; - } - - @Override - public void setIpv6RouterIds(List ipv6RouterIds) { - this.ipv6RouterIds = ipv6RouterIds; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandler.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandler.java deleted file mode 100644 index 5ac63b14e8..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandler.java +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.ExceptionEvent; -import org.jboss.netty.channel.MessageEvent; -import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler; -import org.jboss.netty.handler.timeout.ReadTimeoutException; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfMessage; -import org.onosproject.ospf.controller.OspfNbr; -import org.onosproject.ospf.controller.OspfProcess; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.controller.util.OspfInterfaceType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.util.OspfInterfaceState; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.nio.channels.ClosedChannelException; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.RejectedExecutionException; - -/** - * Channel handler deals with the OSPF channel connection. - * Also it dispatches messages to the appropriate handlers for processing. - */ -public class OspfInterfaceChannelHandler extends IdleStateAwareChannelHandler { - - private static final Logger log = LoggerFactory.getLogger(OspfInterfaceChannelHandler.class); - private static Map isisDb = null; - private Channel channel = null; - private Controller controller; - private List processes = null; - private byte[] configPacket = null; - private Map ospfInterfaceMap = new ConcurrentHashMap<>(); - - /** - * Creates an instance of OSPF channel handler. - * - * @param controller controller instance - * @param processes list of configured processes - */ - public OspfInterfaceChannelHandler(Controller controller, List processes) { - this.controller = controller; - this.processes = processes; - } - - /** - * Initializes the interface map with interface details. - */ - public void initializeInterfaceMap() { - for (OspfProcess process : processes) { - for (OspfArea area : process.areas()) { - for (OspfInterface ospfInterface : area.ospfInterfaceList()) { - OspfInterface anInterface = ospfInterfaceMap.get(ospfInterface.interfaceIndex()); - if (anInterface == null) { - ospfInterface.setOspfArea(area); - ((OspfInterfaceImpl) ospfInterface).setController(controller); - ((OspfInterfaceImpl) ospfInterface).setState(OspfInterfaceState.DOWN); - ospfInterface.setDr(Ip4Address.valueOf("0.0.0.0")); - ospfInterface.setBdr(Ip4Address.valueOf("0.0.0.0")); - ospfInterfaceMap.put(ospfInterface.interfaceIndex(), ospfInterface); - } - ((OspfInterfaceImpl) ospfInterface).setChannel(channel); - ospfInterface.interfaceUp(); - ospfInterface.startDelayedAckTimer(); - } - //Initialize the LSDB and aging process - area.initializeDb(); - } - } - } - - /** - * Updates the interface map with interface details. - * - * @param ospfProcesses updated process instances - */ - public void updateInterfaceMap(List ospfProcesses) { - for (OspfProcess ospfUpdatedProcess : ospfProcesses) { - for (OspfArea updatedArea : ospfUpdatedProcess.areas()) { - for (OspfInterface ospfUpdatedInterface : updatedArea.ospfInterfaceList()) { - OspfInterface ospfInterface = ospfInterfaceMap.get(ospfUpdatedInterface.interfaceIndex()); - if (ospfInterface == null) { - ospfUpdatedInterface.setOspfArea(updatedArea); - ((OspfInterfaceImpl) ospfUpdatedInterface).setController(controller); - ((OspfInterfaceImpl) ospfUpdatedInterface).setState(OspfInterfaceState.DOWN); - ospfUpdatedInterface.setDr(Ip4Address.valueOf("0.0.0.0")); - ospfUpdatedInterface.setBdr(Ip4Address.valueOf("0.0.0.0")); - ospfInterfaceMap.put(ospfUpdatedInterface.interfaceIndex(), ospfUpdatedInterface); - ((OspfInterfaceImpl) ospfUpdatedInterface).setChannel(channel); - ospfUpdatedInterface.interfaceUp(); - ospfUpdatedInterface.startDelayedAckTimer(); - } else { - ospfInterface.setOspfArea(updatedArea); - - if (ospfInterface.routerDeadIntervalTime() != ospfUpdatedInterface.routerDeadIntervalTime()) { - ospfInterface.setRouterDeadIntervalTime(ospfUpdatedInterface.routerDeadIntervalTime()); - Map neighbors = ospfInterface.listOfNeighbors(); - for (String key : neighbors.keySet()) { - OspfNbr ospfNbr = ospfInterface.neighbouringRouter(key); - ospfNbr.setRouterDeadInterval(ospfInterface.routerDeadIntervalTime()); - ospfNbr.stopInactivityTimeCheck(); - ospfNbr.startInactivityTimeCheck(); - } - } - if (ospfInterface.interfaceType() != ospfUpdatedInterface.interfaceType()) { - ospfInterface.setInterfaceType(ospfUpdatedInterface.interfaceType()); - if (ospfInterface.interfaceType() == OspfInterfaceType.POINT_TO_POINT.value()) { - ospfInterface.setDr(Ip4Address.valueOf("0.0.0.0")); - ospfInterface.setBdr(Ip4Address.valueOf("0.0.0.0")); - } - ospfInterface.removeNeighbors(); - } - if (ospfInterface.helloIntervalTime() != ospfUpdatedInterface.helloIntervalTime()) { - ospfInterface.setHelloIntervalTime(ospfUpdatedInterface.helloIntervalTime()); - ospfInterface.stopHelloTimer(); - ospfInterface.startHelloTimer(); - } - ospfInterfaceMap.put(ospfInterface.interfaceIndex(), ospfInterface); - } - } - } - } - } - - /** - * Initialize channel, start hello sender and initialize LSDB. - */ - private void initialize() { - log.debug("OspfChannelHandler initialize..!!!"); - if (configPacket != null) { - log.debug("OspfChannelHandler initialize -> sentConfig packet of length ::" - + configPacket.length); - sentConfigPacket(configPacket); - } - initializeInterfaceMap(); - } - - @Override - public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent evt) { - log.info("OSPF channelConnected from {}", evt.getChannel().getRemoteAddress()); - this.channel = evt.getChannel(); - initialize(); - } - - @Override - public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent evt) { - log.debug("OspfChannelHandler::channelDisconnected...!!!"); - - for (Integer interfaceIndex : ospfInterfaceMap.keySet()) { - OspfInterface anInterface = ospfInterfaceMap.get(interfaceIndex); - if (anInterface != null) { - anInterface.interfaceDown(); - anInterface.stopDelayedAckTimer(); - } - } - - if (controller != null) { - controller.connectPeer(); - } - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) { - log.debug("[exceptionCaught]: " + e.toString()); - if (e.getCause() instanceof ReadTimeoutException) { - log.debug("Disconnecting device {} due to read timeout", e.getChannel().getRemoteAddress()); - return; - } else if (e.getCause() instanceof ClosedChannelException) { - log.debug("Channel for OSPF {} already closed", e.getChannel().getRemoteAddress()); - } else if (e.getCause() instanceof IOException) { - log.debug("Disconnecting OSPF {} due to IO Error: {}", e.getChannel().getRemoteAddress(), - e.getCause().getMessage()); - } else if (e.getCause() instanceof OspfParseException) { - OspfParseException errMsg = (OspfParseException) e.getCause(); - byte errorCode = errMsg.errorCode(); - byte errorSubCode = errMsg.errorSubCode(); - log.debug("Error while parsing message from OSPF {}, ErrorCode {}", - e.getChannel().getRemoteAddress(), errorCode); - } else if (e.getCause() instanceof RejectedExecutionException) { - log.debug("Could not process message: queue full"); - } else { - log.debug("Error while processing message from OSPF {}, {}", - e.getChannel().getRemoteAddress(), e.getCause().getMessage()); - } - } - - @Override - public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) { - log.debug("OspfChannelHandler::messageReceived...!!!"); - Object message = e.getMessage(); - if (message instanceof List) { - List ospfMessageList = (List) message; - log.debug("OspfChannelHandler::List of IsisMessages Size {}", ospfMessageList.size()); - - for (OspfMessage ospfMessage : ospfMessageList) { - processOspfMessage(ospfMessage, ctx); - } - } - if (message instanceof OspfMessage) { - OspfMessage ospfMessage = (OspfMessage) message; - log.debug("OspfChannelHandler::OspfMessages received...!!"); - processOspfMessage(ospfMessage, ctx); - } - } - - /** - * When an OSPF message received it is handed over to this method. - * Based on the type of the OSPF message received it will be handed over - * to corresponding message handler methods. - * - * @param ospfMessage received OSPF message - * @param ctx channel handler context instance. - */ - private void processOspfMessage(OspfMessage - ospfMessage, ChannelHandlerContext ctx) { - log.debug("OspfChannelHandler::processOspfMessage...!!!"); - int interfaceIndex = ospfMessage.interfaceIndex(); - OspfInterface ospfInterface = ospfInterfaceMap.get(interfaceIndex); - if (ospfInterface != null) { - ospfInterface.processOspfMessage(ospfMessage, ctx); - } - } - - /** - * Sends the interface configuration packet to server. - * - * @param configPacket interface configuration - */ - public void sentConfigPacket(byte[] configPacket) { - if (channel != null) { - channel.write(configPacket); - log.debug("OspfChannelHandler sentConfigPacket packet sent..!!!"); - } else { - log.debug("OspfChannelHandler sentConfigPacket channel not connected - re try..!!!"); - this.configPacket = configPacket; - } - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfLinkTedImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfLinkTedImpl.java deleted file mode 100644 index cb55499d21..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfLinkTedImpl.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.onlab.packet.Ip4Address; -import org.onlab.packet.Ip6Address; -import org.onlab.util.Bandwidth; -import org.onosproject.ospf.controller.OspfLinkTed; - -import java.util.ArrayList; -import java.util.List; - -/** - * Implements OSPF Link Traffic engineering details. - */ -public class OspfLinkTedImpl implements OspfLinkTed { - - - Bandwidth maximumLink; - List maxUnResBandwidth = new ArrayList<>(); - Bandwidth maxReserved; - Integer teMetric; - List ipv4LocRouterId = new ArrayList<>(); - List ipv6LocRouterId = new ArrayList<>(); - List ipv4RemRouterId = new ArrayList<>(); - List ipv6RemRouterId = new ArrayList<>(); - - - /** - * Gets maximum link. - * - * @return maximum link - */ - public Bandwidth maximumLink() { - return maximumLink; - } - - /** - * Sets maximum link. - * - * @param maximumLink maximum link - */ - public void setMaximumLink(Bandwidth maximumLink) { - this.maximumLink = maximumLink; - } - - /** - * Gets list of IPv6 remote router id. - * - * @return list of IPv6 remote router id - */ - public List ipv6RemRouterId() { - return ipv6RemRouterId; - } - - - /** - * Sets list of IPv6 remote router id. - * - * @param ipv6RemRouterId IPv6 remote router id - */ - public void setIpv6RemRouterId(List ipv6RemRouterId) { - this.ipv6RemRouterId = ipv6RemRouterId; - } - - /** - * Gets list of IPv4 remote router id. - * - * @return list of IPv4 remote router id - */ - public List ipv4RemRouterId() { - return ipv4RemRouterId; - } - - /** - * Sets IPv4 remote router id. - * - * @param ipv4RemRouterId IPv4 remote router id - */ - public void setIpv4RemRouterId(List ipv4RemRouterId) { - this.ipv4RemRouterId = ipv4RemRouterId; - } - - /** - * Gets list of IPv6 local router id. - * - * @return list of IPv6 local router id - */ - public List ipv6LocRouterId() { - return ipv6LocRouterId; - } - - /** - * Sets list of IPv6 local router id. - * - * @param ipv6LocRouterId IPv6 local router id - */ - public void setIpv6LocRouterId(List ipv6LocRouterId) { - this.ipv6LocRouterId = ipv6LocRouterId; - } - - /** - * Gets list of IPv4 local router id. - * - * @return list of IPv4 local router id - */ - public List ipv4LocRouterId() { - return ipv4LocRouterId; - } - - /** - * Sets list of IPv4 local router id. - * - * @param ipv4LocRouterId IPv4 local router id - */ - public void setIpv4LocRouterId(List ipv4LocRouterId) { - this.ipv4LocRouterId = ipv4LocRouterId; - } - - /** - * Gets traffic engineering metric. - * - * @return traffic engineering metric - */ - public Integer teMetric() { - return teMetric; - } - - /** - * Sets traffic engineering metric. - * - * @param teMetric Traffic engineering metric - */ - public void setTeMetric(Integer teMetric) { - this.teMetric = teMetric; - } - - /** - * Gets maximum bandwidth reserved. - * - * @return maximum bandwidth reserved - */ - public Bandwidth maxReserved() { - return maxReserved; - } - - /** - * Sets maximum bandwidth reserved. - * - * @param maxReserved maximum bandwidth reserved - */ - public void setMaxReserved(Bandwidth maxReserved) { - this.maxReserved = maxReserved; - } - - /** - * Gets list of maximum unreserved bandwidth. - * - * @return list of maximum unreserved bandwidth - */ - public List maxUnResBandwidth() { - return maxUnResBandwidth; - } - - /** - * Sets ist of maximum unreserved bandwidth. - * - * @param bandwidth maximum unreserved bandwidth - */ - public void setMaxUnResBandwidth(Bandwidth bandwidth) { - this.maxUnResBandwidth.add(bandwidth); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageDecoder.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageDecoder.java deleted file mode 100644 index 0446e09fa5..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageDecoder.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.frame.FrameDecoder; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfMessage; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.ospfpacket.OspfMessageReader; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.LinkedList; -import java.util.List; - -/** - * Decodes an OSPF message from a Channel, for use in a netty pipeline. - */ -public class OspfMessageDecoder extends FrameDecoder { - - private static final Logger log = LoggerFactory.getLogger(OspfMessageDecoder.class); - - @Override - protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) - throws OspfParseException { - log.debug("OspfMessageDecoder::Message received <:> length {}", buffer.readableBytes()); - if (!channel.isConnected()) { - log.info("Channel is not connected."); - return null; - } - OspfMessageReader messageReader = new OspfMessageReader(); - List ospfMessageList = new LinkedList<>(); - while (buffer.readableBytes() >= OspfUtil.MINIMUM_FRAME_LEN) { - ChannelBuffer ospfDataBuffer = buffer.readBytes(OspfUtil.MINIMUM_FRAME_LEN); - int readableBytes = ospfDataBuffer.readableBytes(); - OspfMessage message = messageReader.readFromBuffer(ospfDataBuffer); - if (message != null) { - if (ospfDataBuffer.readableBytes() >= OspfUtil.METADATA_LEN) { - ospfDataBuffer.readerIndex(readableBytes - OspfUtil.METADATA_LEN); - log.debug("IsisMessageDecoder::Reading metadata <:> length {}", ospfDataBuffer.readableBytes()); - - - int interfaceIndex = ospfDataBuffer.readByte(); - byte[] sourceIpBytes = new byte[OspfUtil.FOUR_BYTES]; - ospfDataBuffer.readBytes(sourceIpBytes, 0, OspfUtil.FOUR_BYTES); - Ip4Address sourceIP = Ip4Address.valueOf(sourceIpBytes); - - message.setSourceIp(sourceIP); - message.setInterfaceIndex(interfaceIndex); - } - ospfMessageList.add(message); - } - } - return (!ospfMessageList.isEmpty()) ? ospfMessageList : null; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageEncoder.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageEncoder.java deleted file mode 100644 index c457725e51..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfMessageEncoder.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.ospf.controller.impl; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Encodes an OSPF message for output into a ChannelBuffer, for use in a netty pipeline. - */ -public class OspfMessageEncoder extends OneToOneEncoder { - - private static final Logger log = LoggerFactory.getLogger(OspfMessageEncoder.class); - - @Override - protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) { - - byte[] byteMsg = (byte[]) msg; - log.debug("Encoding ospfMessage of length {}", byteMsg.length); - ChannelBuffer channelBuffer = ChannelBuffers.buffer(byteMsg.length); - channelBuffer.writeBytes(byteMsg); - - return channelBuffer; - } -} diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfNbrImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfNbrImpl.java deleted file mode 100644 index 0f7a91c477..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfNbrImpl.java +++ /dev/null @@ -1,1953 +0,0 @@ -/* -* Copyright 2016-present Open Networking Foundation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.onosproject.ospf.controller.impl; - -import org.jboss.netty.channel.Channel; -import org.onlab.packet.Ip4Address; -import org.onlab.util.Bandwidth; -import org.onosproject.ospf.controller.DeviceInformation; -import org.onosproject.ospf.controller.LinkInformation; -import org.onosproject.ospf.controller.LsaWrapper; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfDeviceTed; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLinkTed; -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.OspfLsdb; -import org.onosproject.ospf.controller.OspfMessage; -import org.onosproject.ospf.controller.OspfNbr; -import org.onosproject.ospf.controller.OspfNeighborState; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.controller.OspfRouter; -import org.onosproject.ospf.controller.TopologyForDeviceAndLink; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.controller.lsdb.LsaWrapperImpl; -import org.onosproject.ospf.controller.util.OspfInterfaceType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.TopLevelTlv; -import org.onosproject.ospf.protocol.ospfpacket.OspfMessageWriter; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; -import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge; -import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest; -import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate; -import org.onosproject.ospf.protocol.util.ChecksumCalculator; -import org.onosproject.ospf.protocol.util.OspfInterfaceState; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.ListIterator; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -/** - * Represents an OSPF neighbor. - * The first thing an OSPF router must do is find its neighbors and form adjacency. - * Each neighbor that the router finds will be represented by this class. - */ -public class OspfNbrImpl implements OspfNbr { - private static final Logger log = LoggerFactory.getLogger(OspfNbrImpl.class); - private OspfNeighborState state; - private InternalRxmtDdPacket rxmtDdPacketTask; - private InternalInactivityTimeCheck inActivityTimeCheckTask; - private InternalFloodingTask floodingTask; - private InternalRxmtLsrPacket rxmtLsrPacketTask; - private ScheduledExecutorService exServiceRxmtLsr; - private ScheduledExecutorService exServiceFlooding; - private ScheduledExecutorService exServiceRxmtDDPacket; - private ScheduledExecutorService exServiceInActivity; - - private boolean floodingTimerScheduled = false; - private boolean rxmtLsrTimerScheduled = false; - private boolean rxmtDdPacketTimerScheduled = false; - private boolean inActivityTimerScheduled = false; - - /** - * When the two neighbors are exchanging databases, they form a master/slave relationship. - * The master sends the first Database Description Packet - */ - private int isMaster; - - /** - * The DD Sequence Number of the DD packet that is currently being sent to the neighbor. - */ - private long ddSeqNum; - - /** - * Another data structure for keeping information of the last received DD packet. - */ - private DdPacket lastDdPacket; - - /** - * Another data structure for keeping information of the last Sent DD packet. - */ - private DdPacket lastSentDdPacket; - - /** - * Another data structure for keeping information of the last Sent LSrequest packet. - */ - private LsRequest lastSentLsrPacket; - - /** - * The router ID of the Neighbor Router. - */ - private Ip4Address neighborId; - - /** - * The IP address of the neighboring router's interface to the attached network. - */ - private Ip4Address neighborIpAddr; - - /** - * The neighbor's IDEA of the designated router. - */ - private Ip4Address neighborDr; - - /** - * The neighbor's IDEA of the backup designated router. - */ - private Ip4Address neighborBdr; - - private int routerPriority; - private int routerDeadInterval; - - /** - * The list of LSAs that have to be flooded. - */ - private Map reTxList = new LinkedHashMap<>(); - - /** - * The list of LSAs that have been flooded but not yet acknowledged on this adjacency. - */ - private Map pendingReTxList = new LinkedHashMap<>(); - - /** - * List of LSAs which are failed to received ACK. - */ - private Map failedTxList = new HashMap<>(); - - /** - * The complete list of LSAs that make up the area link-state database, at the moment the. - * neighbor goes into Database Exchange state (EXCHANGE). - */ - private List ddSummaryList = new CopyOnWriteArrayList<>(); - - /** - * LSA Request List from Neighbor. - */ - private Hashtable lsReqList = new Hashtable(); - - /** - * The optional OSPF capabilities supported by the neighbor. - */ - private int options; - private boolean isOpaqueCapable; - - /** - * A link to the OSPF-Interface this Neighbor belongs to. - */ - private OspfInterface ospfInterface; - - /** - * A link to the OSPF-Area this Neighbor Data Structure belongs to. - */ - private OspfArea ospfArea; - private List topLevelTlvs = new ArrayList<>(); - private List deviceInformationList = new ArrayList<>(); - - private TopologyForDeviceAndLink topologyForDeviceAndLink; - - /** - * Creates an instance of Neighbor. - * - * @param paramOspfArea OSPF Area instance - * @param paramOspfInterface OSPF interface instance - * @param ipAddr IP address - * @param routerId router id - * @param options options - * @param topologyForDeviceAndLinkCommon topology for device and link instance - */ - public OspfNbrImpl(OspfArea paramOspfArea, OspfInterface paramOspfInterface, - Ip4Address ipAddr, Ip4Address routerId, int options, - TopologyForDeviceAndLink topologyForDeviceAndLinkCommon) { - this.ospfArea = paramOspfArea; - this.ospfInterface = paramOspfInterface; - state = OspfNeighborState.DOWN; - isMaster = OspfUtil.NOT_MASTER; - ddSeqNum = OspfUtil.createRandomNumber(); - neighborIpAddr = ipAddr; - neighborId = routerId; - this.options = options; - lastDdPacket = new DdPacket(); - routerDeadInterval = paramOspfInterface.routerDeadIntervalTime(); - this.topologyForDeviceAndLink = topologyForDeviceAndLinkCommon; - } - - /** - * Gets the IP address of this neighbor. - * - * @return the IP address of this neighbor - */ - @Override - public Ip4Address neighborIpAddr() { - return neighborIpAddr; - } - - /** - * Gets the neighbor is opaque enabled or not. - * - * @return true if the neighbor is opaque enabled else false. - */ - @Override - public boolean isOpaqueCapable() { - return isOpaqueCapable; - } - - /** - * Sets the neighbor is opaque enabled or not. - * - * @param isOpaqueCapable true if the neighbor is opaque enabledelse false - */ - @Override - public void setIsOpaqueCapable(boolean isOpaqueCapable) { - this.isOpaqueCapable = isOpaqueCapable; - } - - /** - * Sets router dead interval. - * - * @param routerDeadInterval router dead interval - */ - @Override - public void setRouterDeadInterval(int routerDeadInterval) { - this.routerDeadInterval = routerDeadInterval; - } - - /** - * Have seen a Neighbor, but the Neighbor doesn't know about me. - * - * @param ospfHello Hello Packet instance - * @param channel netty channel instance - */ - public void oneWayReceived(OspfMessage ospfHello, Channel channel) { - log.debug("OSPFNbr::oneWayReceived...!!!"); - stopInactivityTimeCheck(); - startInactivityTimeCheck(); - - if (state == OspfNeighborState.ATTEMPT) { - state = OspfNeighborState.INIT; - } else if (state == OspfNeighborState.DOWN) { - state = OspfNeighborState.INIT; - } - - if (state.getValue() >= OspfNeighborState.TWOWAY.getValue()) { - state = OspfNeighborState.INIT; - failedTxList.clear(); - ddSummaryList.clear(); - lsReqList.clear(); - } - } - - /** - * Called when a DD OSPFMessage is received while state was INIT. - * - * @param ospfMessage ospf message instance - * @param channel netty channel instance - */ - public void twoWayReceived(OspfMessage ospfMessage, Channel channel) { - log.debug("OSPFNbr::twoWayReceived...!!!"); - stopInactivityTimeCheck(); - startInactivityTimeCheck(); - startFloodingTimer(channel); - - OspfPacketHeader packet = (OspfPacketHeader) ospfMessage; - if (state.getValue() <= OspfNeighborState.TWOWAY.getValue()) { - if (formAdjacencyOrNot()) { - state = OspfNeighborState.EXSTART; - - ddSeqNum++; - DdPacket ddPacket = new DdPacket(); - // seting OSPF Header - ddPacket.setOspfVer(OspfUtil.OSPF_VERSION); - ddPacket.setOspftype(OspfPacketType.DD.value()); - ddPacket.setRouterId(ospfArea.routerId()); - ddPacket.setAreaId(ospfArea.areaId()); - ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED); - ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED); - ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED); - boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled(); - if (isOpaqueEnabled) { - ddPacket.setOptions(ospfArea.opaqueEnabledOptions()); - } else { - ddPacket.setOptions(ospfArea.options()); - } - ddPacket.setIsInitialize(OspfUtil.INITIALIZE_SET); - ddPacket.setIsMore(OspfUtil.MORE_SET); - ddPacket.setIsMaster(OspfUtil.IS_MASTER); - ddPacket.setImtu(ospfInterface.mtu()); - ddPacket.setSequenceNo(ddSeqNum); - - setLastSentDdPacket(ddPacket); - rxmtDdPacketTask = new InternalRxmtDdPacket(channel); - startRxMtDdTimer(channel); - //setting destination ip - ddPacket.setDestinationIp(packet.sourceIp()); - byte[] messageToWrite = getMessage(ddPacket); - channel.write(messageToWrite); - } else { - state = OspfNeighborState.TWOWAY; - } - } - } - - /** - * Checks whether to form adjacency or not. - * - * @return true indicates form adjacency, else false - */ - private boolean formAdjacencyOrNot() { - boolean formAdjacency = false; - - if (ospfInterface.interfaceType() == OspfInterfaceType.POINT_TO_POINT.value()) { - formAdjacency = true; - } else if (ospfInterface.interfaceType() == OspfInterfaceType.BROADCAST.value()) { - if (ospfInterface.ipAddress().equals(this.neighborDr) || - ospfInterface.ipAddress().equals(this.neighborBdr)) { - formAdjacency = true; - } else if (neighborBdr.equals(neighborIpAddr) || - neighborDr.equals(neighborIpAddr)) { - formAdjacency = true; - } - } - - log.debug("FormAdjacencyOrNot - neighborDR: {}, neighborBDR: {}, neighborIPAddr: {}, formAdjacencyOrNot {}", - neighborDr, neighborBdr, neighborIpAddr, formAdjacency); - - return formAdjacency; - } - - /** - * At this point Master/Slave relationship is definitely established. - * DD sequence numbers have been exchanged. - * This is the begin of sending/receiving of DD OSPFMessages. - * - * @param ospfMessage OSPF message instance - * @param neighborIsMaster neighbor is master or slave - * @param payload contains the LSAs to add in Dd Packet - * @param ch netty channel instance - */ - public void negotiationDone(OspfMessage ospfMessage, - boolean neighborIsMaster, List payload, Channel ch) { - stopRxMtDdTimer(); - OspfPacketHeader packet = (OspfPacketHeader) ospfMessage; - DdPacket ddPacketForCheck = (DdPacket) packet; - if (ddPacketForCheck.isOpaqueCapable()) { - OspfLsdb database = ospfArea.database(); - List opaqueLsas = database.getAllLsaHeaders(true, true); - Iterator iterator = opaqueLsas.iterator(); - while (iterator.hasNext()) { - OspfLsa ospfLsa = (OspfLsa) iterator.next(); - if (ospfLsa.getOspfLsaType() == OspfLsaType.AREA_LOCAL_OPAQUE_LSA) { - OpaqueLsa10 opaqueLsa10 = (OpaqueLsa10) ospfLsa; - topLevelTlvs = opaqueLsa10.topLevelValues(); - } - } - } - if (state == OspfNeighborState.EXSTART) { - state = OspfNeighborState.EXCHANGE; - boolean excludeMaxAgeLsa = true; - //list of contents of area wise LSA - ddSummaryList = ospfArea.getLsaHeaders(excludeMaxAgeLsa, isOpaqueCapable); - - if (neighborIsMaster) { - processLsas(payload); - // ...construct new DD Packet... - DdPacket ddPacket = new DdPacket(); - // setting OSPF Header - ddPacket.setOspfVer(OspfUtil.OSPF_VERSION); - ddPacket.setOspftype(OspfPacketType.DD.value()); - ddPacket.setRouterId(ospfArea.routerId()); - ddPacket.setAreaId(ospfArea.areaId()); - ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED); - ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED); - ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED); - boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled(); - if (isOpaqueEnabled && isOpaqueCapable) { - ddPacket.setOptions(ospfArea.opaqueEnabledOptions()); - } else { - ddPacket.setOptions(ospfArea.options()); - } - ddPacket.setIsInitialize(OspfUtil.INITIALIZE_NOTSET); - ddPacket.setIsMore(OspfUtil.MORE_NOTSET); - ddPacket.setIsMaster(OspfUtil.NOT_MASTER); - ddPacket.setImtu(ospfInterface.mtu()); - ddPacket.setSequenceNo(ddSeqNum); - //setting the destination - ddPacket.setDestinationIp(packet.sourceIp()); - setLastSentDdPacket(ddPacket); - getIsMoreBit(); - - byte[] messageToWrite = getMessage(lastSentDdPacket); - ch.write(messageToWrite); - } else { - // process LSA Vector's List, Add it to LSRequestList. - processLsas(payload); - DdPacket ddPacket = new DdPacket(); - // setting OSPF Header - ddPacket.setOspfVer(OspfUtil.OSPF_VERSION); - ddPacket.setOspftype(OspfPacketType.DD.value()); - ddPacket.setRouterId(ospfArea.routerId()); - ddPacket.setAreaId(ospfArea.areaId()); - ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED); - ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED); - ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED); - boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled(); - if (isOpaqueEnabled && isOpaqueCapable) { - ddPacket.setOptions(ospfArea.opaqueEnabledOptions()); - } else { - ddPacket.setOptions(ospfArea.options()); - } - ddPacket.setIsInitialize(OspfUtil.INITIALIZE_NOTSET); - ddPacket.setIsMore(OspfUtil.MORE_NOTSET); - ddPacket.setIsMaster(OspfUtil.IS_MASTER); - ddPacket.setImtu(ospfInterface.mtu()); - ddPacket.setSequenceNo(ddSeqNum); - setLastSentDdPacket(ddPacket); - getIsMoreBit(); - ddPacket.setDestinationIp(packet.sourceIp()); - byte[] messageToWrite = getMessage(lastSentDdPacket); - ch.write(messageToWrite); - startRxMtDdTimer(ch); - } - } - } - - /** - * Process the LSA Headers received in the last received Database Description OSPFMessage. - * - * @param ddPayload LSA headers to process - */ - public void processLsas(List ddPayload) { - log.debug("OSPFNbr::processLsas...!!!"); - OspfLsa nextLsa; - Iterator lsas = ddPayload.iterator(); - while (lsas.hasNext()) { - nextLsa = (OspfLsa) lsas.next(); - // check LSA Type. - if (((nextLsa.getOspfLsaType().value() > OspfLsaType.EXTERNAL_LSA.value()) && - (nextLsa.getOspfLsaType().value() < OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value())) || - (nextLsa.getOspfLsaType().value() > OspfLsaType.AS_OPAQUE_LSA.value())) { - // unknown lsType found! - seqNumMismatch("LS Type found was unknown."); - return; - } - - if ((nextLsa.getOspfLsaType() == OspfLsaType.EXTERNAL_LSA) && - !ospfArea.isExternalRoutingCapability()) { - // LSA is external and the Area has no external lsa capability - seqNumMismatch("External LSA found although area is stub."); - return; - } - - LsaWrapper lsaHasInstance = ospfArea.lsaLookup(nextLsa); - if (lsaHasInstance == null) { - lsReqList.put(((OspfAreaImpl) ospfArea).getLsaKey((LsaHeader) nextLsa), nextLsa); - } else { - String isNew = ((OspfAreaImpl) ospfArea).isNewerOrSameLsa(nextLsa, - lsaHasInstance.ospfLsa()); - if (isNew.equals("latest")) { - lsReqList.put(((OspfAreaImpl) ospfArea).getLsaKey((LsaHeader) nextLsa), nextLsa); - } - } - } - } - - /** - * Handles sequence number mis match event. - * - * @param reason a string represents the mismatch reason - * @return OSPF message instance - */ - public OspfMessage seqNumMismatch(String reason) { - log.debug("OSPFNbr::seqNumMismatch...{} ", reason); - stopRxMtDdTimer(); - - if (state.getValue() >= OspfNeighborState.EXCHANGE.getValue()) { - /* if (state == OspfNeighborState.FULL) { - ospfArea.refreshArea(ospfInterface); - }*/ - - state = OspfNeighborState.EXSTART; - lsReqList.clear(); - ddSummaryList.clear(); - //increment the dd sequence number - ddSeqNum++; - - DdPacket ddPacket = new DdPacket(); - // seting OSPF Header - ddPacket.setOspfVer(OspfUtil.OSPF_VERSION); - ddPacket.setOspftype(OspfPacketType.DD.value()); - ddPacket.setRouterId(ospfArea.routerId()); - ddPacket.setAreaId(ospfArea.areaId()); - ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED); - ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED); - ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED); - boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled(); - if (isOpaqueEnabled) { - ddPacket.setOptions(ospfArea.opaqueEnabledOptions()); - } else { - ddPacket.setOptions(ospfArea.options()); - } - ddPacket.setIsInitialize(OspfUtil.INITIALIZE_SET); - ddPacket.setIsMore(OspfUtil.MORE_SET); - ddPacket.setIsMaster(OspfUtil.IS_MASTER); - ddPacket.setImtu(ospfInterface.mtu()); - ddPacket.setSequenceNo(ddSeqNum); - - setLastSentDdPacket(ddPacket); - //setting destination ip - ddPacket.setDestinationIp(neighborIpAddr()); - setLastSentDdPacket(ddPacket); - - return ddPacket; - } - - return null; - } - - /** - * Called if a LS Request has been received for an LSA which is not contained in the database. - * This indicates an error in the Database Exchange process. - * Actions to be performed are the same as in seqNumMismatch. - * In addition, stop the possibly activated re transmission timer. - * - * @param ch netty channel instance - */ - @Override - public void badLSReq(Channel ch) { - log.debug("OSPFNbr::badLSReq...!!!"); - - if (state.getValue() >= OspfNeighborState.EXCHANGE.getValue()) { - if (state == OspfNeighborState.FULL) { - ospfArea.refreshArea(ospfInterface); - } - - stopRxMtDdTimer(); - state = OspfNeighborState.EXSTART; - - lsReqList.clear(); - ddSummaryList.clear(); - reTxList.clear(); - //increment the dd sequence number - isMaster = OspfUtil.IS_MASTER; - ddSeqNum++; - DdPacket ddPacket = new DdPacket(); - // seting OSPF Header - ddPacket.setOspfVer(OspfUtil.OSPF_VERSION); - ddPacket.setOspftype(OspfPacketType.DD.value()); - ddPacket.setRouterId(ospfArea.routerId()); - ddPacket.setAreaId(ospfArea.areaId()); - ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED); - ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED); - ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED); - - // setting DD Body - boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled(); - if (isOpaqueEnabled && this.isOpaqueCapable) { - ddPacket.setOptions(ospfArea.opaqueEnabledOptions()); - } else { - ddPacket.setOptions(ospfArea.options()); - } - ddPacket.setIsInitialize(OspfUtil.INITIALIZE_SET); - ddPacket.setIsMore(OspfUtil.MORE_SET); - ddPacket.setIsMaster(OspfUtil.IS_MASTER); - ddPacket.setImtu(ospfInterface.mtu()); - ddPacket.setSequenceNo(ddSeqNum); - - rxmtDdPacketTask = new InternalRxmtDdPacket(ch); - startRxMtDdTimer(ch); - - //setting destination ip - ddPacket.setDestinationIp(neighborIpAddr()); - setLastSentDdPacket(ddPacket); - byte[] messageToWrite = getMessage(ddPacket); - ch.write(messageToWrite); - } - } - - /** - * Called if state is EXCHANGE. This method is executed every time a DD Packets arrives. - * When the last Packet arrives, it transfers the state into LOADING or FULL - * - * @param neighborIsMaster true if neighbor is master else false - * @param dataDescPkt DdPacket instance - * @param ch netty channel instance - */ - public void processDdPacket(boolean neighborIsMaster, DdPacket dataDescPkt, - Channel ch) { - log.debug("OSPFNbr::neighborIsMaster.{}", neighborIsMaster); - - if (!neighborIsMaster) { - stopRxMtDdTimer(); - ddSeqNum++; - processLsas(dataDescPkt.getLsaHeaderList()); - if ((ddSummaryList.isEmpty()) && - (dataDescPkt.isMore() == OspfUtil.MORE_NOTSET)) { - log.debug( - "OSPFNbr::ddSummaryList is empty and dataDescPkt.isMore is zero..!!!"); - // generate the neighbor event ExchangeDone. - exchangeDone(dataDescPkt, ch); - } else { - log.debug("OSPFNbr::ddSummaryList is present...!!!"); - // send a new Database Description Packet to the slave. - DdPacket ddPacket = new DdPacket(); - // seting OSPF Header - ddPacket.setOspfVer(OspfUtil.OSPF_VERSION); - ddPacket.setOspftype(OspfPacketType.DD.value()); - ddPacket.setRouterId(ospfArea.routerId()); - ddPacket.setAreaId(ospfArea.areaId()); - ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED); - ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED); - ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED); - // setting DD Body - boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled(); - if (isOpaqueEnabled && isOpaqueCapable) { - ddPacket.setOptions(ospfArea.opaqueEnabledOptions()); - } else { - ddPacket.setOptions(ospfArea.options()); - } - ddPacket.setIsInitialize(OspfUtil.INITIALIZE_NOTSET); - ddPacket.setIsMore(OspfUtil.MORE_NOTSET); - ddPacket.setIsMaster(OspfUtil.IS_MASTER); - ddPacket.setImtu(ospfInterface.mtu()); - ddPacket.setSequenceNo(ddSeqNum); - - setLastSentDdPacket(ddPacket); - getIsMoreBit(); - //Set the destination IP Address - ddPacket.setDestinationIp(dataDescPkt.sourceIp()); - byte[] messageToWrite = getMessage(lastSentDdPacket()); - ch.write(messageToWrite); - - startRxMtDdTimer(ch); - } - } else { - log.debug("OSPFNbr::neighborIsMaster is master...!!!"); - ddSeqNum = dataDescPkt.sequenceNo(); - processLsas(dataDescPkt.getLsaHeaderList()); - - DdPacket ddPacket = new DdPacket(); - // seting OSPF Header - ddPacket.setOspfVer(OspfUtil.OSPF_VERSION); - ddPacket.setOspftype(OspfPacketType.DD.value()); - ddPacket.setRouterId(ospfArea.routerId()); - ddPacket.setAreaId(ospfArea.areaId()); - ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED); - ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED); - ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED); - // setting DD Body - boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled(); - if (isOpaqueEnabled && this.isOpaqueCapable) { - ddPacket.setOptions(ospfArea.opaqueEnabledOptions()); - } else { - ddPacket.setOptions(ospfArea.options()); - } - ddPacket.setIsInitialize(OspfUtil.INITIALIZE_NOTSET); - ddPacket.setIsMore(OspfUtil.MORE_NOTSET); - ddPacket.setIsMaster(OspfUtil.NOT_MASTER); - ddPacket.setImtu(ospfInterface.mtu()); - ddPacket.setSequenceNo(ddSeqNum); - setLastSentDdPacket(ddPacket); - getIsMoreBit(); - - if ((ddPacket.isMore() == OspfUtil.MORE_NOTSET) && - (dataDescPkt.isMore() == OspfUtil.MORE_NOTSET)) { - // generate the neighbor event ExchangeDone. - exchangeDone(dataDescPkt, ch); - } - - ddPacket.setDestinationIp(dataDescPkt.sourceIp()); - byte[] messageToWrite = getMessage(ddPacket); - ch.write(messageToWrite); - } - } - - /** - * Sets the more bit in stored, last sent DdPacket. - */ - private void getIsMoreBit() { - DdPacket ddPacket = lastSentDdPacket(); - int count = ddSummaryList.size(); - - if (!ddSummaryList.isEmpty()) { - Iterator itr = ddSummaryList.iterator(); - int currentLength = OspfUtil.DD_HEADER_LENGTH; - int maxSize = ospfInterface.mtu() - OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header. - while (itr.hasNext()) { - if ((currentLength + OspfUtil.LSA_HEADER_LENGTH) > maxSize) { - break; - } - - LsaHeader lsaHeader = (LsaHeader) itr.next(); - ddPacket.addLsaHeader(lsaHeader); - currentLength = currentLength + OspfUtil.LSA_HEADER_LENGTH; - ddSummaryList.remove(lsaHeader); - count--; - } - - if (count > 0) { - ddPacket.setIsMore(OspfUtil.MORE_SET); - } else { - ddPacket.setIsMore(OspfUtil.MORE_NOTSET); - } - } - - setLastSentDdPacket(ddPacket); - } - - /** - * At this point, the router has sent and received an entire sequence of DD packets. - * Now it must be determined whether the new state is FULL, or LS Request packets - * have to be send. - * - * @param message OSPF message instance - * @param ch netty channel handler - */ - public void exchangeDone(OspfMessage message, Channel ch) { - log.debug("OSPFNbr::exchangeDone...!!!"); - stopRxMtDdTimer(); - - OspfPacketHeader header = (OspfPacketHeader) message; - - if (state == OspfNeighborState.EXCHANGE) { - if (lsReqList.isEmpty()) { - state = OspfNeighborState.FULL; - //handler.addDeviceInformation(this); - //handler.addLinkInformation(this, topLevelTlvs); - } else { - state = OspfNeighborState.LOADING; - LsRequest lsRequest = buildLsRequest(); - //Setting the destination address - lsRequest.setDestinationIp(header.sourceIp()); - byte[] messageToWrite = getMessage(lsRequest); - ch.write(messageToWrite); - - setLastSentLsrPacket(lsRequest); - startRxMtLsrTimer(ch); - } - } - } - - /** - * Builds LS Request. - * - * @return ls request instance - */ - private LsRequest buildLsRequest() { - //send link state request packet to neighbor - //for recent lsa's which are not received in exchange state - LsRequest lsRequest = new LsRequest(); - lsRequest.setOspfVer(OspfUtil.OSPF_VERSION); - lsRequest.setOspftype(OspfPacketType.LSREQUEST.value()); - lsRequest.setRouterId(ospfArea.routerId()); - lsRequest.setAreaId(ospfArea.areaId()); - lsRequest.setAuthType(OspfUtil.NOT_ASSIGNED); - lsRequest.setAuthentication(OspfUtil.NOT_ASSIGNED); - lsRequest.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - lsRequest.setChecksum(OspfUtil.NOT_ASSIGNED); - - Set lsaKeys = lsReqList.keySet(); - Iterator itr = lsaKeys.iterator(); - - int currentLength = OspfUtil.OSPF_HEADER_LENGTH; - int maxSize = ospfInterface.mtu() - - OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header. - - while (itr.hasNext()) { - if ((currentLength + OspfUtil.LSREQUEST_LENGTH) >= maxSize) { - break; - } - LsRequestPacket lsRequestPacket = new LsRequestPacket(); - - String key = ((String) itr.next()); - String[] lsaKey = key.split("-"); - OspfLsa lsa = (OspfLsa) lsReqList.get(key); - - lsRequestPacket.setLsType(Integer.valueOf(lsaKey[0])); - lsRequestPacket.setOwnRouterId(lsaKey[2]); - - if (((lsa.getOspfLsaType().value() == OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value()) || - (lsa.getOspfLsaType().value() == OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value())) || - (lsa.getOspfLsaType().value() == OspfLsaType.AS_OPAQUE_LSA.value())) { - OpaqueLsaHeader header = (OpaqueLsaHeader) lsa; - byte[] opaqueIdBytes = OspfUtil.convertToTwoBytes(header.opaqueId()); - lsRequestPacket.setLinkStateId(header.opaqueType() + "." + "0" + "." + opaqueIdBytes[0] - + "." + opaqueIdBytes[1]); - } else { - lsRequestPacket.setLinkStateId(lsaKey[1]); - } - - lsRequest.addLinkStateRequests(lsRequestPacket); - currentLength = currentLength + OspfUtil.LSREQUEST_LENGTH; - } - - return lsRequest; - } - - /** - * Determines whether an adjacency should be established/maintained with the neighbor or not. - * - * @param ch netty channel instance - */ - @Override - public void adjOk(Channel ch) { - log.debug("OSPFNbr::adjOk...!!!"); - if (ospfInterface.interfaceType() != OspfInterfaceType.POINT_TO_POINT.value()) { - if (state == OspfNeighborState.TWOWAY) { - if (formAdjacencyOrNot()) { - state = OspfNeighborState.EXSTART; - //check for sequence number in lsdb - ddSeqNum++; - - DdPacket ddPacket = new DdPacket(); - // seting OSPF Header - ddPacket.setOspfVer(OspfUtil.OSPF_VERSION); - ddPacket.setOspftype(OspfPacketType.DD.value()); - ddPacket.setRouterId(ospfArea.routerId()); - ddPacket.setAreaId(ospfArea.areaId()); - ddPacket.setAuthType(OspfUtil.NOT_ASSIGNED); - ddPacket.setAuthentication(OspfUtil.NOT_ASSIGNED); - ddPacket.setOspfPacLength(OspfUtil.NOT_ASSIGNED); - ddPacket.setChecksum(OspfUtil.NOT_ASSIGNED); - - // setting DD Body - boolean isOpaqueEnabled = ospfArea.isOpaqueEnabled(); - if (isOpaqueEnabled && this.isOpaqueCapable) { - ddPacket.setOptions(ospfArea.opaqueEnabledOptions()); - } else { - ddPacket.setOptions(ospfArea.options()); - } - ddPacket.setIsInitialize(OspfUtil.INITIALIZE_SET); - ddPacket.setIsMore(OspfUtil.MORE_SET); - ddPacket.setIsMaster(OspfUtil.IS_MASTER); - ddPacket.setImtu(ospfInterface.mtu()); - ddPacket.setSequenceNo(ddSeqNum); - rxmtDdPacketTask = new InternalRxmtDdPacket(ch); - startRxMtDdTimer(ch); - //setting destination ip - ddPacket.setDestinationIp(neighborIpAddr()); - setLastSentDdPacket(ddPacket); - byte[] messageToWrite = getMessage(ddPacket); - ch.write(messageToWrite); - } - } else if (state.getValue() >= OspfNeighborState.EXSTART.getValue()) { - if (!formAdjacencyOrNot()) { - state = OspfNeighborState.TWOWAY; - lsReqList.clear(); - ddSummaryList.clear(); - reTxList.clear(); - } - } - } - } - - /** - * LS Update Packet has been received while state was EXCHANGE or LOADING. - * Examine the received LSAs, check whether they were requested or not and process - * them accordingly. Therefore use method "processReceivedLsa" for further treatment. - * - * @param lsUpdPkt LS Update Packet received while Neighbor state was EXCHANGE or - * LOADING - * @param ch netty channel instance - * @throws OspfParseException on parsing error - */ - public void processLsUpdate(LsUpdate lsUpdPkt, Channel ch) throws OspfParseException { - stopRxMtLsrTimer(); - log.debug("OSPFNbr::processLsUpdate...!!!"); - - List lsaList = lsUpdPkt.getLsaList(); - if (!lsaList.isEmpty()) { - Iterator itr = lsaList.iterator(); - - while (itr.hasNext()) { - LsaHeader lsaHeader = (LsaHeader) itr.next(); - String key = ((OspfAreaImpl) ospfArea).getLsaKey(lsaHeader); - - if (lsReqList.containsKey(key)) { - boolean removeIt; - removeIt = processReceivedLsa(lsaHeader, false, ch, - lsUpdPkt.sourceIp()); - if (removeIt) { - lsReqList.remove(key); - } - } else { - // LSA was received via Flooding - processReceivedLsa(lsaHeader, true, ch, - lsUpdPkt.sourceIp()); - } - } - - if (lsReqList.isEmpty() && (state == OspfNeighborState.LOADING)) { - // loading complete - loadingDone(); - } else { - stopRxMtLsrTimer(); - LsRequest lsRequest = buildLsRequest(); - lsRequest.setDestinationIp(lsUpdPkt.sourceIp()); - setLastSentLsrPacket(lsRequest); - - startRxMtLsrTimer(ch); - } - } - } - - /*** - * Method gets called when no more ls request list and moving to FULL State. - */ - public void loadingDone() { - stopRxMtLsrTimer(); - stopRxMtDdTimer(); - log.debug("OSPFNbr::loadingDone...!!!"); - state = OspfNeighborState.FULL; - ospfArea.refreshArea(ospfInterface); - } - - /** - * Adds device and link. - * - * @param topologyForDeviceAndLink topology for device and link instance - */ - private void callDeviceAndLinkAdding(TopologyForDeviceAndLink topologyForDeviceAndLink) { - Map deviceInformationMap = topologyForDeviceAndLink.deviceInformationMap(); - Map deviceInformationMapForPointToPoint = - topologyForDeviceAndLink.deviceInformationMapForPointToPoint(); - Map deviceInformationMapToDelete = - topologyForDeviceAndLink.deviceInformationMapToDelete(); - Map linkInformationMap = topologyForDeviceAndLink.linkInformationMap(); - Map linkInformationMapForPointToPoint = - topologyForDeviceAndLink.linkInformationMapForPointToPoint(); - OspfRouter ospfRouter = new OspfRouterImpl(); - - if (deviceInformationMap.size() != 0) { - for (String key : deviceInformationMap.keySet()) { - DeviceInformation value = deviceInformationMap.get(key); - ospfRouter.setRouterIp(value.routerId()); - ospfRouter.setAreaIdOfInterface(ospfArea.areaId()); - ospfRouter.setNeighborRouterId(value.deviceId()); - OspfDeviceTed ospfDeviceTed = new OspfDeviceTedImpl(); - List ip4Addresses = value.interfaceId(); - ospfDeviceTed.setIpv4RouterIds(ip4Addresses); - ospfRouter.setDeviceTed(ospfDeviceTed); - ospfRouter.setOpaque(ospfArea.isOpaqueEnabled()); - if (value.isDr()) { - ospfRouter.setDr(value.isDr()); - } else { - ospfRouter.setDr(false); - } - int size = value.interfaceId().size(); - for (int i = 0; i < size; i++) { - ospfRouter.setInterfaceId(value.interfaceId().get(i)); - } - ((OspfInterfaceImpl) ospfInterface).addDeviceInformation(ospfRouter); - } - } - if (deviceInformationMapForPointToPoint.size() != 0) { - for (String key : deviceInformationMapForPointToPoint.keySet()) { - DeviceInformation value = deviceInformationMapForPointToPoint.get(key); - ospfRouter.setRouterIp(value.routerId()); - ospfRouter.setAreaIdOfInterface(ospfArea.areaId()); - ospfRouter.setNeighborRouterId(value.deviceId()); - OspfDeviceTed ospfDeviceTed = new OspfDeviceTedImpl(); - List ip4Addresses = value.interfaceId(); - ospfDeviceTed.setIpv4RouterIds(ip4Addresses); - ospfRouter.setDeviceTed(ospfDeviceTed); - ospfRouter.setOpaque(value.isDr()); - int size = value.interfaceId().size(); - for (int i = 0; i < size; i++) { - ospfRouter.setInterfaceId(value.interfaceId().get(i)); - } - ((OspfInterfaceImpl) ospfInterface).addDeviceInformation(ospfRouter); - } - } - for (Map.Entry entry : linkInformationMap.entrySet()) { - String key = entry.getKey(); - LinkInformation value = entry.getValue(); - OspfRouter ospfRouterForLink = new OspfRouterImpl(); - ospfRouterForLink.setInterfaceId(value.interfaceIp()); - ospfRouterForLink.setAreaIdOfInterface(ospfArea.areaId()); - ospfRouterForLink.setOpaque(ospfArea.isOpaqueEnabled()); - OspfLinkTed ospfLinkTed = topologyForDeviceAndLink.getOspfLinkTedHashMap( - value.linkDestinationId().toString()); - if (ospfLinkTed == null) { - ospfLinkTed = new OspfLinkTedImpl(); - ospfLinkTed.setMaximumLink(Bandwidth.bps(0)); - ospfLinkTed.setMaxReserved(Bandwidth.bps(0)); - ospfLinkTed.setTeMetric(0); - } - - if (!value.isLinkSrcIdNotRouterId()) { - ospfRouterForLink.setRouterIp(value.linkSourceId()); - ospfRouterForLink.setNeighborRouterId(value.linkDestinationId()); - try { - ((OspfInterfaceImpl) ospfInterface).addLinkInformation(ospfRouterForLink, ospfLinkTed); - } catch (Exception e) { - log.debug("Exception addLinkInformation: " + e.getMessage()); - } - } - } - } - - // RFC 2328 Section 13 - partly as flooding procedure - - /** - * Processes the received Lsa. - * - * @param recLsa received Lsa - * @param receivedViaFlooding received via flooding or not - * @param ch channel instance - * @param sourceIp source of this Lsa - * @throws OspfParseException on parsing error - * @return true to remove it from lsReqList else false - */ - public boolean processReceivedLsa(LsaHeader recLsa, - boolean receivedViaFlooding, Channel ch, Ip4Address sourceIp) - throws OspfParseException { - log.debug("OSPFNbr::processReceivedLsa(recLsa, receivedViaFlooding, ch)...!!!"); - - //Validate the lsa checksum RFC 2328 13 (1) - ChecksumCalculator checkSum = new ChecksumCalculator(); - if (!checkSum.isValidLsaCheckSum(recLsa, - recLsa.getOspfLsaType().value(), - OspfUtil.LSAPACKET_CHECKSUM_POS1, - OspfUtil.LSAPACKET_CHECKSUM_POS2)) { - log.debug("Checksum mismatch. Received LSA packet type {} ", - recLsa.lsType()); - - return true; - } - - //If LSA type is unknown discard the lsa RFC 2328 13(2) - if (((recLsa.getOspfLsaType().value() > OspfLsaType.EXTERNAL_LSA.value()) && - (recLsa.getOspfLsaType().value() < OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value())) || - (recLsa.getOspfLsaType().value() > OspfLsaType.AS_OPAQUE_LSA.value())) { - return true; - } - - //If LSA type is external & the area is configured as stub area discard the lsa RFC 2328 13(3) - if ((recLsa.getOspfLsaType() == OspfLsaType.EXTERNAL_LSA) && - (!ospfArea.isExternalRoutingCapability())) { - return true; - } - - //if lsa age is equal to maxage && instance is not in lsdb && none of neighbors are in exchange - // or loading state - // Acknowledge the receipt by sending LSAck to the sender. 2328 13(4) - if ((recLsa.age() == OspfParameters.MAXAGE) && - (ospfArea.lsaLookup(recLsa) == null) && - ospfArea.noNeighborInLsaExchangeProcess()) { - // RFC 2328 Section 13. (4) - // Because the LSA was not yet requested, it is treated as a flooded LSA and thus - // acknowledged. - directAcknowledge(recLsa, ch, sourceIp); - return true; - } - - String key = ((OspfAreaImpl) ospfArea).getLsaKey(recLsa); - LsaWrapper lsWrapper = ospfArea.lsaLookup(recLsa); - String status = isNullorLatest(lsWrapper, recLsa); - //Section 13 (5) - if (status.equals("isNullorLatest")) { - - if (recLsa.lsType() == OspfLsaType.ROUTER.value() && recLsa.advertisingRouter().equals( - ospfArea.routerId())) { - if (recLsa.lsSequenceNo() > ((LsaWrapperImpl) lsWrapper).lsaHeader().lsSequenceNo()) { - ospfArea.setDbRouterSequenceNumber(recLsa.lsSequenceNo() + 1); - processSelfOriginatedLsa(); - } - - if (recLsa.age() == OspfParameters.MAXAGE) { - ((LsaWrapperImpl) lsWrapper).lsaHeader().setAge(OspfParameters.MAXAGE); - //remove from db & bin, add the lsa to MaxAge bin. - ospfArea.addLsaToMaxAgeBin(((OspfAreaImpl) ospfArea).getLsaKey(((LsaWrapperImpl) - lsWrapper).lsaHeader()), lsWrapper); - ospfArea.removeLsaFromBin(lsWrapper); - } - - return true; - } else if (recLsa.lsType() == OspfLsaType.NETWORK.value() && isLinkStateMatchesOwnRouterId( - recLsa.linkStateId())) { - // if we are not DR or if origination router ID not equal to our router ID //either - // DR state changed or our router ID was changed - //set LSAge = MaxAge - //flood the LSA - if (((OspfInterfaceImpl) ospfInterface).state() != OspfInterfaceState.DR || - !recLsa.advertisingRouter().equals( - ospfArea.routerId())) { - if (lsWrapper != null) { - ((LsaWrapperImpl) lsWrapper).lsaHeader().setAge(OspfParameters.MAXAGE); - //remove from bin, add the lsa to MaxAge bin. - ospfArea.addLsaToMaxAgeBin(((OspfAreaImpl) ospfArea).getLsaKey(((LsaWrapperImpl) - lsWrapper).lsaHeader()), lsWrapper); - ospfArea.removeLsaFromBin(lsWrapper); - } else { - recLsa.setAge(OspfParameters.MAXAGE); - ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(recLsa); - } - } - - return true; - } else { - if (recLsa.age() == OspfParameters.MAXAGE) { - ((OspfInterfaceImpl) ospfInterface).addLsaHeaderForDelayAck(recLsa); - //remove from db & bin, add the lsa to MaxAge bin. - if (lsWrapper != null) { - lsWrapper.setLsaAgeReceived(OspfParameters.MAXAGE); - ospfArea.addLsaToMaxAgeBin(((OspfAreaImpl) ospfArea).getLsaKey(((LsaWrapperImpl) - lsWrapper).lsaHeader()), lsWrapper); - ospfArea.removeLsaFromBin(lsWrapper); - } else { - ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(recLsa); - } - - return true; - } else { - ospfArea.addLsa(recLsa, ospfInterface); - log.debug("Inside addLsaMethod"); - topologyForDeviceAndLink.addLocalDevice(recLsa, ospfInterface, ospfArea); - callDeviceAndLinkAdding(topologyForDeviceAndLink); - log.debug("Adding to lsdb interface State {}", ((OspfInterfaceImpl) ospfInterface).state().value()); - // should not send any acknowledge if flooded out on receiving interface - if (((OspfInterfaceImpl) ospfInterface).state().value() == OspfInterfaceState.BDR.value()) { - if (neighborDr.equals(sourceIp)) { - log.debug("Adding for delayed ack {}", recLsa); - ((OspfInterfaceImpl) ospfInterface).addLsaHeaderForDelayAck(recLsa); - } - } else { - log.debug("Adding for delayed ack {}", recLsa); - ((OspfInterfaceImpl) ospfInterface).addLsaHeaderForDelayAck(recLsa); - } - - if (((OspfInterfaceImpl) ospfInterface).state().value() == OspfInterfaceState.DR.value() || - ((OspfInterfaceImpl) ospfInterface).state().value() == - OspfInterfaceState.POINT2POINT.value()) { - ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(recLsa); - } - } - - } - } - // RFC 2328 Section 13 (6) - if (lsReqList.containsValue(key)) { - badLSReq(ch); - } - if (status.equals("same")) { //13 (7) - if (pendingReTxList.containsKey(key)) { - pendingReTxList.remove(key); - if (((OspfInterfaceImpl) ospfInterface).state().value() == OspfInterfaceState.BDR.value()) { - if (neighborDr.equals(recLsa.advertisingRouter())) { - ((OspfInterfaceImpl) ospfInterface).addLsaHeaderForDelayAck(recLsa); - } - } - } else { - directAcknowledge(recLsa, ch, sourceIp); - return true; - } - } else if (status.equals("old")) { // section 13 - point 8 - if ((recLsa.lsSequenceNo() == OspfParameters.MAXSEQUENCENUMBER) && - (recLsa.age() == OspfParameters.MAXAGE)) { - // section 13 - point 8 - // simple discard the received LSA - - return true; - } else { - // respond back with the same LSA - //Using flood LSA to sent the LSUpdate back to advertising router - int diff = Math.abs(lsWrapper.lsaAgeReceived() - recLsa.age()); - if (diff > OspfParameters.MINLSARRIVAL) { - sendLsa(((LsaWrapperImpl) lsWrapper).lsaHeader(), sourceIp, ch); - } - } - } - - constructDeviceInformationFromDb(); - callDeviceAndLinkAdding(topologyForDeviceAndLink); - - return true; - } - - /** - * Constructs device and link information from link state database. - */ - private void constructDeviceInformationFromDb() { - OspfLsdb database = ospfArea.database(); - List lsas = database.getAllLsaHeaders(true, true); - Iterator iterator = lsas.iterator(); - while (iterator.hasNext()) { - OspfLsa ospfLsa = (OspfLsa) iterator.next(); - if (ospfLsa.getOspfLsaType().value() == OspfLsaType.ROUTER.value()) { - topologyForDeviceAndLink.addLocalDevice(ospfLsa, ospfInterface, ospfArea); - } else if (ospfLsa.getOspfLsaType().value() == OspfLsaType.NETWORK.value()) { - topologyForDeviceAndLink.addLocalDevice(ospfLsa, ospfInterface, ospfArea); - } - } - } - - /** - * Checks Link State ID is equal to one of the router's own IP interface addresses. - * - * @param linkStateId link state id - * @return true if link state matches or false - */ - private boolean isLinkStateMatchesOwnRouterId(String linkStateId) { - boolean isLinkStateMatches = false; - List interfaceLst = ospfArea.ospfInterfaceList(); - for (OspfInterface ospfInterface : interfaceLst) { - if (ospfInterface.ipAddress().toString().equals(linkStateId)) { - isLinkStateMatches = true; - break; - } - } - - return isLinkStateMatches; - } - - /** - * RFC 2328 Section 13 (5). - * - * @param lsWrapper ls wrapper instance - * @param recLsa received LSA instance - * @return returns a string status - */ - public String isNullorLatest(LsaWrapper lsWrapper, LsaHeader recLsa) { - - - if (lsWrapper != null) { - LsaHeader ownLsa = (LsaHeader) lsWrapper.ospfLsa(); - String status = ospfArea.isNewerOrSameLsa(recLsa, ownLsa); - - if (status.equals("latest")) { - return "isNullorLatest"; - } else { - return status; - } - } else { - return "isNullorLatest"; - } - } - - /** - * RFC 2328 section 13.4 - * Processing self-originated LSAs. - */ - public void processSelfOriginatedLsa() { - ospfArea.refreshArea(ospfInterface); - } - - /** - * Sends the LSA to destination address. - * - * @param lsa LSA instance to sent - * @param destination destination IP address - * @param ch netty channel instance - */ - public void sendLsa(LsaHeader lsa, Ip4Address destination, Channel ch) { - if (lsa == null) { - return; - } - - LsUpdate responseLsUpdate = new LsUpdate(); - // seting OSPF Header - responseLsUpdate.setOspfVer(OspfUtil.OSPF_VERSION); - responseLsUpdate.setOspftype(OspfPacketType.LSUPDATE.value()); - responseLsUpdate.setRouterId(ospfArea.routerId()); - responseLsUpdate.setAreaId(ospfArea.areaId()); - responseLsUpdate.setAuthType(OspfUtil.NOT_ASSIGNED); - responseLsUpdate.setAuthentication(OspfUtil.NOT_ASSIGNED); - responseLsUpdate.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - responseLsUpdate.setChecksum(OspfUtil.NOT_ASSIGNED); - responseLsUpdate.setNumberOfLsa(1); - responseLsUpdate.addLsa(lsa); - - //setting the destination. - responseLsUpdate.setDestinationIp(destination); - byte[] messageToWrite = getMessage(responseLsUpdate); - ch.write(messageToWrite); - } - - /** - * Sends a direct Acknowledgment for a particular LSA to the Neighbor. - * - * @param ackLsa LSA instance - * @param ch netty channel instance - * @param sourceIp source IP address - */ - public void directAcknowledge(LsaHeader ackLsa, Channel ch, Ip4Address sourceIp) { - log.debug("OSPFNbr::directAcknowledge...!!!"); - - LsAcknowledge ackContent = new LsAcknowledge(); - // seting OSPF Header - ackContent.setOspfVer(OspfUtil.OSPF_VERSION); - ackContent.setOspftype(OspfPacketType.LSAACK.value()); - ackContent.setRouterId(ospfArea.routerId()); - ackContent.setAreaId(ospfArea.areaId()); - ackContent.setAuthType(OspfUtil.NOT_ASSIGNED); - ackContent.setAuthentication(OspfUtil.NOT_ASSIGNED); - ackContent.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - ackContent.setChecksum(OspfUtil.NOT_ASSIGNED); - ackContent.addLinkStateHeader(ackLsa); - //setting the destination IP - ackContent.setDestinationIp(sourceIp); - byte[] messageToWrite = getMessage(ackContent); - ch.write(messageToWrite); - } - - /** - * Called when neighbor is down. - */ - public void neighborDown() { - log.debug("Neighbor Down {} and NeighborId {}", neighborIpAddr, - neighborId); - stopInactivityTimeCheck(); - stopRxMtDdTimer(); - stopRxMtLsrTimer(); - - if (floodingTimerScheduled) { - stopFloodingTimer(); - floodingTimerScheduled = false; - } - - state = OspfNeighborState.DOWN; - ospfArea.refreshArea(ospfInterface); - lsReqList.clear(); - ddSummaryList.clear(); - if (neighborIpAddr.equals(neighborBdr) || - neighborIpAddr.equals(neighborDr)) { - ((OspfInterfaceImpl) ospfInterface).neighborChange(); - } - log.debug("Neighbor Went Down : " - + this.neighborIpAddr + " , " + this.neighborId); - removeDeviceDetails(this.neighborId); - OspfRouter ospfRouter = new OspfRouterImpl(); - ospfRouter.setRouterIp(this.neighborId()); - ospfRouter.setInterfaceId(ospfInterface.ipAddress()); - ospfRouter.setAreaIdOfInterface(ospfArea.areaId()); - ospfRouter.setDeviceTed(new OspfDeviceTedImpl()); - ((OspfInterfaceImpl) ospfInterface).removeDeviceInformation(ospfRouter); - removeDeviceDetails(this.neighborIpAddr); - OspfRouter ospfRouter1 = new OspfRouterImpl(); - ospfRouter1.setRouterIp(this.neighborIpAddr); - ospfRouter1.setInterfaceId(ospfInterface.ipAddress()); - ospfRouter1.setAreaIdOfInterface(ospfArea.areaId()); - ospfRouter1.setDeviceTed(new OspfDeviceTedImpl()); - ((OspfInterfaceImpl) ospfInterface).removeDeviceInformation(ospfRouter1); - } - - /** - * Removes device details. - * - * @param routerId router id - */ - private void removeDeviceDetails(Ip4Address routerId) { - String key = "device:" + routerId; - topologyForDeviceAndLink.removeDeviceInformationMap(key); - } - - /** - * Starts the inactivity timer. - */ - @Override - public void startInactivityTimeCheck() { - if (!inActivityTimerScheduled) { - log.debug("OSPFNbr::startInactivityTimeCheck"); - inActivityTimeCheckTask = new InternalInactivityTimeCheck(); - exServiceInActivity = Executors.newSingleThreadScheduledExecutor(); - exServiceInActivity.scheduleAtFixedRate(inActivityTimeCheckTask, routerDeadInterval, - routerDeadInterval, TimeUnit.SECONDS); - inActivityTimerScheduled = true; - } - } - - /** - * Stops the inactivity timer. - */ - @Override - public void stopInactivityTimeCheck() { - if (inActivityTimerScheduled) { - log.debug("OSPFNbr::stopInactivityTimeCheck "); - exServiceInActivity.shutdown(); - inActivityTimerScheduled = false; - } - } - - /** - * Starts the flooding timer. - * - * @param channel channel instance - */ - public void startFloodingTimer(Channel channel) { - - if (!floodingTimerScheduled) { - log.debug("OSPFNbr::startFloodingTimer"); - floodingTask = new InternalFloodingTask(channel); - exServiceFlooding = Executors.newSingleThreadScheduledExecutor(); - //Run every 5 seconds. - exServiceFlooding.scheduleAtFixedRate(floodingTask, OspfParameters.START_NOW, - OspfParameters.MINLSINTERVAL, TimeUnit.SECONDS); - floodingTimerScheduled = true; - } - } - - /** - * Stops the flooding timer. - */ - @Override - public void stopFloodingTimer() { - if (floodingTimerScheduled) { - log.debug("OSPFNbr::stopFloodingTimer "); - exServiceFlooding.shutdown(); - floodingTimerScheduled = false; - } - } - - /** - * Starts the Dd Retransmission executor task. - * - * @param ch netty channel instance - */ - private void startRxMtDdTimer(Channel ch) { - if (!rxmtDdPacketTimerScheduled) { - long retransmitInterval = ospfInterface.reTransmitInterval(); - rxmtDdPacketTask = new InternalRxmtDdPacket(ch); - exServiceRxmtDDPacket = Executors.newSingleThreadScheduledExecutor(); - exServiceRxmtDDPacket.scheduleAtFixedRate(rxmtDdPacketTask, retransmitInterval, - retransmitInterval, TimeUnit.SECONDS); - rxmtDdPacketTimerScheduled = true; - } - } - - /** - * Stops the Dd Retransmission executor task. - */ - @Override - public void stopRxMtDdTimer() { - if (rxmtDdPacketTimerScheduled) { - exServiceRxmtDDPacket.shutdown(); - rxmtDdPacketTimerScheduled = false; - } - } - - /** - * Starts Ls request retransmission executor task. - * - * @param ch Netty channel instance - */ - private void startRxMtLsrTimer(Channel ch) { - if (!rxmtLsrTimerScheduled) { - log.debug("OSPFNbr::startRxMtLsrTimer...!!!"); - long retransmitIntrvl = ospfInterface.reTransmitInterval(); - rxmtLsrPacketTask = new InternalRxmtLsrPacket(ch); - exServiceRxmtLsr = Executors.newSingleThreadScheduledExecutor(); - exServiceRxmtLsr.scheduleAtFixedRate(rxmtLsrPacketTask, retransmitIntrvl, - retransmitIntrvl, TimeUnit.SECONDS); - rxmtLsrTimerScheduled = true; - } - } - - /** - * Stops Ls request retransmission executor task. - */ - @Override - public void stopRxMtLsrTimer() { - if (rxmtLsrTimerScheduled) { - exServiceRxmtLsr.shutdown(); - rxmtLsrTimerScheduled = false; - } - } - - /** - * Gets the last sent DdPacket. - * - * @return DdPacket instance - */ - public DdPacket lastDdPacket() { - return lastDdPacket; - } - - /** - * Sets the last sent DdPacket. - * - * @param lastDdPacket DdPacket instance - */ - public void setLastDdPacket(DdPacket lastDdPacket) { - this.lastDdPacket = lastDdPacket; - } - - /** - * Gets neighbor id. - * - * @return neighbor id - */ - @Override - public Ip4Address neighborId() { - return neighborId; - } - - /** - * Sets the neighbor id. - * - * @param neighborId neighbor id - */ - @Override - public void setNeighborId(Ip4Address neighborId) { - this.neighborId = neighborId; - } - - /** - * Gets the neighbor DR address. - * - * @return neighbor DR address - */ - @Override - public Ip4Address neighborDr() { - return neighborDr; - } - - /** - * Sets the neighbor DR address. - * - * @param neighborDr neighbor DR address - */ - @Override - public void setNeighborDr(Ip4Address neighborDr) { - this.neighborDr = neighborDr; - } - - /** - * Gets the neighbor BDR address. - * - * @return neighbor BDR address - */ - @Override - public Ip4Address neighborBdr() { - return neighborBdr; - } - - /** - * Sets the neighbor BDR address. - * - * @param neighborBdr neighbor BDR address - */ - @Override - public void setNeighborBdr(Ip4Address neighborBdr) { - this.neighborBdr = neighborBdr; - } - - /** - * Gets router priority. - * - * @return router priority - */ - @Override - public int routerPriority() { - return routerPriority; - } - - /** - * Sets router priority. - * - * @param routerPriority router priority - */ - @Override - public void setRouterPriority(int routerPriority) { - this.routerPriority = routerPriority; - } - - /** - * Gets the options value. - * - * @return options value - */ - @Override - public int options() { - return options; - } - - /** - * Sets the options value. - * - * @param options options value - */ - @Override - public void setOptions(int options) { - this.options = options; - } - - /** - * Gets the DD sequence number. - * - * @return DD sequence number - */ - @Override - public long ddSeqNum() { - return ddSeqNum; - } - - /** - * Sets the DD sequence number. - * - * @param ddSeqNum DD sequence number - */ - @Override - public void setDdSeqNum(long ddSeqNum) { - this.ddSeqNum = ddSeqNum; - } - - /** - * Gets neighbor is master or not. - * - * @return true if neighbor is master else false - */ - @Override - public int isMaster() { - return isMaster; - } - - /** - * Gets the last sent DD Packet. - * - * @return last sent DD Packet - */ - public DdPacket lastSentDdPacket() { - return lastSentDdPacket; - } - - /** - * Sets the last sent DD Packet. - * - * @param lastSentDdPacket last sent DD Packet - */ - public void setLastSentDdPacket(DdPacket lastSentDdPacket) { - this.lastSentDdPacket = lastSentDdPacket; - } - - /** - * Gets the last sent Ls Request Packet. - * - * @return last sent Ls Request Packet - */ - public LsRequest getLastSentLsrPacket() { - return lastSentLsrPacket; - } - - /** - * Sets the last sent Ls Request Packet. - * - * @param lastSentLsrPacket last sent Ls Request Packet - */ - public void setLastSentLsrPacket(LsRequest lastSentLsrPacket) { - this.lastSentLsrPacket = lastSentLsrPacket; - } - - /** - * Gets the neighbors state. - * - * @return neighbors state - */ - @Override - public OspfNeighborState getState() { - return state; - } - - /** - * Sets the neighbors state. - * - * @param state neighbors state - */ - public void setState(OspfNeighborState state) { - this.state = state; - } - - /** - * Sets neighbor is master or not. - * - * @param isMaster neighbor is master or not - */ - @Override - public void setIsMaster(int isMaster) { - this.isMaster = isMaster; - } - - /** - * Gets the ls request list. - * - * @return ls request list - */ - @Override - public Hashtable getLsReqList() { - return lsReqList; - } - - /** - * Gets the reTxList instance. - * - * @return reTxList instance - */ - @Override - public Map getReTxList() { - return reTxList; - } - - /** - * Gets the pending re transmit list. - * - * @return pendingReTxList instance - */ - @Override - public Map getPendingReTxList() { - return pendingReTxList; - } - - /** - * Gets message as bytes. - * - * @param ospfMessage OSPF message - * @return OSPF message - */ - private byte[] getMessage(OspfMessage ospfMessage) { - OspfMessageWriter messageWriter = new OspfMessageWriter(); - if (((OspfInterfaceImpl) ospfInterface).state().equals(OspfInterfaceState.POINT2POINT)) { - ospfMessage.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS); - } - return (messageWriter.getMessage(ospfMessage, ospfInterface.interfaceIndex(), - ((OspfInterfaceImpl) ospfInterface).state().value())); - } - - - /** - * Represents a Task which will do an inactivity time check. - */ - private class InternalInactivityTimeCheck implements Runnable { - /** - * Constructor. - */ - InternalInactivityTimeCheck() { - } - - @Override - public void run() { - try { - log.debug("Neighbor Not Heard till the past router dead interval ."); - neighborDown(); - } catch (Exception e) { - log.debug("Exception at inactivity time check...!!!"); - } - } - } - - /** - * Task which re transmits DdPacket every configured time interval. - */ - private class InternalRxmtDdPacket implements Runnable { - Channel ch; - - /** - * Creates an instance or Re transmit DD packet timer. - * - * @param ch netty channel instance - */ - InternalRxmtDdPacket(Channel ch) { - this.ch = ch; - } - - @Override - public void run() { - if ((ch != null) && ch.isConnected()) { - DdPacket ddPacket = lastSentDdPacket(); - byte[] messageToWrite = getMessage(ddPacket); - ch.write(messageToWrite); - log.debug("Re-Transmit DD Packet ."); - } else { - log.debug( - "Re-Transmit DD Packet failed. Channel not connected.."); - } - } - } - - /** - * Task which re transmits Ls request Packet every configured time interval. - */ - private class InternalRxmtLsrPacket implements Runnable { - Channel ch; - - /** - * Creates an instance or Re transmit LS Request packet timer. - * - * @param ch netty channel instance - */ - InternalRxmtLsrPacket(Channel ch) { - this.ch = ch; - } - - @Override - public void run() { - if ((ch != null) && ch.isConnected()) { - LsRequest lsrPacket = getLastSentLsrPacket(); - byte[] messageToWrite = getMessage(lsrPacket); - ch.write(messageToWrite); - log.debug("Re-Transmit LSRequest Packet ."); - } else { - log.debug( - "Re-Transmit LSRequest failed. Channel not connected.."); - } - } - } - - /** - * Task which transmits Ls update Packet based on the re transmit list. - * every configured time interval. - */ - private class InternalFloodingTask implements Runnable { - Channel channel; - - /** - * Creates an instance or Flooding task. - * - * @param ch netty channel instance - */ - InternalFloodingTask(Channel ch) { - this.channel = ch; - } - - @Override - public void run() { - if ((channel != null) && channel.isConnected()) { - - if ((pendingReTxList != null) && (pendingReTxList.size() > 0)) { - List lsUpdateList = buildLsUpdate(pendingReTxList); - - for (LsUpdate lsupdate : lsUpdateList) { - //Pending for acknowledge directly sent it to neighbor - lsupdate.setDestinationIp(neighborIpAddr); - byte[] messageToWrite = getMessage(lsupdate); - channel.write(messageToWrite); - } - } - - if ((reTxList != null) && (reTxList.size() > 0)) { - List lsUpdateList = buildLsUpdate(reTxList); - - for (LsUpdate lsupdate : lsUpdateList) { - //set the destination - if ((((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DR) || - (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.POINT2POINT)) { - lsupdate.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS); - } else if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DROTHER || - (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.BDR)) { - lsupdate.setDestinationIp(neighborDr); - } - byte[] messageToWrite = getMessage(lsupdate); - channel.write(messageToWrite); - } - } - } - } - - /** - * Builds the LsUpdate for flooding. - * - * @param txList list contains LSAs - * @return list of LsUpdate instances - */ - private List buildLsUpdate(Map txList) { - List lsUpdateList = new ArrayList<>(); - ListIterator itr = new ArrayList(txList.keySet()).listIterator(); - while (itr.hasNext()) { - LsUpdate lsupdate = new LsUpdate(); - // seting OSPF Header - lsupdate.setOspfVer(OspfUtil.OSPF_VERSION); - lsupdate.setOspftype(OspfPacketType.LSUPDATE.value()); - lsupdate.setRouterId(ospfArea.routerId()); - lsupdate.setAreaId(ospfArea.areaId()); - lsupdate.setAuthType(OspfUtil.NOT_ASSIGNED); - lsupdate.setAuthentication(OspfUtil.NOT_ASSIGNED); - lsupdate.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length - lsupdate.setChecksum(OspfUtil.NOT_ASSIGNED); - - //limit to mtu - int currentLength = OspfUtil.OSPF_HEADER_LENGTH + OspfUtil.FOUR_BYTES; - int maxSize = ospfInterface.mtu() - - OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header. - - int noLsa = 0; - while (itr.hasNext()) { - - String key = (String) itr.next(); - OspfLsa lsa = txList.get(key); - if (lsa != null) { - if ((lsa.age() + OspfParameters.INFTRA_NS_DELAY) >= OspfParameters.MAXAGE) { - ((LsaHeader) lsa.lsaHeader()).setAge(OspfParameters.MAXAGE); - } else { - ((LsaHeader) lsa.lsaHeader()).setAge(lsa.age() + OspfParameters.INFTRA_NS_DELAY); - } - - if ((currentLength + ((LsaHeader) lsa.lsaHeader()).lsPacketLen()) >= maxSize) { - itr.previous(); - break; - } - log.debug("FloodingTimer::LSA Type::{}, Header: {}, LSA: {}", lsa.getOspfLsaType(), - lsa.lsaHeader(), lsa); - lsupdate.addLsa(lsa); - noLsa++; - currentLength = currentLength + ((LsaHeader) lsa.lsaHeader()).lsPacketLen(); - } - log.debug("FloodingTimer::Removing key {}", key); - if (txList.equals(reTxList)) { - reTxList.remove(key); - pendingReTxList.put(key, lsa); - } - } - //set number of lsa's - lsupdate.setNumberOfLsa(noLsa); - lsUpdateList.add(lsupdate); - } - return lsUpdateList; - } - } -} diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfPipelineFactory.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfPipelineFactory.java deleted file mode 100644 index f98f54cafe..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfPipelineFactory.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineFactory; -import org.jboss.netty.channel.Channels; - -/** - * Creates a ChannelPipeline for a client-side OSPF channel. - */ -public class OspfPipelineFactory implements ChannelPipelineFactory { - private OspfInterfaceChannelHandler ospfChannelHandler; - - /** - * Creates an instance of OSPF channel pipeline factory. - * - * @param ospfChannelHandler OSPF channel handler instance - */ - public OspfPipelineFactory(OspfInterfaceChannelHandler ospfChannelHandler) { - this.ospfChannelHandler = ospfChannelHandler; - } - - @Override - public ChannelPipeline getPipeline() { - ChannelPipeline pipeline = Channels.pipeline(); - pipeline.addLast("encoder", new OspfMessageDecoder()); - pipeline.addLast("decoder", new OspfMessageEncoder()); - pipeline.addLast("handler", ospfChannelHandler); - - return pipeline; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfRouterImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfRouterImpl.java deleted file mode 100644 index 5cfb028cc8..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfRouterImpl.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.ospf.controller.impl; - -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfDeviceTed; -import org.onosproject.ospf.controller.OspfRouter; - -/** - * Representation of an OSPF Router. - */ -public class OspfRouterImpl implements OspfRouter { - - private Ip4Address routerIp; - private Ip4Address areaIdOfInterface; - private Ip4Address neighborRouterId; - private Ip4Address interfaceId; - private OspfDeviceTed deviceTed; - private boolean isOpaque; - private boolean isDr; - - /** - * Gets IP address of the Router. - * - * @return IP address router - */ - public Ip4Address routerIp() { - return routerIp; - } - - /** - * Sets IP address of the Router. - * - * @param routerIp IP address of the router - */ - public void setRouterIp(Ip4Address routerIp) { - this.routerIp = routerIp; - } - - /** - * Gets the area id of this device. - * - * @return the area id od this device - */ - public Ip4Address areaIdOfInterface() { - return areaIdOfInterface; - } - - /** - * Sets the area id for this device. - * - * @param areaIdOfInterface area identifier for the device - */ - public void setAreaIdOfInterface(Ip4Address areaIdOfInterface) { - this.areaIdOfInterface = areaIdOfInterface; - } - - /** - * Gets IP address of the interface. - * - * @return IP address of the interface - */ - public Ip4Address interfaceId() { - return interfaceId; - } - - /** - * Gets IP address of the interface. - * - * @param interfaceId IP address of the interface - */ - public void setInterfaceId(Ip4Address interfaceId) { - this.interfaceId = interfaceId; - } - - /** - * Gets List of the device ted. - * - * @return List of the device ted. - */ - public OspfDeviceTed deviceTed() { - return deviceTed; - } - - /** - * Sets List of the device TED. - * - * @param deviceTed of the device TED. - */ - public void setDeviceTed(OspfDeviceTed deviceTed) { - this.deviceTed = deviceTed; - } - - /** - * Gets boolean value. - * - * @return boolean value. - */ - public boolean isOpaque() { - return isOpaque; - } - - /** - * Sets boolean value. - * - * @param opaque true if opaque else false - */ - public void setOpaque(boolean opaque) { - isOpaque = opaque; - } - - /** - * Gets neighbor's Router id. - * - * @return neighbor's Router id - */ - public Ip4Address neighborRouterId() { - return neighborRouterId; - } - - /** - * Sets neighbor's Router id. - * - * @param advertisingRouterId neighbor's Router id - */ - public void setNeighborRouterId(Ip4Address advertisingRouterId) { - this.neighborRouterId = advertisingRouterId; - } - - /** - * Gets if DR or not. - * - * @return true if DR else false - */ - public boolean isDr() { - return isDr; - } - - /** - * Sets dr or not. - * - * @param dr true if DR else false - */ - public void setDr(boolean dr) { - isDr = dr; - } -} diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImpl.java deleted file mode 100644 index 710e6a8aed..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImpl.java +++ /dev/null @@ -1,669 +0,0 @@ -/* -* Copyright 2016-present Open Networking Foundation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.onosproject.ospf.controller.impl; - -import org.onlab.packet.Ip4Address; -import org.onlab.util.Bandwidth; -import org.onosproject.ospf.controller.DeviceInformation; -import org.onosproject.ospf.controller.LinkInformation; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLinkTed; -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.TopologyForDeviceAndLink; -import org.onosproject.ospf.protocol.lsa.linksubtype.LinkSubType; -import org.onosproject.ospf.protocol.lsa.linksubtype.LocalInterfaceIpAddress; -import org.onosproject.ospf.protocol.lsa.linksubtype.MaximumBandwidth; -import org.onosproject.ospf.protocol.lsa.linksubtype.MaximumReservableBandwidth; -import org.onosproject.ospf.protocol.lsa.linksubtype.RemoteInterfaceIpAddress; -import org.onosproject.ospf.protocol.lsa.linksubtype.TrafficEngineeringMetric; -import org.onosproject.ospf.protocol.lsa.linksubtype.UnreservedBandwidth; -import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink; -import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv; -import org.onosproject.ospf.protocol.lsa.types.NetworkLsa; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.lsa.types.TopLevelTlv; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; - -/** - * Represents device and link topology information. - */ -public class TopologyForDeviceAndLinkImpl implements TopologyForDeviceAndLink { - - private static final Logger log = LoggerFactory.getLogger(TopologyForDeviceAndLinkImpl.class); - Set routerSet = new TreeSet(); - Ip4Address firstValue = Ip4Address.valueOf("0.0.0.0"); - private Map deviceInformationMap = new LinkedHashMap(); - private Map> networkLsaMap = new LinkedHashMap(); - private Map deviceInformationMapForPointToPoint = new LinkedHashMap(); - private Map deviceInformationMapToDelete = new LinkedHashMap(); - private HashMap> deviceAndLinkInformation = new HashMap(); - private HashMap ospfLinkTedHashMap = new LinkedHashMap(); - private Ip4Address drRouter = Ip4Address.valueOf("0.0.0.0"); - private Ip4Address drRouterOld = Ip4Address.valueOf("0.0.0.0"); - private Ip4Address adRouterId = Ip4Address.valueOf("0.0.0.0"); - private Map linkInformationMap = new LinkedHashMap(); - private Map linkInformationMapForPointToPoint = new LinkedHashMap(); - private List toRemove = new ArrayList<>(); - - /** - * Gets device information. - * - * @return device information - */ - public Map deviceInformationMap() { - return deviceInformationMap; - } - - /** - * Sets device information. - * - * @param key key used to add in map - * @param deviceInformationMap device information instance - */ - public void setDeviceInformationMap(String key, DeviceInformation deviceInformationMap) { - if (deviceInformationMap != null) { - this.deviceInformationMap.put(key, deviceInformationMap); - } - - } - - /** - * Gets deviceInformation as map for Point-To-Point. - * - * @return deviceInformationMap - */ - public Map deviceInformationMapForPointToPoint() { - return deviceInformationMapForPointToPoint; - } - - /** - * Sets deviceInformation as map for Point-To-Point.. - * - * @param key key to store device information - * @param deviceInformationMap device information instance - */ - public void setDeviceInformationMapForPointToPoint(String key, DeviceInformation deviceInformationMap) { - if (deviceInformationMap != null) { - this.deviceInformationMapForPointToPoint.put(key, deviceInformationMap); - } - - } - - /** - * Gets deviceInformation as map. - * - * @return deviceInformationMap to delete from core - */ - public Map deviceInformationMapToDelete() { - return deviceInformationMapToDelete; - } - - /** - * Sets device information for removal. - * - * @param key ket used to add in map - * @param deviceInformationMapToDelete map from device information to remove - */ - public void setDeviceInformationMapToDelete(String key, DeviceInformation deviceInformationMapToDelete) { - if (deviceInformationMapToDelete != null) { - this.deviceInformationMapToDelete.put(key, deviceInformationMapToDelete); - } - } - - /** - * Removes Device Information. - * - * @param key ket used to remove from map - */ - public void removeDeviceInformationMapFromDeleteMap(String key) { - removeDeviceInformationMap(key); - if (this.deviceInformationMapToDelete.containsKey(key)) { - this.deviceInformationMapToDelete.remove(key); - } - } - - /** - * Gets Device Information. - * - * @param key key to store in map - * @return Device Information - */ - public DeviceInformation deviceInformation(String key) { - DeviceInformation deviceInformation = this.deviceInformationMap.get(key); - return deviceInformation; - } - - /** - * Removes Device Information from map. - * - * @param key key used to remove from map - */ - public void removeDeviceInformationMap(String key) { - if (this.deviceInformationMap.containsKey(key)) { - this.deviceInformationMap.remove(key); - } - } - - /** - * Gets link information as map. - * - * @return link information as map - */ - public Map linkInformationMap() { - return linkInformationMap; - } - - private LinkInformation getLinkInformation(String key) { - LinkInformation linkInformation = this.linkInformationMap.get(key); - return linkInformation; - } - - /** - * Sets link information in map. - * - * @param key key used to add in map - * @param linkInformationMap link information instance - */ - public void setLinkInformationMap(String key, LinkInformation linkInformationMap) { - if (!this.linkInformationMap.containsKey(key)) { - this.linkInformationMap.put(key, linkInformationMap); - } - } - - /** - * Gets linkInformation as map for PointToPoint. - * - * @return linkInformationMap - */ - public Map linkInformationMapForPointToPoint() { - return linkInformationMap; - } - - /** - * Sets linkInformation as map for PointToPoint. - * - * @param key key to store link information - * @param linkInformationMap link information instance - */ - public void setLinkInformationMapForPointToPoint(String key, LinkInformation linkInformationMap) { - if (!this.linkInformationMap.containsKey(key)) { - this.linkInformationMap.put(key, linkInformationMap); - } - } - - /** - * Removes Link Information from linkInformationMap. - * - * @param key key to remove link information - */ - public void removeLinkInformationMap(String key) { - if (this.linkInformationMap.containsKey(key)) { - this.linkInformationMap.remove(key); - } - } - - - /** - * Gets OSPF Link TED details from the map. - * - * @param key key used to retrieve from map - * @return OSPF link ted instance - */ - public OspfLinkTed getOspfLinkTedHashMap(String key) { - OspfLinkTed ospfLinkTed = ospfLinkTedHashMap.get(key); - return ospfLinkTed; - } - - /** - * Adds device information to map. - * - * @param ospfLsa OSPF LSA instance - * @param ospfInterface OSPF interface instance - * @param ospfArea OSPF area instance - */ - public void addLocalDevice(OspfLsa ospfLsa, OspfInterface ospfInterface, OspfArea ospfArea) { - if (ospfLsa.getOspfLsaType().equals(OspfLsaType.ROUTER)) { - createDeviceAndLinkFromRouterLsa(ospfLsa, ospfArea); - } else if (ospfLsa.getOspfLsaType().equals(OspfLsaType.NETWORK)) { - createDeviceAndLinkFromNetworkLsa(ospfLsa, ospfArea); - } else if (ospfLsa.getOspfLsaType().equals(OspfLsaType.AREA_LOCAL_OPAQUE_LSA)) { - createDeviceAndLinkFromOpaqueLsa(ospfLsa, ospfArea); - } - } - - /** - * Creates device object from parameters. - * - * @param alreadyCreated device already created or not - * @param deviceId device id - * @param neighborId neighbor's id - * @param routerId router's id - * @param interfaceId interface id - * @param areaId area id - * @param isDr true if router is DR else false - */ - private DeviceInformation createDeviceInformation(boolean alreadyCreated, Ip4Address deviceId, - Ip4Address neighborId, Ip4Address routerId, - Ip4Address interfaceId, Ip4Address areaId, - boolean isDr) { - DeviceInformation deviceInformation = new DeviceInformationImpl(); - deviceInformation.setAlreadyCreated(alreadyCreated); - deviceInformation.setDeviceId(deviceId); - deviceInformation.setNeighborId(neighborId); - deviceInformation.setRouterId(routerId); - deviceInformation.addInterfaceId(interfaceId); - deviceInformation.setAreaId(areaId); - deviceInformation.setDr(isDr); - return deviceInformation; - } - - /** - * Creates Device and Link instance from the RouterLsa parameters. - * - * @param ospfLsa OSPF LSA instance - * @param ospfArea OSPF area - */ - private void createDeviceAndLinkFromRouterLsa(OspfLsa ospfLsa, OspfArea ospfArea) { - RouterLsa routerLsa = (RouterLsa) ospfLsa; - List ospfLsaLinkList = routerLsa.routerLink(); - Iterator iterator = ospfLsaLinkList.iterator(); - Ip4Address advertisingRouterId = routerLsa.advertisingRouter(); - while (iterator.hasNext()) { - OspfLsaLink ospfLsaLink = (OspfLsaLink) iterator.next(); - Ip4Address linkId = Ip4Address.valueOf(ospfLsaLink.linkId()); - Ip4Address linkData = Ip4Address.valueOf(ospfLsaLink.linkData()); - if (ospfLsaLink.linkType() == 1) { - if ((advertisingRouterId.equals(ospfArea.routerId())) || (linkId.equals(ospfArea.routerId()))) { - if (!advertisingRouterId.equals(ospfArea.routerId())) { - DeviceInformation deviceInformationPointToPoint = - createDeviceInformation(false, linkId, linkId, advertisingRouterId, linkData, - ospfArea.areaId(), false); - String key = "device:" + advertisingRouterId; - setDeviceInformationMapForPointToPoint(key, deviceInformationPointToPoint); - } - } else { - DeviceInformation deviceInformationPointToPoint = - createDeviceInformation(false, linkId, linkId, advertisingRouterId, - linkData, ospfArea.areaId(), false); - String key = "device:" + advertisingRouterId; - setDeviceInformationMapForPointToPoint(key, deviceInformationPointToPoint); - String linkIdKey = "linkId:" + advertisingRouterId + "-" + linkId; - addLocalLinkForPointToPoint(linkIdKey, linkData, advertisingRouterId, linkId, true, false); - } - } - } - } - - /** - * Creates device and link instance from the network LSA parameters. - * - * @param ospfLsa OSPF LSA instance - * @param ospfArea OSPF area instance - */ - private void createDeviceAndLinkFromNetworkLsa(OspfLsa ospfLsa, OspfArea ospfArea) { - NetworkLsa networkLsa = (NetworkLsa) ospfLsa; - Ip4Address linkStateId = Ip4Address.valueOf(networkLsa.linkStateId()); - Set drList = networkLsaMap.keySet(); - try { - Ip4Address drToReplace = null; - for (Ip4Address drIp : drList) { - if (!drIp.equals(linkStateId)) { - if (OspfUtil.sameNetwork(drIp, linkStateId, networkLsa.networkMask())) { - drToReplace = drIp; - String key = "device:" + drToReplace; - DeviceInformation deleteDr = deviceInformation(key); - if (deleteDr != null) { - deleteDr.setAlreadyCreated(true); - setDeviceInformationMapToDelete(key, deleteDr); - } - - networkLsaMap.remove(drToReplace); - break; - } - } - } - networkLsaMap.put(linkStateId, networkLsa.attachedRouters()); - - } catch (Exception e) { - log.debug("Error::TopologyForDeviceAndLinkImpl:: {}", e.getMessage()); - } - constructDeviceForBroadCastTopology(ospfArea); - disp(); - - } - - private void constructDeviceForBroadCastTopology(OspfArea ospfArea) { - - for (Map.Entry> entry : networkLsaMap.entrySet()) { - Ip4Address key = entry.getKey(); - DeviceInformation deviceInformationForDr = createDeviceInformation(false, key, key, key, - key, ospfArea.areaId(), true); - String dr = "device:" + key; - setDeviceInformationMap(dr, deviceInformationForDr); - List value = entry.getValue(); - for (Ip4Address connectedRouter : value) { - if (!connectedRouter.equals(ospfArea.routerId())) { - DeviceInformation deviceInformationAttachedRouters = - createDeviceInformation(false, connectedRouter, key, connectedRouter, - key, ospfArea.areaId(), false); - String attachedRouters = "device:" + connectedRouter; - setDeviceInformationMap(attachedRouters, deviceInformationAttachedRouters); - String linkIdKey = "linkId:" + key + "-" + connectedRouter; - addLocalLink(linkIdKey, key, key, connectedRouter, true, false); - } - } - } - - } - - private void disp() { - for (String key : deviceInformationMap.keySet()) { - DeviceInformation deviceInformation = deviceInformationMap.get(key); - log.debug("************************************************************************"); - log.debug("DeviceInfoList RouterId is : {} and neighbour is {} and linkdata {}", - deviceInformation.routerId(), deviceInformation.neighborId(), deviceInformation.interfaceId()); - } - - for (Map.Entry entry : linkInformationMap.entrySet()) { - String linkDetail = entry.getKey(); - log.debug("Link From and to is " + linkDetail); - } - log.debug("Devices Needs to delete from Core are : " + deviceInformationMapToDelete.size()); - for (String key : deviceInformationMapToDelete.keySet()) { - DeviceInformation value = deviceInformationMapToDelete.get(key); - if (value.isAlreadyCreated()) { - log.debug("Device is deleted from list " + value.routerId()); - } - } - } - - private void getLinksToDelete(Set list, Ip4Address value, OspfArea ospfArea) { - - Iterator iterator = list.iterator(); - - while (iterator.hasNext()) { - Ip4Address secondValue = (Ip4Address) iterator.next(); - if (!value.toString().equals("0.0.0.0")) { - if ((!value.equals(secondValue))) { - if ((!secondValue.equals(ospfArea.routerId()))) { - String key = "link:" + value.toString() + "-" + secondValue.toString(); - String key1 = "link:" + secondValue.toString() + "-" + value.toString(); - LinkInformation linkDetails = getLinkInformation(key); - LinkInformation linkDetailsOther = getLinkInformation(key1); - linkInformationMapForPointToPoint.put(key, linkDetails); - linkInformationMapForPointToPoint.put(key1, linkDetailsOther); - } - } - } - - } - - } - - /** - * Creates Device and Link instance from the OpaqueLsa parameters. - * - * @param ospfLsa OSPF LSA instance - * @param ospfArea OSPF area instance - */ - private void createDeviceAndLinkFromOpaqueLsa(OspfLsa ospfLsa, OspfArea ospfArea) { - OspfLinkTed ospfLinkTed = new OspfLinkTedImpl(); - OpaqueLsa10 opaqueLsa10 = (OpaqueLsa10) ospfLsa; - List topLevelTlvList = opaqueLsa10.topLevelValues(); - for (TopLevelTlv topLevelTlv : topLevelTlvList) { - if (topLevelTlv instanceof LinkTlv) { - LinkTlv linkTlv = (LinkTlv) topLevelTlv; - List subTypes = linkTlv.subTlvList(); - for (LinkSubType type : subTypes) { - if (type instanceof UnreservedBandwidth) { - UnreservedBandwidth unreservedBandwidth = (UnreservedBandwidth) type; - List bandwidthFloatValues = unreservedBandwidth.getUnReservedBandwidthValue(); - List bandwidthList = new ArrayList<>(); - for (Float value : bandwidthFloatValues) { - Bandwidth bandwidth = Bandwidth.bps((double) value); - ospfLinkTed.setMaxUnResBandwidth(bandwidth); - bandwidthList.add(bandwidth); - } - } - if (type instanceof MaximumBandwidth) { - MaximumBandwidth maximumBandwidth = (MaximumBandwidth) type; - float maxBandValue = maximumBandwidth.getMaximumBandwidthValue(); - Bandwidth bandwidth = Bandwidth.bps((double) maxBandValue); - ospfLinkTed.setMaximumLink(bandwidth); - } - if (type instanceof MaximumReservableBandwidth) { - MaximumReservableBandwidth maximumReservableBandwidth = (MaximumReservableBandwidth) type; - float maxResBandValue = maximumReservableBandwidth.getMaximumBandwidthValue(); - Bandwidth bandwidth = Bandwidth.bps((double) maxResBandValue); - ospfLinkTed.setMaxReserved(bandwidth); - } - if (type instanceof TrafficEngineeringMetric) { - TrafficEngineeringMetric trafficEngineeringMetric = (TrafficEngineeringMetric) type; - long teMetric = trafficEngineeringMetric.getTrafficEngineeringMetricValue(); - ospfLinkTed.setTeMetric((Integer) (int) teMetric); - } - if (type instanceof LocalInterfaceIpAddress) { - LocalInterfaceIpAddress localInterfaceIpAddress = (LocalInterfaceIpAddress) type; - List stringValue = localInterfaceIpAddress.getLocalInterfaceIPAddress(); - List localIp4Address = new ArrayList<>(); - for (String value : stringValue) { - Ip4Address ip4Address = Ip4Address.valueOf(value); - localIp4Address.add(ip4Address); - } - ospfLinkTed.setIpv4LocRouterId(localIp4Address); - } - if (type instanceof RemoteInterfaceIpAddress) { - RemoteInterfaceIpAddress remoteInterfaceIpAddress = (RemoteInterfaceIpAddress) type; - List stringValue = remoteInterfaceIpAddress.getRemoteInterfaceAddress(); - List remoteIp4Address = new ArrayList<>(); - for (String value : stringValue) { - Ip4Address ip4Address = Ip4Address.valueOf(value); - remoteIp4Address.add(ip4Address); - } - ospfLinkTed.setIpv4RemRouterId(remoteIp4Address); - } - } - } - - } - ospfLinkTedHashMap.put(adRouterId.toString(), ospfLinkTed); - } - - - /** - * Adds link information to LinkInformationMap. - * - * @param advertisingRouter advertising router - * @param linkData link data address - * @param linkSrc link source address - * @param linkDest link destination address - * @param opaqueEnabled opaque enabled or not - * @param linkSrcIdNotRouterId link source id or not - */ - public void addLocalLink(String advertisingRouter, Ip4Address linkData, Ip4Address linkSrc, Ip4Address linkDest, - boolean opaqueEnabled, boolean linkSrcIdNotRouterId) { - String linkKey = "link:"; - LinkInformation linkInformation = new LinkInformationImpl(); - linkInformation.setLinkId(advertisingRouter); - linkInformation.setLinkSourceId(linkSrc); - linkInformation.setLinkDestinationId(linkDest); - linkInformation.setAlreadyCreated(false); - linkInformation.setLinkSrcIdNotRouterId(linkSrcIdNotRouterId); - linkInformation.setInterfaceIp(linkData); - if (linkDest != null) { - linkInformation.setLinkSrcIdNotRouterId(false); - } - linkKey = linkKey + "-" + linkSrc + "-" + linkDest; - setLinkInformationMap(linkKey, linkInformation); - } - - /** - * Adds link information to LinkInformationMap for PointToPoint. - * - * @param advertisingRouter advertising router - * @param linkData link data - * @param linkSrc link source - * @param linkDest link destination - * @param opaqueEnabled whether opaque is enabled or not - * @param linkSrcIdNotRouterId whether link is source id or router id - */ - public void addLocalLinkForPointToPoint(String advertisingRouter, Ip4Address linkData, Ip4Address linkSrc, - Ip4Address linkDest, boolean opaqueEnabled, boolean linkSrcIdNotRouterId) { - String linkKey = "link:"; - LinkInformation linkInformation = new LinkInformationImpl(); - linkInformation.setLinkId(advertisingRouter); - linkInformation.setLinkSourceId(linkSrc); - linkInformation.setLinkDestinationId(linkDest); - linkInformation.setAlreadyCreated(false); - linkInformation.setLinkSrcIdNotRouterId(linkSrcIdNotRouterId); - linkInformation.setInterfaceIp(linkData); - if (linkDest != null) { - linkInformation.setLinkSrcIdNotRouterId(false); - } - linkKey = linkKey + "-" + linkSrc + "-" + linkDest; - setLinkInformationMapForPointToPoint(linkKey, linkInformation); - } - - /** - * Removes links from LinkInformationMap. - * - * @param routerId router id - */ - public void removeLinks(Ip4Address routerId) { - Map linkInformationMapLocal = linkInformationMap; - if (linkInformationMapLocal != null) { - for (Map.Entry entry : linkInformationMap.entrySet()) { - String key = entry.getKey(); - boolean check = key.contains(routerId.toString()); - LinkInformation linkInformation = linkInformationMap.get(key); - boolean check1 = (linkInformation.linkDestinationId() == routerId) ? true : false; - if (check || check1) { - toRemove.add(key); - } - } - removeLinkFromMap(); - } - } - - /** - * Removes Device from DeviceInformationMap. - * - * @param routerId router id - */ - public void removeDevice(Ip4Address routerId) { - String key = "device:" + routerId; - this.deviceInformationMap.remove(key); - } - - /** - * Removes link information from Map. - */ - private void removeLinkFromMap() { - Iterator iterator = toRemove.iterator(); - while (iterator.hasNext()) { - String key = (String) iterator.next(); - removeLinkInformationMap(key); - } - } - - /** - * Updates the deviceAndLinkInformation list for received OSPF LSA. - * - * @param ospfLsa OSPF LSA instance - * @param ospfArea OSPF area instance - */ - public void updateLinkInformation(OspfLsa ospfLsa, OspfArea ospfArea) { - if (ospfLsa.getOspfLsaType().equals(OspfLsaType.ROUTER)) { - RouterLsa routerLsa = (RouterLsa) ospfLsa; - routerLsa.lsType(); - List ospfLsaLinkList = routerLsa.routerLink(); - for (OspfLsaLink link : ospfLsaLinkList) { - if (link.linkType() == 1 || link.linkType() == 2) { - if ((routerLsa.advertisingRouter().equals(ospfArea.routerId())) || - (link.linkId().equals(ospfArea.routerId().toString()))) { - log.debug("OspfInterface information will not display in web "); - } else { - String key = routerLsa.advertisingRouter() + "-" + link.linkData(); - Set linkInformations = new HashSet<>(); - if (deviceAndLinkInformation.containsKey(key)) { - linkInformations = deviceAndLinkInformation.get(key); - linkInformations.add(link); - deviceAndLinkInformation.put(key, linkInformations); - } else { - linkInformations.add(link); - deviceAndLinkInformation.put(key, linkInformations); - } - } - } - } - } - } - - /** - * Gets all the router information which needs to delete from deviceList. - * - * @param ospfLsa OSPF LSA instance - * @param ospfArea OSPF area instance - * @return list of deleted router information - */ - public List getDeleteRouterInformation(OspfLsa ospfLsa, OspfArea ospfArea) { - List removedLinkList = new ArrayList<>(); - if (ospfLsa.getOspfLsaType().equals(OspfLsaType.ROUTER)) { - - RouterLsa routerLsa = (RouterLsa) ospfLsa; - List ospfLsaLinkList = routerLsa.routerLink(); - for (OspfLsaLink link : ospfLsaLinkList) { - if (link.linkType() == 1 || link.linkType() == 2) { - if ((routerLsa.advertisingRouter().equals(ospfArea.routerId())) || - (link.linkId().equals(ospfArea.routerId().toString()))) { - log.debug("OspfInterface information will not display in web "); - } else { - String key = routerLsa.advertisingRouter() + "-" + link.linkData(); - Set linkInformations = deviceAndLinkInformation.get(key); - if (linkInformations.contains(link)) { - linkInformations.remove(link); - deviceAndLinkInformation.put(key, linkInformations); - } - } - } - Set keys = deviceAndLinkInformation.keySet(); - for (String key : keys) { - Set linkInformations = deviceAndLinkInformation.get(key); - for (OspfLsaLink link1 : linkInformations) { - String removedLink = link1.linkId(); - removedLinkList.add(removedLink); - } - } - } - } - return removedLinkList; - } -} diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/package-info.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/package-info.java deleted file mode 100644 index 9275af04f9..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF controller. - */ -package org.onosproject.ospf.controller.impl; \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaBinImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaBinImpl.java deleted file mode 100644 index 9ba49a4fec..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaBinImpl.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.lsdb; - -import com.google.common.base.MoreObjects; -import org.onosproject.ospf.controller.LsaBin; -import org.onosproject.ospf.controller.LsaWrapper; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * Represents a bin, where an LSA is stored for Aging. - * A bin is identified by a bin number and can have one or more LSAs - * store in a particular bin location. - */ -public class LsaBinImpl implements LsaBin { - - private int binNumber; - private Map listOfLsa = new ConcurrentHashMap<>(); - - /** - * Creates an instance of LSA bin. - * - * @param binNumber unique number of this bin - */ - public LsaBinImpl(int binNumber) { - this.binNumber = binNumber; - } - - /** - * Adds the LSA to this bin with the given key. - * - * @param lsaKey key of the LSA - * @param lsaWrapper wrapper instance to store - */ - public void addOspfLsa(String lsaKey, LsaWrapper lsaWrapper) { - if (!listOfLsa.containsKey(lsaKey)) { - listOfLsa.put(lsaKey, lsaWrapper); - lsaWrapper.setBinNumber(this.binNumber); - } - } - - /** - * Gets the LSA from the bin. - * - * @param lsaKey key to search the LSA - * @return LSA Wrapper instance - */ - public LsaWrapper ospfLsa(String lsaKey) { - - return listOfLsa.get(lsaKey); - } - - /** - * Removes LSA from the bin. - * - * @param lsaKey key to search LSA - * @param lsaWrapper wrapper object to remove - */ - public void removeOspfLsa(String lsaKey, LsaWrapper lsaWrapper) { - if (listOfLsa.containsKey(lsaKey)) { - listOfLsa.remove(lsaKey); - } - } - - /** - * Gets the list of LSAs in this bin as key value pair. - * - * @return list of LSAs in this bin as key value pair - */ - public Map listOfLsa() { - return listOfLsa; - } - - /** - * Gets the bin number. - * - * @return the bin number - */ - public int binNumber() { - return binNumber; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("binNumber", binNumber) - .add("listOfLsa", listOfLsa) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumer.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumer.java deleted file mode 100644 index 94d232c355..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumer.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.lsdb; - -import org.jboss.netty.channel.Channel; -import org.onosproject.ospf.controller.LsaWrapper; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.types.NetworkLsa; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.util.ChecksumCalculator; -import org.onosproject.ospf.protocol.util.OspfInterfaceState; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.concurrent.BlockingQueue; - -/** - * Consumes LSA from the Queue and processes it. - * Its a producer consumer implementation using Blocking queue. - */ -public class LsaQueueConsumer implements Runnable { - private static final Logger log = LoggerFactory.getLogger(LsaQueueConsumer.class); - private BlockingQueue queue = null; - private Channel channel; - private OspfArea ospfArea; - - /** - * Creates an instance of LSA queue consumer. - * - * @param queue queue instance - * @param channel netty channel instance - * @param ospfArea OSPF area instance - */ - public LsaQueueConsumer(BlockingQueue queue, Channel channel, OspfArea ospfArea) { - this.queue = queue; - this.channel = channel; - this.ospfArea = ospfArea; - } - - /** - * Threads run method. - */ - public void run() { - log.debug("LSAQueueConsumer:run...!!!"); - try { - while (true) { - if (!queue.isEmpty()) { - LsaWrapper wrapper = (LsaWrapper) queue.take(); - String lsaProcessing = wrapper.lsaProcessing(); - switch (lsaProcessing) { - case OspfParameters.VERIFYCHECKSUM: - log.debug("LSAQueueConsumer: Message - " + OspfParameters.VERIFYCHECKSUM + " consumed."); - processVerifyChecksum(wrapper); - break; - case OspfParameters.REFRESHLSA: - log.debug("LSAQueueConsumer: Message - " + OspfParameters.REFRESHLSA + " consumed."); - processRefreshLsa(wrapper); - break; - case OspfParameters.MAXAGELSA: - log.debug("LSAQueueConsumer: Message - " + OspfParameters.MAXAGELSA + " consumed."); - processMaxAgeLsa(wrapper); - break; - default: - log.debug("Unknown command to process the LSA in queue ...!!!"); - break; - } - } - } - - } catch (Exception e) { - log.debug("Error::LSAQueueConsumer::{}", e.getMessage()); - } - } - - /** - * Processes verify checksum - checkAges. - * - * @param wrapper LSA wrapper instance - */ - private void processVerifyChecksum(LsaWrapper wrapper) throws OspfParseException { - ChecksumCalculator checkSum = new ChecksumCalculator(); - if (!checkSum.isValidLsaCheckSum(wrapper.ospfLsa(), ((LsaWrapperImpl) wrapper).lsaHeader().lsType(), - OspfUtil.LSAPACKET_CHECKSUM_POS1, - OspfUtil.LSAPACKET_CHECKSUM_POS2)) { - log.debug("LSAQueueConsumer::Checksum mismatch. Received LSA packet type {} ", - ((LsaWrapperImpl) wrapper).lsaHeader().lsType()); - - //Checksum Invalid - //RFC 2328 Restart the Router. - //Currently we are not restarting. We are not handling this case. - } - } - - /** - * Process refresh LSA. - * - * @param wrapper LSA wrapper instance - */ - private void processRefreshLsa(LsaWrapper wrapper) throws OspfParseException { - if (wrapper.isSelfOriginated()) { //self originated - //set the destination - OspfInterface ospfInterface = wrapper.ospfInterface(); - if (ospfInterface != null) { - LsaHeader header = ((LsaWrapperImpl) wrapper).lsaHeader(); - header.setAge(wrapper.currentAge()); - if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DR) { - if (header.lsType() == OspfLsaType.ROUTER.value()) { - RouterLsa routerLsa = ((OspfAreaImpl) ospfArea).buildRouterLsa(ospfInterface); - ((OspfAreaImpl) ospfArea).addLsa(routerLsa, true, ospfInterface); - ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(routerLsa); - } else if (header.lsType() == OspfLsaType.NETWORK.value()) { - if (ospfInterface.listOfNeighbors().size() > 0) { - NetworkLsa networkLsa = ((OspfAreaImpl) ospfArea).buildNetworkLsa( - ospfInterface.ipAddress(), ospfInterface.ipNetworkMask()); - ospfArea.addLsa(networkLsa, true, ospfInterface); - ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(networkLsa); - } - } - } - - if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.BDR || - ((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.POINT2POINT || - ((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DROTHER) { - ospfArea.refreshArea(ospfInterface); - } - log.debug("LSAQueueConsumer: processRefreshLsa - Flooded SelfOriginated LSA {}", - ((LsaWrapperImpl) wrapper).lsaHeader()); - } - } - } - - /** - * Process max age LSA. - * - * @param wrapper LSA wrapper instance - */ - private void processMaxAgeLsa(LsaWrapper wrapper) { - //set the destination - OspfInterface ospfInterface = wrapper.ospfInterface(); - if (ospfInterface != null) { - LsaHeader header = (LsaHeader) wrapper.ospfLsa().lsaHeader(); - header.setAge(OspfParameters.MAXAGE); - ((LsaWrapperImpl) wrapper).lsaHeader().setAge(OspfParameters.MAXAGE); - if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DR || - ((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.POINT2POINT) { - //remove from db - ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(((LsaWrapperImpl) wrapper).lsaHeader()); - ((OspfAreaImpl) ospfArea).deleteLsa(((LsaWrapperImpl) wrapper).lsaHeader()); - } else { - ((OspfAreaImpl) ospfArea).deleteLsa(((LsaWrapperImpl) wrapper).lsaHeader()); - } - log.debug("LSAQueueConsumer: processMaxAgeLsa - Flooded SelfOriginated-Max Age LSA {}", - ((LsaWrapperImpl) wrapper).lsaHeader()); - } - } - - /** - * Sets the channel. - * - * @param channel channel instance - */ - public void setChannel(Channel channel) { - this.channel = channel; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImpl.java deleted file mode 100644 index 9d747ad4e4..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImpl.java +++ /dev/null @@ -1,463 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.lsdb; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import org.onosproject.ospf.controller.LsaWrapper; -import org.onosproject.ospf.controller.LsdbAge; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Wrapper object to store LSA and associated metadata information. - */ -public class LsaWrapperImpl implements LsaWrapper { - private static final Logger log = LoggerFactory.getLogger(LsaWrapperImpl.class); - private LsaHeader lsaHeader; - private int lsaAgeReceived; - private int ageCounterWhenReceived; - private boolean isSelfOriginated; - private OspfLsaType lsaType; - private OspfLsa ospfLsa; - private int noReTransmissionLists; - private boolean inAnAgeBin; - private boolean changedSinceLastFlood; - private boolean isSequenceRollOver; - private boolean sentReplyForOlderLsa; - private boolean checkAge; // Queued for check sum verification - private boolean isAging; - private String lsaProcessing; //for LSAQueueConsumer processing - private int binNumber = -1; - private OspfInterface ospfInterface; - private LsdbAge lsdbAge; - private int ageCounterRollOverWhenAdded; - - public int getAgeCounterRollOverWhenAdded() { - return ageCounterRollOverWhenAdded; - } - - public void setAgeCounterRollOverWhenAdded(int ageCounterRollOverWhenAdded) { - this.ageCounterRollOverWhenAdded = ageCounterRollOverWhenAdded; - } - - /** - * Gets the LSA type. - * - * @return LSA type - */ - public OspfLsaType lsaType() { - return lsaType; - } - - /** - * Sets the LSA type. - * - * @param lsaType LSA type - */ - public void setLsaType(OspfLsaType lsaType) { - this.lsaType = lsaType; - } - - /** - * Gets if self originated or not. - * - * @return true if self originated else false - */ - public boolean isSelfOriginated() { - return isSelfOriginated; - } - - /** - * Sets if self originated or not. - * - * @param isSelfOriginated true if self originated else false - */ - public void setIsSelfOriginated(boolean isSelfOriginated) { - this.isSelfOriginated = isSelfOriginated; - } - - /** - * Adds the LSA in the wrapper. - * - * @param lsaType LSA type - * @param ospfLsa LSA instance - */ - public void addLsa(OspfLsaType lsaType, OspfLsa ospfLsa) { - this.lsaType = lsaType; - this.lsaHeader = (LsaHeader) ospfLsa.lsaHeader(); - this.ospfLsa = ospfLsa; - } - - /** - * Age of LSA when received. - * - * @return Age of LSA when received - */ - public int lsaAgeReceived() { - return lsaAgeReceived; - } - - /** - * Sets the Age of LSA when received. - * - * @param lsaAgeReceived Age of LSA when received - */ - public void setLsaAgeReceived(int lsaAgeReceived) { - this.lsaAgeReceived = lsaAgeReceived; - } - - /** - * Gets the LSA header. - * - * @return LSA header instance - */ - public LsaHeader lsaHeader() { - lsaHeader.setAge(currentAge()); - return lsaHeader; - } - - /** - * Sets LSA header. - * - * @param lsaHeader LSA header - */ - public void setLsaHeader(LsaHeader lsaHeader) { - this.lsaHeader = lsaHeader; - } - - /** - * Gets the LSA. - * - * @return LSA instance - */ - public OspfLsa ospfLsa() { - LsaHeader lsaHeader = (LsaHeader) ospfLsa; - lsaHeader.setAge(currentAge()); - - return lsaHeader; - } - - /** - * Sets the LSA. - * - * @param ospfLsa LSA instance - */ - public void setOspfLsa(OspfLsa ospfLsa) { - this.ospfLsa = ospfLsa; - } - - /** - * Gets number of LSAs in retransmission list. - * - * @return number of LSAs in retransmission list - */ - public int noReTransmissionLists() { - return noReTransmissionLists; - } - - /** - * Sets number of LSAs in retransmission list. - * - * @param noReTransmissionLists number of LSAs in retransmission list - */ - public void setNoReTransmissionLists(int noReTransmissionLists) { - this.noReTransmissionLists = noReTransmissionLists; - } - - /** - * whether LSA in age bin or not. - * - * @return true if LSA in age bin else false - */ - public boolean isInAnAgeBin() { - return inAnAgeBin; - } - - /** - * Sets whether LSA in age bin or not. - * - * @param inAnAgeBin whether LSA in age bin or not - */ - public void setInAnAgeBin(boolean inAnAgeBin) { - this.inAnAgeBin = inAnAgeBin; - } - - /** - * Gets if LSA is changed since last flood. - * - * @return true if LSA is changed since last flood else false - */ - public boolean isChangedSinceLastFlood() { - return changedSinceLastFlood; - } - - /** - * Sets if LSA is changed since last flood. - * - * @param changedSinceLastFlood true if LSA is changed since last flood else false - */ - public void setChangedSinceLastFlood(boolean changedSinceLastFlood) { - this.changedSinceLastFlood = changedSinceLastFlood; - } - - /** - * Gets if sequence number rolled over. - * - * @return true if sequence rolled over else false. - */ - public boolean isSequenceRollOver() { - return isSequenceRollOver; - } - - /** - * Sets if sequence number rolled over. - * - * @param isSequenceRollOver true if sequence rolled over else false - */ - public void setIsSequenceRollOver(boolean isSequenceRollOver) { - this.isSequenceRollOver = isSequenceRollOver; - } - - /** - * Gets is sent reply for older LSA. - * - * @return true if sent reply for old LSA else false - */ - public boolean isSentReplyForOlderLsa() { - return sentReplyForOlderLsa; - } - - /** - * Sets is sent reply for older lsa. - * - * @param sentReplyForOlderLsa true if sent reply for older lsa else false - */ - public void setSentReplyForOlderLsa(boolean sentReplyForOlderLsa) { - this.sentReplyForOlderLsa = sentReplyForOlderLsa; - } - - /** - * Gets check age flag. - * - * @return true check age flag is set else false - */ - public boolean isCheckAge() { - return checkAge; - } - - /** - * Sets check age flag. - * - * @param checkAge check age flag. - */ - public void setCheckAge(boolean checkAge) { - this.checkAge = checkAge; - } - - /** - * Gets value of aging flag. - * - * @return is aging flag - */ - public boolean isAging() { - return isAging; - } - - /** - * Sets aging flag. - * - * @param isAging is aging flag - */ - public void setIsAging(boolean isAging) { - this.isAging = isAging; - } - - /** - * Gets the LSDB age. - * - * @return LSDB age - */ - public LsdbAge getLsdbAge() { - return lsdbAge; - } - - /** - * Sets the LSDB age. - * - * @param lsdbAge LSDB age - */ - public void setLsdbAge(LsdbAge lsdbAge) { - this.lsdbAge = lsdbAge; - } - - /** - * Gets the current LSA Age. - * - * @return LSA age - */ - public int currentAge() { - - int currentAge = 0; - //ls age received - if (lsdbAge.getAgeCounter() >= ageCounterWhenReceived) { - currentAge = lsaAgeReceived + (lsdbAge.getAgeCounter() - ageCounterWhenReceived); - } else { - currentAge = lsaAgeReceived + ((OspfParameters.MAXAGE + lsdbAge.getAgeCounter()) - - ageCounterWhenReceived); - } - - if (currentAge >= OspfParameters.MAXAGE) { - return OspfParameters.MAXAGE; - } else if ((currentAge == lsaAgeReceived) && ageCounterRollOverWhenAdded != lsdbAge.getAgeCounterRollOver()) { - return OspfParameters.MAXAGE; - } - - return currentAge; - } - - /** - * Gets the age counter when received. - * - * @return the age counter when received - */ - public int ageCounterWhenReceived() { - return ageCounterWhenReceived; - } - - /** - * Sets the age counter when received. - * - * @param ageCounterWhenReceived the age counter when received - */ - public void setAgeCounterWhenReceived(int ageCounterWhenReceived) { - this.ageCounterWhenReceived = ageCounterWhenReceived; - } - - /** - * Gets the LSA process command. - * - * @return LSA process command - */ - public String lsaProcessing() { - return lsaProcessing; - } - - /** - * Sets the LSA process command. - * - * @param lsaProcessing LSA process command - */ - public void setLsaProcessing(String lsaProcessing) { - this.lsaProcessing = lsaProcessing; - } - - /** - * Gets bin number. - * - * @return bin number - */ - public int binNumber() { - return binNumber; - } - - /** - * Sets bin number. - * - * @param binNumber bin number - */ - public void setBinNumber(int binNumber) { - this.binNumber = binNumber; - } - - - /** - * Get the OSPF interface. - * - * @return the OSPF interface. - */ - public OspfInterface ospfInterface() { - return ospfInterface; - } - - /** - * Sets the OSPF interface. - * - * @param ospfInterface OSPF interface instance - */ - @Override - public void setOspfInterface(OspfInterface ospfInterface) { - this.ospfInterface = ospfInterface; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("lsaAgeReceived", lsaAgeReceived) - .add("ageCounterWhenReceived", ageCounterWhenReceived) - .add("isSelfOriginated", isSelfOriginated) - .add("lsaHeader", lsaHeader) - .add("lsaType", lsaType) - .add("ospflsa", ospfLsa) - .add("noReTransmissionLists", noReTransmissionLists) - .add("inAnAgeBin", inAnAgeBin) - .add("changedSinceLasFlood", changedSinceLastFlood) - .add("isSequenceRollOver", isSequenceRollOver) - .add("sentReplyForOlderLSA", sentReplyForOlderLsa) - .add("checkAge", checkAge) - .add("isAging", isAging) - .add("lsaProcessing", lsaProcessing) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - LsaWrapperImpl that = (LsaWrapperImpl) o; - return Objects.equal(lsaAgeReceived, that.lsaAgeReceived) && - Objects.equal(ageCounterWhenReceived, that.ageCounterWhenReceived) && - Objects.equal(isSelfOriginated, that.isSelfOriginated) && - Objects.equal(lsaHeader, that.lsaHeader) && - Objects.equal(ospfLsa, that.ospfLsa) && - Objects.equal(noReTransmissionLists, that.noReTransmissionLists) && - Objects.equal(inAnAgeBin, that.inAnAgeBin) && - Objects.equal(changedSinceLastFlood, that.changedSinceLastFlood) && - Objects.equal(isSequenceRollOver, that.isSequenceRollOver) && - Objects.equal(sentReplyForOlderLsa, that.sentReplyForOlderLsa) && - Objects.equal(checkAge, that.checkAge) && - Objects.equal(isAging, that.isAging) && - Objects.equal(lsaProcessing, that.lsaProcessing); - } - - @Override - public int hashCode() { - return Objects.hashCode(lsaAgeReceived, lsaAgeReceived, ageCounterWhenReceived, isSelfOriginated, - lsaHeader, lsaType, ospfLsa, noReTransmissionLists, inAnAgeBin, - changedSinceLastFlood, isSequenceRollOver, sentReplyForOlderLsa, - checkAge, isAging, lsaProcessing); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImpl.java deleted file mode 100644 index ea10996114..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImpl.java +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.lsdb; - -import com.google.common.base.Objects; -import org.jboss.netty.channel.Channel; -import org.onosproject.ospf.controller.LsaBin; -import org.onosproject.ospf.controller.LsaWrapper; -import org.onosproject.ospf.controller.LsdbAge; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Map; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -/** - * Representation of LSDB Aging process. - */ -public class LsdbAgeImpl implements LsdbAge { - - private static final Logger log = - LoggerFactory.getLogger(LsdbAgeImpl.class); - protected static int ageCounter = 0; - private InternalAgeTimer dbAgeTimer; - private ScheduledExecutorService exServiceage; - // creating age bins of MAXAGE - private Map ageBins = new ConcurrentHashMap<>(OspfParameters.MAXAGE); - private LsaBin maxAgeBin = new LsaBinImpl(OspfParameters.MAXAGE); - private int ageCounterRollOver = 0; - private Channel channel = null; - private LsaQueueConsumer queueConsumer = null; - private BlockingQueue lsaQueue = new ArrayBlockingQueue(1024); - private OspfArea ospfArea = null; - - - /** - * Creates an instance of LSDB age. - * - * @param ospfArea OSPF area instance - */ - public LsdbAgeImpl(OspfArea ospfArea) { - // create LSBin's in the HashMap. - for (int i = 0; i < OspfParameters.MAXAGE; i++) { - LsaBin lsaBin = new LsaBinImpl(i); - ageBins.put(i, lsaBin); - } - this.ospfArea = ospfArea; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - LsdbAgeImpl that = (LsdbAgeImpl) o; - return Objects.equal(ageBins, that.ageBins) && - Objects.equal(ageCounter, that.ageCounter) && - Objects.equal(ageCounterRollOver, that.ageCounterRollOver) && - Objects.equal(lsaQueue, that.lsaQueue); - } - - @Override - public int hashCode() { - return Objects.hashCode(ageBins, ageCounter, ageCounterRollOver, lsaQueue); - } - - /** - * Adds LSA to bin. - * - * @param binKey key to store in bin - * @param lsaBin LSA bin instance - */ - @Override - public void addLsaBin(Integer binKey, LsaBin lsaBin) { - if (!ageBins.containsKey(binKey)) { - ageBins.put(binKey, lsaBin); - } - } - - /** - * Gets LSA from Bin. - * - * @param binKey key - * @return bin instance - */ - @Override - public LsaBin getLsaBin(Integer binKey) { - - return ageBins.get(binKey); - } - - /** - * Adds the LSA to maxAge bin. - * - * @param key key - * @param wrapper wrapper instance - */ - @Override - public void addLsaToMaxAgeBin(String key, LsaWrapper wrapper) { - maxAgeBin.addOspfLsa(key, wrapper); - } - - /** - * Removes LSA from Bin. - * - * @param lsaWrapper wrapper instance - */ - @Override - public void removeLsaFromBin(LsaWrapper lsaWrapper) { - if (ageBins.containsKey(lsaWrapper.binNumber())) { - LsaBin lsaBin = ageBins.get(lsaWrapper.binNumber()); - lsaBin.removeOspfLsa(((OspfAreaImpl) ospfArea).getLsaKey(((LsaWrapperImpl) - lsaWrapper).lsaHeader()), lsaWrapper); - } - } - - /** - * Starts the aging timer and queue consumer. - */ - @Override - public void startDbAging() { - startDbAgeTimer(); - queueConsumer = new LsaQueueConsumer(lsaQueue, channel, ospfArea); - new Thread(queueConsumer).start(); - } - - - /** - * Gets called every 1 second as part of the timer. - */ - @Override - public void ageLsaAndFlood() { - //every 5 mins checksum validation - checkAges(); - //every 30 mins - flood LSA - refreshLsa(); - //every 60 mins - flood LSA - maxAgeLsa(); - - if (ageCounter == OspfParameters.MAXAGE) { - ageCounter = 0; - ageCounterRollOver++; - } else { - //increment age bin - ageCounter++; - } - } - - /** - * If the LSA have completed the MaxAge - they are moved called stop aging and flooded. - */ - @Override - public void maxAgeLsa() { - if (ageCounter == 0) { - return; - } - //Get from Age Bins - LsaBin lsaBin = ageBins.get(ageCounter - 1); - if (lsaBin == null) { - return; - } - Map lsaBinMap = lsaBin.listOfLsa(); - for (Object key : lsaBinMap.keySet()) { - LsaWrapper lsa = (LsaWrapper) lsaBinMap.get(key); - if (lsa.currentAge() == OspfParameters.MAXAGE) { - lsa.setLsaProcessing(OspfParameters.MAXAGELSA); - log.debug("Lsa picked for maxage flooding. Age Counter: {}, AgeCounterRollover: {}, " + - "AgeCounterRollover WhenAddedToDb: {}, LSA Type: {}, LSA Key: {}", - ageCounter, ageCounterRollOver, lsa.currentAge(), lsa.lsaType(), key); - //add it to lsaQueue for processing - try { - lsaQueue.put(lsa); - //remove from bin - lsaBin.removeOspfLsa((String) key, lsa); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - log.debug("Error::LSDBAge::maxAgeLsa::{}", e.getMessage()); - } - } - } - - //Get from maxAgeBin - Map lsaMaxAgeBinMap = maxAgeBin.listOfLsa(); - for (Object key : lsaMaxAgeBinMap.keySet()) { - LsaWrapper lsa = (LsaWrapper) lsaMaxAgeBinMap.get(key); - lsa.setLsaProcessing(OspfParameters.MAXAGELSA); - log.debug("Lsa picked for maxage flooding. Age Counter: {}, LSA Type: {}, LSA Key: {}", - ageCounter, lsa.lsaType(), key); - //add it to lsaQueue for processing - try { - lsaQueue.put(lsa); - //remove from bin - maxAgeBin.removeOspfLsa((String) key, lsa); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - log.debug("Error::LSDBAge::maxAgeLsa::{}", e.getMessage()); - } - } - } - - - /* - * If the LSA is in age bin of 1800 - it's pushed into refresh list. - */ - @Override - public void refreshLsa() { - int binNumber; - if (ageCounter < OspfParameters.LSREFRESHTIME) { - binNumber = ageCounter + OspfParameters.LSREFRESHTIME; - } else { - binNumber = ageCounter - OspfParameters.LSREFRESHTIME; - } - LsaBin lsaBin = ageBins.get(binNumber); - if (lsaBin == null) { - return; - } - Map lsaBinMap = lsaBin.listOfLsa(); - for (Object key : lsaBinMap.keySet()) { - LsaWrapper lsa = (LsaWrapper) lsaBinMap.get(key); - try { - if (lsa.isSelfOriginated()) { - log.debug("Lsa picked for refreshLsa. binNumber: {}, LSA Type: {}, LSA Key: {}", - binNumber, lsa.lsaType(), key); - lsa.setLsaProcessing(OspfParameters.REFRESHLSA); - lsaQueue.put(lsa); - //remove from bin - lsaBin.removeOspfLsa((String) key, lsa); - } - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - log.debug("Error::LSDBAge::refreshLsa::{}", e.getMessage()); - } - } - } - - /** - * Verify the checksum for the LSAs who are in bins of 300 and it's multiples. - */ - public void checkAges() { - //evry 5 min age counter + multiples of 300 - for (int age = OspfParameters.CHECKAGE; age < OspfParameters.MAXAGE; - age += OspfParameters.CHECKAGE) { - LsaBin lsaBin = ageBins.get(age2Bin(age)); - if (lsaBin == null) { - continue; - } - Map lsaBinMap = lsaBin.listOfLsa(); - for (Object key : lsaBinMap.keySet()) { - LsaWrapper lsa = (LsaWrapper) lsaBinMap.get(key); - lsa.setLsaProcessing(OspfParameters.VERIFYCHECKSUM); - try { - lsaQueue.put(lsa); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - log.debug("Error::LSDBAge::checkAges::{}", e.getMessage()); - } - } - } - } - - - /** - * Starts DB age timer method start the aging task. - */ - private void startDbAgeTimer() { - log.debug("OSPFNbr::startWaitTimer"); - dbAgeTimer = new InternalAgeTimer(); - //from 1 sec - exServiceage = Executors.newSingleThreadScheduledExecutor(); - exServiceage.scheduleAtFixedRate(dbAgeTimer, OspfParameters.AGECOUNTER, - OspfParameters.AGECOUNTER, TimeUnit.SECONDS); - } - - /** - * Stops the aging task. - */ - private void stopDbAgeTimer() { - log.debug("OSPFNbr::stopWaitTimer "); - exServiceage.shutdown(); - } - - - /** - * Gets the netty channel. - * - * @return netty channel - */ - public Channel getChannel() { - return channel; - } - - /** - * Sets the netty channel. - * - * @param channel netty channel - */ - public void setChannel(Channel channel) { - - this.channel = channel; - if (queueConsumer != null) { - queueConsumer.setChannel(channel); - } - } - - /** - * Gets the age counter. - * - * @return ageCounter - */ - @Override - public int getAgeCounter() { - return ageCounter; - } - - /** - * Gets the age counter roll over value. - * - * @return the age counter roll over value - */ - @Override - public int getAgeCounterRollOver() { - return ageCounterRollOver; - } - - /** - * Gets the max age bin. - * - * @return lsa bin instance - */ - @Override - public LsaBin getMaxAgeBin() { - return maxAgeBin; - } - - /** - * Gets the bin number. - * - * @param x Can be either age or ageCounter - * @return bin number. - */ - @Override - public int age2Bin(int x) { - if (x <= ageCounter) { - return (ageCounter - x); - } else { - return ((OspfParameters.MAXAGE - 1) + (ageCounter - x)); - } - } - - /** - * Runnable task which runs every second and calls aging process. - */ - private class InternalAgeTimer implements Runnable { - - /** - * Constructor. - */ - InternalAgeTimer() { - log.debug("Starts::LsdbAge::AgeTimer...!!! "); - } - - @Override - public void run() { - ageLsaAndFlood(); - } - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImpl.java deleted file mode 100644 index a494afae9b..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImpl.java +++ /dev/null @@ -1,484 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.lsdb; - -import com.google.common.base.Objects; -import org.onosproject.ospf.controller.LsaBin; -import org.onosproject.ospf.controller.LsaWrapper; -import org.onosproject.ospf.controller.LsdbAge; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.OspfLsdb; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArrayList; - -/** - * Represents the Link State Database. - */ -public class OspfLsdbImpl implements OspfLsdb { - private static final Logger log = LoggerFactory.getLogger(OspfLsdbImpl.class); - private Map routerLsas = new HashMap(); - private Map networkLsas = new HashMap(); - private Map summaryLsas = new HashMap(); - private Map asbrSummaryLSAs = new HashMap(); - private Map opaque9Lsas = new HashMap(); - private Map opaque10Lsas = new HashMap(); - private Map opaque11Lsas = new HashMap(); - private Map externalLsas = new HashMap(); - private long routerLsaSeqNo = OspfParameters.STARTLSSEQUENCENUM; - private long networkLsaSeqNo = OspfParameters.STARTLSSEQUENCENUM; - private LsdbAge lsdbAge = null; - private OspfArea ospfArea = null; - - - /** - * Creates an instance of OSPF LSDB. - * - * @param ospfArea area instance - */ - public OspfLsdbImpl(OspfArea ospfArea) { - this.ospfArea = ospfArea; - lsdbAge = new LsdbAgeImpl(ospfArea); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - OspfLsdbImpl that = (OspfLsdbImpl) o; - return Objects.equal(routerLsas.size(), that.routerLsas.size()) && - Objects.equal(networkLsas.size(), that.networkLsas.size()) && - Objects.equal(summaryLsas.size(), that.summaryLsas.size()) && - Objects.equal(asbrSummaryLSAs.size(), that.asbrSummaryLSAs.size()) && - Objects.equal(lsdbAge, that.lsdbAge) && - Objects.equal(routerLsaSeqNo, that.routerLsaSeqNo) && - Objects.equal(networkLsaSeqNo, that.networkLsaSeqNo); - } - - @Override - public int hashCode() { - return Objects.hashCode(routerLsas, networkLsas, summaryLsas, asbrSummaryLSAs, lsdbAge, - routerLsaSeqNo, networkLsaSeqNo); - } - - /** - * Initializes the link state database. - */ - public void initializeDb() { - lsdbAge.startDbAging(); - } - - /** - * Returns all LSA Headers (Router and Summary) in a Vector. - * - * @param excludeMaxAgeLsa exclude the max age LSAs - * @param isOpaqueCapable is opaque capable or not - * @return List of LSA headers - */ - public List getAllLsaHeaders(boolean excludeMaxAgeLsa, boolean isOpaqueCapable) { - List summList = new CopyOnWriteArrayList(); - addLsaToHeaderList(summList, excludeMaxAgeLsa, routerLsas); - addLsaToHeaderList(summList, excludeMaxAgeLsa, networkLsas); - addLsaToHeaderList(summList, excludeMaxAgeLsa, summaryLsas); - addLsaToHeaderList(summList, excludeMaxAgeLsa, asbrSummaryLSAs); - addLsaToHeaderList(summList, excludeMaxAgeLsa, externalLsas); - if (isOpaqueCapable) { - addLsaToHeaderList(summList, excludeMaxAgeLsa, opaque9Lsas); - addLsaToHeaderList(summList, excludeMaxAgeLsa, opaque10Lsas); - addLsaToHeaderList(summList, excludeMaxAgeLsa, opaque11Lsas); - } - - return summList; - } - - /** - * Adds the LSAs to summary list. - * - * @param summList summary list - * @param excludeMaxAgeLsa exclude max age LSA - * @param lsaMap map of LSA - */ - private void addLsaToHeaderList(List summList, boolean excludeMaxAgeLsa, Map lsaMap) { - Iterator slotVals = lsaMap.values().iterator(); - while (slotVals.hasNext()) { - LsaWrapper wrapper = (LsaWrapper) slotVals.next(); - if (excludeMaxAgeLsa) { - //if current age of lsa is max age or lsa present in Max Age bin - if (wrapper.currentAge() != OspfParameters.MAXAGE && - lsdbAge.getMaxAgeBin().ospfLsa(((OspfAreaImpl) - ospfArea).getLsaKey(((LsaWrapperImpl) wrapper).lsaHeader())) == null) { - addToList(wrapper, summList); - } - } else { - addToList(wrapper, summList); - } - } - } - - /** - * Adds the LSWrapper to summary list. - * - * @param wrapper LSA wrapper instance - * @param summList LSA summary list - */ - private void addToList(LsaWrapper wrapper, List summList) { - LsaHeader header = (LsaHeader) wrapper.ospfLsa(); - //set the current age - header.setAge(wrapper.currentAge()); - summList.add(header); - } - - /** - * Gets the LSDB LSA key from Lsa Header. - * - * @param lsaHeader LSA header instance - * @return key - */ - public String getLsaKey(LsaHeader lsaHeader) { - String lsaKey = ""; - switch (lsaHeader.lsType()) { - case OspfParameters.LINK_LOCAL_OPAQUE_LSA: - case OspfParameters.AREA_LOCAL_OPAQUE_LSA: - case OspfParameters.AS_OPAQUE_LSA: - OpaqueLsaHeader header = (OpaqueLsaHeader) lsaHeader; - lsaKey = lsaHeader.lsType() + "-" + header.opaqueType() + header.opaqueId() + "-" + - lsaHeader.advertisingRouter(); - break; - case OspfParameters.ROUTER: - case OspfParameters.NETWORK: - case OspfParameters.ASBR_SUMMARY: - case OspfParameters.SUMMARY: - case OspfParameters.EXTERNAL_LSA: - lsaKey = lsaHeader.lsType() + "-" + lsaHeader.linkStateId() + "-" + - lsaHeader.advertisingRouter(); - break; - default: - log.debug("Unknown LSA type..!!!"); - break; - } - - return lsaKey; - } - - /** - * Gets wrapper instance in LSDB. - * - * @param lsaHeader LSA header instance. - * @return LSA Wrapper instance. - */ - public LsaWrapper lsaLookup(LsaHeader lsaHeader) { - - return findLsa(lsaHeader.lsType(), getLsaKey(lsaHeader)); - } - - /** - * Finds the LSA from appropriate maps. - * - * @param lsType type of LSA - * @param lsaKey key - * @return LSA wrapper object - */ - public LsaWrapper findLsa(int lsType, String lsaKey) { - LsaWrapper lsaWrapper = null; - - switch (lsType) { - case OspfParameters.LINK_LOCAL_OPAQUE_LSA: - lsaWrapper = (LsaWrapper) opaque9Lsas.get(lsaKey); - break; - case OspfParameters.AREA_LOCAL_OPAQUE_LSA: - lsaWrapper = (LsaWrapper) opaque10Lsas.get(lsaKey); - break; - case OspfParameters.AS_OPAQUE_LSA: - lsaWrapper = (LsaWrapper) opaque11Lsas.get(lsaKey); - break; - case OspfParameters.ROUTER: - lsaWrapper = (LsaWrapper) routerLsas.get(lsaKey); - break; - case OspfParameters.NETWORK: - lsaWrapper = (LsaWrapper) networkLsas.get(lsaKey); - break; - case OspfParameters.ASBR_SUMMARY: - lsaWrapper = (LsaWrapper) asbrSummaryLSAs.get(lsaKey); - break; - case OspfParameters.SUMMARY: - lsaWrapper = (LsaWrapper) summaryLsas.get(lsaKey); - break; - case OspfParameters.EXTERNAL_LSA: - lsaWrapper = (LsaWrapper) externalLsas.get(lsaKey); - break; - default: - log.debug("Unknown LSA type..!!!"); - break; - } - - //set the current age - if (lsaWrapper != null) { - //set the current age - ((LsaWrapperImpl) lsaWrapper).lsaHeader().setAge(lsaWrapper.currentAge()); - ((LsaHeader) lsaWrapper.ospfLsa()).setAge(lsaWrapper.currentAge()); - } - - return lsaWrapper; - } - - - /** - * Installs a new self-originated LSA if possible. - * Return true if installing was successful else false. - * - * @param newLsa LSA header instance - * @param isSelfOriginated is self originated or not - * @param ospfInterface OSPF interface instance - * @return true if successfully added - */ - public boolean addLsa(LsaHeader newLsa, boolean isSelfOriginated, OspfInterface ospfInterface) { - - LsaWrapperImpl lsaWrapper = new LsaWrapperImpl(); - lsaWrapper.setLsaType(newLsa.getOspfLsaType()); - lsaWrapper.setOspfLsa(newLsa); - lsaWrapper.setLsaHeader(newLsa); - lsaWrapper.setLsaAgeReceived(newLsa.age()); - lsaWrapper.setAgeCounterWhenReceived(lsdbAge.getAgeCounter()); - lsaWrapper.setAgeCounterRollOverWhenAdded(lsdbAge.getAgeCounterRollOver()); - lsaWrapper.setIsSelfOriginated(isSelfOriginated); - lsaWrapper.setIsSelfOriginated(isSelfOriginated); - lsaWrapper.setOspfInterface(ospfInterface); - lsaWrapper.setLsdbAge(lsdbAge); - addLsa(lsaWrapper); - - log.debug("Added LSA In LSDB: {}", newLsa); - - return true; - } - - /** - * Installs a new self-originated LSA if possible. - * Return true if installing was successful else false. - * Adding LSA In cases - * 1) New Self Originated LSA based on change in topology - * 2) New Self Originated LSA because of LSRefresh - * 2) New LSA received via Link State Update Packet - * - * @param newLsa LSA wrapper instance - * @return true if added successfully - */ - private boolean addLsa(LsaWrapper newLsa) { - // adding an LSA - verify if it's old or new - // verify min failed - // to verify if it's a new LSA or updating the old LSA . - // fetch the LSA Type - // verify if the LSA age is ! Max Age - // a) it is received during the flooding process (Section 13) - // b) it is originated by the router itself (Section 12.4) - // start aging . - String key = getLsaKey(((LsaWrapperImpl) newLsa).lsaHeader()); - //Remove the lsa from bin if exist. we will be adding it in new bin based on the current age. - removeLsaFromBin(lsaLookup(((LsaWrapperImpl) newLsa).lsaHeader())); - - switch (((LsaWrapperImpl) newLsa).lsaHeader().lsType()) { - - case OspfParameters.LINK_LOCAL_OPAQUE_LSA: - opaque9Lsas.put(key, newLsa); - break; - case OspfParameters.AREA_LOCAL_OPAQUE_LSA: - opaque10Lsas.put(key, newLsa); - break; - case OspfParameters.AS_OPAQUE_LSA: - opaque11Lsas.put(key, newLsa); - break; - case OspfParameters.ROUTER: - routerLsas.put(key, newLsa); - break; - case OspfParameters.NETWORK: - networkLsas.put(key, newLsa); - break; - case OspfParameters.ASBR_SUMMARY: - asbrSummaryLSAs.put(key, newLsa); - break; - case OspfParameters.SUMMARY: - summaryLsas.put(key, newLsa); - break; - case OspfParameters.EXTERNAL_LSA: - externalLsas.put(key, newLsa); - break; - default: - log.debug("Unknown LSA type to add..!!!"); - break; - } - //add it to bin - Integer binNumber = lsdbAge.age2Bin(((LsaWrapperImpl) newLsa).lsaHeader().age()); - LsaBin lsaBin = lsdbAge.getLsaBin(binNumber); - if (lsaBin != null) { - //remove from existing - newLsa.setBinNumber(binNumber); - lsaBin.addOspfLsa(key, newLsa); - lsdbAge.addLsaBin(binNumber, lsaBin); - log.debug("Added Type {} LSA to LSDB and LSABin[{}], Age of LSA {}", newLsa.lsaType(), - binNumber, ((LsaWrapperImpl) newLsa).lsaHeader().age()); - } - - return false; - } - - /** - * Adds the LSA to maxAge bin. - * - * @param key key - * @param wrapper LSA wrapper instance - */ - public void addLsaToMaxAgeBin(String key, Object wrapper) { - lsdbAge.addLsaToMaxAgeBin(key, (LsaWrapper) wrapper); - } - - /** - * Removes LSA from Bin. - * - * @param lsaWrapper LSA wrapper instance - */ - public void removeLsaFromBin(Object lsaWrapper) { - if (lsaWrapper != null) { - lsdbAge.removeLsaFromBin((LsaWrapper) lsaWrapper); - } - } - - /** - * RFC 2328 - Section 13.1. Determining which LSA is newer. - * - * @param lsa1 LSA instance - * @param lsa2 LSA instance - * @return string status - */ - public String isNewerOrSameLsa(LsaHeader lsa1, LsaHeader lsa2) { - if (lsa1.lsSequenceNo() > lsa2.lsSequenceNo()) { - return "latest"; - } else if (lsa1.lsSequenceNo() < lsa2.lsSequenceNo()) { - return "old"; - } else if (lsa1.lsSequenceNo() == lsa2.lsSequenceNo()) { - if (lsa1.lsCheckSum() > lsa2.lsCheckSum()) { - return "latest"; - } else if (lsa1.lsCheckSum() < lsa2.lsCheckSum()) { - return "old"; - } else if (lsa1.lsCheckSum() == lsa2.lsCheckSum()) { - if (lsa1.age() == lsa2.age()) { - return "same"; - } else if (lsa1.age() == OspfParameters.MAXAGE) { - return "latest"; - } else if (lsa2.age() == OspfParameters.MAXAGE) { - return "old"; - } else if (OspfParameters.MAXAGEDIFF == (lsa1.age() - lsa2.age())) { - if (lsa1.age() < lsa2.age()) { - return "latest"; - } else { - return "old"; - } - } else { - return "same"; - } - } - } - - return ""; - } - - /** - * Gets the sequence number. - * - * @param lsaType type of LSA - * @return sequence number - */ - public long getLsSequenceNumber(OspfLsaType lsaType) { - switch (lsaType) { - case ROUTER: - return routerLsaSeqNo++; - case NETWORK: - return networkLsaSeqNo++; - default: - return OspfParameters.STARTLSSEQUENCENUM; - } - } - - /** - * Deletes the given LSA. - * - * @param lsaHeader LSA header instance - */ - public void deleteLsa(LsaHeader lsaHeader) { - - String lsaKey = getLsaKey(lsaHeader); - switch (lsaHeader.lsType()) { - case OspfParameters.LINK_LOCAL_OPAQUE_LSA: - opaque9Lsas.remove(lsaKey); - break; - case OspfParameters.AREA_LOCAL_OPAQUE_LSA: - opaque10Lsas.remove(lsaKey); - break; - case OspfParameters.AS_OPAQUE_LSA: - opaque11Lsas.remove(lsaKey); - break; - case OspfParameters.ROUTER: - routerLsas.remove(lsaKey); - break; - case OspfParameters.NETWORK: - networkLsas.remove(lsaKey); - break; - case OspfParameters.ASBR_SUMMARY: - asbrSummaryLSAs.remove(lsaKey); - break; - case OspfParameters.SUMMARY: - summaryLsas.remove(lsaKey); - break; - case OspfParameters.EXTERNAL_LSA: - externalLsas.remove(lsaKey); - break; - default: - log.debug("Unknown LSA type to delete..!!!"); - break; - } - } - - /** - * Sets sequence number. - * - * @param routerLsaSeqNo sequence number - */ - public void setRouterLsaSeqNo(long routerLsaSeqNo) { - this.routerLsaSeqNo = routerLsaSeqNo; - } - - /** - * Sets sequence number. - * - * @param networkLsaSeqNo sequence number - */ - public void setNetworkLsaSeqNo(long networkLsaSeqNo) { - this.networkLsaSeqNo = networkLsaSeqNo; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/package-info.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/package-info.java deleted file mode 100644 index 6c8f422940..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/lsdb/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF Link state database and Ageing. - */ -package org.onosproject.ospf.controller.lsdb; \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfEligibleRouter.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfEligibleRouter.java deleted file mode 100644 index 3e8acda9f8..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfEligibleRouter.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.util; - -import org.onlab.packet.Ip4Address; - -/** - * Represents a router who is eligible for DR election. - */ -public class OspfEligibleRouter { - - private Ip4Address ipAddress; - private Ip4Address routerId; - private int routerPriority; - private boolean isDr; - private boolean isBdr; - - /** - * Creates an instance. - * Initialize IP address of eligible router. - */ - public OspfEligibleRouter() { - ipAddress = Ip4Address.valueOf("0.0.0.0"); - } - - /** - * Gets the value of IP address. - * - * @return IP address - */ - public Ip4Address getIpAddress() { - return ipAddress; - } - - /** - * Sets the value of IP address. - * - * @param ipAddress IP address - */ - public void setIpAddress(Ip4Address ipAddress) { - this.ipAddress = ipAddress; - } - - /** - * Gets the value of router id. - * - * @return router id. - */ - public Ip4Address getRouterId() { - return routerId; - } - - /** - * Sets the value of router id. - * - * @param routerId router id - */ - public void setRouterId(Ip4Address routerId) { - this.routerId = routerId; - } - - /** - * Gets the value of router priority. - * - * @return router priority. - */ - public int getRouterPriority() { - return routerPriority; - } - - /** - * Sets the value of router priority. - * - * @param routerPriority router priority - */ - public void setRouterPriority(int routerPriority) { - this.routerPriority = routerPriority; - } - - /** - * Gets whether the router is DR. - * - * @return boolean true if router is DR else return false. - */ - public boolean isDr() { - return isDr; - } - - /** - * Sets the router is DR or not. - * - * @param isDr router is DR or not - */ - public void setIsDr(boolean isDr) { - this.isDr = isDr; - } - - /** - * Gets whether the router is BDR or not. - * - * @return boolean true if router is Bdr else return false. - */ - public boolean isBdr() { - return isBdr; - } - - /** - * Sets the router is BDR or not. - * - * @param isBdr the router is BDR or not - */ - public void setIsBdr(boolean isBdr) { - this.isBdr = isBdr; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfInterfaceType.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfInterfaceType.java deleted file mode 100644 index c173884082..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfInterfaceType.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.util; - -/** - * Enum represents OSPF interface types. - */ -public enum OspfInterfaceType { - - POINT_TO_POINT(1), - BROADCAST(2), - VIRTUAL(3); - - private int value; - - /** - * Creates an instance. - * - * @param value value represents interface type - */ - OspfInterfaceType(int value) { - this.value = value; - } - - /** - * Gets value represents interface type. - * - * @return value represents interface type - */ - public int value() { - return value; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfLinkType.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfLinkType.java deleted file mode 100644 index ad38ceaf1f..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/OspfLinkType.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.util; - -/** - * Enum represents OSPF link type. - */ -public enum OspfLinkType { - - /** - * Indicates a point-to-point connection to another router. - */ - POINT_TO_POINT, - - /** - * Indicates a connection to a transit network. - */ - TO_TRANSIT_NET, - - /** - * Indicates a connection to a stub network. - */ - TO_STUB_NET, - - /** - * Indicates a Virtual link to another area border router. - */ - VIRTUAL_LINK -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/package-info.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/package-info.java deleted file mode 100644 index e1fad0df07..0000000000 --- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/util/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF utilities. - */ -package org.onosproject.ospf.controller.util; \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/ConfigurationTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/ConfigurationTest.java deleted file mode 100644 index 9583e176dc..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/ConfigurationTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.area; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.controller.OspfProcess; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for Configuration. - */ -public class ConfigurationTest { - private Configuration configuration; - private List ospfProcesses; - private List result; - private OspfProcessImpl ospfProcessImpl; - - @Before - public void setUp() throws Exception { - configuration = new Configuration(); - } - - @After - public void tearDown() throws Exception { - configuration = null; - ospfProcessImpl = new OspfProcessImpl(); - result = null; - ospfProcesses = null; - } - - /** - * Tests getProcesses() getter method. - */ - @Test - public void testGetOspfProcess() throws Exception { - ospfProcesses = new ArrayList(); - ospfProcesses.add(ospfProcessImpl); - ospfProcesses.add(ospfProcessImpl); - configuration.setProcesses(ospfProcesses); - result = configuration.getProcesses(); - assertThat(result.size(), is(2)); - } - - /** - * Tests setProcesses() setter method. - */ - @Test - public void testSetOspfProcess() throws Exception { - ospfProcesses = new ArrayList(); - ospfProcesses.add(ospfProcessImpl); - ospfProcesses.add(ospfProcessImpl); - configuration.setProcesses(ospfProcesses); - result = configuration.getProcesses(); - assertThat(result.size(), is(2)); - } - - /** - * Tests getMethod() getter method. - */ - @Test - public void testGetMethod() throws Exception { - configuration.setMethod("method"); - assertThat(configuration.getMethod(), is("method")); - } - - /** - * Tests setMethod() setter method. - */ - @Test - public void testSetMethod() throws Exception { - configuration.setMethod("method"); - assertThat(configuration.getMethod(), is("method")); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(configuration.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImplTest.java deleted file mode 100644 index d294db1324..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaAddressRangeImplTest.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.area; - - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfAreaAddressRange; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfAreaAddressRangeImpl. - */ -public class OspfAreaAddressRangeImplTest { - - private OspfAreaAddressRange ospfAreaAddressRange; - private int result; - private String result1; - - @Before - public void setUp() throws Exception { - ospfAreaAddressRange = new OspfAreaAddressRangeImpl(); - } - - @After - public void tearDown() throws Exception { - ospfAreaAddressRange = null; - } - - /** - * Tests ipAddress() getter method. - */ - @Test - public void testGetIpAddress() throws Exception { - ospfAreaAddressRange.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfAreaAddressRange.ipAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests ipAddress() setter method. - */ - @Test - public void testSetIpAddress() throws Exception { - ospfAreaAddressRange.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfAreaAddressRange.ipAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests mask() getter method. - */ - @Test - public void testGetMask() throws Exception { - ospfAreaAddressRange.setMask("1.1.1.1"); - assertThat(ospfAreaAddressRange.mask(), is("1.1.1.1")); - } - - /** - * Tests mask() setter method. - */ - @Test - public void testSetMask() throws Exception { - ospfAreaAddressRange.setMask("1.1.1.1"); - assertThat(ospfAreaAddressRange.mask(), is("1.1.1.1")); - } - - /** - * Tests isAdvertise() getter method. - */ - @Test - public void testIsAdvertise() throws Exception { - ospfAreaAddressRange.setAdvertise(true); - assertThat(ospfAreaAddressRange.isAdvertise(), is(true)); - } - - /** - * Tests isAdvertise() setter method. - */ - @Test - public void testSetAdvertise() throws Exception { - ospfAreaAddressRange.setAdvertise(true); - assertThat(ospfAreaAddressRange.isAdvertise(), is(true)); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(ospfAreaAddressRange.equals(new OspfAreaAddressRangeImpl()), is(true)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - result = ospfAreaAddressRange.hashCode(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - result1 = ospfAreaAddressRange.toString(); - assertThat(result1, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaImplTest.java deleted file mode 100644 index 79689c023a..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfAreaImplTest.java +++ /dev/null @@ -1,468 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.area; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfNeighborState; -import org.onosproject.ospf.controller.TopologyForDeviceAndLink; -import org.onosproject.ospf.controller.impl.OspfNbrImpl; -import org.onosproject.ospf.controller.impl.TopologyForDeviceAndLinkImpl; -import org.onosproject.ospf.controller.lsdb.LsaWrapperImpl; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.types.NetworkLsa; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.util.OspfInterfaceState; -import org.onosproject.ospf.protocol.util.OspfParameters; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.*; - -/** - * Unit test class for OspfAreaImpl. - */ -public class OspfAreaImplTest { - - private OspfAreaImpl ospfArea; - private int result; - private List ospfInterfaces = new ArrayList<>(); - private OspfInterfaceImpl ospfInterface1; - private OspfInterfaceImpl ospfInterface2; - private OspfInterfaceImpl ospfInterface3; - private OspfNbrImpl ospfNbr; - private OspfNbrImpl ospfNbr1; - private NetworkLsa networkLsa; - private LsaHeader lsaHeader; - private Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10"); - private Ip4Address ip4Address1 = Ip4Address.valueOf("11.11.11.11"); - private Ip4Address networkAddress = Ip4Address.valueOf("255.255.255.255"); - private TopologyForDeviceAndLink topologyForDeviceAndLink; - private RouterLsa routerLsa; - private OpaqueLsaHeader opaqueLsaHeader; - private OpaqueLsa10 opaqueLsa10; - - @Before - public void setUp() throws Exception { - lsaHeader = new LsaHeader(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setAdvertisingRouter(ip4Address); - lsaHeader.setAdvertisingRouter(ip4Address); - routerLsa = new RouterLsa(lsaHeader); - routerLsa.setAdvertisingRouter(ip4Address); - opaqueLsa10 = new OpaqueLsa10(opaqueLsaHeader); - ospfArea = new OspfAreaImpl(); - ospfInterface1 = new OspfInterfaceImpl(); - topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface1, ip4Address, ip4Address1, - 2, topologyForDeviceAndLink); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfNbr1 = new OspfNbrImpl(ospfArea, ospfInterface1, ip4Address, ip4Address1, - 2, topologyForDeviceAndLink); - ospfNbr1.setState(OspfNeighborState.FULL); - ospfNbr1.setNeighborId(ip4Address); - ospfNbr.setNeighborId(ip4Address); - ospfNbr.setIsOpaqueCapable(true); - ospfInterface1.addNeighbouringRouter(ospfNbr); - ospfInterface1.addNeighbouringRouter(ospfNbr1); - ospfInterface2 = new OspfInterfaceImpl(); - ospfInterface2.setIpAddress(ip4Address); - ospfInterface2.setIpNetworkMask(networkAddress); - ospfInterface2.setState(OspfInterfaceState.LOOPBACK); - ospfInterface2.addNeighbouringRouter(ospfNbr); - ospfInterface2.addNeighbouringRouter(ospfNbr1); - ospfInterfaces.add(ospfInterface2); - } - - @After - public void tearDown() throws Exception { - ospfArea = null; - ospfInterfaces = null; - lsaHeader = null; - networkLsa = null; - ospfInterface1 = null; - ospfInterface2 = null; - ospfInterface3 = null; - - } - - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - result = ospfArea.hashCode(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests routerId() getter method. - */ - @Test - public void testGetRouterId() throws Exception { - ospfArea.setRouterId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfArea.routerId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests routerId() setter method. - */ - @Test - public void testSetRouterId() throws Exception { - ospfArea.setRouterId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfArea.routerId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests isOpaqueEnabled() getter method. - */ - @Test - public void testSetisOpaqueEnabled() throws Exception { - ospfArea.setIsOpaqueEnabled(true); - assertThat(ospfArea.isOpaqueEnabled(), is(true)); - } - - /** - * Tests isOpaqueEnabled() setter method. - */ - @Test - public void testIsOpaqueEnabled() throws Exception { - ospfArea.setIsOpaqueEnabled(true); - assertThat(ospfArea.isOpaqueEnabled(), is(true)); - } - - /** - * Tests initializeDb() method. - */ - @Test - public void testInitializeDb() throws Exception { - ospfArea.initializeDb(); - assertThat(ospfArea, is(notNullValue())); - } - - - /** - * Tests buildNetworkLsa() method. - */ - @Test - public void testBuildNetworkLsa() throws Exception { - ospfInterfaces = new ArrayList(); - ospfInterface1 = new OspfInterfaceImpl(); - ospfInterface1.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfInterfaces.add(ospfInterface1); - ospfInterface2 = new OspfInterfaceImpl(); - ospfInterface2.setIpAddress(Ip4Address.valueOf("2.2.2.2")); - ospfInterfaces.add(ospfInterface2); - ospfInterface3 = new OspfInterfaceImpl(); - ospfInterface3.setIpAddress(Ip4Address.valueOf("3.3.3.3")); - ospfInterfaces.add(ospfInterface3); - ospfArea.setOspfInterfaceList(ospfInterfaces); - ospfArea.setRouterId(Ip4Address.valueOf("111.111.111.111")); - networkLsa = ospfArea.buildNetworkLsa(Ip4Address.valueOf("1.1.1.1"), - Ip4Address.valueOf("255.255.255.255")); - assertThat(ospfInterfaces.size(), is(3)); - assertThat(networkLsa, is(notNullValue())); - assertThat(ospfArea, is(notNullValue())); - } - - - /** - * Tests areaId() getter method. - */ - @Test - public void testGetAreaId() throws Exception { - ospfArea.setAreaId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfArea.areaId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests areaId() setter method. - */ - @Test - public void testSetAreaId() throws Exception { - ospfArea.setAreaId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfArea.areaId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - - /** - * Tests isExternalRoutingCapability() getter method. - */ - @Test - public void testIsExternalRoutingCapability() throws Exception { - ospfArea.setExternalRoutingCapability(true); - assertThat(ospfArea.isExternalRoutingCapability(), is(true)); - } - - /** - * Tests isExternalRoutingCapability() setter method. - */ - @Test - public void testSetExternalRoutingCapability() throws Exception { - ospfArea.setExternalRoutingCapability(true); - assertThat(ospfArea.isExternalRoutingCapability(), is(true)); - } - - - /** - * Tests ospfInterfaceList() getter method. - */ - @Test - public void testGetInterfacesLst() throws Exception { - ospfInterfaces = new ArrayList(); - ospfInterface1 = new OspfInterfaceImpl(); - ospfInterface1.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfInterfaces.add(ospfInterface1); - ospfInterface2 = new OspfInterfaceImpl(); - ospfInterface2.setIpAddress(Ip4Address.valueOf("2.2.2.2")); - ospfInterfaces.add(ospfInterface2); - ospfInterface3 = new OspfInterfaceImpl(); - ospfInterface3.setIpAddress(Ip4Address.valueOf("3.3.3.3")); - ospfInterfaces.add(ospfInterface3); - ospfArea.setOspfInterfaceList(ospfInterfaces); - assertThat(ospfInterfaces.size(), is(3)); - assertThat(ospfArea.ospfInterfaceList(), is(notNullValue())); - } - - /** - * Tests setInterfacesLst() setter method. - */ - @Test - public void testSetInterfacesLst() throws Exception { - ospfInterfaces = new ArrayList(); - ospfInterface1 = new OspfInterfaceImpl(); - ospfInterface1.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfInterfaces.add(ospfInterface1); - ospfInterface2 = new OspfInterfaceImpl(); - ospfInterface2.setIpAddress(Ip4Address.valueOf("2.2.2.2")); - ospfInterfaces.add(ospfInterface2); - ospfInterface3 = new OspfInterfaceImpl(); - ospfInterface3.setIpAddress(Ip4Address.valueOf("3.3.3.3")); - ospfInterfaces.add(ospfInterface3); - ospfArea.setOspfInterfaceList(ospfInterfaces); - assertThat(ospfInterfaces.size(), is(3)); - assertThat(ospfArea.ospfInterfaceList(), is(notNullValue())); - } - - - /** - * Tests getLsaHeaders() method. - */ - @Test - public void testGetLsaHeaders() throws Exception { - assertThat(ospfArea.getLsaHeaders(true, true).size(), is(0)); - } - - /** - * Tests getLsa() method. - */ - @Test - public void testGetLsa() throws Exception { - assertThat(ospfArea.getLsa(1, "1.1.1.1", "1.1.1.1"), is(nullValue())); - assertThat(ospfArea.getLsa(10, "1.1.1.1", "1.1.1.1"), is(nullValue())); - } - - /** - * Tests lsaLookup() method. - */ - @Test - public void testLsaLookup() throws Exception { - assertThat(ospfArea.lsaLookup(new RouterLsa()), is(nullValue())); - } - - /** - * Tests isNewerOrSameLsa() method. - */ - @Test - public void testIsNewerOrSameLsa() throws Exception { - assertThat(ospfArea.isNewerOrSameLsa(new RouterLsa(), new RouterLsa()), is("same")); - } - - /** - * Tests addLsa() method. - */ - @Test - public void testAddLsa() throws Exception { - ospfArea.addLsa(new RouterLsa(), new OspfInterfaceImpl()); - assertThat(ospfArea, is(notNullValue())); - } - - /** - * Tests addLsa() method. - */ - @Test - public void testAddLsa1() throws Exception { - ospfArea.addLsa(new RouterLsa(), false, new OspfInterfaceImpl()); - assertThat(ospfArea, is(notNullValue())); - } - - /** - * Tests addLsaToMaxAgeBin() method. - */ - @Test - public void testAddLsaToMaxAgeBin() throws Exception { - ospfArea.addLsaToMaxAgeBin("111", new LsaWrapperImpl()); - assertThat(ospfArea, is(notNullValue())); - } - - /** - * Tests setDbRouterSequenceNumber() method. - */ - @Test - public void testSetDbRouterSequenceNumber() throws Exception { - ospfArea.setDbRouterSequenceNumber(123456); - assertThat(ospfArea, is(notNullValue())); - } - - /** - * Tests deleteLsa() method. - */ - @Test - public void testDeleteLsa() throws Exception { - ospfArea.deleteLsa(new LsaHeader()); - assertThat(ospfArea, is(notNullValue())); - } - - /** - * Tests removeLsaFromBin() method. - */ - @Test - public void testRemoveLsaFromBin() throws Exception { - ospfArea.removeLsaFromBin(new LsaWrapperImpl()); - assertThat(ospfArea, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(ospfArea.toString(), is(notNullValue())); - } - - - /** - * Tests getLsaKey() method. - */ - @Test - public void testGetLsaKey() throws Exception { - lsaHeader = new LsaHeader(); - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfArea.getLsaKey(lsaHeader), is(notNullValue())); - } - - - /** - * Tests options() getter method. - */ - @Test - public void testGetOptions() throws Exception { - ospfArea.setOptions(2); - assertThat(ospfArea.options(), is(2)); - } - - /** - * Tests options() setter method. - */ - @Test - public void testSetOptions() throws Exception { - ospfArea.setOptions(2); - assertThat(ospfArea.options(), is(2)); - } - - /** - * Tests isOpaqueEnabled() method. - */ - @Test - public void testGetOpaqueEnabledOptions() throws Exception { - ospfArea.setIsOpaqueEnabled(true); - assertThat(ospfArea.isOpaqueEnabled(), is(true)); - } - - /** - * Tests database() method. - */ - @Test - public void testGetDatabase() throws Exception { - assertThat(ospfArea.database(), is(notNullValue())); - } - - /** - * Tests opaqueEnabledOptions() method. - */ - @Test - public void testOpaqueEnabledOptionsa() throws Exception { - assertThat(ospfArea.opaqueEnabledOptions(), is(66)); - } - - /** - * Tests noNeighborInLsaExchangeProcess() method. - */ - @Test - public void testNoNeighborInLsaExchangeProcess() throws Exception { - ospfArea.setOspfInterfaceList(ospfInterfaces); - ospfArea.noNeighborInLsaExchangeProcess(); - assertThat(ospfArea, is(notNullValue())); - } - - /** - * Tests getNeighborsInFullState() method. - */ - @Test - public void testGetNeighborsInFullState() throws Exception { - ospfArea.getNeighborsInFullState(ospfInterface1); - assertThat(ospfArea, is(notNullValue())); - } - - /** - * Tests addToOtherNeighborLsaTxList() method. - */ - @Test - public void testAddToOtherNeighborLsaTxList() throws Exception { - ospfArea.setOspfInterfaceList(ospfInterfaces); - ospfArea.addToOtherNeighborLsaTxList(routerLsa); - assertThat(ospfArea, is(notNullValue())); - - opaqueLsa10.setLsType(OspfParameters.LINK_LOCAL_OPAQUE_LSA); - ospfArea.addToOtherNeighborLsaTxList(opaqueLsa10); - assertThat(ospfArea, is(notNullValue())); - } - - /** - * Tests buildRouterLsa() method. - */ - @Test - public void testBuildRouterLsa() throws Exception { - ospfArea.setRouterId(ip4Address); - ospfArea.setOspfInterfaceList(ospfInterfaces); - ospfInterface1.setState(OspfInterfaceState.POINT2POINT); - ospfInterface1.setIpAddress(ip4Address); - ospfInterface1.setIpNetworkMask(networkAddress); - ospfInterfaces.add(ospfInterface1); - ospfArea.buildRouterLsa(ospfInterface1); - ospfArea.setOspfInterfaceList(ospfInterfaces); - assertThat(ospfArea, is(notNullValue())); - - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfInterfaceImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfInterfaceImplTest.java deleted file mode 100644 index 13aacf00bd..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfInterfaceImplTest.java +++ /dev/null @@ -1,1472 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.area; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.buffer.HeapChannelBufferFactory; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelConfig; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfAreaAddressRange; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.OspfMessage; -import org.onosproject.ospf.controller.OspfNbr; -import org.onosproject.ospf.controller.OspfNeighborState; -import org.onosproject.ospf.controller.OspfProcess; -import org.onosproject.ospf.controller.TopologyForDeviceAndLink; -import org.onosproject.ospf.controller.impl.Controller; -import org.onosproject.ospf.controller.impl.OspfInterfaceChannelHandler; -import org.onosproject.ospf.controller.impl.OspfLinkTedImpl; -import org.onosproject.ospf.controller.impl.OspfNbrImpl; -import org.onosproject.ospf.controller.impl.OspfRouterImpl; -import org.onosproject.ospf.controller.impl.TopologyForDeviceAndLinkImpl; -import org.onosproject.ospf.controller.util.OspfEligibleRouter; -import org.onosproject.ospf.controller.util.OspfInterfaceType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.lsa.tlvtypes.RouterTlv; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge; -import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest; -import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate; -import org.onosproject.ospf.protocol.util.ChecksumCalculator; -import org.onosproject.ospf.protocol.util.OspfInterfaceState; - -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for OspfInterfaceImpl. - */ -public class OspfInterfaceImplTest { - private List addressRanges = new ArrayList(); - private List ospfInterfaces = new ArrayList(); - private OspfInterfaceImpl ospfInterface; - private OspfNbrImpl ospfNbr; - private OpaqueLsaHeader opaqueLsaHeader; - private int result; - private OspfAreaImpl ospfArea; - private HashMap ospfNbrHashMap; - private TopologyForDeviceAndLink topologyForDeviceAndLink; - private Channel channel; - private ChannelHandlerContext channelHandlerContext; - private ChannelStateEvent channelStateEvent; - private HelloPacket helloPacket; - private DdPacket ddPacket; - private ChecksumCalculator checksumCalculator; - private byte[] byteArray; - private byte[] checkArray; - private OspfInterfaceChannelHandler ospfInterfaceChannelHandler; - private LsRequest lsRequest; - private ChannelBuffer buf; - private LsUpdate lsUpdate; - private LsAcknowledge lsAck; - private Controller controller; - private List ospfProcesses = new ArrayList(); - private OspfProcess ospfProcess; - private OspfEligibleRouter ospfEligibleRouter; - - @Before - public void setUp() throws Exception { - ospfProcess = new OspfProcessImpl(); - ospfProcesses.add(ospfProcess); - ospfInterface = new OspfInterfaceImpl(); - topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl(); - channel = EasyMock.createMock(Channel.class); - ospfArea = createOspfArea(); - ospfInterface = createOspfInterface(); - ospfNbrHashMap = new HashMap(); - topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setNeighborId(Ip4Address.valueOf("10.10.10.10")); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfInterface.addNeighbouringRouter(ospfNbr); - controller = new Controller(); - ospfInterfaceChannelHandler = new OspfInterfaceChannelHandler(controller, ospfProcesses); - - } - - @After - public void tearDown() throws Exception { - ospfInterface = null; - ospfNbr = null; - opaqueLsaHeader = null; - ospfNbrHashMap = null; - } - - /** - * Tests state() getter method. - */ - @Test - public void testGetState() throws Exception { - ospfInterface.setState(OspfInterfaceState.DROTHER); - assertThat(ospfInterface.state(), is(OspfInterfaceState.DROTHER)); - } - - /** - * Tests state() setter method. - */ - @Test - public void testSetState() throws Exception { - ospfInterface.setState(OspfInterfaceState.DROTHER); - assertThat(ospfInterface.state(), is(OspfInterfaceState.DROTHER)); - } - - /** - * Tests linkStateHeaders() method. - */ - @Test - public void testGetLinkStateHeaders() throws Exception { - - assertThat(ospfInterface.linkStateHeaders().size(), is(0)); - } - - /** - * Tests ipNetworkMask() getter method. - */ - @Test - public void testGetIpNetworkMask() throws Exception { - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfInterface.ipNetworkMask(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests ipNetworkMask() setter method. - */ - @Test - public void testSetIpNetworkMask() throws Exception { - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfInterface.ipNetworkMask(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests addNeighbouringRouter() method. - */ - @Test - public void testAddNeighbouringRouter() throws Exception { - ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(), - Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111")); - ospfInterface.addNeighbouringRouter(ospfNbr); - assertThat(ospfInterface, is(notNullValue())); - - } - - /** - * Tests neighbouringRouter() method. - */ - @Test - public void testGetNeighbouringRouter() throws Exception { - ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(), - Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111")); - ospfInterface.addNeighbouringRouter(ospfNbr); - assertThat(ospfInterface.neighbouringRouter("111.111.111.111"), is(notNullValue())); - } - - /** - * Tests addLsaHeaderForDelayAck() method. - */ - @Test - public void testAddLsaHeaderForDelayAck() throws Exception { - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(10); - ospfInterface.addLsaHeaderForDelayAck(opaqueLsaHeader); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests removeLsaFromNeighborMap() method. - */ - @Test - public void testRemoveLsaFromNeighborMap() throws Exception { - ospfInterface.removeLsaFromNeighborMap("lsa10"); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests isNeighborInList() method. - */ - @Test - public void testIsNeighborinList() throws Exception { - ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(), - Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111")); - ospfInterface.addNeighbouringRouter(ospfNbr); - assertThat(ospfInterface.isNeighborInList("111.111.111.111"), is(notNullValue())); - } - - /** - * Tests listOfNeighbors() getter method. - */ - @Test - public void testGetListOfNeighbors() throws Exception { - ospfNbrHashMap = new HashMap(); - ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(), - Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111")); - ospfNbrHashMap.put("111.111.111.111", ospfNbr); - ospfInterface.setListOfNeighbors(ospfNbrHashMap); - assertThat(ospfInterface.listOfNeighbors().size(), is(1)); - } - - /** - * Tests listOfNeighbors() setter method. - */ - @Test - public void testSetListOfNeighbors() throws Exception { - ospfNbrHashMap = new HashMap(); - ospfNbr = new OspfNbrImpl(new OspfAreaImpl(), new OspfInterfaceImpl(), - Ip4Address.valueOf("1.1.1.1"), Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setNeighborId(Ip4Address.valueOf("111.111.111.111")); - ospfNbrHashMap.put("111.111.111.111", ospfNbr); - ospfInterface.setListOfNeighbors(ospfNbrHashMap); - assertThat(ospfInterface.listOfNeighbors().size(), is(1)); - } - - /** - * Tests ipAddress() getter method. - */ - @Test - public void testGetIpAddress() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfInterface.ipAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests ipAddress() getter method. - */ - @Test - public void testSetIpAddress() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfInterface.ipAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests routerPriority() getter method. - */ - @Test - public void testGetRouterPriority() throws Exception { - ospfInterface.setRouterPriority(1); - Assert.assertEquals(1, ospfInterface.routerPriority()); - } - - /** - * Tests routerPriority() setter method. - */ - @Test - public void testSetRouterPriority() throws Exception { - ospfInterface.setRouterPriority(1); - assertThat(ospfInterface.routerPriority(), is(1)); - } - - /** - * Tests helloIntervalTime() getter method. - */ - @Test - public void testGetHelloIntervalTime() throws Exception { - ospfInterface.setHelloIntervalTime(10); - assertThat(ospfInterface.helloIntervalTime(), is(10)); - } - - /** - * Tests helloIntervalTime() setter method. - */ - @Test - public void testSetHelloIntervalTime() throws Exception { - ospfInterface.setHelloIntervalTime(10); - assertThat(ospfInterface.helloIntervalTime(), is(10)); - } - - /** - * Tests routerDeadIntervalTime() getter method. - */ - @Test - public void testGetRouterDeadIntervalTime() throws Exception { - ospfInterface.setRouterDeadIntervalTime(10); - assertThat(ospfInterface.routerDeadIntervalTime(), is(10)); - } - - /** - * Tests routerDeadIntervalTime() setter method. - */ - @Test - public void testSetRouterDeadIntervalTime() throws Exception { - ospfInterface.setRouterDeadIntervalTime(10); - assertThat(ospfInterface.routerDeadIntervalTime(), is(10)); - } - - /** - * Tests interfaceType() getter method. - */ - @Test - public void testGetInterfaceType() throws Exception { - ospfInterface.setInterfaceType(1); - assertThat(ospfInterface.interfaceType(), is(1)); - } - - /** - * Tests interfaceType() setter method. - */ - @Test - public void testSetInterfaceType() throws Exception { - ospfInterface.setInterfaceType(1); - assertThat(ospfInterface.interfaceType(), is(1)); - } - - /** - * Tests mtu() getter method. - */ - @Test - public void testGetMtu() throws Exception { - ospfInterface.setMtu(100); - assertThat(ospfInterface.mtu(), is(100)); - } - - /** - * Tests mtu() setter method. - */ - @Test - public void testSetMtu() throws Exception { - ospfInterface.setMtu(100); - assertThat(ospfInterface.mtu(), is(100)); - } - - /** - * Tests reTransmitInterval() getter method. - */ - @Test - public void testGetReTransmitInterval() throws Exception { - ospfInterface.setReTransmitInterval(100); - assertThat(ospfInterface.reTransmitInterval(), is(100)); - } - - /** - * Tests reTransmitInterval() setter method. - */ - @Test - public void testSetReTransmitInterval() throws Exception { - ospfInterface.setReTransmitInterval(100); - assertThat(ospfInterface.reTransmitInterval(), is(100)); - } - - /** - * Tests dr() getter method. - */ - @Test - public void testGetDr() throws Exception { - ospfInterface.setDr(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfInterface.dr(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests dr() setter method. - */ - @Test - public void testSetDr() throws Exception { - ospfInterface.setDr(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfInterface.dr(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests bdr() getter method. - */ - @Test - public void testGetBdr() throws Exception { - ospfInterface.setBdr(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfInterface.bdr(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests bdr() setter method. - */ - @Test - public void testSetBdr() throws Exception { - ospfInterface.setBdr(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfInterface.bdr(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(ospfInterface.equals(new OspfInterfaceImpl()), is(false)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - result = ospfInterface.hashCode(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(ospfInterface.toString(), is(notNullValue())); - } - - /** - * Tests to interfaceUp() method. - */ - @Test(expected = Exception.class) - public void testInterfaceUp() throws Exception { - ospfInterface.setInterfaceType(OspfInterfaceType.POINT_TO_POINT.value()); - ospfInterface.interfaceUp(); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests to interfaceUp() method. - */ - @Test(expected = Exception.class) - public void testInterfaceUp1() throws Exception { - - ospfInterface.setInterfaceType(OspfInterfaceType.BROADCAST.value()); - ospfInterface.interfaceUp(); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests to interfaceUp() method. - */ - @Test(expected = Exception.class) - public void testInterfaceUp2() throws Exception { - - ospfInterface.setRouterPriority(1); - ospfInterface.setInterfaceType(OspfInterfaceType.BROADCAST.value()); - ospfInterface.interfaceUp(); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests to backupSeen() method. - */ - @Test - public void testBackupSeen() throws Exception { - ospfInterface.setOspfArea(ospfArea); - ospfInterface.setState(OspfInterfaceState.WAITING); - ospfInterface.backupSeen(channel); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests to waitTimer() method. - */ - @Test - public void testWaitTimer() throws Exception { - ospfInterface.setOspfArea(ospfArea); - ospfInterface.setState(OspfInterfaceState.WAITING); - ospfInterface.waitTimer(channel); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests to callDrElection() method. - */ - @Test - public void testCallDrElection() throws Exception { - ospfInterface.setOspfArea(ospfArea); - ospfInterface.setState(OspfInterfaceState.WAITING); - ospfInterface.callDrElection(channel); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests to neighborChange() method. - */ - @Test - public void testNeighborChange() throws Exception { - ospfInterface.setOspfArea(ospfArea); - ospfInterface.setState(OspfInterfaceState.DR); - ospfInterface.neighborChange(); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests to interfaceDown() method. - */ - @Test(expected = Exception.class) - public void testInterfaceDown() throws Exception { - ospfInterface.interfaceDown(); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests processOspfMessage() method. - */ - @Test - public void testProcessOspfMessage() throws Exception { - ospfInterface.setOspfArea(ospfArea); - ospfInterface.setInterfaceType(OspfInterfaceType.POINT_TO_POINT.value()); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("0.0.0.0")); - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - helloPacket = new HelloPacket(); - helloPacket.setSourceIp(Ip4Address.valueOf("1.1.0.1")); - helloPacket.setRouterId(Ip4Address.valueOf("10.10.10.10")); - helloPacket.setOspfVer(2); - helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - helloPacket.setOptions(2); - helloPacket.setNetworkMask(Ip4Address.valueOf("3.3.3.3")); - helloPacket.setOspftype(1); - helloPacket.setAuthType(0); - helloPacket.setHelloInterval(60); - helloPacket.setRouterDeadInterval(60); - helloPacket.setAuthentication(0); - helloPacket.setNetworkMask(Ip4Address.valueOf("1.1.1.1")); - checksumCalculator = new ChecksumCalculator(); - byteArray = helloPacket.asBytes(); - helloPacket.setOspfPacLength(byteArray.length); - checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13); - checkArray[0] = -51; - checkArray[1] = 52; - buf = ChannelBuffers.copiedBuffer(checkArray); - helloPacket.setChecksum(buf.readUnsignedShort()); - message = helloPacket; - ospfInterface.processOspfMessage(message, channelHandlerContext); - ddPacket = new DdPacket(); - ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - ddPacket.setRouterId(Ip4Address.valueOf("10.10.10.10")); - ddPacket.setOspfVer(2); - ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - ddPacket.setOptions(2); - ddPacket.setOspftype(2); - ddPacket.setAuthType(0); - ddPacket.setAuthentication(0); - checksumCalculator = new ChecksumCalculator(); - byteArray = ddPacket.asBytes(); - ddPacket.setOspfPacLength(byteArray.length); - checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13); - checkArray[0] = -49; - checkArray[1] = -79; - buf = ChannelBuffers.copiedBuffer(checkArray); - ddPacket.setChecksum(buf.readUnsignedShort()); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - message = ddPacket; - ospfInterface.processOspfMessage(message, channelHandlerContext); - lsRequest = new LsRequest(); - lsRequest.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - lsRequest.setRouterId(Ip4Address.valueOf("10.10.10.10")); - lsRequest.setOspfVer(2); - lsRequest.setAreaId(Ip4Address.valueOf("12.12.12.12")); - lsRequest.setOspftype(3); - lsRequest.setAuthType(0); - lsRequest.setAuthentication(0); - checksumCalculator = new ChecksumCalculator(); - byteArray = lsRequest.asBytes(); - lsRequest.setOspfPacLength(byteArray.length); - checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13); - checkArray[0] = -47; - checkArray[1] = -72; - buf = ChannelBuffers.copiedBuffer(checkArray); - lsRequest.setChecksum(buf.readUnsignedShort()); - message = lsRequest; - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processOspfMessage(message, channelHandlerContext); - lsUpdate = new LsUpdate(); - lsUpdate.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - lsUpdate.setRouterId(Ip4Address.valueOf("10.10.10.10")); - lsUpdate.setOspfVer(2); - lsUpdate.setAreaId(Ip4Address.valueOf("12.12.12.12")); - lsUpdate.setOspftype(4); - lsUpdate.setAuthType(0); - lsUpdate.setAuthentication(0); - checksumCalculator = new ChecksumCalculator(); - byteArray = lsUpdate.asBytes(); - lsUpdate.setOspfPacLength(byteArray.length); - checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13); - checkArray[0] = -47; - checkArray[1] = -77; - buf = ChannelBuffers.copiedBuffer(checkArray); - lsUpdate.setChecksum(buf.readUnsignedShort()); - message = lsUpdate; - ospfInterface.processOspfMessage(message, channelHandlerContext); - lsAck = new LsAcknowledge(); - lsAck.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - lsAck.setRouterId(Ip4Address.valueOf("10.10.10.10")); - lsAck.setOspfVer(2); - lsAck.setAreaId(Ip4Address.valueOf("12.12.12.12")); - lsAck.setOspftype(5); - lsAck.setAuthType(0); - lsAck.setAuthentication(0); - checksumCalculator = new ChecksumCalculator(); - byteArray = lsAck.asBytes(); - lsAck.setOspfPacLength(byteArray.length); - checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13); - checkArray[0] = -47; - checkArray[1] = -74; - buf = ChannelBuffers.copiedBuffer(checkArray); - lsAck.setChecksum(buf.readUnsignedShort()); - message = lsAck; - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processOspfMessage(message, channelHandlerContext); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests processHelloMessage() method. - */ - @Test - public void testProcessHelloMessage() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(1); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("244.244.244.244")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - helloPacket = new HelloPacket(); - helloPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - helloPacket.setOspfVer(2); - helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - helloPacket.setNetworkMask(Ip4Address.valueOf("244.244.244.244")); - helloPacket.setHelloInterval(10); - helloPacket.setRouterDeadInterval(10); - helloPacket.setDr(Ip4Address.valueOf("10.10.10.10")); - helloPacket.setBdr(Ip4Address.valueOf("11.11.11.11")); - helloPacket.setRouterId(Ip4Address.valueOf("111.111.111.111")); - message = helloPacket; - ospfInterface.processHelloMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Tests processHelloMessage() method. - */ - @Test - public void testProcessHelloMessage1() throws Exception { - ospfInterface.setOspfArea(ospfArea); - ospfInterface.setInterfaceType(2); - ospfInterface.setRouterPriority(1); - ospfInterface.interfaceUp(); - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setState(OspfInterfaceState.WAITING); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("244.244.244.244")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - helloPacket = new HelloPacket(); - helloPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - helloPacket.setOspfVer(2); - helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - helloPacket.setNetworkMask(Ip4Address.valueOf("244.244.244.244")); - helloPacket.setHelloInterval(10); - helloPacket.setRouterDeadInterval(10); - helloPacket.setDr(Ip4Address.valueOf("10.10.10.10")); - helloPacket.setBdr(Ip4Address.valueOf("11.11.11.11")); - helloPacket.setRouterId(Ip4Address.valueOf("2.2.2.2")); - message = helloPacket; - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processHelloMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - ospfNbrHashMap = new HashMap(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2")); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfInterface.addNeighbouringRouter(ospfNbr); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processHelloMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Tests processDdMessage() method. - */ - @Test - public void testProcessDdMessage() throws Exception { - ospfInterface.setOspfArea(ospfArea); - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - ddPacket = new DdPacket(); - ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - ddPacket.setOspfVer(2); - ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ddPacket.setIsOpaqueCapable(true); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(1); - ddPacket.setIsMaster(1); - ddPacket.setSequenceNo(123); - message = ddPacket; - ospfNbrHashMap = new HashMap(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setLastDdPacket(createDdPacket()); - ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2")); - ospfNbr.setState(OspfNeighborState.EXSTART); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfNbr.setDdSeqNum(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processDdMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Tests processDdMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessDdMessage3() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - ddPacket = new DdPacket(); - ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - ddPacket.setOspfVer(2); - ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ddPacket.setIsOpaqueCapable(true); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(1); - ddPacket.setIsMaster(1); - ddPacket.setSequenceNo(123); - message = ddPacket; - ospfNbrHashMap = new HashMap(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setLastDdPacket(createDdPacket()); - ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2")); - ospfNbr.setState(OspfNeighborState.EXSTART); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfNbr.setDdSeqNum(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(0); - ddPacket.setIsMaster(0); - ddPacket.setSequenceNo(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processDdMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Tests processDdMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessDdMessage1() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - ddPacket = new DdPacket(); - ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - ddPacket.setOspfVer(2); - ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ddPacket.setIsOpaqueCapable(true); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(1); - ddPacket.setIsMaster(1); - ddPacket.setSequenceNo(123); - message = ddPacket; - ospfNbrHashMap = new HashMap(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setLastDdPacket(createDdPacket()); - ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2")); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfNbr.setDdSeqNum(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(0); - ddPacket.setIsMaster(0); - ddPacket.setSequenceNo(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processDdMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - - } - - /** - * Tests processDdMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessDdMessage2() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - ddPacket = new DdPacket(); - ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - ddPacket.setOspfVer(2); - ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ddPacket.setIsOpaqueCapable(true); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(1); - ddPacket.setIsMaster(1); - ddPacket.setSequenceNo(123); - message = ddPacket; - ospfNbrHashMap = new HashMap(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setLastDdPacket(createDdPacket()); - ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2")); - ospfNbr.setState(OspfNeighborState.LOADING); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfNbr.setDdSeqNum(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - ospfInterface.setState(OspfInterfaceState.POINT2POINT); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processDdMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - - } - - /** - * Tests processDdMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessDdMessage4() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - ddPacket = new DdPacket(); - ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - ddPacket.setOspfVer(2); - ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ddPacket.setIsOpaqueCapable(true); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(1); - ddPacket.setIsMaster(1); - ddPacket.setSequenceNo(123); - message = ddPacket; - ospfNbrHashMap = new HashMap(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setLastDdPacket(createDdPacket()); - ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2")); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfNbr.setDdSeqNum(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - ospfInterface.setState(OspfInterfaceState.POINT2POINT); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(0); - ddPacket.setIsMaster(1); - ddPacket.setSequenceNo(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfInterface.addNeighbouringRouter(ospfNbr); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processDdMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - - } - - /** - * Tests processDdMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessDdMessage5() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - ddPacket = new DdPacket(); - ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - ddPacket.setOspfVer(2); - ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ddPacket.setIsOpaqueCapable(true); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(1); - ddPacket.setIsMaster(1); - ddPacket.setSequenceNo(123); - message = ddPacket; - ospfNbrHashMap = new HashMap(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setLastDdPacket(createDdPacket()); - ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2")); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfNbr.setDdSeqNum(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - ospfInterface.setState(OspfInterfaceState.POINT2POINT); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(1); - ddPacket.setIsMaster(0); - ddPacket.setSequenceNo(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfInterface.addNeighbouringRouter(ospfNbr); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processDdMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - - } - - /** - * Tests processDdMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessDdMessage6() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - ddPacket = new DdPacket(); - ddPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - ddPacket.setOspfVer(2); - ddPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - ddPacket.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ddPacket.setIsOpaqueCapable(true); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(1); - ddPacket.setIsMaster(1); - ddPacket.setSequenceNo(123); - message = ddPacket; - ospfNbrHashMap = new HashMap(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr.setLastDdPacket(createDdPacket()); - ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2")); - ospfNbr.setState(OspfNeighborState.FULL); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfNbr.setDdSeqNum(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - ospfInterface.setState(OspfInterfaceState.POINT2POINT); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ddPacket.setIsMore(1); - ddPacket.setIsInitialize(1); - ddPacket.setIsMaster(0); - ddPacket.setSequenceNo(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - ospfNbr.setState(OspfNeighborState.FULL); - ospfInterface.addNeighbouringRouter(ospfNbr); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processDdMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - - } - - /** - * Tests processLsRequestMessage() method. - */ - @Test(expected = Exception.class) - public void testProcessLSRequestMessage() throws Exception { - ospfArea.setRouterId(Ip4Address.valueOf("11.11.11.11")); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - ospfInterface.setOspfArea(ospfArea); - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - lsRequest = new LsRequest(); - lsRequest.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - lsRequest.setOspfVer(2); - lsRequest.setAreaId(Ip4Address.valueOf("12.12.12.12")); - lsRequest.setRouterId(Ip4Address.valueOf("10.226.165.100")); - List lsRequests = new ArrayList(); - LsRequestPacket lsRequestPacket = new LsRequestPacket(); - lsRequestPacket.setLsType(OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value()); - lsRequestPacket.setLinkStateId("2.2.2.2"); - lsRequestPacket.setOwnRouterId("10.226.165.100"); - lsRequests.add(lsRequestPacket); - lsRequests.add(lsRequestPacket); - lsRequest.addLinkStateRequests(lsRequestPacket); - message = lsRequest; - ospfNbrHashMap = new HashMap(); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("10.226.165.100"), 2, - topologyForDeviceAndLink); - ospfNbr.setLastDdPacket(createDdPacket()); - ospfNbr.setNeighborId(Ip4Address.valueOf("10.226.165.100")); - ospfNbr.setState(OspfNeighborState.FULL); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfNbr.setDdSeqNum(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - OpaqueLsaHeader lsaHeader = new OpaqueLsaHeader(); - lsaHeader.setLsType(OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value()); - lsaHeader.setLinkStateId("2.2.2.2"); - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.100")); - OpaqueLsa10 opaqueLsa10 = new OpaqueLsa10(lsaHeader); - ospfArea.addLsa(opaqueLsa10, false, ospfInterface); - ospfInterface.setOspfArea(ospfArea); - ospfInterface.processLsRequestMessage(message, channelHandlerContext); - assertThat(ospfInterface, is(notNullValue())); - } - - /** - * Tests processLsUpdateMessage() method. - */ - @Test - public void testProcessLSUpdateMessage() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - lsUpdate = new LsUpdate(); - lsUpdate.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - lsUpdate.setOspfVer(2); - lsUpdate.setAreaId(Ip4Address.valueOf("12.12.12.12")); - lsUpdate.setRouterId(Ip4Address.valueOf("10.226.165.100")); - RouterLsa routerLsa = new RouterLsa(); - lsUpdate.addLsa(routerLsa); - lsUpdate.setNumberOfLsa(1); - message = lsUpdate; - ospfNbrHashMap = new HashMap(); - ospfNbr.setState(OspfNeighborState.FULL); - ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("10.226.165.100"), 2, - topologyForDeviceAndLink); - ospfNbr.setLastDdPacket(createDdPacket()); - ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2")); - ospfNbr.setState(OspfNeighborState.FULL); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfNbr.setDdSeqNum(123); - ospfInterface.addNeighbouringRouter(ospfNbr); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processLsUpdateMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - - } - - @Test(expected = Exception.class) - public void testProcessLSAckMessage() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setHelloIntervalTime(10); - ospfInterface.setRouterDeadIntervalTime(10); - ospfArea.setAreaId(Ip4Address.valueOf("12.12.12.12")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - OspfMessage message; - lsAck = new LsAcknowledge(); - lsAck.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - lsAck.setOspfVer(2); - lsAck.setAreaId(Ip4Address.valueOf("12.12.12.12")); - LsaHeader lsaHeader = new LsaHeader(); - lsAck.addLinkStateHeader(lsaHeader); - message = lsAck; - ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("10.226.165.100"), 2, - topologyForDeviceAndLink); - ospfNbr.setLastDdPacket(createDdPacket()); - ospfNbr.setNeighborId(Ip4Address.valueOf("2.2.2.2")); - ospfNbr.setState(OspfNeighborState.FULL); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(Ip4Address.valueOf("13.13.13.13")); - ospfNbr.setDdSeqNum(123); - channelHandlerContext = null; - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ospfInterface.processLsAckMessage(message, channelHandlerContext); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - - } - - /** - * Tests electRouter() method. - */ - @Test - public void testElectRouter() throws Exception { - ospfInterface.setOspfArea(ospfArea); - ospfInterface.setDr(Ip4Address.valueOf("3.3.3.3")); - ospfInterface.setBdr(Ip4Address.valueOf("3.3.3.3")); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ChannelConfig channelConfig = EasyMock.createMock(ChannelConfig.class); - EasyMock.expect(channelConfig.getBufferFactory()).andReturn(new HeapChannelBufferFactory()); - Channel channel = EasyMock.createMock(Channel.class); - ospfInterface.electRouter(channel); - assertThat(ospfInterface.dr(), is(notNullValue())); - } - - /** - * Tests electBdr() method. - */ - @Test - public void testElectBdr() throws Exception { - ospfEligibleRouter = new OspfEligibleRouter(); - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsDr(true); - ospfEligibleRouter.setRouterPriority(10); - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsBdr(false); - OspfEligibleRouter ospfEligibleRouter1 = new OspfEligibleRouter(); - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsDr(true); - ospfEligibleRouter.setRouterPriority(10); - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsBdr(false); - OspfEligibleRouter ospfEligibleRouter2 = new OspfEligibleRouter(); - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsDr(true); - ospfEligibleRouter.setRouterPriority(10); - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsBdr(false); - List ospfEligibleRouters = new ArrayList<>(); - - ospfEligibleRouters.add(ospfEligibleRouter); - ospfEligibleRouters.add(ospfEligibleRouter1); - ospfEligibleRouters.add(ospfEligibleRouter2); - OspfEligibleRouter eligibleRouter = ospfInterface.electBdr(ospfEligibleRouters); - assertThat(ospfEligibleRouters.size(), is(3)); - assertThat(eligibleRouter, is(notNullValue())); - } - - /** - * Tests electDr() method. - */ - @Test - public void testElectDR() throws Exception { - ospfEligibleRouter = new OspfEligibleRouter(); - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsDr(true); - ospfEligibleRouter.setRouterPriority(10); - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsBdr(false); - OspfEligibleRouter ospfEligibleRouter1 = new OspfEligibleRouter(); - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsDr(true); - ospfEligibleRouter.setRouterPriority(10); - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsBdr(false); - OspfEligibleRouter ospfEligibleRouter2 = new OspfEligibleRouter(); - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsDr(true); - ospfEligibleRouter.setRouterPriority(10); - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsBdr(false); - List ospfEligibleRouters = new ArrayList<>(); - ospfEligibleRouters.add(ospfEligibleRouter); - ospfEligibleRouters.add(ospfEligibleRouter1); - ospfEligibleRouters.add(ospfEligibleRouter2); - OspfEligibleRouter eligibleRouter = ospfInterface.electDr(ospfEligibleRouters, - ospfEligibleRouter); - assertThat(ospfEligibleRouters.size(), is(3)); - assertThat(eligibleRouter, is(notNullValue())); - } - - /** - * Tests selectRouterBasedOnPriority() method. - */ - @Test - public void testSelectRouterBasedOnPriority() throws Exception { - ospfEligibleRouter = new OspfEligibleRouter(); - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsDr(true); - ospfEligibleRouter.setRouterPriority(10); - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsBdr(false); - OspfEligibleRouter ospfEligibleRouter1 = new OspfEligibleRouter(); - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsDr(true); - ospfEligibleRouter.setRouterPriority(11); - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsBdr(false); - OspfEligibleRouter ospfEligibleRouter2 = new OspfEligibleRouter(); - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsDr(true); - ospfEligibleRouter.setRouterPriority(12); - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - ospfEligibleRouter.setIsBdr(false); - List ospfEligibleRouters = new ArrayList<>(); - ospfEligibleRouters.add(ospfEligibleRouter); - ospfEligibleRouters.add(ospfEligibleRouter1); - ospfEligibleRouters.add(ospfEligibleRouter2); - OspfEligibleRouter eligibleRouter = ospfInterface.selectRouterBasedOnPriority( - ospfEligibleRouters); - assertThat(eligibleRouter, is(notNullValue())); - } - - /** - * Tests addDeviceInformation() method. - */ - @Test(expected = Exception.class) - public void testAddDeviceInformation() throws Exception { - ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("10.226.165.100"), 2, - topologyForDeviceAndLink); - - ospfInterface.addDeviceInformation(new OspfRouterImpl()); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Tests removeDeviceInformation() method. - */ - @Test(expected = Exception.class) - public void testRemoveDeviceInformation() throws Exception { - ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("10.226.165.100"), 2, - topologyForDeviceAndLink); - - ospfInterface.removeDeviceInformation(new OspfRouterImpl()); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Tests addLinkInformation() method. - */ - @Test(expected = Exception.class) - public void testaddLinkInformation() throws Exception { - ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("10.226.165.100"), 2, - topologyForDeviceAndLink); - - List topTlv = new ArrayList(); - topTlv.add(new RouterTlv(new TlvHeader())); - ospfInterface.addLinkInformation(new OspfRouterImpl(), new OspfLinkTedImpl()); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Tests removeLinkInformation() method. - */ - @Test(expected = Exception.class) - public void testRemoveLinkInformation() throws Exception { - ospfNbr = new OspfNbrImpl(ospfArea, createOspfInterface(), Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("10.226.165.100"), 2, - topologyForDeviceAndLink); - - ospfInterface.removeLinkInformation(new OspfRouterImpl(), new OspfLinkTedImpl()); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Utility for test method. - */ - private DdPacket createDdPacket() throws OspfParseException { - byte[] ddPacket = {2, 2, 0, 32, -64, -88, -86, 8, 0, 0, 0, 1, -96, 82, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119, -87, 126}; - DdPacket ddPacket1 = new DdPacket(); - ChannelBuffer buf = ChannelBuffers.buffer(ddPacket.length); - buf.writeBytes(ddPacket); - ddPacket1.readFrom(buf); - return ddPacket1; - } - - /** - * Utility for test method. - */ - private OspfInterfaceImpl createOspfInterface() throws UnknownHostException { - ospfInterface = new OspfInterfaceImpl(); - OspfAreaImpl ospfArea = new OspfAreaImpl(); - OspfInterfaceChannelHandler ospfInterfaceChannelHandler = EasyMock.createMock( - OspfInterfaceChannelHandler.class); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.226.165.164"), - Ip4Address.valueOf("1.1.1.1"), 2, - topologyForDeviceAndLink); - ospfNbr.setState(OspfNeighborState.EXSTART); - ospfNbr.setNeighborId(Ip4Address.valueOf("10.226.165.100")); - this.ospfInterface = new OspfInterfaceImpl(); - this.ospfInterface.setIpAddress(Ip4Address.valueOf("10.226.165.164")); - this.ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - this.ospfInterface.setBdr(Ip4Address.valueOf("111.111.111.111")); - this.ospfInterface.setDr(Ip4Address.valueOf("111.111.111.111")); - this.ospfInterface.setHelloIntervalTime(20); - this.ospfInterface.setInterfaceType(2); - this.ospfInterface.setReTransmitInterval(2000); - this.ospfInterface.setMtu(6500); - this.ospfInterface.setRouterDeadIntervalTime(1000); - this.ospfInterface.setRouterPriority(1); - this.ospfInterface.setInterfaceType(1); - this.ospfInterface.addNeighbouringRouter(ospfNbr); - return this.ospfInterface; - } - - /** - * Utility for test method. - */ - private OspfInterfaceImpl createOspfInterface1() throws UnknownHostException { - ospfInterface = new OspfInterfaceImpl(); - OspfAreaImpl ospfArea = new OspfAreaImpl(); - OspfInterfaceChannelHandler ospfInterfaceChannelHandler = EasyMock.createMock( - OspfInterfaceChannelHandler.class); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.226.165.164"), - Ip4Address.valueOf("1.1.1.1"), 2, - topologyForDeviceAndLink); - ospfNbr.setState(OspfNeighborState.FULL); - ospfNbr.setNeighborId(Ip4Address.valueOf("10.226.165.100")); - ospfInterface = new OspfInterfaceImpl(); - ospfInterface.setIpAddress(Ip4Address.valueOf("10.226.165.164")); - ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfInterface.setBdr(Ip4Address.valueOf("111.111.111.111")); - ospfInterface.setDr(Ip4Address.valueOf("111.111.111.111")); - ospfInterface.setHelloIntervalTime(20); - ospfInterface.setInterfaceType(2); - ospfInterface.setReTransmitInterval(2000); - ospfInterface.setMtu(6500); - ospfInterface.setRouterDeadIntervalTime(1000); - ospfInterface.setRouterPriority(1); - ospfInterface.setInterfaceType(1); - ospfInterface.addNeighbouringRouter(ospfNbr); - return ospfInterface; - } - - /** - * Utility for test method. - */ - private OspfAreaImpl createOspfArea() throws UnknownHostException { - OspfAreaAddressRangeImpl ospfAreaAddressRange; - ospfAreaAddressRange = createOspfAreaAddressRange(); - addressRanges.add(ospfAreaAddressRange); - OspfAreaImpl ospfArea = new OspfAreaImpl(); - ospfArea.setAreaId(Ip4Address.valueOf("10.226.165.164")); - ospfArea.setExternalRoutingCapability(true); - OspfInterfaceImpl ospfInterface = createOspfInterface(); - ospfInterfaces.add(ospfInterface); - ospfArea.setOspfInterfaceList(ospfInterfaces); - RouterLsa routerLsa = new RouterLsa(); - routerLsa.setLsType(1); - routerLsa.setLinkStateId("2.2.2.2"); - routerLsa.setAdvertisingRouter(Ip4Address.valueOf("2.2.2.2")); - try { - ospfArea.addLsa(routerLsa, false, ospfInterface); - } catch (Exception e) { - System.out.println("ospfAreaImpl createOspfArea"); - } - ospfArea.setRouterId(Ip4Address.valueOf("111.111.111.111")); - - return ospfArea; - } - - /** - * Utility for test method. - */ - private OspfAreaAddressRangeImpl createOspfAreaAddressRange() { - OspfAreaAddressRangeImpl ospfAreaAddressRange = new OspfAreaAddressRangeImpl(); - ospfAreaAddressRange.setIpAddress(Ip4Address.valueOf("10.226.165.164")); - ospfAreaAddressRange.setAdvertise(true); - ospfAreaAddressRange.setMask("mask"); - return ospfAreaAddressRange; - } - -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfProcessImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfProcessImplTest.java deleted file mode 100644 index f20048c79d..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/area/OspfProcessImplTest.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.area; - - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.controller.OspfArea; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for OspfProcessImpl. - */ -public class OspfProcessImplTest { - - private OspfProcessImpl ospfProcess; - private List list; - private List result; - - @Before - public void setUp() throws Exception { - ospfProcess = new OspfProcessImpl(); - } - - @After - public void tearDown() throws Exception { - ospfProcess = null; - list = null; - } - - /** - * Tests areas() getter method. - */ - @Test - public void testGetAreas() throws Exception { - list = new ArrayList(); - list.add(new OspfAreaImpl()); - list.add(new OspfAreaImpl()); - ospfProcess.setAreas(list); - result = ospfProcess.areas(); - assertThat(result.size(), is(2)); - } - - /** - * Tests areas() setter method. - */ - @Test - public void testSetAreas() throws Exception { - list = new ArrayList(); - list.add(new OspfAreaImpl()); - list.add(new OspfAreaImpl()); - ospfProcess.setAreas(list); - result = ospfProcess.areas(); - assertThat(result.size(), is(2)); - } - - /** - * Tests processId() getter method. - */ - @Test - public void testGetProcessId() throws Exception { - ospfProcess.setProcessId("1.1.1.1"); - assertThat(ospfProcess.processId(), is("1.1.1.1")); - } - - /** - * Tests processId() setter method. - */ - @Test - public void testSetProcessId() throws Exception { - ospfProcess.setProcessId("1.1.1.1"); - assertThat(ospfProcess.processId(), is("1.1.1.1")); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(ospfProcess.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/ControllerTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/ControllerTest.java deleted file mode 100644 index c0b5db882a..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/ControllerTest.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - - -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.net.driver.DriverService; -import org.onosproject.ospf.controller.OspfAgent; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfProcess; -import org.onosproject.ospf.controller.OspfRouter; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.controller.area.OspfProcessImpl; - -import java.nio.channels.Channel; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for Controller. - */ -public class ControllerTest { - private Controller controller; - private Map maps; - private OspfAgent ospfAgent; - private DriverService driverService; - private List connectedChannels; - private List process; - private OspfProcess ospfProcess; - private OspfArea ospfArea; - private OspfInterface ospfInterface; - private List ospfInterfaces; - private List ospfAreas; - private List ospfProcesses; - private OspfProcess ospfProcess1; - private OspfArea ospfArea1; - private OspfRouter ospfRouter; - - @Before - public void setUp() throws Exception { - controller = new Controller(); - maps = new HashMap(); - ospfProcess = new OspfProcessImpl(); - ospfArea = new OspfAreaImpl(); - ospfInterface = new OspfInterfaceImpl(); - ospfInterfaces = new ArrayList(); - ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfInterfaces.add(ospfInterface); - ospfArea.setAreaId(Ip4Address.valueOf("2.2.2.2")); - ospfArea.setOspfInterfaceList(ospfInterfaces); - ospfProcess.setProcessId("10.10.10.10"); - ospfAreas = new ArrayList(); - ospfAreas.add(ospfArea); - ospfProcess.setAreas(ospfAreas); - ospfProcesses = new ArrayList(); - ospfProcesses.add(ospfProcess); - ospfProcess1 = new OspfProcessImpl(); - ospfProcess1.setProcessId("11.11.11.11"); - ospfArea1 = new OspfAreaImpl(); - ospfArea1.setAreaId(Ip4Address.valueOf("2.2.2.2")); - ospfArea1.setOspfInterfaceList(ospfInterfaces); - ospfAreas.add(ospfArea1); - ospfProcess1.setAreas(ospfAreas); - ospfProcesses.add(ospfProcess1); - connectedChannels = new ArrayList<>(); - } - - @After - public void tearDown() throws Exception { - controller = null; - maps.clear(); - connectedChannels.clear(); - controller = null; - maps = null; - ospfAgent = null; - driverService = null; - connectedChannels = null; - process = null; - ospfProcess = null; - ospfArea = null; - ospfInterface = null; - ospfInterfaces = null; - ospfAreas = null; - ospfProcesses = null; - ospfProcess1 = null; - ospfArea1 = null; - } - - /** - * Tests getAllConfiguredProcesses() method. - */ - @Test - public void testGetAllConfiguredProcesses() throws Exception { - process = controller.getAllConfiguredProcesses(); - assertThat(process, is(nullValue())); - } - - /** - * Tests addDeviceDetails() method. - */ - @Test(expected = Exception.class) - public void testAddDeviceDetails() throws Exception { - controller.addDeviceDetails(new OspfRouterImpl()); - assertThat(controller, is(notNullValue())); - } - - /** - * Tests removeDeviceDetails() method. - */ - @Test(expected = Exception.class) - public void testRemoveDeviceDetails() throws Exception { - controller.removeDeviceDetails(new OspfRouterImpl()); - assertThat(controller, is(notNullValue())); - } - - /** - * Tests init() method. - */ - @Test - public void testInit() throws Exception { - controller.init(); - assertThat(controller.systemStartTime, is(notNullValue())); - } - - /** - * Tests start() method. - */ - @Test - public void testStart() throws Exception { - ospfAgent = EasyMock.createMock(OspfAgent.class); - controller.start(ospfAgent, driverService); - controller.updateConfig(ospfProcesses); - assertThat(controller, is(notNullValue())); - } - - /** - * Tests stop() method. - */ - @Test(expected = Exception.class) - public void testStop() throws Exception { - controller.start(ospfAgent, driverService); - controller.stop(); - assertThat(controller, is(notNullValue())); - } - - - /** - * Tests updateConfig() method. - */ - @Test - public void testUpdateConfig1() throws Exception { - ospfProcess = new OspfProcessImpl(); - ospfArea = new OspfAreaImpl(); - ospfInterface = new OspfInterfaceImpl(); - ospfInterfaces = new ArrayList(); - ospfInterface.setIpAddress(Ip4Address.valueOf("10.10.10.5")); - ospfInterfaces.add(ospfInterface); - ospfArea.setAreaId(Ip4Address.valueOf("2.2.2.2")); - ospfArea.setOspfInterfaceList(ospfInterfaces); - ospfProcess.setProcessId("10.10.10.10"); - ospfAreas = new ArrayList(); - ospfAreas.add(ospfArea); - ospfProcess.setAreas(ospfAreas); - ospfProcesses = new ArrayList(); - ospfProcesses.add(ospfProcess); - controller.updateConfig(ospfProcesses); - assertThat(controller, is(notNullValue())); - } - - /** - * Tests addLinkDetails() method. - */ - @Test - public void testAddLinkDetails() throws Exception { - ospfAgent = EasyMock.createMock(OspfAgent.class); - controller.start(ospfAgent, driverService); - ospfRouter = new OspfRouterImpl(); - controller.addLinkDetails(ospfRouter, new OspfLinkTedImpl()); - assertThat(controller, is(notNullValue())); - } - - /** - * Tests removeLinkDetails() method. - */ - @Test - public void testRemoveLinkDetails() throws Exception { - ospfAgent = EasyMock.createMock(OspfAgent.class); - controller.start(ospfAgent, driverService); - ospfRouter = new OspfRouterImpl(); - controller.addLinkDetails(ospfRouter, new OspfLinkTedImpl()); - controller.removeLinkDetails(ospfRouter, new OspfLinkTedImpl()); - assertThat(controller, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/DeviceInformationImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/DeviceInformationImplTest.java deleted file mode 100644 index a96d5233e5..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/DeviceInformationImplTest.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for DeviceInformationImpl. - */ -public class DeviceInformationImplTest { - - private DeviceInformationImpl deviceInformation; - - @Before - public void setUp() throws Exception { - deviceInformation = new DeviceInformationImpl(); - } - - @After - public void tearDown() throws Exception { - deviceInformation = null; - } - - /** - * Tests routerId() getter method. - */ - @Test - public void testRouterId() throws Exception { - deviceInformation.setRouterId(Ip4Address.valueOf("1.1.1.1")); - assertThat(deviceInformation.routerId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests routerId() setter method. - */ - @Test - public void testSetRouterId() throws Exception { - deviceInformation.setRouterId(Ip4Address.valueOf("1.1.1.1")); - assertThat(deviceInformation.routerId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests deviceId() getter method. - */ - @Test - public void testDeviceId() throws Exception { - deviceInformation.setDeviceId(Ip4Address.valueOf("1.1.1.1")); - assertThat(deviceInformation.deviceId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests deviceId() getter method. - */ - @Test - public void testSetDeviceId() throws Exception { - deviceInformation.setDeviceId(Ip4Address.valueOf("1.1.1.1")); - assertThat(deviceInformation.deviceId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests interfaceId() method. - */ - @Test - public void testInterfaceId() throws Exception { - deviceInformation.addInterfaceId(Ip4Address.valueOf("1.1.1.1")); - assertThat(deviceInformation.interfaceId().size(), is(1)); - } - - /** - * Tests addInterfaceId() method. - */ - @Test - public void testAddInterfaceId() throws Exception { - deviceInformation.addInterfaceId(Ip4Address.valueOf("1.1.1.1")); - assertThat(deviceInformation.interfaceId().size(), is(1)); - } - - /** - * Tests areaId() getter method. - */ - @Test - public void testAreaId() throws Exception { - deviceInformation.setAreaId(Ip4Address.valueOf("1.1.1.1")); - assertThat(deviceInformation.areaId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests areaId() setter method. - */ - @Test - public void testSetAreaId() throws Exception { - deviceInformation.setAreaId(Ip4Address.valueOf("1.1.1.1")); - assertThat(deviceInformation.areaId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests isAlreadyCreated() getter method. - */ - @Test - public void testIsAlreadyCreated() throws Exception { - deviceInformation.setAlreadyCreated(true); - assertThat(deviceInformation.isAlreadyCreated(), is(true)); - } - - /** - * Tests isAlreadyCreated() setter method. - */ - @Test - public void testSetAlreadyCreated() throws Exception { - deviceInformation.setAlreadyCreated(true); - assertThat(deviceInformation.isAlreadyCreated(), is(true)); - } - - /** - * Tests isDr() getter method. - */ - @Test - public void testIsDr() throws Exception { - deviceInformation.setDr(true); - assertThat(deviceInformation.isDr(), is(true)); - } - - /** - * Tests isDr() setter method. - */ - @Test - public void testSetDr() throws Exception { - deviceInformation.setDr(true); - assertThat(deviceInformation.isDr(), is(true)); - } - - /** - * Tests neighborId() getter method. - */ - @Test - public void testNeighborId() throws Exception { - deviceInformation.setNeighborId(Ip4Address.valueOf("1.1.1.1")); - assertThat(deviceInformation.neighborId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests neighborId() setter method. - */ - @Test - public void testSetNeighborId() throws Exception { - deviceInformation.setNeighborId(Ip4Address.valueOf("1.1.1.1")); - assertThat(deviceInformation.neighborId(), is(Ip4Address.valueOf("1.1.1.1"))); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/LinkInformationImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/LinkInformationImplTest.java deleted file mode 100644 index e666c4e10d..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/LinkInformationImplTest.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for LinkInformationImpl. - */ -public class LinkInformationImplTest { - - private LinkInformationImpl linkInformation; - - @Before - public void setUp() throws Exception { - linkInformation = new LinkInformationImpl(); - } - - @After - public void tearDown() throws Exception { - linkInformation = null; - } - - /** - * Tests linkId() getter method. - */ - @Test - public void testLinkId() throws Exception { - linkInformation.setLinkId("1.1.1.1"); - assertThat(linkInformation.linkId(), is("1.1.1.1")); - } - - /** - * Tests linkId() setter method. - */ - @Test - public void testSetLinkId() throws Exception { - linkInformation.setLinkId("1.1.1.1"); - assertThat(linkInformation.linkId(), is("1.1.1.1")); - } - - /** - * Tests isAlreadyCreated() getter method. - */ - @Test - public void testIsAlreadyCreated() throws Exception { - linkInformation.setAlreadyCreated(true); - assertThat(linkInformation.isAlreadyCreated(), is(true)); - } - - /** - * Tests isAlreadyCreated() setter method. - */ - @Test - public void testSetAlreadyCreated() throws Exception { - linkInformation.setAlreadyCreated(true); - assertThat(linkInformation.isAlreadyCreated(), is(true)); - } - - /** - * Tests isLinkSrcIdNotRouterId() getter method. - */ - @Test - public void testIsLinkSrcIdNotRouterId() throws Exception { - linkInformation.setLinkSrcIdNotRouterId(true); - assertThat(linkInformation.isLinkSrcIdNotRouterId(), is(true)); - } - - /** - * Tests isLinkSrcIdNotRouterId() setter method. - */ - @Test - public void testSetLinkSrcIdNotRouterId() throws Exception { - linkInformation.setLinkSrcIdNotRouterId(true); - assertThat(linkInformation.isLinkSrcIdNotRouterId(), is(true)); - } - - /** - * Tests linkDestinationId() getter method. - */ - @Test - public void testLinkDestinationId() throws Exception { - linkInformation.setLinkDestinationId(Ip4Address.valueOf("1.1.1.1")); - assertThat(linkInformation.linkDestinationId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests linkDestinationId() setter method. - */ - @Test - public void testSetLinkDestinationId() throws Exception { - linkInformation.setLinkDestinationId(Ip4Address.valueOf("1.1.1.1")); - assertThat(linkInformation.linkDestinationId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests linkSourceId() getter method. - */ - @Test - public void testLinkSourceId() throws Exception { - linkInformation.setLinkSourceId(Ip4Address.valueOf("1.1.1.1")); - assertThat(linkInformation.linkSourceId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests linkSourceId() setter method. - */ - @Test - public void testSetLinkSourceId() throws Exception { - linkInformation.setLinkSourceId(Ip4Address.valueOf("1.1.1.1")); - assertThat(linkInformation.linkSourceId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests interfaceIp() getter method. - */ - @Test - public void testInterfaceIp() throws Exception { - linkInformation.setInterfaceIp(Ip4Address.valueOf("1.1.1.1")); - assertThat(linkInformation.interfaceIp(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests interfaceIp() setter method. - */ - @Test - public void testSetInterfaceIp() throws Exception { - linkInformation.setInterfaceIp(Ip4Address.valueOf("1.1.1.1")); - assertThat(linkInformation.interfaceIp(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests linkSourceIpAddress() getter method. - */ - @Test - public void testLinkSourceIpAddress() throws Exception { - linkInformation.setLinkSourceIpAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(linkInformation.linkSourceIpAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests linkSourceIpAddress() setter method. - */ - @Test - public void testSetLinkSourceIpAddress() throws Exception { - linkInformation.setLinkSourceIpAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(linkInformation.linkSourceIpAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests linkDestinationId() getter method. - */ - @Test - public void testLinkDestinationIpAddress() throws Exception { - linkInformation.setLinkDestinationIpAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(linkInformation.linkDestinationIpAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests linkDestinationId() setter method. - */ - @Test - public void testSetLinkDestinationIpAddress() throws Exception { - linkInformation.setLinkDestinationIpAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(linkInformation.linkDestinationIpAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfConfigUtilTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfConfigUtilTest.java deleted file mode 100644 index 4ac6dd9a48..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfConfigUtilTest.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.onosproject.ospf.controller.OspfProcess; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfJsonParsingUtilTest. - */ -public class OspfConfigUtilTest { - private ObjectMapper mapper; - private JsonNode jsonNode; - private List ospfProcessList = new ArrayList<>(); - private String jsonString = "{\n" + - "\t\"processes\": {\n" + - "\t\t\"areas\": [{\n" + - "\t\t\t\"interface\": [{\n" + - "\t\t\t\t\"interfaceIndex\": \"2\",\n" + - "\n" + - "\t\t\t\t\"helloIntervalTime\": \"10\",\n" + - "\n" + - "\t\t\t\t\"routerDeadIntervalTime\": \"40\",\n" + - "\n" + - "\t\t\t\t\"interfaceType\": \"2\",\n" + - "\n" + - "\t\t\t\t\"reTransmitInterval\": \"5\"\n" + - "\t\t\t}],\n" + - "\t\t\t\"areaId\": \"5.5.5.5\",\n" + - "\n" + - "\t\t\t\"routerId\": \"7.7.7.7\",\n" + - "\n" + - "\t\t\t\"isOpaqueEnable\": \"false\",\n" + - "\n" + - "\t\t\t\"externalRoutingCapability\": \"true\"\n" + - "\t\t}]\n" + - "\t}\n" + - "}"; - - @Before - public void setUp() throws Exception { - mapper = new ObjectMapper(); - jsonNode = mapper.readTree(jsonString); - mapper = new ObjectMapper(); - } - - @After - public void tearDown() throws Exception { - - } - - @Test - @Ignore - // Disabling because it seems to have an external dependency that can cause - // it to fail in some environments. - public void testProcesses() throws Exception { - jsonNode.path("areas"); - ospfProcessList = OspfConfigUtil.processes(jsonNode); - assertThat(ospfProcessList, is(notNullValue())); - } -} diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfControllerImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfControllerImplTest.java deleted file mode 100644 index b38ddfbf27..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfControllerImplTest.java +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - - -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLinkListener; -import org.onosproject.ospf.controller.OspfProcess; -import org.onosproject.ospf.controller.OspfRouter; -import org.onosproject.ospf.controller.OspfRouterListener; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.controller.area.OspfProcessImpl; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfRouterId. - */ -public class OspfControllerImplTest { - - private OspfControllerImpl ospfController; - private OspfRouterListener ospfRouterListener; - private OspfLinkListener ospfLinkListener; - private List ospfProcesses; - private OspfProcess process1; - private List areas; - private OspfAreaImpl ospfArea; - private List ospfInterfaces; - private OspfInterfaceImpl ospfInterface; - private OspfProcess ospfProcess; - private OspfArea ospfArea1; - private OspfRouter ospfRouter; - - @Before - public void setUp() throws Exception { - ospfController = new OspfControllerImpl(); - } - - @After - public void tearDown() throws Exception { - ospfController = null; - ospfRouterListener = null; - ospfLinkListener = null; - ospfProcesses = null; - areas = null; - ospfArea = null; - ospfInterfaces = null; - ospfInterface = null; - ospfProcess = null; - ospfProcess = null; - ospfArea1 = null; - ospfRouter = null; - } - - /** - * Tests activate() method. - */ - @Test - public void testActivate() throws Exception { - ospfController.activate(); - assertThat(ospfController, is(notNullValue())); - } - - @Test(expected = Exception.class) - public void testDeactivate() throws Exception { - ospfController.activate(); - ospfController.deactivate(); - assertThat(ospfController, is(notNullValue())); - } - - /** - * Tests addRouterListener() method. - */ - @Test - public void testAddRouterListener() throws Exception { - ospfRouterListener = EasyMock.createMock(OspfRouterListener.class); - ospfController.addRouterListener(ospfRouterListener); - assertThat(ospfController, is(notNullValue())); - } - - /** - * Tests removeRouterListener() method. - */ - @Test - public void testRemoveRouterListener() throws Exception { - ospfRouterListener = EasyMock.createMock(OspfRouterListener.class); - ospfController.addRouterListener(ospfRouterListener); - ospfController.removeRouterListener(ospfRouterListener); - assertThat(ospfController, is(notNullValue())); - } - - /** - * Tests addLinkListener() method. - */ - @Test - public void testAddLinkListener() throws Exception { - ospfLinkListener = EasyMock.createMock(OspfLinkListener.class); - ospfController.addLinkListener(ospfLinkListener); - assertThat(ospfController, is(notNullValue())); - } - - /** - * Tests removeLinkListener() method. - */ - @Test - public void testRemoveLinkListener() throws Exception { - ospfLinkListener = EasyMock.createMock(OspfLinkListener.class); - ospfController.addLinkListener(ospfLinkListener); - ospfController.removeLinkListener(ospfLinkListener); - assertThat(ospfController, is(notNullValue())); - } - - /** - * Tests deleteConfig() method. - */ - @Test - public void testDeleteConfig() throws Exception { - ospfProcess = new OspfProcessImpl(); - ospfArea = new OspfAreaImpl(); - ospfInterface = new OspfInterfaceImpl(); - ospfInterfaces = new ArrayList(); - ospfInterface.setIpAddress(Ip4Address.valueOf("10.10.10.5")); - ospfInterfaces.add(ospfInterface); - ospfArea.setAreaId(Ip4Address.valueOf("2.2.2.2")); - ospfArea.setOspfInterfaceList(ospfInterfaces); - ospfProcess.setProcessId("10.10.10.10"); - areas = new ArrayList(); - areas.add(ospfArea); - ospfProcess.setAreas(areas); - ospfProcesses = new ArrayList(); - ospfProcesses.add(ospfProcess); - process1 = new OspfProcessImpl(); - process1.setProcessId("11.11.11.11"); - ospfArea1 = new OspfAreaImpl(); - ospfArea1.setAreaId(Ip4Address.valueOf("2.2.2.2")); - ospfArea1.setOspfInterfaceList(ospfInterfaces); - areas.add(ospfArea1); - process1.setAreas(areas); - ospfProcesses.add(process1); - ospfController.deleteConfig(ospfProcesses, "INTERFACE"); - assertThat(ospfController, is(notNullValue())); - } - - /** - * Tests addLink() method. - */ - @Test - public void testAddLink() throws Exception { - ospfRouter = new OspfRouterImpl(); - - ospfController.agent.addLink(ospfRouter, new OspfLinkTedImpl()); - assertThat(ospfController, is(notNullValue())); - } - - /** - * Tests deleteLink() method. - */ - @Test - public void testDeleteLink() throws Exception { - ospfRouter = new OspfRouterImpl(); - - ospfController.agent.addLink(ospfRouter, new OspfLinkTedImpl()); - ospfController.agent.deleteLink(ospfRouter, new OspfLinkTedImpl()); - assertThat(ospfController, is(notNullValue())); - } - - /** - * Tests listener() method. - */ - @Test - public void testListener() throws Exception { - assertThat(ospfController.listener().size(), is(0)); - } - - /** - * Tests linkListener() method. - */ - @Test - public void testLinkListener() throws Exception { - assertThat(ospfController.linkListener().size(), is(0)); - } - - /** - * Tests addConnectedRouter() method. - */ - @Test - public void testaddConnectedRouter() throws Exception { - ospfRouter = new OspfRouterImpl(); - - ospfController.agent.addConnectedRouter(ospfRouter); - assertThat(ospfController, is(notNullValue())); - } - - /** - * Tests removeConnectedRouter() method. - */ - @Test - public void testRemoveConnectedRouter() throws Exception { - ospfRouter = new OspfRouterImpl(); - - ospfController.agent.addConnectedRouter(ospfRouter); - ospfController.agent.removeConnectedRouter(ospfRouter); - assertThat(ospfController, is(notNullValue())); - } - - /** - * Tests getAllConfiguredProcesses() method. - */ - @Test(expected = Exception.class) - public void testGetAllConfiguredProcesses() throws Exception { - assertThat(ospfController.getAllConfiguredProcesses().size(), is(0)); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImplTest.java deleted file mode 100644 index 1fe33d4c2a..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfDeviceTedImplTest.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.Ip6Address; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for OspfDeviceTedImpl. - */ -public class OspfDeviceTedImplTest { - private OspfDeviceTedImpl ospfDeviceTed; - - @Before - public void setUp() throws Exception { - ospfDeviceTed = new OspfDeviceTedImpl(); - } - - @After - public void tearDown() throws Exception { - ospfDeviceTed = null; - } - - /** - * Tests ipv4RouterIds() getter method. - */ - @Test - public void testIpv4RouterIds() throws Exception { - List list = new ArrayList(); - list.add(Ip4Address.valueOf("1.1.1.1")); - ospfDeviceTed.setIpv4RouterIds(list); - assertThat(ospfDeviceTed.ipv4RouterIds().size(), is(1)); - } - - /** - * Tests ipv4RouterIds() setter method. - */ - @Test - public void testSetIpv4RouterIds() throws Exception { - List list = new ArrayList(); - list.add(Ip4Address.valueOf("1.1.1.1")); - ospfDeviceTed.setIpv4RouterIds(list); - assertThat(ospfDeviceTed.ipv4RouterIds().size(), is(1)); - } - - /** - * Tests abr() getter method. - */ - @Test - public void testAbr() throws Exception { - ospfDeviceTed.setAbr(true); - assertThat(ospfDeviceTed.abr(), is(true)); - } - - /** - * Tests abr() setter method. - */ - @Test - public void testSetAbr() throws Exception { - ospfDeviceTed.setAbr(true); - assertThat(ospfDeviceTed.abr(), is(true)); - } - - /** - * Tests asbr() getter method. - */ - @Test - public void testAsbr() throws Exception { - ospfDeviceTed.setAsbr(true); - assertThat(ospfDeviceTed.asbr(), is(true)); - } - - /** - * Tests asbr() setter method. - */ - @Test - public void testSetAsbr() throws Exception { - ospfDeviceTed.setAsbr(true); - assertThat(ospfDeviceTed.asbr(), is(true)); - } - - /** - * Tests topologyIds() getter method. - */ - @Test - public void testTopologyIds() throws Exception { - List list = new ArrayList(); - list.add(Ip4Address.valueOf("1.1.1.1")); - ospfDeviceTed.setTopologyIds(list); - assertThat(ospfDeviceTed.topologyIds().size(), is(1)); - } - - /** - * Tests topologyIds() setter method. - */ - @Test - public void testSetTopologyIds() throws Exception { - List list = new ArrayList(); - list.add(Ip4Address.valueOf("1.1.1.1")); - ospfDeviceTed.setTopologyIds(list); - assertThat(ospfDeviceTed.topologyIds().size(), is(1)); - } - - /** - * Tests ipv6RouterIds() getter method. - */ - @Test - public void testIpv6RouterIds() throws Exception { - List list = new ArrayList(); - list.add(Ip6Address.valueOf(1)); - ospfDeviceTed.setIpv6RouterIds(list); - assertThat(ospfDeviceTed.ipv6RouterIds().size(), is(1)); - } - - /** - * Tests ipv6RouterIds() setter method. - */ - @Test - public void testSetIpv6RouterIds() throws Exception { - List list = new ArrayList(); - list.add(Ip6Address.valueOf(1)); - ospfDeviceTed.setIpv6RouterIds(list); - assertThat(ospfDeviceTed.ipv6RouterIds().size(), is(1)); - } -} diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandlerTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandlerTest.java deleted file mode 100644 index 49a7435b26..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfInterfaceChannelHandlerTest.java +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelFuture; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelStateEvent; -import org.jboss.netty.channel.ExceptionEvent; -import org.jboss.netty.channel.MessageEvent; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfAreaAddressRange; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.OspfNeighborState; -import org.onosproject.ospf.controller.OspfProcess; -import org.onosproject.ospf.controller.TopologyForDeviceAndLink; -import org.onosproject.ospf.controller.area.OspfAreaAddressRangeImpl; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.controller.area.OspfProcessImpl; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket; -import org.onosproject.ospf.protocol.util.ChecksumCalculator; - -import java.net.SocketAddress; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - - -/** - * Unit test class for OspfInterfaceChannelHandler. - */ -public class OspfInterfaceChannelHandlerTest { - private final String string1 = "2.2.2.2"; - private List addressRanges = new ArrayList(); - private List ospfInterfaces = new ArrayList<>(); - private Controller controller; - private OspfAreaImpl ospfArea; - private OspfInterfaceImpl ospfInterface; - private OspfInterfaceChannelHandler ospfInterfaceChannelHandler; - private OspfNbrImpl ospfNbr; - private ChannelHandlerContext channelHandlerContext; - private ChannelStateEvent channelStateEvent; - private TopologyForDeviceAndLink topologyForDeviceAndLink; - private List ospfProcesses = new ArrayList<>(); - private OspfProcess ospfProcess; - private Ip4Address ip4Address1 = Ip4Address.valueOf("10.10.10.10"); - private Ip4Address ip4Address2 = Ip4Address.valueOf("2.2.2.2"); - private Ip4Address ip4Address3 = Ip4Address.valueOf("13.13.13.13"); - private Ip4Address ip4Address4 = Ip4Address.valueOf("111.111.111.111"); - private Ip4Address ip4Address5 = Ip4Address.valueOf("10.226.165.164"); - private Ip4Address ip4Address6 = Ip4Address.valueOf("1.1.1.1"); - private Ip4Address ip4Address7 = Ip4Address.valueOf("10.226.165.100"); - private Ip4Address subnetAddress = Ip4Address.valueOf("255.255.255.255"); - private byte[] byteArray; - private byte[] checkArray; - private HelloPacket helloPacket; - private ChecksumCalculator checksumCalculator; - private ChannelBuffer buf; - private List ospfAreas = new ArrayList<>(); - - @Before - public void setUp() throws Exception { - ospfProcess = new OspfProcessImpl(); - ospfArea = createOspfArea(); - ospfAreas.add(ospfArea); - ospfProcess.setAreas(ospfAreas); - ospfProcesses.add(ospfProcess); - controller = new Controller(); - topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, ip4Address1, - ip4Address2, 2, topologyForDeviceAndLink); - ospfNbr.setNeighborId(ip4Address1); - ospfNbr.setRouterPriority(0); - ospfNbr.setNeighborDr(ip4Address3); - ospfInterface.addNeighbouringRouter(ospfNbr); - ospfInterfaceChannelHandler = new OspfInterfaceChannelHandler(controller, ospfProcesses); - } - - @After - public void tearDown() throws Exception { - ospfInterfaceChannelHandler = null; - ospfInterfaceChannelHandler = null; - ospfInterface = null; - channelHandlerContext = null; - channelStateEvent = null; - } - - /** - * Tests channelConnected() method. - */ - @Test(expected = Exception.class) - public void testChannelConnected() throws Exception { - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - channelStateEvent = EasyMock.createMock(ChannelStateEvent.class); - ospfInterfaceChannelHandler.channelConnected(channelHandlerContext, channelStateEvent); - } - - /** - * Tests exceptionCaught() method. - */ - @Test(expected = Exception.class) - public void testExceptionCaught() throws Exception { - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - ExceptionEvent exception = EasyMock.createMock(ExceptionEvent.class); - ospfInterfaceChannelHandler.exceptionCaught(channelHandlerContext, exception); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Tests channelDisconnected() method. - */ - @Test - public void testChannelDisconnected() throws Exception { - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - channelStateEvent = EasyMock.createMock(ChannelStateEvent.class); - ospfInterfaceChannelHandler.channelDisconnected(channelHandlerContext, channelStateEvent); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Tests initializeInterfaceMap() method. - */ - @Test - public void testInitializeInterfaceMap() throws Exception { - ospfInterfaceChannelHandler.initializeInterfaceMap(); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Tests updateInterfaceMap() method. - */ - @Test - public void testUpdateInterfaceMap() throws Exception { - ospfInterfaceChannelHandler.updateInterfaceMap(ospfProcesses); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Utility for test method. - */ - private OspfAreaImpl createOspfArea() throws Exception { - OspfAreaAddressRangeImpl ospfAreaAddressRange; - ospfAreaAddressRange = createOspfAreaAddressRange(); - addressRanges.add(ospfAreaAddressRange); - OspfAreaImpl ospfArea = new OspfAreaImpl(); - ospfArea.setAreaId(ip4Address5); - ospfArea.setExternalRoutingCapability(true); - OspfInterfaceImpl ospfInterface = createOspfInterface(); - ospfInterfaces.add(ospfInterface); - ospfArea.setOspfInterfaceList(ospfInterfaces); - RouterLsa routerLsa = new RouterLsa(); - routerLsa.setLsType(1); - routerLsa.setLinkStateId(string1); - routerLsa.setAdvertisingRouter(ip4Address2); - ospfArea.addLsa(routerLsa, false, ospfInterface); - ospfArea.setRouterId(ip4Address4); - - return ospfArea; - } - - /** - * Utility for test method. - */ - private OspfAreaAddressRangeImpl createOspfAreaAddressRange() { - OspfAreaAddressRangeImpl ospfAreaAddressRange = new OspfAreaAddressRangeImpl(); - ospfAreaAddressRange.setIpAddress(ip4Address5); - ospfAreaAddressRange.setAdvertise(true); - ospfAreaAddressRange.setMask("mask"); - return ospfAreaAddressRange; - } - - /** - * Tests messageReceived() method. - */ - @Test - public void testMessageReceived() throws Exception { - ospfInterface.setIpAddress(Ip4Address.valueOf("11.11.11.11")); - ospfInterface.setInterfaceType(2); - ospfArea.setAreaId(Ip4Address.valueOf("13.13.13.13")); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - MessageEvent messageEvent = new MessageEvent() { - @Override - public Object getMessage() { - helloPacket = new HelloPacket(); - helloPacket.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - helloPacket.setRouterId(Ip4Address.valueOf("10.10.10.10")); - helloPacket.setOspfVer(2); - helloPacket.setAreaId(Ip4Address.valueOf("12.12.12.12")); - helloPacket.setOptions(2); - helloPacket.setAreaId(Ip4Address.valueOf("5.5.5.5")); - helloPacket.setNetworkMask(Ip4Address.valueOf("3.3.3.3")); - helloPacket.setOspftype(1); - helloPacket.setAuthType(0); - helloPacket.setAuthentication(0); - checksumCalculator = new ChecksumCalculator(); - byteArray = helloPacket.asBytes(); - helloPacket.setOspfPacLength(byteArray.length); - checkArray = checksumCalculator.calculateOspfCheckSum(byteArray, 12, 13); - buf = ChannelBuffers.copiedBuffer(checkArray); - helloPacket.setChecksum(buf.readUnsignedShort()); - List messPackets = new ArrayList<>(); - messPackets.add(helloPacket); - return messPackets; - } - - @Override - public SocketAddress getRemoteAddress() { - return null; - } - - @Override - public Channel getChannel() { - return null; - } - - @Override - public ChannelFuture getFuture() { - return null; - } - }; - ospfInterfaceChannelHandler.messageReceived(channelHandlerContext, messageEvent); - assertThat(ospfInterfaceChannelHandler, is(notNullValue())); - } - - /** - * Utility for test method. - */ - private OspfInterfaceImpl createOspfInterface1() throws UnknownHostException { - ospfInterface = new OspfInterfaceImpl(); - OspfAreaImpl ospfArea = new OspfAreaImpl(); - OspfInterfaceChannelHandler ospfInterfaceChannelHandler = EasyMock.createMock( - OspfInterfaceChannelHandler.class); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, ip4Address5, - ip4Address6, 2, topologyForDeviceAndLink); - ospfNbr.setState(OspfNeighborState.FULL); - ospfNbr.setNeighborId(ip4Address7); - ospfInterface = new OspfInterfaceImpl(); - ospfInterface.setIpAddress(ip4Address5); - ospfInterface.setIpNetworkMask(subnetAddress); - ospfInterface.setBdr(ip4Address4); - ospfInterface.setDr(ip4Address4); - ospfInterface.setHelloIntervalTime(20); - ospfInterface.setInterfaceType(2); - ospfInterface.setReTransmitInterval(2000); - ospfInterface.setMtu(6500); - ospfInterface.setRouterDeadIntervalTime(1000); - ospfInterface.setRouterPriority(1); - ospfInterface.setInterfaceType(1); - ospfInterface.addNeighbouringRouter(ospfNbr); - return ospfInterface; - } - - /** - * Utility for test method. - */ - private OspfInterfaceImpl createOspfInterface() throws Exception { - ospfInterface = new OspfInterfaceImpl(); - LsaHeader lsaHeader = new LsaHeader(); - lsaHeader.setLsType(OspfLsaType.ROUTER.value()); - RouterLsa routerLsa = new RouterLsa(); - OspfAreaImpl ospfArea = new OspfAreaImpl(); - ospfArea.addLsa(routerLsa, true, ospfInterface); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, ip4Address5, - ip4Address6, 2, topologyForDeviceAndLink); - ospfNbr.setState(OspfNeighborState.EXSTART); - ospfNbr.setNeighborId(ip4Address7); - this.ospfInterface = new OspfInterfaceImpl(); - this.ospfInterface.setIpAddress(ip4Address5); - this.ospfInterface.setIpNetworkMask(subnetAddress); - this.ospfInterface.setBdr(ip4Address4); - this.ospfInterface.setDr(ip4Address4); - this.ospfInterface.setHelloIntervalTime(20); - this.ospfInterface.setInterfaceType(2); - this.ospfInterface.setReTransmitInterval(2000); - this.ospfInterface.setMtu(6500); - this.ospfInterface.setRouterDeadIntervalTime(1000); - this.ospfInterface.setRouterPriority(1); - this.ospfInterface.setInterfaceType(1); - this.ospfInterface.setInterfaceIndex(1); - this.ospfInterface.addNeighbouringRouter(ospfNbr); - this.ospfInterface.setOspfArea(ospfArea); - return this.ospfInterface; - } - - /** - * Utility for test method. - */ - private DdPacket createDdPacket() throws OspfParseException { - byte[] ddPacket = {2, 2, 0, 32, -64, -88, -86, 8, 0, 0, 0, 1, -96, 82, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119, -87, 126}; - DdPacket ddPacket1 = new DdPacket(); - ChannelBuffer buf = ChannelBuffers.buffer(ddPacket.length); - buf.writeBytes(ddPacket); - ddPacket1.readFrom(buf); - return ddPacket1; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfLinkTedImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfLinkTedImplTest.java deleted file mode 100644 index 87fc8538cb..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfLinkTedImplTest.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onlab.util.Bandwidth; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for OspfDeviceTedImpl. - */ -public class OspfLinkTedImplTest { - private OspfLinkTedImpl ospfLinkTed; - - @Before - public void setUp() throws Exception { - ospfLinkTed = new OspfLinkTedImpl(); - } - - @After - public void tearDown() throws Exception { - ospfLinkTed = null; - } - - /** - * Tests maximumLink() getter method. - */ - @Test - public void testMaximumLink() throws Exception { - - ospfLinkTed.setMaximumLink(Bandwidth.bps(1234)); - assertThat(ospfLinkTed.maximumLink(), is(Bandwidth.bps(1234))); - } - - /** - * Tests maximumLink() setter method. - */ - @Test - public void testSetMaximumLink() throws Exception { - ospfLinkTed.setMaximumLink(Bandwidth.bps(1234)); - assertThat(ospfLinkTed.maximumLink(), is(Bandwidth.bps(1234))); - } - - /** - * Tests ipv6RemRouterId() getter method. - */ - @Test - public void testIpv6RemRouterId() throws Exception { - List list = new ArrayList(); - ospfLinkTed.setIpv6RemRouterId(list); - assertThat(ospfLinkTed.ipv6RemRouterId().size(), is(0)); - } - - /** - * Tests ipv6RemRouterId() setter method. - */ - @Test - public void testSetIpv6RemRouterId() throws Exception { - List list = new ArrayList(); - ospfLinkTed.setIpv6RemRouterId(list); - assertThat(ospfLinkTed.ipv6RemRouterId().size(), is(0)); - } - - /** - * Tests ipv4RemRouterId() getter method. - */ - @Test - public void testIpv4RemRouterId() throws Exception { - List list = new ArrayList(); - list.add(Ip4Address.valueOf(1)); - ospfLinkTed.setIpv4RemRouterId(list); - assertThat(ospfLinkTed.ipv4RemRouterId().size(), is(1)); - } - - /** - * Tests ipv4RemRouterId() setter method. - */ - @Test - public void testSetIpv4RemRouterId() throws Exception { - List list = new ArrayList(); - list.add(Ip4Address.valueOf(1)); - ospfLinkTed.setIpv4RemRouterId(list); - assertThat(ospfLinkTed.ipv4RemRouterId().size(), is(1)); - } - - /** - * Tests ipv6LocRouterId() getter method. - */ - @Test - public void testIpv6LocRouterId() throws Exception { - List list = new ArrayList(); - ospfLinkTed.setIpv4LocRouterId(list); - assertThat(ospfLinkTed.ipv6LocRouterId().size(), is(0)); - } - - /** - * Tests ipv6LocRouterId() setter method. - */ - @Test - public void testSetIpv6LocRouterId() throws Exception { - List list = new ArrayList(); - ospfLinkTed.setIpv4LocRouterId(list); - assertThat(ospfLinkTed.ipv6LocRouterId().size(), is(0)); - } - - /** - * Tests ipv4LocRouterId() getter method. - */ - @Test - public void testIpv4LocRouterId() throws Exception { - List list = new ArrayList(); - list.add(Ip4Address.valueOf(1)); - ospfLinkTed.setIpv4LocRouterId(list); - assertThat(ospfLinkTed.ipv4LocRouterId().size(), is(1)); - } - - /** - * Tests ipv4LocRouterId() setter method. - */ - @Test - public void testSetIpv4LocRouterId() throws Exception { - List list = new ArrayList(); - list.add(Ip4Address.valueOf(1)); - ospfLinkTed.setIpv4LocRouterId(list); - assertThat(ospfLinkTed.ipv4LocRouterId().size(), is(1)); - } - - /** - * Tests teMetric() getter method. - */ - @Test - public void testTeMetric() throws Exception { - ospfLinkTed.setTeMetric(1234); - assertThat(ospfLinkTed.teMetric(), is(1234)); - } - - /** - * Tests teMetric() setter method. - */ - @Test - public void testSetTeMetric() throws Exception { - ospfLinkTed.setTeMetric(1234); - assertThat(ospfLinkTed.teMetric(), is(1234)); - } - - /** - * Tests maxReserved() getter method. - */ - @Test - public void testMaxReserved() throws Exception { - ospfLinkTed.setMaxReserved(Bandwidth.bps(1234)); - assertThat(ospfLinkTed.maxReserved(), is(Bandwidth.bps(1234))); - } - - /** - * Tests maxReserved() setter method. - */ - @Test - public void testSetMaxReserved() throws Exception { - ospfLinkTed.setMaxReserved(Bandwidth.bps(1234)); - assertThat(ospfLinkTed.maxReserved(), is(Bandwidth.bps(1234))); - } - - /** - * Tests maxUnResBandwidth() getter method. - */ - @Test - public void testMaxUnResBandwidth() throws Exception { - ospfLinkTed.setMaxUnResBandwidth(Bandwidth.bps(1234)); - assertThat(ospfLinkTed.maxUnResBandwidth(), is(notNullValue())); - } - - /** - * Tests maxUnResBandwidth() setter method. - */ - @Test - public void testSetMaxUnResBandwidth() throws Exception { - ospfLinkTed.setMaxUnResBandwidth(Bandwidth.bps(1234.0)); - assertThat(ospfLinkTed.maxUnResBandwidth(), is(notNullValue())); - } -} diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageDecoderTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageDecoderTest.java deleted file mode 100644 index a7dd372a12..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageDecoderTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.easymock.EasyMock; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.net.InetSocketAddress; -import java.net.SocketAddress; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfMessageDecoder. - */ -public class OspfMessageDecoderTest { - - private final byte[] hellopacket = {0, 0, 0, 0, 0, 2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0, 0, - 40, -64, -88, -86, 8, 0, 0, 0, 0}; - private final byte[] ddpacket = {0, 0, 0, 0, 2, 2, 0, 32, -64, -88, -86, 8, 0, 0, 0, 1, -96, 82, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119, -87, 126}; - private final byte[] ddpacket44 = {0, 0, 0, 0, 2, 2, 0, 10, -64, -88}; - private final byte[] lsAckpacket = {0, 0, 0, 0, 2, 5, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, -30, -12, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86, 2, -64, - -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48}; - private final byte[] lsUpdatePacket = {0, 0, 0, 0, 2, 4, 0, 76, -64, -88, -86, 3, 0, 0, 0, 1, 7, 111, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 16, 2, 1, -64, -88, - -86, 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48, 2, 0, 0, 2, - -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10}; - private final byte[] lsRequestPacket = {0, 0, 0, 0, 2, 3, 0, 36, -64, -88, -86, 3, 0, 0, 0, 1, -67, -57, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88, -86, 8, -64, -88, -86, 8}; - private OspfMessageDecoder ospfMessageDecoder; - private ChannelHandlerContext ctx; - private Channel channel; - private SocketAddress socketAddress; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - ospfMessageDecoder = new OspfMessageDecoder(); - } - - @After - public void tearDown() throws Exception { - ospfMessageDecoder = null; - channel = null; - socketAddress = null; - channelBuffer = null; - } - - /** - * Tests decode() method. - */ - @Test - public void testDecode() throws Exception { - channel = EasyMock.createMock(Channel.class); - socketAddress = InetSocketAddress.createUnresolved("127.0.0.1", 7000); - channelBuffer = ChannelBuffers.copiedBuffer(hellopacket); - ospfMessageDecoder.decode(ctx, channel, channelBuffer); - assertThat(ospfMessageDecoder, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageEncoderTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageEncoderTest.java deleted file mode 100644 index c356877503..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfMessageEncoderTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - - -import org.easymock.EasyMock; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelHandlerContext; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Created by sdn on 13/1/16. - */ -public class OspfMessageEncoderTest { - - private final byte[] object = {2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39, - 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0, - 0, 40, -64, -88, -86, 8, 0, 0, 0, 0}; - private OspfMessageEncoder ospfMessageEncoder; - private ChannelHandlerContext channelHandlerContext; - private Channel channel; - - @Before - public void setUp() throws Exception { - ospfMessageEncoder = new OspfMessageEncoder(); - channelHandlerContext = EasyMock.createMock(ChannelHandlerContext.class); - channel = EasyMock.createMock(Channel.class); - } - - @After - public void tearDown() throws Exception { - ospfMessageEncoder = null; - } - - /** - * Tests encode() method. - */ - @Test - public void testEncode() throws Exception { - assertThat(ospfMessageEncoder.encode(channelHandlerContext, channel, object), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfNbrImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfNbrImplTest.java deleted file mode 100644 index 25e2ac6763..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfNbrImplTest.java +++ /dev/null @@ -1,768 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - - -import org.easymock.EasyMock; -import org.jboss.netty.channel.Channel; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfAreaAddressRange; -import org.onosproject.ospf.controller.OspfInterface; -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.OspfMessage; -import org.onosproject.ospf.controller.OspfNeighborState; -import org.onosproject.ospf.controller.TopologyForDeviceAndLink; -import org.onosproject.ospf.controller.area.OspfAreaAddressRangeImpl; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.controller.lsdb.LsaWrapperImpl; -import org.onosproject.ospf.controller.lsdb.LsdbAgeImpl; -import org.onosproject.ospf.controller.util.OspfInterfaceType; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.types.NetworkLsa; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest; -import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate; -import org.onosproject.ospf.protocol.util.ChecksumCalculator; -import org.onosproject.ospf.protocol.util.OspfInterfaceState; -import org.onosproject.ospf.protocol.util.OspfUtil; - -import java.net.SocketAddress; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfNbrImpl. - */ -public class OspfNbrImplTest { - private List addressRanges = new ArrayList(); - private OspfNbrImpl ospfNbr; - private OspfNbrImpl ospfNbr1; - private OspfInterfaceImpl ospfInterface; - private OspfAreaImpl ospfArea; - private OspfInterfaceImpl ospfInterface1; - private OspfInterfaceImpl ospfInterface2; - private List ospfInterfaces = new ArrayList(); - private List ospfLsaList; - private Channel channel; - private Channel channel1; - private Channel channel2; - private OspfMessage ospfMessage; - private TopologyForDeviceAndLink topologyForDeviceAndLink; - private LsaHeader lsaHeader; - - @Before - public void setUp() throws Exception { - lsaHeader = new LsaHeader(); - lsaHeader.setLsType(OspfLsaType.ROUTER.value()); - RouterLsa routerLsa = new RouterLsa(lsaHeader); - routerLsa.setLsType(OspfLsaType.ROUTER.value()); - ospfInterface = new OspfInterfaceImpl(); - ospfInterface.setInterfaceType(2); - ospfInterface.setInterfaceIndex(1); - ospfInterface.setRouterDeadIntervalTime(30); - ospfInterface.setReTransmitInterval(30); - ospfInterface.setDr(Ip4Address.valueOf("1.1.1.1")); - ospfInterface.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - ospfInterface.setState(OspfInterfaceState.POINT2POINT); - ospfArea = createOspfArea(); - ospfArea.addLsa(routerLsa, true, ospfInterface); - ospfInterface.setOspfArea(ospfArea); - ospfInterface1 = new OspfInterfaceImpl(); - ospfInterface1.setInterfaceType(2); - ospfInterface1.setInterfaceIndex(1); - ospfInterface1.setRouterDeadIntervalTime(30); - ospfInterface1.setReTransmitInterval(30); - ospfInterface1.setDr(Ip4Address.valueOf("7.7.7.7")); - ospfInterface1.setIpAddress(Ip4Address.valueOf("7.7.7.7")); - ospfInterface1.setState(OspfInterfaceState.DOWN); - ospfInterface1.setOspfArea(ospfArea); - ospfInterface2 = new OspfInterfaceImpl(); - ospfInterface2.setInterfaceType(2); - ospfInterface2.setInterfaceIndex(1); - ospfInterface2.setRouterDeadIntervalTime(30); - ospfInterface2.setReTransmitInterval(30); - ospfInterface2.setDr(Ip4Address.valueOf("6.6.6.6")); - ospfInterface2.setIpAddress(Ip4Address.valueOf("6.6.6.6")); - ospfInterface2.setOspfArea(ospfArea); - ospfInterface1.setState(OspfInterfaceState.DR); - ospfInterfaces = new ArrayList(); - ospfInterfaces.add(ospfInterface); - ospfInterfaces.add(ospfInterface1); - ospfInterfaces.add(ospfInterface2); - ospfArea.setOspfInterfaceList(ospfInterfaces); - ospfInterface.setState(OspfInterfaceState.POINT2POINT); - ospfArea.setRouterId(Ip4Address.valueOf("111.111.111.111")); - topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl(); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("1.1.1.1"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - } - - @After - public void tearDown() throws Exception { - ospfNbr = null; - ospfArea = null; - ospfInterface = null; - ospfLsaList = null; - channel = null; - channel1 = null; - channel2 = null; - ospfMessage = null; - - } - - /** - * Tests neighborIpAddr() method. - */ - @Test - public void testNeighborIpAddr() throws Exception { - assertThat(ospfNbr.neighborIpAddr(), is(notNullValue())); - } - - /** - * Tests isOpaqueCapable() getter method. - */ - @Test - public void testIsOpaqueCapable() throws Exception { - assertThat(ospfNbr.isOpaqueCapable(), is(false)); - } - - /** - * Tests isOpaqueCapable() setter method. - */ - @Test - public void testSetIsOpaqueCapable() throws Exception { - ospfNbr.setIsOpaqueCapable(true); - assertThat(ospfNbr.isOpaqueCapable(), is(true)); - } - - /** - * Tests oneWayReceived() method. - */ - @Test - public void testOneWayReceived() throws Exception { - ospfMessage = new HelloPacket(); - ospfNbr.setState(OspfNeighborState.ATTEMPT); - channel = EasyMock.createMock(Channel.class); - ospfNbr.oneWayReceived(ospfMessage, channel); - channel1 = EasyMock.createMock(Channel.class); - ospfNbr.setState(OspfNeighborState.DOWN); - ospfNbr.oneWayReceived(ospfMessage, channel1); - channel2 = EasyMock.createMock(Channel.class); - ospfNbr.setState(OspfNeighborState.TWOWAY); - ospfNbr.oneWayReceived(ospfMessage, channel2); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests twoWayReceived() method. - */ - @Test(expected = Exception.class) - public void testTwoWayReceived() throws Exception { - ospfNbr.setNeighborDr(Ip4Address.valueOf("1.1.1.1")); - ospfMessage = new HelloPacket(); - ospfNbr.setState(OspfNeighborState.ATTEMPT); - ospfNbr.setNeighborDr(Ip4Address.valueOf("2.2.2.2")); - ospfInterface.setIpAddress(Ip4Address.valueOf("2.2.2.2")); - channel = EasyMock.createMock(Channel.class); - SocketAddress socketAddress = EasyMock.createMock(SocketAddress.class); - channel.bind(socketAddress); - ospfNbr.twoWayReceived(ospfMessage, channel); - ospfInterface.setIpAddress(Ip4Address.valueOf("3.3.3.3")); - channel1 = EasyMock.createMock(Channel.class); - ospfNbr.twoWayReceived(ospfMessage, channel1); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests negotiationDone() method. - */ - @Test - public void testNegotiationDone() throws Exception { - - ospfLsaList = new ArrayList(); - RouterLsa routerLsa = new RouterLsa(); - routerLsa.setLsType(OspfLsaType.ROUTER.value()); - ospfLsaList.add(routerLsa); - DdPacket ddPacket = new DdPacket(); - ddPacket.setIsOpaqueCapable(true); - ospfMessage = ddPacket; - ospfNbr.setState(OspfNeighborState.EXSTART); - ospfNbr.setIsOpaqueCapable(true); - channel = null; - channel = EasyMock.createMock(Channel.class); - ospfNbr.negotiationDone(ospfMessage, true, ospfLsaList, channel); - channel1 = EasyMock.createMock(Channel.class); - ospfNbr.negotiationDone(ospfMessage, false, ospfLsaList, channel1); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests processLsas() method. - */ - @Test - public void testProcessLsas() throws Exception { - ospfLsaList = new ArrayList(); - RouterLsa routerLsa = new RouterLsa(); - routerLsa.setLsType(1); - ospfLsaList.add(routerLsa); - NetworkLsa networkLsa = new NetworkLsa(); - routerLsa.setLsType(2); - ospfLsaList.add(networkLsa); - routerLsa.setLsType(3); - ospfLsaList.add(routerLsa); - ospfNbr.processLsas(ospfLsaList); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests seqNumMismatch() method. - */ - @Test - public void testSeqNumMismatch() throws Exception { - ospfNbr.setState(OspfNeighborState.FULL); - assertThat(ospfNbr.seqNumMismatch("samelsa"), is(notNullValue())); - } - - /** - * Tests badLSReq() method. - */ - @Test - public void testBadLSReq() throws Exception { - channel = EasyMock.createMock(Channel.class); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfNbr.badLSReq(channel); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests processDdPacket() method. - */ - @Test - public void testProcessDdPacket() throws Exception { - ospfArea.addLsa(new RouterLsa(), false, ospfInterface); - ospfArea.addLsa(new RouterLsa(), ospfInterface); - ospfArea.addLsaToMaxAgeBin("lsa", new LsaWrapperImpl()); - channel = EasyMock.createMock(Channel.class); - DdPacket ddPacket = new DdPacket(); - ddPacket.addLsaHeader(new LsaHeader()); - ospfNbr.processDdPacket(true, ddPacket, channel); - channel1 = EasyMock.createMock(Channel.class); - ddPacket.setIsMore(1); - ospfNbr.processDdPacket(false, ddPacket, channel1); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests exchangeDone() method. - */ - @Test - public void testExchangeDone() throws Exception { - ospfMessage = new HelloPacket(); - channel = EasyMock.createMock(Channel.class); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfNbr.exchangeDone(ospfMessage, channel); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests exchangeDone() method. - */ - @Test - public void testExchangeDone1() throws Exception { - ospfMessage = new HelloPacket(); - channel = EasyMock.createMock(Channel.class); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfLsaList = new ArrayList(); - RouterLsa routerLsa = new RouterLsa(); - routerLsa.setLsType(1); - ospfLsaList.add(routerLsa); - NetworkLsa networkLsa = new NetworkLsa(); - routerLsa.setLsType(2); - ospfLsaList.add(networkLsa); - routerLsa.setLsType(3); - ospfLsaList.add(routerLsa); - ospfNbr.processLsas(ospfLsaList); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfNbr.exchangeDone(ospfMessage, channel); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests adjOk() method. - */ - @Test - public void testAdjOk() throws Exception { - channel = EasyMock.createMock(Channel.class); - ospfInterface.setInterfaceType(OspfInterfaceType.BROADCAST.value()); - ospfInterface.setIpAddress(Ip4Address.valueOf("2.2.2.2")); - ospfNbr1 = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("1.1.1.1"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - ospfNbr1.setState(OspfNeighborState.TWOWAY); - ospfNbr1.setNeighborDr(Ip4Address.valueOf("2.2.2.2")); - ospfNbr1.adjOk(channel); - assertThat(ospfNbr1, is(notNullValue())); - - ospfInterface.setInterfaceType(OspfInterfaceType.POINT_TO_POINT.value()); - ospfNbr1 = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("1.1.1.1"), - Ip4Address.valueOf("2.2.2.2"), 2, - topologyForDeviceAndLink); - channel = null; - channel = EasyMock.createMock(Channel.class); - ospfNbr1.adjOk(channel); - assertThat(ospfNbr1, is(notNullValue())); - } - - /** - * Tests processLsUpdate() method. - */ - @Test - public void testProcessLsUpdate() throws Exception { - LsUpdate ospfMessage = new LsUpdate(); - ospfMessage.setSourceIp(Ip4Address.valueOf("10.10.10.10")); - ospfMessage.addLsa(new RouterLsa()); - ospfMessage.addLsa(new NetworkLsa()); - channel = EasyMock.createMock(Channel.class); - ospfNbr.setState(OspfNeighborState.EXCHANGE); - ospfNbr.processLsUpdate(ospfMessage, channel); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests loadingDone() method. - */ - @Test - public void testLoadingDone() throws Exception { - LsaHeader lsaHeader = new LsaHeader(); - lsaHeader.setLsType(OspfLsaType.ROUTER.value()); - RouterLsa routerLsa = new RouterLsa(lsaHeader); - ospfArea.addLsa(routerLsa, false, ospfInterface); - ospfArea.addLsa(routerLsa, ospfInterface); - ospfArea.addLsaToMaxAgeBin("lsa", new LsaWrapperImpl()); - ospfNbr.loadingDone(); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests processReceivedLsa() method. - */ - @Test - public void testProcessReceivedLsa() throws Exception { - LsaWrapperImpl lsaWrapper = new LsaWrapperImpl(); - LsdbAgeImpl lsdbAge = new LsdbAgeImpl(new OspfAreaImpl()); - lsdbAge.ageLsaAndFlood(); - lsaWrapper.setLsdbAge(lsdbAge); - lsaWrapper.setLsaHeader(new NetworkLsa()); - RouterLsa routerlsa = new RouterLsa(); - routerlsa.setLsType(1); - routerlsa.setOptions(2); - routerlsa.setAdvertisingRouter(Ip4Address.valueOf("1.1.1.1")); - routerlsa.setAge(100); - routerlsa.setLinkStateId("2.2.2.2"); - routerlsa.setLsSequenceNo(1010101); - lsaWrapper.setLsaHeader(new RouterLsa()); - ospfArea.addLsa(routerlsa, false, ospfInterface); - - lsaWrapper.addLsa(OspfLsaType.ROUTER, routerlsa); - ospfArea.addLsa(routerlsa, ospfInterface); - ospfArea.addLsaToMaxAgeBin("lsa", new LsaWrapperImpl()); - byte[] res = routerlsa.asBytes(); - routerlsa.setLsPacketLen(res.length); - res = new ChecksumCalculator().calculateLsaChecksum(routerlsa.asBytes(), 16, 17); - routerlsa.setLsCheckSum(OspfUtil.byteToInteger(res)); - channel = EasyMock.createMock(Channel.class); - lsdbAge.ageLsaAndFlood(); - assertThat(ospfNbr.processReceivedLsa(lsaWrapper.lsaHeader(), true, channel, - Ip4Address.valueOf("10.10.10.10")), is(true)); - channel1 = EasyMock.createMock(Channel.class); - assertThat(ospfNbr.processReceivedLsa(routerlsa, true, channel1, - Ip4Address.valueOf("10.10.10.10")), is(true)); - - } - - /** - * Tests isNullorLatest() method. - */ - @Test - public void testIsNullorLatest() throws Exception { - - LsaWrapperImpl lsaWrapper = new LsaWrapperImpl(); - LsdbAgeImpl lsdbAge = new LsdbAgeImpl(new OspfAreaImpl()); - lsdbAge.ageLsaAndFlood(); - lsaWrapper.setLsdbAge(lsdbAge); - lsaWrapper.setLsaHeader(new LsaHeader()); - lsaWrapper.addLsa(OspfLsaType.ROUTER, new RouterLsa()); - assertThat(ospfNbr.isNullorLatest(lsaWrapper, new LsaHeader()), is(notNullValue())); - } - - /** - * Tests processSelfOriginatedLsa() method. - */ - @Test - public void testProcessSelfOriginatedLsa() throws Exception { - ospfNbr.processSelfOriginatedLsa(); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests sendLsa() method. - */ - @Test - public void testSendLsa() throws Exception { - channel = EasyMock.createMock(Channel.class); - ospfNbr.sendLsa(lsaHeader, Ip4Address.valueOf("1.1.1.1"), channel); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests directAcknowledge() method. - */ - @Test - public void testDirectAcknowledge() throws Exception { - channel = EasyMock.createMock(Channel.class); - ospfNbr.directAcknowledge(new LsaHeader(), channel, Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests neighborDown() method. - */ - @Test(expected = Exception.class) - public void testNeighborDown() throws Exception { - ospfNbr.neighborDown(); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests startFloodingTimer() method. - */ - @Test - public void testStartFloodingTimer() throws Exception { - channel = EasyMock.createMock(Channel.class); - ospfNbr.startFloodingTimer(channel); - assertThat(ospfNbr, is(notNullValue())); - } - - /** - * Tests lastDdPacket() getter method. - */ - @Test - public void testGetLastDdPacket() throws Exception { - ospfNbr.setLastDdPacket(new DdPacket()); - assertThat(ospfNbr.lastDdPacket(), is(notNullValue())); - } - - /** - * Tests lastDdPacket() setter method. - */ - @Test - public void testSetLastDdPacket() throws Exception { - ospfNbr.setLastDdPacket(new DdPacket()); - assertThat(ospfNbr.lastDdPacket(), is(notNullValue())); - } - - /** - * Tests neighborId() getter method. - */ - @Test - public void testNeighborId() throws Exception { - ospfNbr.setNeighborId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfNbr.neighborId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests neighborId() setter method. - */ - @Test - public void testSetNeighborId() throws Exception { - ospfNbr.setNeighborId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfNbr.neighborId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests neighborDr() getter method. - */ - @Test - public void testNeighborDr() throws Exception { - ospfNbr.setNeighborDr(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfNbr.neighborDr(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests neighborDr() setter method. - */ - @Test - public void testSetNeighborDr() throws Exception { - ospfNbr.setNeighborDr(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfNbr.neighborDr(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests neighborBdr() getter method. - */ - @Test - public void testNeighborBdr() throws Exception { - ospfNbr.setNeighborBdr(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfNbr.neighborBdr(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests neighborBdr() setter method. - */ - @Test - public void testSetNeighborBdr() throws Exception { - ospfNbr.setNeighborBdr(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfNbr.neighborBdr(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests routerPriority() getter method. - */ - @Test - public void testRouterPriority() throws Exception { - ospfNbr.setRouterPriority(1); - assertThat(ospfNbr.routerPriority(), is(1)); - } - - /** - * Tests routerPriority() setter method. - */ - @Test - public void testSetRouterPriority() throws Exception { - ospfNbr.setRouterPriority(1); - assertThat(ospfNbr.routerPriority(), is(1)); - } - - /** - * Tests options() getter method. - */ - @Test - public void testGetOptions() throws Exception { - ospfNbr.setOptions(1); - assertThat(ospfNbr.options(), is(1)); - } - - /** - * Tests options() setter method. - */ - @Test - public void testSetOptions() throws Exception { - ospfNbr.setOptions(1); - assertThat(ospfNbr.options(), is(1)); - } - - /** - * Tests ddSeqNum() getter method. - */ - @Test - public void testGetDdSeqNum() throws Exception { - ospfNbr.setDdSeqNum(1); - assertThat(ospfNbr.ddSeqNum(), is(1L)); - } - - /** - * Tests ddSeqNum() setter method. - */ - @Test - public void testSetDdSeqNum() throws Exception { - ospfNbr.setDdSeqNum(1); - assertThat(ospfNbr.ddSeqNum(), is(1L)); - } - - /** - * Tests isMaster() getter method. - */ - @Test - public void testIsMaster() throws Exception { - ospfNbr.setIsMaster(1); - assertThat(ospfNbr.isMaster(), is(1)); - } - - /** - * Tests lastDdPacket() getter method. - */ - @Test - public void testGetLastSentDdPacket() throws Exception { - ospfNbr.setLastDdPacket(new DdPacket()); - assertThat(ospfNbr.lastDdPacket(), is(notNullValue())); - } - - /** - * Tests lastDdPacket() setter method. - */ - @Test - public void testSetLastSentDdPacket() throws Exception { - ospfNbr.setLastDdPacket(new DdPacket()); - assertThat(ospfNbr.lastDdPacket(), is(notNullValue())); - } - - /** - * Tests getLastSentLsrPacket() getter method. - */ - @Test - public void testGetLastSentLsrPacket() throws Exception { - ospfNbr.setLastSentLsrPacket(new LsRequest()); - assertThat(ospfNbr.getLastSentLsrPacket(), is(notNullValue())); - } - - /** - * Tests getLastSentLsrPacket() setter method. - */ - @Test - public void testSetLastSentLsrPacket() throws Exception { - ospfNbr.setLastSentLsrPacket(new LsRequest()); - assertThat(ospfNbr.getLastSentLsrPacket(), is(notNullValue())); - } - - /** - * Tests getState() getter method. - */ - @Test - public void testGetState() throws Exception { - ospfNbr.setState(OspfNeighborState.EXCHANGE); - assertThat(ospfNbr.getState(), is(OspfNeighborState.EXCHANGE)); - } - - /** - * Tests getState() setter method. - */ - @Test - public void testSetState() throws Exception { - ospfNbr.setState(OspfNeighborState.EXCHANGE); - assertThat(ospfNbr.getState(), is(OspfNeighborState.EXCHANGE)); - } - - /** - * Tests isMaster() setter method. - */ - @Test - public void testSetIsMaster() throws Exception { - ospfNbr.setIsMaster(1); - assertThat(ospfNbr.isMaster(), is(1)); - } - - /** - * Tests getLsReqList() method. - */ - @Test - public void testGetLsReqList() throws Exception { - assertThat(ospfNbr.getLsReqList(), is(notNullValue())); - } - - /** - * Tests getReTxList() method. - */ - @Test - public void testGetReTxList() throws Exception { - assertThat(ospfNbr.getReTxList(), is(notNullValue())); - } - - /** - * Tests getPendingReTxList() method. - */ - @Test - public void testGetPendingReTxList() throws Exception { - assertThat(ospfNbr.getPendingReTxList(), is(notNullValue())); - } - - /** - * Utility for test method. - */ - private OspfAreaImpl createOspfArea() throws UnknownHostException { - OspfAreaAddressRangeImpl ospfAreaAddressRange; - ospfAreaAddressRange = createOspfAreaAddressRange(); - addressRanges.add(ospfAreaAddressRange); - OspfAreaImpl ospfArea = new OspfAreaImpl(); - ospfArea.setAreaId(Ip4Address.valueOf("10.226.165.164")); - ospfArea.setExternalRoutingCapability(true); - OspfInterfaceImpl ospfInterface = createOspfInterface(); - ospfInterfaces.add(ospfInterface); - ospfArea.setOspfInterfaceList(ospfInterfaces); - RouterLsa routerLsa = new RouterLsa(); - routerLsa.setLsType(1); - routerLsa.setLinkStateId("2.2.2.2"); - routerLsa.setAdvertisingRouter(Ip4Address.valueOf("2.2.2.2")); - OpaqueLsaHeader opaqueLsaHeader = new OpaqueLsaHeader(); - OpaqueLsa10 opaqueLsa10 = new OpaqueLsa10(opaqueLsaHeader); - opaqueLsa10.setLsType(OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value()); - opaqueLsa10.setLinkStateId("2.2.2.2"); - opaqueLsa10.setAdvertisingRouter(Ip4Address.valueOf("2.2.2.2")); - try { - ospfArea.addLsa(routerLsa, false, ospfInterface); - ospfArea.addLsa(opaqueLsa10, false, ospfInterface); - } catch (Exception e) { - System.out.println("ospfAreaImpl createOspfArea"); - } - ospfArea.setRouterId(Ip4Address.valueOf("111.111.111.111")); - - return ospfArea; - } - - /** - * Utility for test method. - */ - private OspfAreaAddressRangeImpl createOspfAreaAddressRange() { - OspfAreaAddressRangeImpl ospfAreaAddressRange = new OspfAreaAddressRangeImpl(); - ospfAreaAddressRange.setIpAddress(Ip4Address.valueOf("10.226.165.164")); - ospfAreaAddressRange.setAdvertise(true); - ospfAreaAddressRange.setMask("mask"); - return ospfAreaAddressRange; - } - - /** - * Utility for test method. - */ - private OspfInterfaceImpl createOspfInterface() throws UnknownHostException { - ospfInterface = new OspfInterfaceImpl(); - OspfAreaImpl ospfArea = new OspfAreaImpl(); - OspfInterfaceChannelHandler ospfInterfaceChannelHandler = EasyMock.createMock( - OspfInterfaceChannelHandler.class); - ospfNbr = new OspfNbrImpl(ospfArea, ospfInterface, Ip4Address.valueOf("10.226.165.164"), - Ip4Address.valueOf("1.1.1.1"), 2, - topologyForDeviceAndLink); - ospfNbr.setState(OspfNeighborState.EXSTART); - ospfNbr.setNeighborId(Ip4Address.valueOf("10.226.165.100")); - this.ospfInterface = new OspfInterfaceImpl(); - this.ospfInterface.setIpAddress(Ip4Address.valueOf("10.226.165.164")); - this.ospfInterface.setIpNetworkMask(Ip4Address.valueOf("255.255.255.255")); - this.ospfInterface.setBdr(Ip4Address.valueOf("111.111.111.111")); - this.ospfInterface.setDr(Ip4Address.valueOf("111.111.111.111")); - this.ospfInterface.setHelloIntervalTime(20); - this.ospfInterface.setInterfaceType(2); - this.ospfInterface.setReTransmitInterval(2000); - this.ospfInterface.setMtu(6500); - this.ospfInterface.setRouterDeadIntervalTime(1000); - this.ospfInterface.setRouterPriority(1); - this.ospfInterface.setInterfaceType(1); - this.ospfInterface.addNeighbouringRouter(ospfNbr); - return this.ospfInterface; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfPipelineFactoryTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfPipelineFactoryTest.java deleted file mode 100644 index c1a546bad6..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfPipelineFactoryTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.jboss.netty.channel.ChannelPipeline; -import org.junit.After; -import org.junit.Before; - -/** - * Unit test class for OspfPipelineFactory. - */ -public class OspfPipelineFactoryTest { - - private OspfPipelineFactory ospfPipelineFactory; - private ChannelPipeline channelPipeline; - - @Before - public void setUp() throws Exception { - } - - @After - public void tearDown() throws Exception { - ospfPipelineFactory = null; - channelPipeline = null; - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfRouterImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfRouterImplTest.java deleted file mode 100644 index 3221260269..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/OspfRouterImplTest.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.impl; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onlab.packet.IpAddress; -import org.onosproject.ospf.controller.OspfDeviceTed; - -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfRouterImpl. - */ -public class OspfRouterImplTest { - private OspfRouterImpl ospfRouter; - private OspfDeviceTed ospfDeviceTed; - private List list; - - @Before - public void setUp() throws Exception { - ospfRouter = new OspfRouterImpl(); - } - - @After - public void tearDown() throws Exception { - ospfRouter = null; - } - - /** - * Tests routerIp() getter method. - */ - @Test - public void testRouterIp() throws Exception { - ospfRouter.setRouterIp(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfRouter.routerIp(), is(IpAddress.valueOf("1.1.1.1"))); - } - - /** - * Tests routerIp() setter method. - */ - @Test - public void testSetRouterIp() throws Exception { - ospfRouter.setRouterIp(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfRouter.routerIp(), is(IpAddress.valueOf("1.1.1.1"))); - } - - /** - * Tests areaIdOfInterface() getter method. - */ - @Test - public void testAreaIdOfInterface() throws Exception { - ospfRouter.setAreaIdOfInterface(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfRouter.areaIdOfInterface(), is(IpAddress.valueOf("1.1.1.1"))); - } - - /** - * Tests areaIdOfInterface() setter method. - */ - @Test - public void testSetAreaIdOfInterface() throws Exception { - ospfRouter.setAreaIdOfInterface(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfRouter.areaIdOfInterface(), is(IpAddress.valueOf("1.1.1.1"))); - } - - /** - * Tests interfaceId() getter method. - */ - @Test - public void testInterfaceId() throws Exception { - ospfRouter.setInterfaceId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfRouter.interfaceId(), is(IpAddress.valueOf("1.1.1.1"))); - } - - /** - * Tests interfaceId() setter method. - */ - @Test - public void testSetInterfaceId() throws Exception { - ospfRouter.setInterfaceId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfRouter.interfaceId(), is(IpAddress.valueOf("1.1.1.1"))); - } - - /** - * Tests isDr() setter method. - */ - @Test - public void testSetDr() throws Exception { - ospfRouter.setDr(true); - assertThat(ospfRouter.isDr(), is(true)); - } - - /** - * Tests isDr() getter method. - */ - @Test - public void testIsDr() throws Exception { - ospfRouter.setDr(true); - assertThat(ospfRouter.isDr(), is(true)); - } - - /** - * Tests isOpaque() setter method. - */ - @Test - public void testSetOpaque() throws Exception { - ospfRouter.setOpaque(true); - assertThat(ospfRouter.isOpaque(), is(true)); - } - - /** - * Tests isOpaque() getter method. - */ - @Test - public void testisOpaque() throws Exception { - ospfRouter.setOpaque(true); - assertThat(ospfRouter.isOpaque(), is(true)); - } - - /** - * Tests deviceTed() getter method. - */ - @Test - public void testDeviceTed() throws Exception { - ospfRouter.setDeviceTed(new OspfDeviceTedImpl()); - assertThat(ospfRouter.deviceTed(), is(notNullValue())); - } - - /** - * Tests deviceTed() Setter method. - */ - @Test - public void testSetDeviceTed() throws Exception { - ospfRouter.setDeviceTed(new OspfDeviceTedImpl()); - assertThat(ospfRouter.deviceTed(), is(notNullValue())); - } - - /** - * Tests neighborRouterId() getter method. - */ - @Test - public void testNeighborRouterId() throws Exception { - ospfRouter.setNeighborRouterId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfRouter.neighborRouterId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests neighborRouterId() Setter method. - */ - @Test - public void testSetNeighborRouterId() throws Exception { - ospfRouter.setNeighborRouterId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfRouter.neighborRouterId(), is(Ip4Address.valueOf("1.1.1.1"))); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImplTest.java deleted file mode 100644 index 6955a2c864..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/impl/TopologyForDeviceAndLinkImplTest.java +++ /dev/null @@ -1,265 +0,0 @@ -/* -* Copyright 2016-present Open Networking Foundation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.onosproject.ospf.controller.impl; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.DeviceInformation; -import org.onosproject.ospf.controller.OspfLinkTed; -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink; -import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; - -import java.util.List; -import java.util.Map; - -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for TopologyForDeviceAndLinkImpl. - */ -public class TopologyForDeviceAndLinkImplTest { - private final byte[] packet = {0, 9, 0, 4, 0, 0, 0, 1, - 0, 9, 0, 4, 0, 0, 0, 1, - 0, 1, 0, 4, 0, 0, 0, 1, - 0, 2, 0, 4, 0, 0, 0, 1, - 0, 3, 0, 4, 0, 0, 0, 1, - 0, 4, 0, 4, 0, 0, 0, 1, - 0, 6, 0, 4, 0, 0, 0, 1, - 0, 7, 0, 4, 0, 0, 0, 1, - 0, 8, 0, 4, 0, 0, 0, 1, - }; - private TopologyForDeviceAndLinkImpl topologyForDeviceAndLink; - private Map result; - private LinkTlv linkTlv; - private TlvHeader header; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - topologyForDeviceAndLink = new TopologyForDeviceAndLinkImpl(); - } - - @After - public void tearDown() throws Exception { - topologyForDeviceAndLink = null; - } - - /** - * Tests deviceInformationMap() method. - */ - @Test - public void testDeviceInformationMap() throws Exception { - result = topologyForDeviceAndLink.deviceInformationMap(); - assertThat(result.size(), is(0)); - } - - /** - * Tests setDeviceInformationMap() method. - */ - @Test - public void testSetDeviceInformationMap() throws Exception { - topologyForDeviceAndLink.setDeviceInformationMap("1.1.1.1", new DeviceInformationImpl()); - result = topologyForDeviceAndLink.deviceInformationMap(); - assertThat(result.size(), is(1)); - } - - /** - * Tests deviceInformation() method. - */ - @Test - public void testDeviceInformation() throws Exception { - topologyForDeviceAndLink.setDeviceInformationMap("1.1.1.1", new DeviceInformationImpl()); - DeviceInformation deviceInformation = topologyForDeviceAndLink.deviceInformation("1.1.1.1"); - assertThat(deviceInformation, is(notNullValue())); - } - - /** - * Tests removeDeviceInformationMap() method. - */ - @Test - public void testRemoveDeviceInformationMap() throws Exception { - topologyForDeviceAndLink.setDeviceInformationMap("1.1.1.1", new DeviceInformationImpl()); - topologyForDeviceAndLink.deviceInformation("1.1.1.1"); - result = topologyForDeviceAndLink.deviceInformationMap(); - topologyForDeviceAndLink.removeDeviceInformationMap("1.1.1.1"); - assertThat(result.size(), is(0)); - } - - /** - * Tests linkInformationMap() method. - */ - @Test - public void testLinkInformationMap() throws Exception { - result = topologyForDeviceAndLink.linkInformationMap(); - assertThat(result.size(), is(0)); - } - - /** - * Tests setLinkInformationMap() method. - */ - @Test - public void testSetLinkInformationMap() throws Exception { - topologyForDeviceAndLink.setLinkInformationMap("1.1.1.1", new LinkInformationImpl()); - result = topologyForDeviceAndLink.linkInformationMap(); - assertThat(result.size(), is(1)); - } - - /** - * Tests removeLinkInformationMap() method. - */ - @Test - public void testRemoveLinkInformationMap() throws Exception { - topologyForDeviceAndLink.setLinkInformationMap("1.1.1.1", new LinkInformationImpl()); - topologyForDeviceAndLink.removeLinkInformationMap("1.1.1.1"); - result = topologyForDeviceAndLink.linkInformationMap(); - assertThat(result.size(), is(0)); - } - - /** - * Tests getOspfLinkTedHashMap() method. - */ - @Test - public void testGetOspfLinkTedHashMap() throws Exception { - OspfLinkTed ospfLinkTed = topologyForDeviceAndLink.getOspfLinkTedHashMap("1.1.1.1"); - assertThat(ospfLinkTed, is(nullValue())); - } - - /** - * Tests addLocalDevice() method. - */ - @Test - public void testAddLocalDevice() throws Exception { - OspfAreaImpl ospfArea = new OspfAreaImpl(); - ospfArea.setRouterId(Ip4Address.valueOf("5.5.5.5")); - topologyForDeviceAndLink.addLocalDevice(createOspfLsa(), new OspfInterfaceImpl(), ospfArea); - topologyForDeviceAndLink.addLocalDevice(createOspfLsa1(), new OspfInterfaceImpl(), ospfArea); - assertThat(topologyForDeviceAndLink, is(notNullValue())); - } - - /** - * Tests addLocalLink() method. - */ - @Test - public void testAddLocalLink() throws Exception { - Ip4Address linkData = Ip4Address.valueOf("1.1.1.1"); - Ip4Address linkSrc = Ip4Address.valueOf("2.2.2.2"); - Ip4Address linkDest = Ip4Address.valueOf("3.3.3.3"); - boolean opaqueEnabled = true; - boolean linkSrcIdNotRouterId = true; - topologyForDeviceAndLink.addLocalLink("10.10.10.10", linkData, linkSrc, - linkDest, opaqueEnabled, linkSrcIdNotRouterId); - assertThat(topologyForDeviceAndLink, is(notNullValue())); - } - - /** - * Tests removeLinks() method. - */ - @Test - public void testRemoveLinks() throws Exception { - Ip4Address linkData = Ip4Address.valueOf("1.1.1.1"); - Ip4Address linkSrc = Ip4Address.valueOf("2.2.2.2"); - Ip4Address linkDest = Ip4Address.valueOf("3.3.3.3"); - boolean opaqueEnabled = true; - boolean linkSrcIdNotRouterId = true; - topologyForDeviceAndLink.addLocalLink("10.10.10.10", linkData, linkSrc, - linkDest, opaqueEnabled, linkSrcIdNotRouterId); - topologyForDeviceAndLink.removeLinks(Ip4Address.valueOf("10.10.10.10")); - assertThat(topologyForDeviceAndLink, is(notNullValue())); - } - - /** - * Tests updateLinkInformation() method. - */ - @Test - public void testUpdateLinkInformation() throws Exception { - OspfAreaImpl ospfArea = new OspfAreaImpl(); - ospfArea.setRouterId(Ip4Address.valueOf("5.5.5.5")); - topologyForDeviceAndLink.updateLinkInformation(createOspfLsa(), ospfArea); - assertThat(topologyForDeviceAndLink, is(notNullValue())); - } - - /** - * Tests getDeleteRouterInformation() method. - */ - @Test - public void testGetDeleteRouterInformation() throws Exception { - OspfAreaImpl ospfArea = new OspfAreaImpl(); - ospfArea.setRouterId(Ip4Address.valueOf("5.5.5.5")); - topologyForDeviceAndLink.updateLinkInformation(createOspfLsa(), ospfArea); - List list = topologyForDeviceAndLink.getDeleteRouterInformation(createOspfLsa(), ospfArea); - assertThat(list, is(notNullValue())); - } - - /** - * Utility for test methods. - */ - private OspfLsa createOspfLsa() { - RouterLsa routerLsa = new RouterLsa(); - routerLsa.setLsType(1); - routerLsa.setAdvertisingRouter(Ip4Address.valueOf("6.6.6.6")); - OspfLsaLink ospfLsaLink = new OspfLsaLink(); - ospfLsaLink.setLinkData("192.168.7.77"); - ospfLsaLink.setLinkId("9.9.9.9"); - ospfLsaLink.setLinkType(1); - OspfLsaLink ospfLsaLink0 = new OspfLsaLink(); - ospfLsaLink0.setLinkData("7.7.7.7"); - ospfLsaLink0.setLinkId("7.7.7.7"); - ospfLsaLink0.setLinkType(2); - OspfLsaLink ospfLsaLink120 = new OspfLsaLink(); - ospfLsaLink120.setLinkData("192.168.7.77"); - ospfLsaLink120.setLinkId("1.1.1.1"); - ospfLsaLink120.setLinkType(1); - OspfLsaLink lsaLink = new OspfLsaLink(); - lsaLink.setLinkData("192.168.7.77"); - lsaLink.setLinkId("14.14.14.14"); - lsaLink.setLinkType(2); - routerLsa.addRouterLink(lsaLink); - routerLsa.addRouterLink(ospfLsaLink); - routerLsa.addRouterLink(ospfLsaLink0); - routerLsa.addRouterLink(ospfLsaLink120); - return routerLsa; - } - - /** - * Utility for test methods. - */ - private OspfLsa createOspfLsa1() throws Exception { - OpaqueLsa10 opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader()); - opaqueLsa10.setLsType(10); - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(9); - linkTlv = new LinkTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - linkTlv.readFrom(channelBuffer); - opaqueLsa10.addValue(linkTlv); - return opaqueLsa10; - } -} diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaBinImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaBinImplTest.java deleted file mode 100644 index 9d8582d5cf..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaBinImplTest.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.lsdb; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.controller.LsaWrapper; -import org.onosproject.ospf.protocol.lsa.LsaHeader; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for LsaBinImpl. - */ -public class LsaBinImplTest { - private LsaBinImpl lsaBin; - private LsaHeader ospflsa1; - private LsaWrapper lsaWrapper; - - - @Before - public void setUp() throws Exception { - ospflsa1 = new LsaHeader(); - ospflsa1.setAge(20); - lsaBin = new LsaBinImpl(1); - } - - @After - public void tearDown() throws Exception { - ospflsa1 = null; - lsaBin = null; - } - - /** - * Tests binNumber() getter method. - */ - @Test - public void testGetBinNumber() throws Exception { - lsaWrapper = new LsaWrapperImpl(); - lsaBin.addOspfLsa("lsa1", lsaWrapper); - assertThat(lsaBin.binNumber(), is(1)); - } - - /** - * Tests addOspfLsa() method. - */ - @Test - public void testAddOspfLsa() throws Exception { - LsaWrapper lsaWrapper = new LsaWrapperImpl(); - lsaBin.addOspfLsa("lsa1", lsaWrapper); - assertThat(lsaBin, is(notNullValue())); - } - - /** - * Tests ospfLsa() getter method. - */ - @Test - public void testGetOspfLsa() throws Exception { - lsaWrapper = new LsaWrapperImpl(); - lsaBin.addOspfLsa("lsa1", lsaWrapper); - assertThat(lsaBin, is(notNullValue())); - assertThat(lsaBin.ospfLsa("lsa1"), is(lsaWrapper)); - } - - /** - * Tests removeOspfLsa() method. - */ - @Test - public void testRemoveOspfLsa() throws Exception { - lsaWrapper = new LsaWrapperImpl(); - lsaBin.addOspfLsa("lsa1", lsaWrapper); - lsaBin.removeOspfLsa("lsa1", lsaWrapper); - assertThat(lsaBin, is(notNullValue())); - } - - /** - * Tests listOfLsa() method. - */ - @Test - public void testGetListOfLsa() throws Exception { - lsaWrapper = new LsaWrapperImpl(); - lsaBin.addOspfLsa("lsa1", lsaWrapper); - assertThat(lsaBin.listOfLsa().size(), is(1)); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(lsaBin.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumerTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumerTest.java deleted file mode 100644 index c624e022d3..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaQueueConsumerTest.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.lsdb; - -import org.easymock.EasyMock; -import org.jboss.netty.channel.Channel; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.controller.LsaWrapper; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.util.OspfInterfaceState; - -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for LsaQueueConsumer. - */ -public class LsaQueueConsumerTest { - private LsaQueueConsumer lsaQueueConsumer; - private BlockingQueue blockingQueue; - private Channel channel; - private LsaWrapperImpl lsaWrapper; - private OspfArea ospfArea; - private RouterLsa routerLsa; - private OspfInterfaceImpl ospfInterface; - private LsaHeader lsaHeader; - private LsdbAgeImpl lsdbAge; - - @Before - public void setUp() throws Exception { - lsaQueueConsumer = EasyMock.createMock(LsaQueueConsumer.class); - } - - @After - public void tearDown() throws Exception { - lsaQueueConsumer = null; - blockingQueue = null; - channel = null; - lsaWrapper = null; - lsdbAge = null; - lsaHeader = null; - ospfInterface = null; - ospfArea = null; - routerLsa = null; - } - - /** - * Tests run() method. - */ - @Test - public void testRun() throws Exception { - blockingQueue = new ArrayBlockingQueue(5); - ospfArea = new OspfAreaImpl(); - lsdbAge = new LsdbAgeImpl(ospfArea); - channel = EasyMock.createMock(Channel.class); - lsaWrapper = new LsaWrapperImpl(); - lsaWrapper.setLsaProcessing("verifyChecksum"); - blockingQueue.add(lsaWrapper); - lsaQueueConsumer = new LsaQueueConsumer(blockingQueue, channel, ospfArea); - lsaQueueConsumer.run(); - assertThat(lsaQueueConsumer, is(notNullValue())); - } - - /** - * Tests run() method. - */ - @Test - public void testRun1() throws Exception { - blockingQueue = new ArrayBlockingQueue(5); - channel = EasyMock.createMock(Channel.class); - ospfArea = new OspfAreaImpl(); - lsaWrapper = new LsaWrapperImpl(); - routerLsa = new RouterLsa(); - routerLsa.setLsType(1); - lsaWrapper.addLsa(OspfLsaType.ROUTER, routerLsa); - ospfInterface = new OspfInterfaceImpl(); - ospfInterface.setState(OspfInterfaceState.DR); - lsaWrapper.setOspfInterface(ospfInterface); - lsaWrapper.setIsSelfOriginated(true); - lsaHeader = new LsaHeader(); - lsaHeader.setLsType(1); - lsaWrapper.setLsaHeader(lsaHeader); - lsaWrapper.setLsaProcessing("refreshLsa"); - lsaWrapper.setLsdbAge(new LsdbAgeImpl(ospfArea)); - blockingQueue.add(lsaWrapper); - lsaQueueConsumer = new LsaQueueConsumer(blockingQueue, channel, ospfArea); - lsaQueueConsumer.run(); - assertThat(lsaQueueConsumer, is(notNullValue())); - } - - @Test - public void testRun3() throws Exception { - blockingQueue = new ArrayBlockingQueue(5); - channel = EasyMock.createMock(Channel.class); - ospfArea = new OspfAreaImpl(); - lsaWrapper = new LsaWrapperImpl(); - routerLsa = new RouterLsa(); - routerLsa.setLsType(2); - lsaWrapper.addLsa(OspfLsaType.NETWORK, routerLsa); - ospfInterface = new OspfInterfaceImpl(); - ospfInterface.setState(OspfInterfaceState.BDR); - lsaWrapper.setOspfInterface(ospfInterface); - lsaWrapper.setIsSelfOriginated(true); - lsaHeader = new LsaHeader(); - lsaHeader.setLsType(2); - lsaWrapper.setLsaHeader(lsaHeader); - lsaWrapper.setLsaProcessing("refreshLsa"); - lsaWrapper.setLsdbAge(new LsdbAgeImpl(ospfArea)); - blockingQueue.add(lsaWrapper); - lsaQueueConsumer = new LsaQueueConsumer(blockingQueue, channel, ospfArea); - lsaQueueConsumer.run(); - assertThat(lsaQueueConsumer, is(notNullValue())); - } - - /** - * Tests run() method. - */ - @Test - public void testRun5() throws Exception { - blockingQueue = new ArrayBlockingQueue(5); - channel = EasyMock.createMock(Channel.class); - ospfArea = new OspfAreaImpl(); - lsaWrapper = new LsaWrapperImpl(); - routerLsa = new RouterLsa(); - routerLsa.setLsType(2); - lsaWrapper.addLsa(OspfLsaType.NETWORK, routerLsa); - ospfInterface = new OspfInterfaceImpl(); - ospfInterface.setState(OspfInterfaceState.DR); - lsaWrapper.setOspfInterface(ospfInterface); - lsaWrapper.setIsSelfOriginated(true); - lsaHeader = new LsaHeader(); - lsaHeader.setLsType(2); - lsaWrapper.setLsaHeader(lsaHeader); - lsaWrapper.setLsaProcessing("maxAgeLsa"); - lsaWrapper.setLsdbAge(new LsdbAgeImpl(ospfArea)); - blockingQueue.add(lsaWrapper); - lsaQueueConsumer = new LsaQueueConsumer(blockingQueue, channel, ospfArea); - lsaQueueConsumer.run(); - assertThat(lsaQueueConsumer, is(notNullValue())); - } - - /** - * Tests setChannel() method. - */ - @Test - public void testSetChannel() throws Exception { - channel = EasyMock.createMock(Channel.class); - lsdbAge = new LsdbAgeImpl(ospfArea); - lsdbAge.startDbAging(); - lsdbAge.setChannel(channel); - assertThat(lsaQueueConsumer, is(notNullValue())); - } - -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImplTest.java deleted file mode 100644 index 6aee39b039..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsaWrapperImplTest.java +++ /dev/null @@ -1,386 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.lsdb; - -import org.easymock.EasyMock; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; - -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for LsaWrapperImpl. - */ -public class LsaWrapperImplTest { - - private LsaWrapperImpl lsaWrapper; - private LsdbAgeImpl lsdbAge; - private LsaHeader header; - private OspfInterfaceImpl ospfInterfaceImpl; - - @Before - public void setUp() throws Exception { - lsaWrapper = new LsaWrapperImpl(); - } - - @After - public void tearDown() throws Exception { - lsaWrapper = null; - header = null; - lsdbAge = null; - ospfInterfaceImpl = null; - } - - /** - * Tests lsaType() getter method. - */ - @Test - public void testGetLsaType() throws Exception { - lsaWrapper.setLsaType(OspfLsaType.ROUTER); - assertThat(lsaWrapper.lsaType(), is(OspfLsaType.ROUTER)); - } - - /** - * Tests lsaType() setter method. - */ - @Test - public void testSetLsaType() throws Exception { - lsaWrapper.setLsaType(OspfLsaType.ROUTER); - assertThat(lsaWrapper.lsaType(), is(OspfLsaType.ROUTER)); - } - - /** - * Tests isSelfOriginated() getter method. - */ - @Test - public void testIsSelfOriginated() throws Exception { - lsaWrapper.setIsSelfOriginated(true); - assertThat(lsaWrapper.isSelfOriginated(), is(true)); - } - - /** - * Tests isSelfOriginated() setter method. - */ - @Test - public void testSetIsSelfOriginated() throws Exception { - lsaWrapper.setIsSelfOriginated(true); - assertThat(lsaWrapper.isSelfOriginated(), is(true)); - } - - /** - * Tests addLsa() method. - */ - @Test - public void testAddLsa() throws Exception { - lsaWrapper.addLsa(OspfLsaType.ROUTER, new RouterLsa()); - assertThat(lsaWrapper, is(notNullValue())); - } - - /** - * Tests lsaAgeReceived() getter method. - */ - @Test - public void testGetLsaAgeReceived() throws Exception { - lsaWrapper.setLsaAgeReceived(10); - assertThat(lsaWrapper.lsaAgeReceived(), is(10)); - } - - /** - * Tests lsaAgeReceived() setter method. - */ - @Test - public void testSetLsaAgeReceived() throws Exception { - lsaWrapper.setLsaAgeReceived(10); - assertThat(lsaWrapper.lsaAgeReceived(), is(10)); - } - - /** - * Tests lsaHeader() getter method. - */ - @Test - public void testGetLsaHeader() throws Exception { - lsdbAge = new LsdbAgeImpl(new OspfAreaImpl()); - lsdbAge.ageLsaAndFlood(); - lsaWrapper.setLsdbAge(lsdbAge); - header = new LsaHeader(); - lsaWrapper.setLsaHeader(header); - assertThat(lsaWrapper.lsaHeader(), instanceOf(LsaHeader.class)); - } - - /** - * Tests lsaHeader() setter method. - */ - @Test - public void testSetLsaHeader() throws Exception { - lsdbAge = new LsdbAgeImpl(new OspfAreaImpl()); - lsdbAge.ageLsaAndFlood(); - lsaWrapper.setLsdbAge(lsdbAge); - header = new LsaHeader(); - lsaWrapper.setLsaHeader(header); - assertThat(lsaWrapper.lsaHeader(), instanceOf(LsaHeader.class)); - } - - /** - * Tests setOspfLsa() setter method. - */ - @Test - public void testSetOspfLsa() throws Exception { - lsaWrapper.setOspfLsa(new RouterLsa()); - assertThat(lsaWrapper, is(notNullValue())); - } - - /** - * Tests noReTransmissionLists() getter method. - */ - @Test - public void testGetNoReTransmissionLists() throws Exception { - lsaWrapper.setNoReTransmissionLists(10); - assertThat(lsaWrapper.noReTransmissionLists(), is(10)); - } - - /** - * Tests noReTransmissionLists() setter method. - */ - @Test - public void testSetNoReTransmissionLists() throws Exception { - lsaWrapper.setNoReTransmissionLists(10); - assertThat(lsaWrapper.noReTransmissionLists(), is(10)); - } - - /** - * Tests isInAnAgeBin() getter method. - */ - @Test - public void testIsInAnAgeBin() throws Exception { - lsaWrapper.setInAnAgeBin(true); - assertThat(lsaWrapper.isInAnAgeBin(), is(true)); - } - - /** - * Tests isInAnAgeBin() setter method. - */ - @Test - public void testSetInAnAgeBin() throws Exception { - lsaWrapper.setInAnAgeBin(true); - assertThat(lsaWrapper.isInAnAgeBin(), is(true)); - } - - /** - * Tests isChangedSinceLastFlood() getter method. - */ - @Test - public void testIsChangedSinceLastFlood() throws Exception { - lsaWrapper.setChangedSinceLastFlood(true); - assertThat(lsaWrapper.isChangedSinceLastFlood(), is(true)); - } - - /** - * Tests isChangedSinceLastFlood() setter method. - */ - @Test - public void testSetChangedSinceLastFlood() throws Exception { - lsaWrapper.setChangedSinceLastFlood(true); - assertThat(lsaWrapper.isChangedSinceLastFlood(), is(true)); - } - - /** - * Tests isSequenceRollOver() method. - */ - @Test - public void testIsSequenceRollOver() throws Exception { - lsaWrapper.setIsSequenceRollOver(true); - assertThat(lsaWrapper.isSequenceRollOver(), is(true)); - } - - /** - * Tests isSentReplyForOlderLsa() method. - */ - @Test - public void testIsSentReplyForOlderLsa() throws Exception { - lsaWrapper.setSentReplyForOlderLsa(true); - assertThat(lsaWrapper.isSentReplyForOlderLsa(), is(true)); - } - - /** - * Tests isCheckAge() getter method. - */ - @Test - public void testIsCheckAge() throws Exception { - lsaWrapper.setCheckAge(true); - assertThat(lsaWrapper.isCheckAge(), is(true)); - } - - /** - * Tests isSentReplyForOlderLsa() getter method. - */ - @Test - public void testSetSentReplyForOlderLsa() throws Exception { - lsaWrapper.setSentReplyForOlderLsa(true); - assertThat(lsaWrapper.isSentReplyForOlderLsa(), is(true)); - } - - /** - * Tests isSentReplyForOlderLsa() setter method. - */ - @Test - public void testSetCheckAge() throws Exception { - lsaWrapper.setCheckAge(true); - assertThat(lsaWrapper.isCheckAge(), is(true)); - } - - /** - * Tests isAging() getter method. - */ - @Test - public void testIsAging() throws Exception { - lsaWrapper.setIsAging(true); - assertThat(lsaWrapper.isAging(), is(true)); - } - - /** - * Tests isAging() setter method. - */ - @Test - public void testSetIsAging() throws Exception { - lsaWrapper.setIsAging(true); - assertThat(lsaWrapper.isAging(), is(true)); - } - - /** - * Tests currentAge() method. - */ - @Test - public void testGetCurrentAge() throws Exception { - lsdbAge = new LsdbAgeImpl(new OspfAreaImpl()); - lsdbAge.ageLsaAndFlood(); - lsaWrapper.setLsdbAge(lsdbAge); - assertThat(lsaWrapper.currentAge(), is(notNullValue())); - } - - /** - * Tests ageCounterWhenReceived() getter method. - */ - @Test - public void testGetAgeCounterWhenReceived() throws Exception { - lsaWrapper.setAgeCounterWhenReceived(10); - assertThat(lsaWrapper.ageCounterWhenReceived(), is(10)); - } - - /** - * Tests ageCounterWhenReceived() setter method. - */ - @Test - public void testSetAgeCounterWhenReceived() throws Exception { - lsaWrapper.setAgeCounterWhenReceived(10); - assertThat(lsaWrapper.ageCounterWhenReceived(), is(10)); - } - - /** - * Tests lsaProcessing() getter method. - */ - @Test - public void testGetLsaProcessing() throws Exception { - lsaWrapper.setLsaProcessing("router"); - assertThat(lsaWrapper.lsaProcessing(), is("router")); - } - - /** - * Tests lsaProcessing() setter method. - */ - @Test - public void testSetLsaProcessing() throws Exception { - lsaWrapper.setLsaProcessing("router"); - assertThat(lsaWrapper.lsaProcessing(), is("router")); - } - - /** - * Tests binNumber() getter method. - */ - @Test - public void testGetBinNumber() throws Exception { - lsaWrapper.setBinNumber(10); - assertThat(lsaWrapper.binNumber(), is(10)); - } - - /** - * Tests binNumber() setter method. - */ - @Test - public void testSetBinNumber() throws Exception { - lsaWrapper.setBinNumber(10); - assertThat(lsaWrapper.binNumber(), is(10)); - } - - /** - * Tests ospfInterface() getter method. - */ - @Test - public void testGetOspfInterface() throws Exception { - ospfInterfaceImpl = EasyMock.createMock(OspfInterfaceImpl.class); - lsaWrapper.setOspfInterface(ospfInterfaceImpl); - assertThat(lsaWrapper.ospfInterface(), is(notNullValue())); - } - - /** - * Tests ospfInterface() setter method. - */ - @Test - public void testSetOspfInterface() throws Exception { - ospfInterfaceImpl = EasyMock.createMock(OspfInterfaceImpl.class); - lsaWrapper.setOspfInterface(ospfInterfaceImpl); - assertThat(lsaWrapper.ospfInterface(), is(notNullValue())); - } - - /** - * Tests getLsdbAge() method. - */ - @Test - public void testGetLsdbAge() throws Exception { - assertThat(lsaWrapper.getLsdbAge(), is(nullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(lsaWrapper.toString(), is(notNullValue())); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(lsaWrapper.equals(new LsaWrapperImpl()), is(true)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - int hashCode = lsaWrapper.hashCode(); - assertThat(hashCode, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImplTest.java deleted file mode 100644 index 696ecb80cb..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/LsdbAgeImplTest.java +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.lsdb; - -import org.easymock.EasyMock; -import org.jboss.netty.channel.Channel; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.controller.LsaBin; -import org.onosproject.ospf.controller.OspfArea; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.area.OspfAreaImpl; - -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for LsdbAgeImpl. - */ -public class LsdbAgeImplTest { - private LsdbAgeImpl lsdbAge; - private OspfAreaImpl ospfAreaImpl; - private LsaBinImpl lsaBin; - private LsaBin lsaBin1; - private LsaWrapperImpl lsaWrapper; - private OspfArea ospfArea; - private Channel channel; - - @Before - public void setUp() throws Exception { - ospfAreaImpl = EasyMock.createMock(OspfAreaImpl.class); - lsdbAge = new LsdbAgeImpl(ospfAreaImpl); - } - - @After - public void tearDown() throws Exception { - lsdbAge = null; - lsaBin = null; - lsaBin1 = null; - ospfAreaImpl = null; - lsaWrapper = null; - channel = null; - ospfArea = null; - } - - /** - * Tests getLsaBin() method. - */ - @Test - public void testGetLsaBin() throws Exception { - lsaBin = new LsaBinImpl(1); - lsdbAge.addLsaBin(1, lsaBin); - assertThat(lsdbAge, is(notNullValue())); - lsaBin1 = lsdbAge.getLsaBin(1); - assertThat(lsaBin, instanceOf(LsaBin.class)); - assertThat(lsaBin1, instanceOf(LsaBin.class)); - } - - /** - * Tests addLsaBin() method. - */ - @Test - public void testAddLsaBin() throws Exception { - lsaBin = new LsaBinImpl(1); - lsdbAge.addLsaBin(1, lsaBin); - assertThat(lsdbAge, is(notNullValue())); - assertThat(lsaBin, instanceOf(LsaBin.class)); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(lsdbAge.equals(lsdbAge), is(true)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - int hashCode = lsdbAge.hashCode(); - assertThat(hashCode, is(notNullValue())); - } - - /** - * Tests addLsaToMaxAgeBin() method. - */ - @Test - public void testAddLsaToMaxAgeBin() throws Exception { - lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class); - lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper); - assertThat(lsdbAge, is(notNullValue())); - } - - /** - * Tests removeLsaFromBin() method. - */ - @Test - public void testRemoveLsaFromBin() throws Exception { - lsaBin = EasyMock.createMock(LsaBinImpl.class); - lsaWrapper = new LsaWrapperImpl(); - lsaWrapper.setBinNumber(-1); - lsaBin.addOspfLsa("1", lsaWrapper); - lsdbAge.startDbAging(); - lsdbAge.addLsaToMaxAgeBin("3600", lsaWrapper); - lsdbAge.addLsaBin(-1, lsaBin); - lsdbAge.removeLsaFromBin(lsaWrapper); - assertThat(lsdbAge, is(notNullValue())); - } - - /** - * Tests startDbAging() method. - */ - @Test - public void testStartDbAging() throws Exception { - lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class); - lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper); - lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class); - lsdbAge.addLsaToMaxAgeBin("lsa2", lsaWrapper); - lsdbAge.startDbAging(); - assertThat(lsdbAge, is(notNullValue())); - } - - /** - * Tests ageLsaAndFlood() method. - */ - @Test - public void testAgeLsaAndFlood() throws Exception { - lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class); - lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper); - lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class); - lsdbAge.addLsaToMaxAgeBin("lsa2", lsaWrapper); - lsdbAge.startDbAging(); - lsdbAge.ageLsaAndFlood(); - Assert.assertNotNull(lsdbAge); - } - - /** - * Tests maxAgeLsa() method. - */ - @Test - public void testMaxageLsa() throws Exception { - lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class); - ospfArea = new OspfAreaImpl(); - lsdbAge = new LsdbAgeImpl(ospfArea); - lsaWrapper.setLsdbAge(lsdbAge); - lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper); - lsaBin = new LsaBinImpl(1); - lsaBin.addOspfLsa("1", lsaWrapper); - lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class); - lsdbAge.addLsaToMaxAgeBin("lsa2", lsaWrapper); - lsaBin.addOspfLsa("2", lsaWrapper); - lsdbAge.startDbAging(); - lsdbAge = new LsdbAgeImpl(new OspfAreaImpl()); - lsdbAge.ageLsaAndFlood(); - lsdbAge.maxAgeLsa(); - assertThat(lsdbAge, is(notNullValue())); - - } - - /** - * Tests refreshLsa() method. - */ - @Test - public void testRefereshLsa() throws Exception { - lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class); - lsaWrapper.setBinNumber(0); - lsaWrapper.setLsaType(OspfLsaType.NETWORK); - lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper); - lsdbAge.ageLsaAndFlood(); - lsdbAge.startDbAging(); - lsdbAge.refreshLsa(); - assertThat(lsdbAge, is(notNullValue())); - } - - /** - * Tests checkAges() method. - */ - @Test - public void testCheckAges() throws Exception { - lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class); - lsdbAge.addLsaToMaxAgeBin("lsa1", lsaWrapper); - lsaWrapper = EasyMock.createMock(LsaWrapperImpl.class); - lsdbAge.addLsaToMaxAgeBin("lsa2", lsaWrapper); - lsdbAge.startDbAging(); - lsdbAge.checkAges(); - assertThat(lsdbAge, is(notNullValue())); - - } - - /** - * Tests getChannel() getter method. - */ - @Test - public void testGetChannel() throws Exception { - channel = EasyMock.createMock(Channel.class); - lsdbAge.setChannel(channel); - assertThat(lsdbAge.getChannel(), is(notNullValue())); - } - - /** - * Tests setChannel() setter method. - */ - @Test - public void testSetChannel() throws Exception { - channel = EasyMock.createMock(Channel.class); - lsdbAge.setChannel(channel); - assertThat(lsdbAge.getChannel(), is(notNullValue())); - } - - /** - * Tests getAgeCounter() method. - */ - @Test - public void testGetAgeCounter() throws Exception { - lsaBin = new LsaBinImpl(1); - lsdbAge.addLsaBin(1, lsaBin); - int age = lsdbAge.getAgeCounter(); - assertThat(age, is(notNullValue())); - } - - /** - * Tests getAgeCounterRollOver() method. - */ - @Test - public void testGetAgeCounterRollOver() throws Exception { - lsaBin = new LsaBinImpl(1); - lsdbAge.addLsaBin(1, lsaBin); - lsdbAge.startDbAging(); - assertThat(lsdbAge.getAgeCounterRollOver(), is(notNullValue())); - } - - /** - * Tests getMaxAgeBin() method. - */ - @Test - public void testGetMaxAgeBin() throws Exception { - lsaBin = new LsaBinImpl(1); - lsdbAge.addLsaBin(1, lsaBin); - lsdbAge.startDbAging(); - assertThat(lsdbAge.getMaxAgeBin(), is(notNullValue())); - } - - /** - * Tests age2Bin() method. - */ - @Test - public void testAge2Bin() throws Exception { - int age = lsdbAge.age2Bin(0); - assertThat(age, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImplTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImplTest.java deleted file mode 100644 index f6e1a248c3..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/lsdb/OspfLsdbImplTest.java +++ /dev/null @@ -1,456 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.lsdb; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.controller.area.OspfAreaImpl; -import org.onosproject.ospf.controller.area.OspfInterfaceImpl; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa; -import org.onosproject.ospf.protocol.lsa.types.ExternalLsa; -import org.onosproject.ospf.protocol.lsa.types.NetworkLsa; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.lsa.types.SummaryLsa; - -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfLsdbImpl. - */ -public class OspfLsdbImplTest { - private OspfLsdbImpl ospfLsdb; - private RouterLsa routerLsa; - private NetworkLsa networkLsa; - private SummaryLsa summaryLsa; - private AsbrSummaryLsa asbrSummaryLsa; - private OpaqueLsa9 opaqueLsa9; - private OpaqueLsa10 opaqueLsa10; - private OpaqueLsa11 opaqueLsa11; - private ExternalLsa externalLsa; - private OpaqueLsaHeader opaqueLsaHeader; - private LsaWrapperImpl lsaWrapper; - private OpaqueLsaHeader opaqueLsaHeader1; - private String key; - - @Before - public void setUp() throws Exception { - OspfAreaImpl ospfArea = new OspfAreaImpl(); - ospfLsdb = new OspfLsdbImpl(ospfArea); - routerLsa = new RouterLsa(); - networkLsa = new NetworkLsa(); - summaryLsa = new SummaryLsa(new LsaHeader()); - asbrSummaryLsa = new AsbrSummaryLsa(new LsaHeader()); - opaqueLsa9 = new OpaqueLsa9(new OpaqueLsaHeader()); - opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader()); - opaqueLsa11 = new OpaqueLsa11(new OpaqueLsaHeader()); - externalLsa = new ExternalLsa(new LsaHeader()); - } - - @After - public void tearDown() throws Exception { - ospfLsdb = null; - routerLsa = null; - externalLsa = null; - summaryLsa = null; - asbrSummaryLsa = null; - opaqueLsa10 = null; - opaqueLsa11 = null; - opaqueLsa9 = null; - networkLsa = null; - lsaWrapper = null; - opaqueLsaHeader = null; - opaqueLsaHeader1 = null; - key = null; - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(ospfLsdb.equals(new OspfLsdbImpl(new OspfAreaImpl())), is(false)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - int hashCode = ospfLsdb.hashCode(); - assertThat(hashCode, is(notNullValue())); - } - - /** - * Tests initializeDb() method. - */ - @Test - public void testInitializeDb() throws Exception { - ospfLsdb.initializeDb(); - assertThat(ospfLsdb, is(notNullValue())); - } - - /** - * Tests getAllLsaHeaders() method. - */ - @Test - public void testGetAllLsaHeaders() throws Exception { - ospfLsdb.initializeDb(); - routerLsa.setLsType(1); - assertThat(ospfLsdb.addLsa(routerLsa, false, new OspfInterfaceImpl()), is(true)); - networkLsa.setLsType(2); - assertThat(ospfLsdb.addLsa(networkLsa, false, new OspfInterfaceImpl()), is(true)); - summaryLsa.setLsType(3); - assertThat(ospfLsdb.addLsa(summaryLsa, false, new OspfInterfaceImpl()), is(true)); - asbrSummaryLsa.setLsType(4); - assertThat(ospfLsdb.addLsa(asbrSummaryLsa, false, new OspfInterfaceImpl()), is(true)); - externalLsa.setLsType(5); - assertThat(ospfLsdb.addLsa(externalLsa, false, new OspfInterfaceImpl()), is(true)); - ospfLsdb.initializeDb(); - assertThat(ospfLsdb.getAllLsaHeaders(true, true).size(), is(5)); - } - - /** - * Tests getLsaKey() method. - */ - @Test - public void testGetLsaKey() throws Exception { - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(1); - assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(2); - assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(3); - assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(4); - assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(5); - assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(9); - assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(10); - assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(11); - assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue())); - } - - /** - * Tests lsaLookup() method. - */ - @Test - public void testLsaLookup() throws Exception { - ospfLsdb.initializeDb(); - opaqueLsaHeader = new OpaqueLsaHeader(); - ospfLsdb.addLsa(opaqueLsaHeader, true, new OspfInterfaceImpl()); - opaqueLsaHeader.setLsType(1); - String key = ospfLsdb.getLsaKey(opaqueLsaHeader); - assertThat(ospfLsdb.lsaLookup(opaqueLsaHeader), is(nullValue())); - } - - /** - * Tests findLsa() method. - */ - @Test - public void testFindlsa() throws Exception { - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(1); - key = ospfLsdb.getLsaKey(opaqueLsaHeader); - ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl()); - lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key); - assertThat(lsaWrapper, is(nullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(2); - key = ospfLsdb.getLsaKey(opaqueLsaHeader); - ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl()); - lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key); - assertThat(lsaWrapper, is(nullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(3); - key = ospfLsdb.getLsaKey(opaqueLsaHeader); - ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl()); - lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key); - assertThat(lsaWrapper, is(nullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(4); - key = ospfLsdb.getLsaKey(opaqueLsaHeader); - ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl()); - lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key); - assertThat(lsaWrapper, is(nullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(5); - key = ospfLsdb.getLsaKey(opaqueLsaHeader); - ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl()); - lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key); - assertThat(lsaWrapper, is(nullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(9); - key = ospfLsdb.getLsaKey(opaqueLsaHeader); - ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl()); - lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key); - assertThat(lsaWrapper, is(nullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(10); - key = ospfLsdb.getLsaKey(opaqueLsaHeader); - ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl()); - lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key); - assertThat(lsaWrapper, is(nullValue())); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(11); - key = ospfLsdb.getLsaKey(opaqueLsaHeader); - ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl()); - lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key); - assertThat(lsaWrapper, is(nullValue())); - } - - /** - * Tests addLSA() method. - */ - @Test - public void testAddLsa() throws Exception { - routerLsa.setLsType(1); - assertThat(ospfLsdb.addLsa(routerLsa, false, new OspfInterfaceImpl()), is(true)); - networkLsa.setLsType(2); - assertThat(ospfLsdb.addLsa(networkLsa, false, new OspfInterfaceImpl()), is(true)); - summaryLsa.setLsType(3); - assertThat(ospfLsdb.addLsa(summaryLsa, false, new OspfInterfaceImpl()), is(true)); - asbrSummaryLsa.setLsType(4); - assertThat(ospfLsdb.addLsa(asbrSummaryLsa, false, new OspfInterfaceImpl()), is(true)); - externalLsa.setLsType(5); - assertThat(ospfLsdb.addLsa(externalLsa, false, new OspfInterfaceImpl()), is(true)); - opaqueLsa9.setLsType(9); - assertThat(ospfLsdb.addLsa(opaqueLsa9, false, new OspfInterfaceImpl()), is(true)); - opaqueLsa10.setLsType(10); - assertThat(ospfLsdb.addLsa(opaqueLsa10, false, new OspfInterfaceImpl()), is(true)); - opaqueLsa11.setLsType(11); - assertThat(ospfLsdb.addLsa(opaqueLsa11, false, new OspfInterfaceImpl()), is(true)); - - } - - /** - * Tests addLsaToMaxAgeBin() method. - */ - @Test - public void testAddLsaToMaxAgeBin() throws Exception { - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(1); - key = ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader((OpaqueLsaHeader) opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(2); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(3); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(4); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(5); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(9); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(10); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(11); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - assertThat(ospfLsdb, is(notNullValue())); - } - - /** - * Tests removeLsaFromBin() method. - */ - @Test - public void testRemoveLsaFromBin() throws Exception { - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(1); - key = ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - ospfLsdb.removeLsaFromBin(lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(2); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - ospfLsdb.removeLsaFromBin(lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(3); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - ospfLsdb.removeLsaFromBin(lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(4); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - ospfLsdb.removeLsaFromBin(lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(5); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - ospfLsdb.removeLsaFromBin(lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(9); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - ospfLsdb.removeLsaFromBin(lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(10); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - ospfLsdb.removeLsaFromBin(lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(11); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - ospfLsdb.removeLsaFromBin(lsaWrapper); - assertThat(ospfLsdb, is(notNullValue())); - } - - /** - * Tests isNewerOrSameLsa() method. - */ - @Test - public void testIsNewerorSameLsa() throws Exception { - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader1 = new OpaqueLsaHeader(); - opaqueLsaHeader1.setLsType(1); - key = ospfLsdb.getLsaKey(opaqueLsaHeader1); - lsaWrapper.setLsaHeader(opaqueLsaHeader1); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - lsaWrapper = new LsaWrapperImpl(); - opaqueLsaHeader = new OpaqueLsaHeader(); - opaqueLsaHeader.setLsType(2); - ospfLsdb.getLsaKey(opaqueLsaHeader); - lsaWrapper.setLsaHeader(opaqueLsaHeader); - ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper); - assertThat(ospfLsdb.isNewerOrSameLsa(opaqueLsaHeader1, opaqueLsaHeader), is(notNullValue())); - assertThat(ospfLsdb, is(notNullValue())); - } - - /** - * Tests getLsSequenceNumber() method. - */ - @Test - public void testGetLsSequenceNumber() throws Exception { - assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.NETWORK), is(notNullValue())); - assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.ROUTER), is(notNullValue())); - } - - /** - * Tests deleteLsa() method. - */ - @Test - public void testDeleteLsa() throws Exception { - opaqueLsaHeader1 = new OpaqueLsaHeader(); - opaqueLsaHeader1.setLsType(1); - ospfLsdb.deleteLsa(opaqueLsaHeader1); - opaqueLsaHeader1 = new OpaqueLsaHeader(); - opaqueLsaHeader1.setLsType(2); - ospfLsdb.deleteLsa(opaqueLsaHeader1); - opaqueLsaHeader1 = new OpaqueLsaHeader(); - opaqueLsaHeader1.setLsType(3); - ospfLsdb.deleteLsa(opaqueLsaHeader1); - opaqueLsaHeader1 = new OpaqueLsaHeader(); - opaqueLsaHeader1.setLsType(4); - ospfLsdb.deleteLsa(opaqueLsaHeader1); - opaqueLsaHeader1 = new OpaqueLsaHeader(); - opaqueLsaHeader1.setLsType(5); - ospfLsdb.deleteLsa(opaqueLsaHeader1); - opaqueLsaHeader1 = new OpaqueLsaHeader(); - opaqueLsaHeader1.setLsType(9); - ospfLsdb.deleteLsa(opaqueLsaHeader1); - opaqueLsaHeader1 = new OpaqueLsaHeader(); - opaqueLsaHeader1.setLsType(10); - ospfLsdb.deleteLsa(opaqueLsaHeader1); - opaqueLsaHeader1 = new OpaqueLsaHeader(); - opaqueLsaHeader1.setLsType(11); - ospfLsdb.deleteLsa(opaqueLsaHeader1); - assertThat(ospfLsdb, is(notNullValue())); - - } - - /** - * Tests getLsSequenceNumber() method. - */ - @Test - public void testSetRouterLsaSeqNo() throws Exception { - ospfLsdb.setRouterLsaSeqNo(-2147483647); - assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.ROUTER), is(-2147483647L)); - } - - /** - * Tests getLsSequenceNumber() method. - */ - @Test - public void testSetNetworkLsaSeqNo() throws Exception { - ospfLsdb.setNetworkLsaSeqNo(111111); - assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.NETWORK), is(111111L)); - } -} \ No newline at end of file diff --git a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/util/OspfEligibleRouterTest.java b/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/util/OspfEligibleRouterTest.java deleted file mode 100644 index 47bbb9276d..0000000000 --- a/protocols/ospf/ctl/src/test/java/org/onosproject/ospf/controller/util/OspfEligibleRouterTest.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.controller.util; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfEligibleRouter. - */ -public class OspfEligibleRouterTest { - - private OspfEligibleRouter ospfEligibleRouter; - - @Before - public void setUp() throws Exception { - ospfEligibleRouter = new OspfEligibleRouter(); - } - - @After - public void tearDown() throws Exception { - ospfEligibleRouter = null; - } - - /** - * Tests getIpAddress() getter method. - */ - @Test - public void testGetIpAddress() throws Exception { - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfEligibleRouter.getIpAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests setIpAddress() setter method. - */ - @Test - public void testSetIpAddress() throws Exception { - ospfEligibleRouter.setIpAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfEligibleRouter.getIpAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests getRouterId() getter method. - */ - @Test - public void testGetRouterId() throws Exception { - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfEligibleRouter.getRouterId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests setRouterId() setter method. - */ - @Test - public void testSetRouterId() throws Exception { - ospfEligibleRouter.setRouterId(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfEligibleRouter.getRouterId(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests getRouterPriority() getter method. - */ - @Test - public void testGetRouterPriority() throws Exception { - ospfEligibleRouter.setRouterPriority(1); - assertThat(ospfEligibleRouter.getRouterPriority(), is(1)); - } - - /** - * Tests getRouterPriority() setter method. - */ - @Test - public void testSetRouterPriority() throws Exception { - ospfEligibleRouter.setRouterPriority(1); - assertThat(ospfEligibleRouter.getRouterPriority(), is(1)); - } - - /** - * Tests isDr() getter method. - */ - @Test - public void testIsDr() throws Exception { - ospfEligibleRouter.setIsDr(true); - assertThat(ospfEligibleRouter.isDr(), is(true)); - } - - /** - * Tests isDr() setter method. - */ - @Test - public void testSetIsDr() throws Exception { - ospfEligibleRouter.setIsDr(true); - assertThat(ospfEligibleRouter.isDr(), is(true)); - } - - /** - * Tests isBdr() getter method. - */ - @Test - public void testIsBdr() throws Exception { - ospfEligibleRouter.setIsBdr(true); - assertThat(ospfEligibleRouter.isBdr(), is(true)); - } - - /** - * Tests isBdr() setter method. - */ - @Test - public void testSetIsBdr() throws Exception { - ospfEligibleRouter.setIsBdr(true); - assertThat(ospfEligibleRouter.isBdr(), is(true)); - } -} diff --git a/protocols/ospf/protocol/BUILD b/protocols/ospf/protocol/BUILD deleted file mode 100644 index 7de13a947c..0000000000 --- a/protocols/ospf/protocol/BUILD +++ /dev/null @@ -1,8 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + NETTY + JAXB + [ - "@io_netty_netty//jar", - "//protocols/ospf/api:onos-protocols-ospf-api", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/OspfErrorType.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/OspfErrorType.java deleted file mode 100644 index cab12408df..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/OspfErrorType.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.exceptions; - -/** - * Defines all error codes and error sub codes. - */ -public final class OspfErrorType { - - //Represents an invalid OSPF message header - public static final byte MESSAGE_HEADER_ERROR = 1; - //Represents an invalid OSPF message body - public static final byte OSPF_MESSAGE_ERROR = 2; - //Message Header error sub codes - //Represents an invalid OSPF message length - public static final byte BAD_MESSAGE_LENGTH = 2; - //Represents an invalid OSPF message - public static final byte BAD_MESSAGE = 4; - - /** - * Creates an instance of OSPF error type. - */ - private OspfErrorType() { - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/package-info.java deleted file mode 100644 index db2cc81bfb..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/exceptions/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF exception types. - */ -package org.onosproject.ospf.exceptions; \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/package-info.java deleted file mode 100644 index e55f1bdde0..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ospf protocol. - */ -package org.onosproject.ospf; \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/LsaHeader.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/LsaHeader.java deleted file mode 100644 index 864a7464c8..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/LsaHeader.java +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.ospf.protocol.lsa; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.util.ArrayList; -import java.util.List; - -/** - * Defines the LSA header, fields and the methods to access them. - */ -public class LsaHeader implements OspfLsa { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS age | Options | LS type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link State ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS sequence number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS checksum | length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - LSA header format - REFERENCE : RFC 2328 - */ - public static final Logger log = LoggerFactory.getLogger(LsaHeader.class); - private int age; - private int options; - private int lsType; - private long lsSequenceNo; - private int lsCheckSum; - private int lsPacketLen; - private String linkStateId; - private Ip4Address advertisingRouter; - - /** - * Gets LSA age. - * - * @return LSA age - */ - public int age() { - return age; - } - - /** - * Sets LSA age. - * - * @param age LSA age - */ - public void setAge(int age) { - this.age = age; - } - - /** - * Gets options value. - * - * @return options header value - */ - public int options() { - return options; - } - - /** - * Sets options header value. - * - * @param options header value - */ - public void setOptions(int options) { - this.options = options; - } - - /** - * Gets LSA type. - * - * @return LSA type - */ - public int lsType() { - return lsType; - } - - /** - * Sets LSA type. - * - * @param lsType LSA type - */ - public void setLsType(int lsType) { - this.lsType = lsType; - } - - /** - * Gets link state id. - * - * @return linkStateId link state id - */ - public String linkStateId() { - return linkStateId; - } - - /** - * Sets link state id. - * - * @param linkStateId link state id - */ - public void setLinkStateId(String linkStateId) { - this.linkStateId = linkStateId; - } - - /** - * Gets advertising router IP. - * - * @return advertising router - */ - public Ip4Address advertisingRouter() { - return advertisingRouter; - } - - /** - * Sets advertising router. - * - * @param advertisingRouter advertising router - */ - public void setAdvertisingRouter(Ip4Address advertisingRouter) { - this.advertisingRouter = advertisingRouter; - } - - /** - * Gets LSA sequence number. - * - * @return LSA sequence number - */ - public long lsSequenceNo() { - return lsSequenceNo; - } - - /** - * Sets LSA sequence number. - * - * @param lsSequenceNo LSA sequence number - */ - public void setLsSequenceNo(long lsSequenceNo) { - this.lsSequenceNo = lsSequenceNo; - } - - /** - * Gets LSA check sum. - * - * @return lsCheckSum LSA checksum - */ - public int lsCheckSum() { - return lsCheckSum; - } - - /** - * Sets LSA checksum. - * - * @param lsCheckSum LSA checksum - */ - public void setLsCheckSum(int lsCheckSum) { - this.lsCheckSum = lsCheckSum; - } - - /** - * Gets lsa packet length. - * - * @return lsPacketLen LSA packet length - */ - public int lsPacketLen() { - return lsPacketLen; - } - - /** - * Sets LSA packet length. - * - * @param lsPacketLen LSA packet length - */ - public void setLsPacketLen(int lsPacketLen) { - this.lsPacketLen = lsPacketLen; - } - - @Override - public OspfLsaType getOspfLsaType() { - if (lsType == OspfLsaType.ROUTER.value()) { - return OspfLsaType.ROUTER; - } else if (lsType == OspfLsaType.NETWORK.value()) { - return OspfLsaType.NETWORK; - } else if (lsType == OspfLsaType.SUMMARY.value()) { - return OspfLsaType.SUMMARY; - } else if (lsType == OspfLsaType.ASBR_SUMMARY.value()) { - return OspfLsaType.ASBR_SUMMARY; - } else if (lsType == OspfLsaType.EXTERNAL_LSA.value()) { - return OspfLsaType.EXTERNAL_LSA; - } else if (lsType == OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value()) { - return OspfLsaType.LINK_LOCAL_OPAQUE_LSA; - } else if (lsType == OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value()) { - return OspfLsaType.AREA_LOCAL_OPAQUE_LSA; - } else if (lsType == OspfLsaType.AS_OPAQUE_LSA.value()) { - return OspfLsaType.AS_OPAQUE_LSA; - } - - return OspfLsaType.UNDEFINED; - } - - @Override - public OspfLsa lsaHeader() { - return this; - } - - /** - * Gets the LSA header as bytes. - * - * @return LSA header as bytes - */ - public byte[] getLsaHeaderAsByteArray() { - List headerLst = new ArrayList<>(); - try { - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.age()))); - headerLst.add((byte) this.options()); - headerLst.add((byte) this.lsType()); - headerLst.addAll(Bytes.asList(InetAddress.getByName(this.linkStateId()).getAddress())); - headerLst.addAll(Bytes.asList(this.advertisingRouter().toOctets())); - headerLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.lsSequenceNo()))); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.lsCheckSum()))); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.lsPacketLen()))); - } catch (Exception e) { - log.debug("Error::getLsaHeaderAsByteArray {}", e.getMessage()); - return Bytes.toArray(headerLst); - } - return Bytes.toArray(headerLst); - } - - /** - * Populates the header from the LSA header instance. - * - * @param lsaHeader LSA header instance - */ - public void populateHeader(LsaHeader lsaHeader) { - //assign all the header values - this.setAge(lsaHeader.age()); - this.setOptions(lsaHeader.options()); - this.setLsType(lsaHeader.lsType()); - this.setLinkStateId(lsaHeader.linkStateId()); - this.setAdvertisingRouter(lsaHeader.advertisingRouter()); - this.setLsSequenceNo(lsaHeader.lsSequenceNo()); - this.setLsCheckSum(lsaHeader.lsCheckSum()); - this.setLsPacketLen(lsaHeader.lsPacketLen()); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - LsaHeader that = (LsaHeader) o; - return Objects.equal(age, that.age) && - Objects.equal(options, that.options) && - Objects.equal(lsType, that.lsType) && - Objects.equal(lsSequenceNo, that.lsSequenceNo) && - Objects.equal(lsCheckSum, that.lsCheckSum) && - Objects.equal(lsPacketLen, that.lsPacketLen) && - Objects.equal(linkStateId, that.linkStateId) && - Objects.equal(advertisingRouter, that.advertisingRouter); - } - - @Override - public int hashCode() { - return Objects.hashCode(age, options, lsType, lsSequenceNo, lsCheckSum, - lsPacketLen, linkStateId, advertisingRouter); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("age", age) - .add("options", options) - .add("lsType", lsType) - .add("lsSequenceNo", lsSequenceNo) - .add("lsCheckSum", lsCheckSum) - .add("lsPacketLen", lsPacketLen) - .add("linkStateId;", linkStateId) - .add("advertisingRouter", advertisingRouter) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeader.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeader.java deleted file mode 100644 index c2da0c3a96..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeader.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.onosproject.ospf.protocol.util.OspfUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Defines the Opaque LSA header, fields and the methods to access them. - */ -public class OpaqueLsaHeader extends LsaHeader { - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS age | Options | 9, 10, or 11 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Opaque Type | Opaque ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS Sequence Number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS checksum | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - Opaque LSA header format - REFERENCE : RFC 5250 - */ - private int opaqueId; - private int opaqueType; - - /** - * Populates the header from the lsaHeader instance. - * - * @param lsaHeader lsa header instance. - */ - public void populateHeader(OpaqueLsaHeader lsaHeader) { - //assign all the header values - this.setAge(lsaHeader.age()); - this.setOptions(lsaHeader.options()); - this.setLsType(lsaHeader.lsType()); - this.setLinkStateId(lsaHeader.linkStateId()); - this.setAdvertisingRouter(lsaHeader.advertisingRouter()); - this.setLsSequenceNo(lsaHeader.lsSequenceNo()); - this.setLsCheckSum(lsaHeader.lsCheckSum()); - this.setLsPacketLen(lsaHeader.lsPacketLen()); - this.setOpaqueId(lsaHeader.opaqueId()); - this.setOpaqueType(lsaHeader.opaqueType()); - } - - /** - * Gets the opaque id. - * - * @return opaque id - */ - public int opaqueId() { - return opaqueId; - } - - /** - * Sets the opaque id. - * - * @param opaqueId opaque id - */ - public void setOpaqueId(int opaqueId) { - this.opaqueId = opaqueId; - } - - /** - * Gets opaque type. - * - * @return opaque type - */ - public int opaqueType() { - return opaqueType; - } - - /** - * Sets opaque type. - * - * @param opaqueType opaque type - */ - public void setOpaqueType(int opaqueType) { - this.opaqueType = opaqueType; - } - - /** - * Gets header as byte array. - * - * @return header as byte array - */ - public byte[] getOpaqueLsaHeaderAsByteArray() { - List headerLst = new ArrayList<>(); - try { - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.age()))); - headerLst.add((byte) this.options()); - headerLst.add((byte) this.lsType()); - headerLst.add((byte) this.opaqueType()); - headerLst.addAll(Bytes.asList(OspfUtil.convertToThreeBytes(this.opaqueId()))); - headerLst.addAll(Bytes.asList(this.advertisingRouter().toOctets())); - headerLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.lsSequenceNo()))); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.lsCheckSum()))); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.lsPacketLen()))); - } catch (Exception e) { - log.debug("Error::getLsaHeaderAsByteArray {}", e.getMessage()); - return Bytes.toArray(headerLst); - } - return Bytes.toArray(headerLst); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - OpaqueLsaHeader that = (OpaqueLsaHeader) o; - return Objects.equal(opaqueId, that.opaqueId) && - Objects.equal(opaqueType, that.opaqueType) && - Objects.equal(age(), that.age()) && - Objects.equal(options(), that.options()) && - Objects.equal(lsType(), that.lsType()) && - Objects.equal(lsSequenceNo(), that.lsSequenceNo()) && - Objects.equal(lsCheckSum(), that.lsCheckSum()) && - Objects.equal(lsPacketLen(), that.lsPacketLen()) && - Objects.equal(linkStateId(), that.linkStateId()) && - Objects.equal(advertisingRouter(), that.advertisingRouter()); - } - - @Override - public int hashCode() { - return Objects.hashCode(opaqueId, opaqueType); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("opaqueId", this.opaqueId) - .add("opaqueType", opaqueType) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/TlvHeader.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/TlvHeader.java deleted file mode 100644 index 22b0d67cca..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/TlvHeader.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.onosproject.ospf.protocol.util.OspfUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of a TLV header. - */ -public class TlvHeader { - private int tlvType; - private int tlvLength; - - /** - * Gets TLV length. - * - * @return TLV length - */ - public int tlvLength() { - return tlvLength; - } - - /** - * Sets TLV length. - * - * @param tlvLength TLV length - */ - public void setTlvLength(int tlvLength) { - this.tlvLength = tlvLength; - } - - /** - * Gets TLV type. - * - * @return TLV type - */ - public int tlvType() { - return tlvType; - } - - /** - * Sets TLV type. - * - * @param tlvType TLV type - */ - public void setTlvType(int tlvType) { - this.tlvType = tlvType; - } - - /** - * Gets TLV header as bytes. - * - * @return TLV header as bytes - */ - public byte[] getTlvHeaderAsByteArray() { - List headerLst = new ArrayList(); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.tlvType))); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.tlvLength))); - return Bytes.toArray(headerLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("tlvType", tlvType) - .add("tlvLength", tlvLength) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroup.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroup.java deleted file mode 100644 index 16aa7c9c27..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroup.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; - -/** - * Representation of an administrative group value of link tlv of Traffic Engineering.. - */ -public class AdministrativeGroup extends TlvHeader implements LinkSubType { - - private int administrativeGroup; - - /** - * Creates an administrative group instance. - * - * @param header Tlv Header instance - */ - public AdministrativeGroup(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Gets administrative group value. - * - * @return administrative group value - */ - public int administrativeGroup() { - return administrativeGroup; - } - - /** - * Sets administrative group value. - * - * @param administrativeGroup value - */ - public void setAdministrativeGroup(int administrativeGroup) { - this.administrativeGroup = administrativeGroup; - } - - /** - * Gets administrative group value. - * - * @return administrativeGroup value - */ - public int getAdministrativeGroupValue() { - return this.administrativeGroup; - } - - /** - * Reads bytes from channel buffer. - * - * @param channelBuffer Channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte[] tempByteArray = new byte[tlvLength()]; - channelBuffer.readBytes(tempByteArray, 0, tlvLength()); - this.setAdministrativeGroup(OspfUtil.byteToInteger(tempByteArray)); - } - - /** - * Returns administrative group as byte array. - * - * @return administrative group instance as byte array - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = getTlvHeaderAsByteArray(); - byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Gets administrative group body as byte array. - * - * @return byte array of sub tlv administrative group - */ - public byte[] getLinkSubTypeTlvBodyAsByteArray() { - - byte[] linkSubTypeBody; - linkSubTypeBody = OspfUtil.convertToFourBytes(this.administrativeGroup); - - return linkSubTypeBody; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("administrativeGroup", administrativeGroup) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkId.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkId.java deleted file mode 100644 index e530097047..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkId.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.net.UnknownHostException; - -/** - * Representation of link id value of link tlv of Traffic Engineering. - */ -public class LinkId extends TlvHeader implements LinkSubType { - private static final Logger log = - LoggerFactory.getLogger(LinkId.class); - private String linkId; - - /** - * Creates an instance of link id. - * - * @param header tlv header instance - */ - public LinkId(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Sets link type. - * - * @param linkType link type value - */ - public void setLinkId(String linkType) { - this.linkId = linkType; - } - - /** - * Reads bytes from channel buffer. - * - * @param channelBuffer channel buffer instance - * @throws OspfParseException might throws exception while parsing packet - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - try { - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.setLinkId(InetAddress.getByAddress(tempByteArray).getHostName()); - } catch (UnknownHostException e) { - log.debug("Error::LinkId:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - } - - /** - * Returns instance as byte array. - * - * @return instance as bytes - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] asBytes() throws OspfParseException { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = getTlvHeaderAsByteArray(); - byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Gets byte array of link id sub tlv body. - * - * @return gets the body as byte array - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] getLinkSubTypeTlvBodyAsByteArray() throws OspfParseException { - byte[] linkSubTypeBody = null; - try { - linkSubTypeBody = InetAddress.getByName(this.linkId).getAddress(); - } catch (Exception e) { - log.debug("Error::LinkId:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - return linkSubTypeBody; - } - - /** - * Returns this instance as string. - * - * @return this instance as string - */ - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("linkId", linkId) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubType.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubType.java deleted file mode 100644 index 3703bfefc6..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubType.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -/** - * Marker interface to represent TE Link sub types. - */ -public interface LinkSubType { -} diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubTypes.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubTypes.java deleted file mode 100644 index f5cda35bde..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkSubTypes.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -/** - * Representation of TE link sub types. - */ -public enum LinkSubTypes { - LINK_TYPE(1), - LINK_ID(2), - LOCAL_INTERFACE_IP_ADDRESS(3), - REMOTE_INTERFACE_IP_ADDRESS(4), - TRAFFIC_ENGINEERING_METRIC(5), - MAXIMUM_BANDWIDTH(6), - MAXIMUM_RESERVABLE_BANDWIDTH(7), - UNRESERVED_BANDWIDTH(8), - ADMINISTRATIVE_GROUP(9); - - private int value; - - /** - * Creates an instance of link sub types. - * - * @param value link sub type value - */ - LinkSubTypes(int value) { - this.value = value; - } - - /** - * Gets the link sub type value. - * - * @return link sub type value - */ - public int value() { - return value; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkType.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkType.java deleted file mode 100644 index a1a2ac90f4..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkType.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Representation of link type TE value. - */ -public class LinkType extends TlvHeader implements LinkSubType { - private static final Logger log = - LoggerFactory.getLogger(LinkType.class); - private int linkType; - - /** - * Creates link type instance . - */ - public LinkType() { - - } - - /** - * Creates link type instance. - * - * @param header tlv header instance - */ - public LinkType(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Sets link type. - * - * @param linkType value of link type - */ - public void setLinkType(int linkType) { - this.linkType = linkType; - } - - /** - * Reads from channel buffer. - * - * @param channelBuffer channel buffer instance - * @throws OspfParseException might throws exception while parsing buffer - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - try { - int len = channelBuffer.readableBytes(); - byte[] tempByteArray = new byte[len]; - channelBuffer.readBytes(tempByteArray, 0, len); - this.setLinkType(OspfUtil.byteToInteger(tempByteArray)); - } catch (Exception e) { - log.debug("Error::LinkType:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - } - - /** - * Gets link subtype as byte array. - * - * @return byte array of link subtype - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = getTlvHeaderAsByteArray(); - byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - return linkSubType; - } - - /** - * Gets link subtype as bytes. - * - * @return byte array of link subtype - */ - public byte[] getLinkSubTypeTlvBodyAsByteArray() { - byte[] linkSubTypeBody = new byte[4]; - linkSubTypeBody[0] = (byte) this.linkType; - linkSubTypeBody[1] = 0; - linkSubTypeBody[2] = 0; - linkSubTypeBody[3] = 0; - return linkSubTypeBody; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("linkType", linkType) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddress.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddress.java deleted file mode 100644 index 0214ccc2bd..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddress.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of local interface ip address TE value. - */ -public class LocalInterfaceIpAddress extends TlvHeader implements LinkSubType { - private static final Logger log = - LoggerFactory.getLogger(RemoteInterfaceIpAddress.class); - private List localInterfaceIPAddress = new ArrayList<>(); - - /** - * Creates an instance of local interface ip address. - * - * @param header tlv header instance - */ - public LocalInterfaceIpAddress(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Adds local interface ip address. - * - * @param localAddress ip address - */ - public void addLocalInterfaceIPAddress(String localAddress) { - localInterfaceIPAddress.add(localAddress); - } - - /** - * Gets local interface ip address. - * - * @return localAddress ip address - */ - public List getLocalInterfaceIPAddress() { - return localInterfaceIPAddress; - } - - /** - * Reads bytes from channel buffer. - * - * @param channelBuffer channel buffer instance - * @throws OspfParseException might throws exception while parsing buffer - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - while (channelBuffer.readableBytes() >= OspfUtil.FOUR_BYTES) { - try { - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.addLocalInterfaceIPAddress(InetAddress.getByAddress(tempByteArray).getHostName()); - } catch (UnknownHostException e) { - log.debug("Error::readFrom:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - } - } - - /** - * Gets local interface ip address as byte array. - * - * @return local interface ip address as byte array - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] asBytes() throws OspfParseException { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = getTlvHeaderAsByteArray(); - byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Gets byte array of local interface ip address. - * - * @return byte array of local interface ip address - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] getLinkSubTypeTlvBodyAsByteArray() throws OspfParseException { - - List linkSubTypeBody = new ArrayList<>(); - - for (String remoteAddress : this.localInterfaceIPAddress) { - try { - linkSubTypeBody.addAll(Bytes.asList(InetAddress.getByName(remoteAddress).getAddress())); - } catch (Exception e) { - log.debug("Error::getLinkSubTypeTlvBodyAsByteArray:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - } - - return Bytes.toArray(linkSubTypeBody); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("localInterfaceIPAddress", localInterfaceIPAddress) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidth.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidth.java deleted file mode 100644 index 495040ca72..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidth.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; - -/** - * Representation of maximum bandwidth TE value. - */ -public class MaximumBandwidth extends TlvHeader implements LinkSubType { - private float maximumBandwidth; - - /** - * Creates an instance of maximum bandwidth. - * - * @param header tlv header instance - */ - public MaximumBandwidth(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Sets value of maximum bandwidth. - * - * @param maximumBandwidth value of maximum bandwidth - */ - public void setMaximumBandwidth(float maximumBandwidth) { - this.maximumBandwidth = maximumBandwidth; - } - - /** - * Gets value of maximum bandwidth. - * - * @return maximumBandwidth value of maximum bandwidth - */ - public float getMaximumBandwidthValue() { - return this.maximumBandwidth; - } - - /** - * Reads bytes from channel buffer. - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte[] tempByteArray = new byte[tlvLength()]; - channelBuffer.readBytes(tempByteArray, 0, tlvLength()); - int maxBandwidth = (OspfUtil.byteToInteger(tempByteArray)); - this.setMaximumBandwidth(Float.intBitsToFloat(maxBandwidth)); - } - - /** - * Gets byte array of maximum bandwidth sub tlv. - * - * @return byte array of maximum bandwidth sub tlv - */ - public byte[] asBytes() { - byte[] linkSubType = null; - byte[] linkSubTlvHeader = getTlvHeaderAsByteArray(); - byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Gets maximum bandwidth sub tlv byte array. - * - * @return byte array of maximum bandwidth sub tlv - */ - public byte[] getLinkSubTypeTlvBodyAsByteArray() { - byte[] linkSubTypeBody; - linkSubTypeBody = OspfUtil.convertToFourBytes(Float.floatToIntBits(this.maximumBandwidth)); - return linkSubTypeBody; - } - - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("maximumBandwidth", maximumBandwidth) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidth.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidth.java deleted file mode 100644 index 2b4e6d39ed..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidth.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; - -/** - * Representation of maximum reservable bandwidth TE value. - */ -public class MaximumReservableBandwidth extends TlvHeader implements LinkSubType { - private float maximumReservableBandwidth; - - /** - * Creates an instance of maximum reservable bandwidth. - * - * @param header tlv header - */ - public MaximumReservableBandwidth(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Sets value of maximum reversible bandwidth. - * - * @param maximumBandwidth maximum reversible bandwidth - */ - public void setMaximumBandwidth(float maximumBandwidth) { - this.maximumReservableBandwidth = maximumBandwidth; - } - - /** - * Gets value of maximum reversible bandwidth. - * - * @return maximumBandwidth maximum reversible bandwidth - */ - public float getMaximumBandwidthValue() { - return this.maximumReservableBandwidth; - } - - /** - * Reads bytes from channel buffer. - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte[] tempByteArray = new byte[tlvLength()]; - channelBuffer.readBytes(tempByteArray, 0, tlvLength()); - int maxBandwidth = (OspfUtil.byteToInteger(tempByteArray)); - this.setMaximumBandwidth(Float.intBitsToFloat(maxBandwidth)); - } - - /** - * Returns byte array of maximum reservable bandwidth. - * - * @return byte array of maximum reservable bandwidth - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = getTlvHeaderAsByteArray(); - byte[] linkSubTlvBody = getLinksubTypeTlvBodyAsByteArray(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - return linkSubType; - - } - - /** - * Gets maximum reservable bandwidth sub tlv body as byte array. - * - * @return byte of maximum reservable bandwidth sub tlv body - */ - public byte[] getLinksubTypeTlvBodyAsByteArray() { - byte[] linkSubTypeBody; - linkSubTypeBody = OspfUtil.convertToFourBytes(Float.floatToIntBits(this.maximumReservableBandwidth)); - return linkSubTypeBody; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("maximumReservableBandwidth", maximumReservableBandwidth) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddress.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddress.java deleted file mode 100644 index 7aaf9d9992..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddress.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of remote interface ip address TE value. - */ -public class RemoteInterfaceIpAddress extends TlvHeader implements LinkSubType { - private static final Logger log = - LoggerFactory.getLogger(RemoteInterfaceIpAddress.class); - private List remoteInterfaceAddress = new ArrayList<>(); - - /** - * Creates an instance of remote interface ip address. - * - * @param header tlv header instance - */ - public RemoteInterfaceIpAddress(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Adds remote interface ip address. - * - * @param remoteAddress ip address - */ - public void addRemoteInterfaceAddress(String remoteAddress) { - remoteInterfaceAddress.add(remoteAddress); - } - - /** - * Gets remote interface ip address. - * - * @return remoteAddress ip address - */ - public List getRemoteInterfaceAddress() { - return remoteInterfaceAddress; - } - - /** - * Reads bytes from channel buffer . - * - * @param channelBuffer channel buffer instance - * @throws OspfParseException might throws exception while parsing packet - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - while (channelBuffer.readableBytes() >= OspfUtil.FOUR_BYTES) { - try { - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.addRemoteInterfaceAddress(InetAddress.getByAddress(tempByteArray).getHostName()); - } catch (Exception e) { - log.debug("Error::RemoteInterfaceIPAddress:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - } - } - - /** - * Gets byte array of remote interface ip address . - * - * @return byte array of remote interface ip address - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] asBytes() throws OspfParseException { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = getTlvHeaderAsByteArray(); - byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Gets byte array of remote interface ip address. - * - * @return byte array of remote interface ip address - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] getLinkSubTypeTlvBodyAsByteArray() throws OspfParseException { - List linkSubTypeBody = new ArrayList<>(); - - for (String remoteAddress : this.remoteInterfaceAddress) { - try { - linkSubTypeBody.addAll(Bytes.asList(InetAddress.getByName(remoteAddress).getAddress())); - } catch (Exception e) { - log.debug("Error::RemoteInterfaceIPAddress:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - } - - return Bytes.toArray(linkSubTypeBody); - } - - /** - * Returns instance as string. - * - * @return instance as string - */ - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("RemoteInterfaceIPAddress", remoteInterfaceAddress) - .toString(); - } - -} diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetric.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetric.java deleted file mode 100644 index 8693eee363..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetric.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; - -/** - * Representation of traffic engineering metric TE value. - */ -public class TrafficEngineeringMetric extends TlvHeader implements LinkSubType { - private long trafficEngineeringMetric; - - /** - * Creates an instance of traffic engineering metric . - * - * @param header tlv header instance - */ - public TrafficEngineeringMetric(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Sets TE metric value. - * - * @param trafficEngineeringMetric value of trafficEngineeringMetric - */ - public void setTrafficEngineeringMetric(long trafficEngineeringMetric) { - this.trafficEngineeringMetric = trafficEngineeringMetric; - } - - /** - * Gets TE metric value. - * - * @return value of traffic engineering metric - */ - public long getTrafficEngineeringMetricValue() { - return this.trafficEngineeringMetric; - } - - /** - * Reads bytes from channel buffer . - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte[] tempByteArray = new byte[tlvLength()]; - channelBuffer.readBytes(tempByteArray, 0, tlvLength()); - this.setTrafficEngineeringMetric(OspfUtil.byteToLong(tempByteArray)); - } - - /** - * Gets instance as byte array. - * - * @return instance as byte array - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = getTlvHeaderAsByteArray(); - byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Gets trafficEngineeringMetric as byte array . - * - * @return byte array of trafficEngineeringMetric - */ - public byte[] getLinkSubTypeTlvBodyAsByteArray() { - - byte[] linkSubTypeBody; - linkSubTypeBody = OspfUtil.convertToFourBytes(this.trafficEngineeringMetric); - - return linkSubTypeBody; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("trafficEngineeringMetric", trafficEngineeringMetric) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubType.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubType.java deleted file mode 100644 index 12f4a73389..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubType.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -/** - * Representation of an unknown or experimental TE value. - */ -public class UnknownLinkSubType extends TlvHeader implements LinkSubType { - - private byte[] value; - - /** - * Creates an instance of this. - * - * @param header tlv header - */ - public UnknownLinkSubType(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Gets the unknown subtype value . - * - * @return unknown subtype value - */ - public byte[] value() { - return value; - } - - /** - * Sets unknown subtype value. - * - * @param value unknown subtype value. - */ - public void setValue(byte[] value) { - this.value = value; - } - - /** - * Reads bytes from channel buffer . - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - byte[] tempByteArray = new byte[tlvLength()]; - channelBuffer.readBytes(tempByteArray, 0, tlvLength()); - this.setValue(tempByteArray); - } - - /** - * Returns instance as byte array. - * - * @return instance as byte array - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = getTlvHeaderAsByteArray(); - byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - return linkSubType; - - } - - /** - * Gets instance body as byte array. - * - * @return instance body as byte array - */ - public byte[] getLinkSubTypeTlvBodyAsByteArray() { - return value; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("value", value) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidth.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidth.java deleted file mode 100644 index 06bfa60de9..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidth.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.onosproject.ospf.protocol.util.OspfUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an unreserved band width TE value. - */ -public class UnreservedBandwidth extends TlvHeader implements LinkSubType { - private List unReservedBandwidth = new ArrayList<>(); - - /** - * Creates an instance of unreserved band width. - * - * @param header tlv header instance - */ - public UnreservedBandwidth(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Adds value of un reserved bandwidth . - * - * @param unreservedBandwidth value of un reserved bandwidth - */ - public void addUnReservedBandwidth(float unreservedBandwidth) { - this.unReservedBandwidth.add(unreservedBandwidth); - } - - /** - * Gets list of un reserved bandwidth . - * - * @return List of un reserved bandwidth - */ - public List getUnReservedBandwidthValue() { - return this.unReservedBandwidth; - } - - /** - * Reads bytes from channel buffer . - * - * @param channelBuffer channel buffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - while (channelBuffer.readableBytes() >= OspfUtil.FOUR_BYTES) { - int maxReversibleBandwidth = channelBuffer.readInt(); - this.addUnReservedBandwidth(Float.intBitsToFloat(maxReversibleBandwidth)); - } - } - - /** - * Gets instance as byte array. - * - * @return instance as byte array - */ - public byte[] asBytes() { - byte[] linkSubType = null; - - byte[] linkSubTlvHeader = getTlvHeaderAsByteArray(); - byte[] linkSubTlvBody = getLinkSubTypeTlvBodyAsByteArray(); - linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody); - - return linkSubType; - } - - /** - * Gets unreserved bandwidth as byte array. - * - * @return unreserved bandwidth as byte array - */ - public byte[] getLinkSubTypeTlvBodyAsByteArray() { - List linkSubTypeBody = new ArrayList<>(); - if (this.unReservedBandwidth.size() < 8) { - int size = OspfUtil.EIGHT_BYTES - this.unReservedBandwidth.size(); - for (int i = 0; i < size; i++) { - linkSubTypeBody.addAll(Bytes.asList(OspfUtil.convertToFourBytes(OspfParameters.INITIAL_BANDWIDTH))); - } - } - for (Float unreservedBandwidth : this.unReservedBandwidth) { - int unresBandwidth = Float.floatToIntBits(unreservedBandwidth); - linkSubTypeBody.addAll(Bytes.asList(OspfUtil.convertToFourBytes(unresBandwidth))); - } - - return Bytes.toArray(linkSubTypeBody); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("unReservedBandwidth", unReservedBandwidth) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/package-info.java deleted file mode 100644 index 980d260645..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/linksubtype/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ospf TE link types. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/package-info.java deleted file mode 100644 index 871fc16bd2..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF LSA. - */ -package org.onosproject.ospf.protocol.lsa; \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestination.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestination.java deleted file mode 100644 index 0b377abbde..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestination.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.subtypes; - -import com.google.common.base.MoreObjects; -import org.onlab.packet.Ip4Address; - -/** - * Defines the OSPF external destination. - */ -public class OspfExternalDestination { - - private boolean isType1orType2Metric; - private int metric; - private Ip4Address forwardingAddress; - private int externalRouterTag; - - /** - * Gets whether type1 or type 2 metric. - * - * @return true if Type1 or false if Type2 metric - */ - public boolean isType1orType2Metric() { - return isType1orType2Metric; - } - - /** - * Sets whether type1 or Type2 metric. - * - * @param isType1orType2Metric is type 1 or type 2 metric - */ - public void setType1orType2Metric(boolean isType1orType2Metric) { - this.isType1orType2Metric = isType1orType2Metric; - } - - /** - * Gets the metric value. - * - * @return metric value - */ - public int metric() { - return metric; - } - - /** - * Sets the metric value. - * - * @param metric metric value - */ - public void setMetric(int metric) { - this.metric = metric; - } - - /** - * Gets forwarding address. - * - * @return forwarding address - */ - public Ip4Address forwardingAddress() { - return forwardingAddress; - } - - /** - * Sets forwarding address. - * - * @param forwardingAddress forwarding address - */ - public void setForwardingAddress(Ip4Address forwardingAddress) { - this.forwardingAddress = forwardingAddress; - } - - /** - * Gets external router tag. - * - * @return external router tag - */ - public int externalRouterTag() { - return externalRouterTag; - } - - /** - * Sets external router tag. - * - * @param externalRouterTag external router tag - */ - public void setExternalRouterTag(int externalRouterTag) { - this.externalRouterTag = externalRouterTag; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("isType1orType2Metric", isType1orType2Metric) - .add("metric", metric) - .add("forwardingAddress", forwardingAddress) - .add("externalRouterTag", externalRouterTag) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLink.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLink.java deleted file mode 100644 index d0c40ffa6e..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLink.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.subtypes; - -import com.google.common.base.MoreObjects; - -/** - * Representation of an OSPF LSA link. - */ -public class OspfLsaLink { - - private String linkId; - private String linkData; - private int linkType; - private int metric; - private int tos; - - /** - * Gets link id. - * - * @return link id - */ - public String linkId() { - return linkId; - } - - /** - * Sets link id. - * - * @param linkId link id - */ - public void setLinkId(String linkId) { - this.linkId = linkId; - } - - /** - * Gets link data. - * - * @return link data - */ - public String linkData() { - return linkData; - } - - /** - * Sets link data. - * - * @param linkData link data - */ - public void setLinkData(String linkData) { - this.linkData = linkData; - } - - /** - * Gets link type. - * - * @return link type - */ - public int linkType() { - return linkType; - } - - /** - * Sets link type. - * - * @param linkType link type - */ - public void setLinkType(int linkType) { - this.linkType = linkType; - } - - /** - * Gets metric value. - * - * @return metric. - */ - public int metric() { - return metric; - } - - /** - * Sets metric value. - * - * @param metric metric - */ - public void setMetric(int metric) { - this.metric = metric; - } - - /** - * Gets tos. - * - * @return tos - */ - public int tos() { - return tos; - } - - /** - * Sets tos. - * - * @param tos tos - */ - public void setTos(int tos) { - this.tos = tos; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("linkID", linkId) - .add("linkData", linkData) - .add("linkType", linkType) - .add("metric", metric) - .add("tos", tos) - .toString(); - } -} diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/package-info.java deleted file mode 100644 index c74d68328d..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/subtypes/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF LSA Sub Types. - */ -package org.onosproject.ospf.protocol.lsa.subtypes; \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlv.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlv.java deleted file mode 100644 index 6521ab267d..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlv.java +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.tlvtypes; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.lsa.linksubtype.AdministrativeGroup; -import org.onosproject.ospf.protocol.lsa.linksubtype.LinkId; -import org.onosproject.ospf.protocol.lsa.linksubtype.LinkSubType; -import org.onosproject.ospf.protocol.lsa.linksubtype.LinkSubTypes; -import org.onosproject.ospf.protocol.lsa.linksubtype.LinkType; -import org.onosproject.ospf.protocol.lsa.linksubtype.LocalInterfaceIpAddress; -import org.onosproject.ospf.protocol.lsa.linksubtype.MaximumBandwidth; -import org.onosproject.ospf.protocol.lsa.linksubtype.MaximumReservableBandwidth; -import org.onosproject.ospf.protocol.lsa.linksubtype.RemoteInterfaceIpAddress; -import org.onosproject.ospf.protocol.lsa.linksubtype.TrafficEngineeringMetric; -import org.onosproject.ospf.protocol.lsa.linksubtype.UnknownLinkSubType; -import org.onosproject.ospf.protocol.lsa.linksubtype.UnreservedBandwidth; -import org.onosproject.ospf.protocol.lsa.types.TopLevelTlv; -import org.onosproject.ospf.protocol.util.OspfUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an OSPF Opaque link tlv. - */ -public class LinkTlv extends TlvHeader implements TopLevelTlv { - private List subTlv = new ArrayList<>(); - - /** - * Creates an instance of link tlv. - * - * @param header tlv header - */ - public LinkTlv(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Gets sub tlv lists. - * - * @return sub tlv lists - */ - public List subTlvList() { - return this.subTlv; - } - - /** - * Reads bytes from channel buffer . - * - * @param channelBuffer channel buffer instance - * @throws OspfParseException might throws exception while parsing packet - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - while (channelBuffer.readableBytes() > 0) { - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(channelBuffer.readUnsignedShort()); - tlvHeader.setTlvLength(channelBuffer.readUnsignedShort()); - - if (LinkSubTypes.LINK_TYPE.value() == tlvHeader.tlvType()) { - LinkType linktype = new LinkType(tlvHeader); - linktype.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - subTlv.add(linktype); - if (tlvHeader.tlvLength() < OspfUtil.FOUR_BYTES) { - int readerIndex = channelBuffer.readerIndex() + (OspfUtil.FOUR_BYTES - tlvHeader.tlvLength()); - channelBuffer.readerIndex(readerIndex); - } - } else if (LinkSubTypes.LINK_ID.value() == tlvHeader.tlvType()) { - LinkId linkId = new LinkId(tlvHeader); - linkId.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - subTlv.add(linkId); - } else if (LinkSubTypes.LOCAL_INTERFACE_IP_ADDRESS.value() == tlvHeader.tlvType()) { - LocalInterfaceIpAddress localInterfaceIpAddress = new LocalInterfaceIpAddress(tlvHeader); - localInterfaceIpAddress.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - subTlv.add(localInterfaceIpAddress); - } else if (LinkSubTypes.REMOTE_INTERFACE_IP_ADDRESS.value() == tlvHeader.tlvType()) { - RemoteInterfaceIpAddress remoteInterfaceIpAddress = new RemoteInterfaceIpAddress(tlvHeader); - remoteInterfaceIpAddress.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - subTlv.add(remoteInterfaceIpAddress); - } else if (LinkSubTypes.TRAFFIC_ENGINEERING_METRIC.value() == tlvHeader.tlvType()) { - TrafficEngineeringMetric trafficEngineeringMetric = new TrafficEngineeringMetric(tlvHeader); - trafficEngineeringMetric.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - subTlv.add(trafficEngineeringMetric); - } else if (LinkSubTypes.MAXIMUM_BANDWIDTH.value() == tlvHeader.tlvType()) { - MaximumBandwidth maximumBandwidth = new MaximumBandwidth(tlvHeader); - maximumBandwidth.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - subTlv.add(maximumBandwidth); - } else if (LinkSubTypes.MAXIMUM_RESERVABLE_BANDWIDTH.value() == tlvHeader.tlvType()) { - MaximumReservableBandwidth maximumReservableBandwidth = new MaximumReservableBandwidth(tlvHeader); - maximumReservableBandwidth.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - subTlv.add(maximumReservableBandwidth); - } else if (LinkSubTypes.UNRESERVED_BANDWIDTH.value() == tlvHeader.tlvType()) { - UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth(tlvHeader); - unreservedBandwidth.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - subTlv.add(unreservedBandwidth); - } else if (LinkSubTypes.ADMINISTRATIVE_GROUP.value() == tlvHeader.tlvType()) { - AdministrativeGroup administrativeGroup = new AdministrativeGroup(tlvHeader); - administrativeGroup.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - subTlv.add(administrativeGroup); - } else { - UnknownLinkSubType unknownLinkSubType = new UnknownLinkSubType(tlvHeader); - unknownLinkSubType.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - subTlv.add(unknownLinkSubType); - } - } - } - - /** - * Gets link tlv as byte array. - * - * @return link tlv as byte array - * @throws OspfParseException if the packet can't be parsed - */ - public byte[] asBytes() throws OspfParseException { - byte[] lsaMessage = null; - - byte[] tlvHeader = getTlvHeaderAsByteArray(); - byte[] tlvBody = getTlvBodyAsByteArray(); - lsaMessage = Bytes.concat(tlvHeader, tlvBody); - - return lsaMessage; - } - - /** - * Gets tlv body as byte array. - * - * @return tlv body as byte array - * @throws OspfParseException might throws exception while parsing buffer - */ - public byte[] getTlvBodyAsByteArray() throws OspfParseException { - - List bodyLst = new ArrayList<>(); - for (LinkSubType tlv : subTlv) { - //Check the type of tlv and build bytes accordingly - if (tlv instanceof LinkType) { - LinkType linkType = (LinkType) tlv; - bodyLst.addAll(Bytes.asList(linkType.asBytes())); - } else if (tlv instanceof LinkId) { - LinkId linkId = (LinkId) tlv; - bodyLst.addAll(Bytes.asList(linkId.asBytes())); - } else if (tlv instanceof LocalInterfaceIpAddress) { - LocalInterfaceIpAddress localInterfaceIpAddress = (LocalInterfaceIpAddress) tlv; - bodyLst.addAll(Bytes.asList(localInterfaceIpAddress.asBytes())); - } else if (tlv instanceof RemoteInterfaceIpAddress) { - RemoteInterfaceIpAddress remoteInterfaceIpAddress = (RemoteInterfaceIpAddress) tlv; - bodyLst.addAll(Bytes.asList(remoteInterfaceIpAddress.asBytes())); - } else if (tlv instanceof TrafficEngineeringMetric) { - TrafficEngineeringMetric trafficEngineeringMetric = (TrafficEngineeringMetric) tlv; - bodyLst.addAll(Bytes.asList(trafficEngineeringMetric.asBytes())); - } else if (tlv instanceof MaximumBandwidth) { - MaximumBandwidth maximumBandwidth = (MaximumBandwidth) tlv; - bodyLst.addAll(Bytes.asList(maximumBandwidth.asBytes())); - } else if (tlv instanceof MaximumReservableBandwidth) { - MaximumReservableBandwidth maximumReservableBandwidth = (MaximumReservableBandwidth) tlv; - bodyLst.addAll(Bytes.asList(maximumReservableBandwidth.asBytes())); - } else if (tlv instanceof UnreservedBandwidth) { - UnreservedBandwidth unreservedBandwidth = (UnreservedBandwidth) tlv; - bodyLst.addAll(Bytes.asList(unreservedBandwidth.asBytes())); - } else if (tlv instanceof AdministrativeGroup) { - AdministrativeGroup administrativeGroup = (AdministrativeGroup) tlv; - bodyLst.addAll(Bytes.asList(administrativeGroup.asBytes())); - } else { - UnknownLinkSubType unknownLinkSubType = (UnknownLinkSubType) tlv; - bodyLst.addAll(Bytes.asList(unknownLinkSubType.asBytes())); - } - } - return Bytes.toArray(bodyLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("subTlv", subTlv) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/OpaqueTopLevelTlvTypes.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/OpaqueTopLevelTlvTypes.java deleted file mode 100644 index cc52a7dabc..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/OpaqueTopLevelTlvTypes.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.tlvtypes; - -/** - * Representation of an OSPF Opaque top level tlv types. - */ -public enum OpaqueTopLevelTlvTypes { - - ROUTER(1), - LINK(2); - - private int value; - - /** - * Creates an instance of Opaque top level tlv types. - * - * @param value opaque TLV value - */ - OpaqueTopLevelTlvTypes(int value) { - this.value = value; - } - - /** - * Gets the tlv type value. - * - * @return tlv type value - */ - public int value() { - return value; - } - -} diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlv.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlv.java deleted file mode 100644 index 8ac443b8c2..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlv.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.tlvtypes; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.lsa.types.TopLevelTlv; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an OSPF Opaque router tlv. - */ -public class RouterTlv extends TlvHeader implements TopLevelTlv { - - private static final Logger log = - LoggerFactory.getLogger(RouterTlv.class); - private Ip4Address routerAddress; - - /** - * Creates an instance of Opaque router tlv. - * - * @param header tlv header - */ - public RouterTlv(TlvHeader header) { - this.setTlvType(header.tlvType()); - this.setTlvLength(header.tlvLength()); - } - - /** - * Gets router address. - * - * @return router address - */ - public Ip4Address routerAddress() { - return routerAddress; - } - - /** - * Sets router address. - * - * @param routerAddress router address. - */ - public void setRouterAddress(Ip4Address routerAddress) { - this.routerAddress = routerAddress; - } - - /** - * Reads bytes from channel buffer . - * - * @param channelBuffer channel buffer instance - * @throws OspfParseException might throws exception while parsing buffer - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - try { - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.setRouterAddress(Ip4Address.valueOf(tempByteArray)); - } catch (Exception e) { - log.debug("Error::RouterTLV:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - } - - /** - * Gets router tlv as byte array. - * - * @return router tlv as byte array - */ - public byte[] asBytes() { - byte[] lsaMessage = null; - - byte[] tlvHeader = getTlvHeaderAsByteArray(); - byte[] tlvBody = getTlvBodyAsByteArray(); - lsaMessage = Bytes.concat(tlvHeader, tlvBody); - - return lsaMessage; - } - - /** - * Gets tlv body as byte array. - * - * @return tlv body as byte array - */ - public byte[] getTlvBodyAsByteArray() { - List bodyLst = new ArrayList<>(); - bodyLst.addAll(Bytes.asList(this.routerAddress().toOctets())); - - return Bytes.toArray(bodyLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("routerAddress", routerAddress) - .toString(); - } -} - - diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/package-info.java deleted file mode 100644 index 0820d7a443..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF Opaque Tlv Types. - */ -package org.onosproject.ospf.protocol.lsa.tlvtypes; \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsa.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsa.java deleted file mode 100644 index 435c423705..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsa.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an ASBR Summary LSA and methods to access them. - */ -public class AsbrSummaryLsa extends LsaHeader { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS age | Options | 3 or 4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link State ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS sequence number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS checksum | length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Network Mask | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | 0 | metric | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | TOS | TOS metric | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ... | - - Summary LSA format - REFERENCE : RFC 2328 - */ - private Ip4Address networkMask; - private int metric; - - /** - * Creates an instance of ASBR Summary LSA. - * - * @param lsaHeader lsa header instance. - */ - public AsbrSummaryLsa(LsaHeader lsaHeader) { - populateHeader(lsaHeader); - } - - /** - * Gets network mask. - * - * @return networkMask network mask - */ - public Ip4Address networkMask() { - return networkMask; - } - - /** - * Sets network mask. - * - * @param networkMask network mask - */ - public void setNetworkMask(Ip4Address networkMask) { - this.networkMask = networkMask; - } - - /** - * Gets metric value. - * - * @return metric value - */ - public int metric() { - return metric; - } - - /** - * Sets metric value. - * - * @param metric metric value - */ - public void setMetric(int metric) { - this.metric = metric; - } - - /** - * Reads from channel buffer and populate instance. - * - * @param channelBuffer channelBuffer instance. - * @throws OspfParseException might throws exception while parsing buffer - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - try { - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.setNetworkMask(Ip4Address.valueOf(tempByteArray)); - int unusedByte = channelBuffer.readByte(); - this.setMetric(channelBuffer.readUnsignedMedium()); - } catch (Exception e) { - log.debug("Error::AsbrSummaryLsa:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE); - } - } - - /** - * Gets LSA bytes as array. - * - * @return LSA message as bytes - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] asBytes() throws OspfParseException { - byte[] lsaMessage = null; - - byte[] lsaHeader = getLsaHeaderAsByteArray(); - byte[] lsaBody = getLsaBodyAsByteArray(); - lsaMessage = Bytes.concat(lsaHeader, lsaBody); - - return lsaMessage; - } - - /** - * Get LSA body as byte array. - * - * @return byte array contains lsa body - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] getLsaBodyAsByteArray() throws OspfParseException { - List bodyLst = new ArrayList<>(); - - try { - bodyLst.addAll(Bytes.asList(this.networkMask().toOctets())); - bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.metric()))); - } catch (Exception e) { - log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE); - } - - return Bytes.toArray(bodyLst); - } - - @Override - public OspfLsaType getOspfLsaType() { - return OspfLsaType.ASBR_SUMMARY; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - AsbrSummaryLsa that = (AsbrSummaryLsa) o; - return Objects.equal(networkMask, that.networkMask) && - Objects.equal(metric, that.metric); - } - - @Override - public int hashCode() { - return Objects.hashCode(networkMask, metric); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("networkMask", networkMask) - .add("metric", metric) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsa.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsa.java deleted file mode 100644 index 765b2bb0de..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsa.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.subtypes.OspfExternalDestination; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an External LSA and the fields and methods to access them. - */ -public class ExternalLsa extends LsaHeader { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS age | Options | 5 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link State ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS sequence number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS checksum | length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Network Mask | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |E| 0 | metric | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Forwarding address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | External Route Tag | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |E| TOS | TOS metric | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Forwarding address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | External Route Tag | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ... | - - External LSA format - REFERENCE : RFC 2328 - */ - private static final Logger log = - LoggerFactory.getLogger(ExternalLsa.class); - private Ip4Address networkMask; - private List externalDestinations = new ArrayList<>(); - - /** - * Creates an instance of External LSA. - * - * @param lsaHeader lsa header instance. - */ - public ExternalLsa(LsaHeader lsaHeader) { - populateHeader(lsaHeader); - } - - - /** - * Gets the network mask. - * - * @return networkMask - */ - public Ip4Address networkMask() { - return networkMask; - } - - /** - * Sets network mask. - * - * @param networkMask network mask - */ - public void setNetworkMask(Ip4Address networkMask) { - this.networkMask = networkMask; - } - - /** - * Adds the external destination details to the list. - * - * @param externalDestination external destination details - */ - public void addExternalDestination(OspfExternalDestination externalDestination) { - if (!externalDestinations.contains(externalDestination)) { - externalDestinations.add(externalDestination); - } - } - - /** - * Reads from channel buffer and populate instance. - * - * @param channelBuffer channelBuffer instance - * @throws OspfParseException might throws exception while parsing buffer - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - - try { - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.setNetworkMask(Ip4Address.valueOf(tempByteArray)); - - while (channelBuffer.readableBytes() >= OspfUtil.EXTERNAL_DESTINATION_LENGTH) { - OspfExternalDestination externalDestination = new OspfExternalDestination(); - - //E Bit - use to find type1 or type2 - int eIsSet = channelBuffer.readByte(); - if (eIsSet != 0) { - externalDestination.setType1orType2Metric(true); - } else { - externalDestination.setType1orType2Metric(false); - } - externalDestination.setMetric(channelBuffer.readUnsignedMedium()); - tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - externalDestination.setForwardingAddress(Ip4Address.valueOf(tempByteArray)); - externalDestination.setExternalRouterTag(channelBuffer.readInt()); - - this.addExternalDestination(externalDestination); - } - } catch (Exception e) { - log.debug("Error::ExternalLSA:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE); - } - } - - /** - * Gets LSA as bytes. - * - * @return LSA as bytes. - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] asBytes() throws OspfParseException { - byte[] lsaMessage = null; - - byte[] lsaHeader = getLsaHeaderAsByteArray(); - byte[] lsaBody = getLsaBodyAsByteArray(); - lsaMessage = Bytes.concat(lsaHeader, lsaBody); - - return lsaMessage; - } - - /** - * Gets LSA body as byte array. - * - * @return byte array contains LSA body - * @throws OspfParseException might throws exception while parsing buffer - */ - public byte[] getLsaBodyAsByteArray() throws OspfParseException { - List bodyLst = new ArrayList<>(); - - try { - bodyLst.addAll(Bytes.asList(this.networkMask().toOctets())); - - //add each OSPFExternalDestination details - for (OspfExternalDestination externalDest : externalDestinations) { - if (externalDest.isType1orType2Metric()) { - //add 1 followed by 7 zeros equals to decimal 128 - bodyLst.add((byte) 128); - } else { - bodyLst.add((byte) 0); - } - - bodyLst.addAll(Bytes.asList(OspfUtil.convertToThreeBytes(externalDest.metric()))); - bodyLst.addAll(Bytes.asList(externalDest.forwardingAddress().toOctets())); - bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(externalDest.externalRouterTag()))); - } - } catch (Exception e) { - log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage()); - return Bytes.toArray(bodyLst); - } - - return Bytes.toArray(bodyLst); - } - - @Override - public OspfLsaType getOspfLsaType() { - return OspfLsaType.EXTERNAL_LSA; - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - if (other == null || getClass() != other.getClass()) { - return false; - } - ExternalLsa that = (ExternalLsa) other; - return Objects.equal(networkMask, that.networkMask) && - Objects.equal(externalDestinations, that.externalDestinations); - } - - @Override - public int hashCode() { - return Objects.hashCode(networkMask, externalDestinations); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("networkMask", networkMask) - .add("externalDestinations", externalDestinations) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsa.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsa.java deleted file mode 100644 index 577da33323..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsa.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of a Network LSA and fields and methods to access them. - */ -public class NetworkLsa extends LsaHeader { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS age | Options | 2 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link State ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS sequence number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS checksum | length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Network Mask | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Attached Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ... | - */ - private static final Logger log = - LoggerFactory.getLogger(NetworkLsa.class); - private Ip4Address networkMask; - private List attachedRouters = new ArrayList<>(); - - /** - * Creates an instance of Network LSA. - */ - public NetworkLsa() { - } - - /** - * Creates an instance of Network LSA. - * - * @param lsaHeader lsa header instance. - */ - public NetworkLsa(LsaHeader lsaHeader) { - populateHeader(lsaHeader); - } - - /** - * Gets network mask. - * - * @return network mask - */ - public Ip4Address networkMask() { - return networkMask; - } - - /** - * Sets network mask. - * - * @param networkMask network mask - */ - public void setNetworkMask(Ip4Address networkMask) { - this.networkMask = networkMask; - } - - /** - * Adds attached router to list. - * - * @param attachedRouter attached router ip address. - */ - public void addAttachedRouter(Ip4Address attachedRouter) { - attachedRouters.add(attachedRouter); - } - - /** - * Gets the list of attached routers. - * - * @return list of attached routers - */ - public List attachedRouters() { - - return attachedRouters; - } - - /** - * Reads from channel buffer and populate instance. - * - * @param channelBuffer channel buffer instance - * @throws OspfParseException might throws exception while parsing buffer - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - - try { - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.setNetworkMask(Ip4Address.valueOf(tempByteArray)); - //add all the attached routers - while (channelBuffer.readableBytes() > 0) { - tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.addAttachedRouter(Ip4Address.valueOf(tempByteArray)); - } - } catch (Exception e) { - log.debug("Error::NetworkLSA::readFrom:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE); - } - } - - /** - * Gets LSA as bytes. - * - * @return LSA as byte array - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] asBytes() throws OspfParseException { - byte[] lsaMessage = null; - - byte[] lsaHeader = getLsaHeaderAsByteArray(); - byte[] lsaBody = getLsaBodyAsByteArray(); - lsaMessage = Bytes.concat(lsaHeader, lsaBody); - - return lsaMessage; - } - - /** - * Gets LSA body as byte array. - * - * @return LSA body as byte array - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] getLsaBodyAsByteArray() throws OspfParseException { - List bodyLst = new ArrayList<>(); - - try { - bodyLst.addAll(Bytes.asList(this.networkMask().toOctets())); - //add each attachedRouters details - for (Ip4Address attachedRouter : attachedRouters) { - //attached router - bodyLst.addAll(Bytes.asList(attachedRouter.toOctets())); - } - } catch (Exception e) { - log.debug("Error::NetworkLSA::getLsrBodyAsByteArray {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE); - } - - return Bytes.toArray(bodyLst); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - NetworkLsa that = (NetworkLsa) o; - return Objects.equal(networkMask, that.networkMask) && - Objects.equal(attachedRouters, that.attachedRouters); - } - - @Override - public int hashCode() { - return Objects.hashCode(networkMask, attachedRouters); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("networkMask", networkMask) - .add("attachedRouters", attachedRouters) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10.java deleted file mode 100644 index b0fd4b6841..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv; -import org.onosproject.ospf.protocol.lsa.tlvtypes.OpaqueTopLevelTlvTypes; -import org.onosproject.ospf.protocol.lsa.tlvtypes.RouterTlv; -import org.onosproject.ospf.protocol.util.OspfParameters; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Representation of an Opaque LSA of type area local (10). - */ -public class OpaqueLsa10 extends OpaqueLsaHeader { - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS age | Options | 9, 10 or 11 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Opaque Type | Opaque ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS Sequence Number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS checksum | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - + + - | Opaque Information | - + + - | ... | - - Opaque LSA format - REFERENCE : RFC 5250 - */ - private List topLevelValues = new ArrayList<>(); - private byte[] opaqueInfo = null; - - /** - * Creates an instance of Opaque type 10 LSA. - * - * @param lsaHeader LSA header instance - */ - public OpaqueLsa10(OpaqueLsaHeader lsaHeader) { - populateHeader(lsaHeader); - } - - /** - * Returns the list of top level TLVs. - * - * @return list of top level TLVs - */ - public List topLevelValues() { - return topLevelValues; - } - - /** - * Adds TLV value. - * - * @param value TLV value - */ - public void addValue(TopLevelTlv value) { - topLevelValues.add(value); - } - - /** - * Reads from channel buffer and populate instance. - * - * @param channelBuffer channelBuffer instance - * @throws OspfParseException might throws exception while parsing buffer - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - - try { - if (this.opaqueId() == OspfParameters.TRAFFIC_ENGINEERING) { - while (channelBuffer.readableBytes() > 0) { - TlvHeader tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(channelBuffer.readUnsignedShort()); - tlvHeader.setTlvLength(channelBuffer.readUnsignedShort()); - if (tlvHeader.tlvType() == OpaqueTopLevelTlvTypes.ROUTER.value()) { - RouterTlv routerTlv = new RouterTlv(tlvHeader); - routerTlv.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - this.addValue(routerTlv); - } else if (tlvHeader.tlvType() == OpaqueTopLevelTlvTypes.LINK.value()) { - LinkTlv linkTlv = new LinkTlv(tlvHeader); - linkTlv.readFrom(channelBuffer.readBytes(tlvHeader.tlvLength())); - this.addValue(linkTlv); - } - } - } else { - int length = channelBuffer.readableBytes(); - opaqueInfo = new byte[length]; - channelBuffer.readBytes(opaqueInfo, 0, length); - } - - } catch (Exception e) { - log.debug("Error::OpaqueLsa10:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - } - - /** - * Returns instance as bytes. - * - * @return instance as bytes - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] asBytes() throws OspfParseException { - - byte[] lsaMessage = null; - byte[] lsaHeader = getOpaqueLsaHeaderAsByteArray(); - byte[] lsaBody = getLsaBodyAsByteArray(); - lsaMessage = Bytes.concat(lsaHeader, lsaBody); - return lsaMessage; - - } - - /** - * Gets the LSA body as byte array. - * - * @return the lsa body as byte array - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] getLsaBodyAsByteArray() throws OspfParseException { - List bodyLst = new ArrayList<>(); - if (this.opaqueId() == 1) { - for (TopLevelTlv tlv : this.topLevelValues) { - //Check the sub type of lsa and build bytes accordingly - if (tlv instanceof RouterTlv) { - RouterTlv routerTlv = (RouterTlv) tlv; - bodyLst.addAll(Bytes.asList(routerTlv.asBytes())); - } else if (tlv instanceof LinkTlv) { - LinkTlv linkTlv = (LinkTlv) tlv; - bodyLst.addAll(Bytes.asList(linkTlv.asBytes())); - } - } - } else { - return opaqueInfo; - } - - return Bytes.toArray(bodyLst); - } - - @Override - public OspfLsaType getOspfLsaType() { - return OspfLsaType.AREA_LOCAL_OPAQUE_LSA; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("topLevelValues", topLevelValues) - .add("opaqueInfo", opaqueInfo) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - OpaqueLsa10 that = (OpaqueLsa10) o; - return Objects.equal(topLevelValues, that.topLevelValues) && - Arrays.equals(opaqueInfo, that.opaqueInfo); - } - - @Override - public int hashCode() { - return Objects.hashCode(Arrays.hashCode(opaqueInfo), topLevelValues); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11.java deleted file mode 100644 index 69f8bfd275..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; - -import java.util.Arrays; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; - -/** - * Representation of an Opaque LSA of type AS (11). - */ -public class OpaqueLsa11 extends OpaqueLsaHeader { - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS age | Options | 9, 10 or 11 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Opaque Type | Opaque ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS Sequence Number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS checksum | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - + + - | Opaque Information | - + + - | ... | - */ - private byte[] opaqueInfo = null; - - /** - * Creates an instance of Opaque type 11 LSA. - * - * @param lsaHeader LSA header instance - */ - public OpaqueLsa11(OpaqueLsaHeader lsaHeader) { - populateHeader(lsaHeader); - } - - /** - * Reads from channel buffer and populate this. - * - * @param channelBuffer channelBuffer instance. - */ - public void readFrom(ChannelBuffer channelBuffer) { - int length = channelBuffer.readableBytes(); - opaqueInfo = new byte[length]; - channelBuffer.readBytes(opaqueInfo, 0, length); - } - - /** - * Returns instance as bytes. - * - * @return instance as bytes - */ - public byte[] asBytes() { - byte[] lsaMessage = null; - - byte[] lsaHeader = getOpaqueLsaHeaderAsByteArray(); - byte[] lsaBody = getLsaBodyAsByteArray(); - lsaMessage = Bytes.concat(lsaHeader, lsaBody); - - return lsaMessage; - } - - /** - * Get the LSA body as byte array. - * - * @return LSA body as byte array - */ - public byte[] getLsaBodyAsByteArray() { - return opaqueInfo; - } - - @Override - public OspfLsaType getOspfLsaType() { - return OspfLsaType.AS_OPAQUE_LSA; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - OpaqueLsa11 that = (OpaqueLsa11) o; - return Arrays.equals(opaqueInfo, that.opaqueInfo); - } - - @Override - public int hashCode() { - return Arrays.hashCode(opaqueInfo); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("opaqueInfo", opaqueInfo) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9.java deleted file mode 100644 index e311fce1d5..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; - -import java.util.Arrays; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; - -/** - * Representation of an Opaque LSA of type link local (9). - */ -public class OpaqueLsa9 extends OpaqueLsaHeader { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS age | Options | 9, 10 or 11 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Opaque Type | Opaque ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS Sequence Number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS checksum | Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - + + - | Opaque Information | - + + - | ... | - */ - private byte[] opaqueInfo = null; - - /** - * Creates an instance of Opaque type 9 LSA. - * - * @param lsaHeader LSA header instance - */ - public OpaqueLsa9(OpaqueLsaHeader lsaHeader) { - populateHeader(lsaHeader); - } - - /** - * Reads from channel buffer and populate instance. - * - * @param channelBuffer channelBuffer instance - */ - public void readFrom(ChannelBuffer channelBuffer) { - int length = channelBuffer.readableBytes(); - opaqueInfo = new byte[length]; - channelBuffer.readBytes(opaqueInfo, 0, length); - } - - /** - * Returns instance as bytes. - * - * @return instance as bytes - */ - public byte[] asBytes() { - byte[] lsaMessage = null; - - byte[] lsaHeader = getOpaqueLsaHeaderAsByteArray(); - byte[] lsaBody = getLsaBodyAsByteArray(); - lsaMessage = Bytes.concat(lsaHeader, lsaBody); - - return lsaMessage; - } - - /** - * Gets the LSA body. - * - * @return the LSA body - */ - public byte[] getLsaBodyAsByteArray() { - return opaqueInfo; - - } - - @Override - public OspfLsaType getOspfLsaType() { - return OspfLsaType.LINK_LOCAL_OPAQUE_LSA; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - OpaqueLsa9 that = (OpaqueLsa9) o; - return Arrays.equals(opaqueInfo, that.opaqueInfo); - } - - @Override - public int hashCode() { - return Arrays.hashCode(opaqueInfo); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("opaqueInfo", opaqueInfo) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/RouterLsa.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/RouterLsa.java deleted file mode 100644 index e8cc39f6d6..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/RouterLsa.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of a Router LSA, and the fields and methods to access them. - */ -public class RouterLsa extends LsaHeader { - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS age | Options | 1 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link State ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS sequence number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS checksum | length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | 0 |V|E|B| 0 | # links | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link Data | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Type | # TOS | metric | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ... | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | TOS | 0 | TOS metric | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link Data | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ... | - */ - private static final Logger log = - LoggerFactory.getLogger(RouterLsa.class); - private boolean isVirtualEndPoint; - private boolean isAsBoundaryRouter; - private boolean isAreaBorderRouter; - private int noLink; - private List routerLinks = new ArrayList<>(); - - /** - * Creates an instance of Router LSA. - */ - public RouterLsa() { - } - - /** - * Creates an instance of Router LSA. - * - * @param lsaHeader lsa header instance - */ - public RouterLsa(LsaHeader lsaHeader) { - populateHeader(lsaHeader); - } - - /** - * Sets virtual endpoint or not. - * - * @param isVirtualEndPoint true or false - */ - public void setVirtualEndPoint(boolean isVirtualEndPoint) { - this.isVirtualEndPoint = isVirtualEndPoint; - } - - /** - * Sets if it is an AS boundary router or not. - * - * @param isAsBoundaryRouter true if AS boundary router else false - */ - public void setAsBoundaryRouter(boolean isAsBoundaryRouter) { - this.isAsBoundaryRouter = isAsBoundaryRouter; - } - - /** - * Sets whether it is an ABR or not. - * - * @param isAreaBorderRouter true if ABR else false - */ - public void setAreaBorderRouter(boolean isAreaBorderRouter) { - this.isAreaBorderRouter = isAreaBorderRouter; - } - - /** - * Gets number of links. - * - * @return number of links - */ - public int noLink() { - return noLink; - } - - /** - * Sets number of links. - * - * @param noLink number of links - */ - public void setNoLink(int noLink) { - this.noLink = noLink; - } - - - /** - * Adds router link. - * - * @param lsaLink LSA link - */ - public void addRouterLink(OspfLsaLink lsaLink) { - if (!this.routerLinks.contains(lsaLink)) { - this.routerLinks.add(lsaLink); - } - } - - /** - * Gets router link. - * - * @return routerLinks LSA link list - */ - public List routerLink() { - return this.routerLinks; - } - - /** - * Reads from channel buffer and populate this. - * - * @param channelBuffer channelBuffer instance. - * @throws OspfParseException might throws exception while parsing buffer - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - - try { - int veb = channelBuffer.readByte(); - int unUsed = channelBuffer.readByte(); - //Convert the byte to veb bits - String strVeb = Integer.toBinaryString(veb); - if (strVeb.length() == 3) { - this.setVirtualEndPoint((Integer.parseInt(Character.toString(strVeb.charAt(0))) == 1) ? true : false); - this.setAsBoundaryRouter((Integer.parseInt(Character.toString(strVeb.charAt(1))) == 1) ? true : false); - this.setAreaBorderRouter((Integer.parseInt(Character.toString(strVeb.charAt(2))) == 1) ? true : false); - } else if (strVeb.length() == 2) { - this.setVirtualEndPoint(false); - this.setAsBoundaryRouter((Integer.parseInt(Character.toString(strVeb.charAt(0))) == 1) ? true : false); - this.setAreaBorderRouter((Integer.parseInt(Character.toString(strVeb.charAt(1))) == 1) ? true : false); - } else if (strVeb.length() == 1) { - this.setVirtualEndPoint(false); - this.setAsBoundaryRouter(false); - this.setAreaBorderRouter((Integer.parseInt(Character.toString(strVeb.charAt(0))) == 1) ? true : false); - } - this.setNoLink(channelBuffer.readUnsignedShort()); - while (channelBuffer.readableBytes() >= OspfUtil.TWELVE_BYTES) { - OspfLsaLink ospfLsaLink = new OspfLsaLink(); - - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - ospfLsaLink.setLinkId(InetAddress.getByAddress(tempByteArray).getHostName()); - tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - ospfLsaLink.setLinkData(InetAddress.getByAddress(tempByteArray).getHostName()); - ospfLsaLink.setLinkType(channelBuffer.readByte()); - ospfLsaLink.setTos(channelBuffer.readByte()); - ospfLsaLink.setMetric(channelBuffer.readUnsignedShort()); - //add the link - this.addRouterLink(ospfLsaLink); - } - } catch (Exception e) { - log.debug("Error::RouterLsa:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE); - } - } - - /** - * Returns instance as bytes. - * - * @return instance as bytes - * @throws OspfParseException might throws exception while parsing packet - */ - public byte[] asBytes() throws OspfParseException { - byte[] lsaMessage = null; - - byte[] lsaHeader = getLsaHeaderAsByteArray(); - byte[] lsaBody = getLsaBodyAsByteArray(); - lsaMessage = Bytes.concat(lsaHeader, lsaBody); - - return lsaMessage; - } - - /** - * Gets the LSA body as bytes. - * - * @return LSA body as bytes - */ - public byte[] getLsaBodyAsByteArray() { - List bodyLst = new ArrayList<>(); - - try { - int isVirtualEndPointVal = this.isVirtualEndPoint ? 1 : 0; - int isASBoundaryRouterVal = this.isAsBoundaryRouter ? 1 : 0; - int isAreaBorderRouterVal = this.isAreaBorderRouter ? 1 : 0; - - StringBuilder sb = new StringBuilder(); - sb.append(Integer.toBinaryString(isVirtualEndPointVal)); - sb.append(Integer.toBinaryString(isASBoundaryRouterVal)); - sb.append(Integer.toBinaryString(isAreaBorderRouterVal)); - - //added VEB - bodyLst.add((byte) Integer.parseInt(sb.toString(), 2)); - //second byte is 0. - bodyLst.add((byte) 0); - //Number of links - bodyLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.noLink()))); - - //add each link details - for (OspfLsaLink lsaLink : routerLinks) { - bodyLst.addAll(Bytes.asList(InetAddress.getByName(lsaLink.linkId()).getAddress())); - bodyLst.addAll(Bytes.asList(InetAddress.getByName(lsaLink.linkData()).getAddress())); - bodyLst.add((byte) lsaLink.linkType()); - bodyLst.add((byte) lsaLink.tos()); - bodyLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(lsaLink.metric()))); - } - } catch (Exception e) { - log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage()); - return Bytes.toArray(bodyLst); - } - - return Bytes.toArray(bodyLst); - } - - /** - * Increment the link by 1. - */ - public void incrementLinkNo() { - this.noLink++; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("isVirtualEndPoint", isVirtualEndPoint) - .add("isAsBoundaryRouter", isAsBoundaryRouter) - .add("isAreaBorderRouter", isAreaBorderRouter) - .add("noLink", noLink) - .add("routerLinks", routerLinks) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - RouterLsa that = (RouterLsa) o; - return Objects.equal(isVirtualEndPoint, that.isVirtualEndPoint) && - Objects.equal(isAsBoundaryRouter, that.isAsBoundaryRouter) && - Objects.equal(isAreaBorderRouter, that.isAreaBorderRouter) && - Objects.equal(noLink, that.noLink) && - Objects.equal(routerLinks, that.routerLinks); - } - - @Override - public int hashCode() { - return Objects.hashCode(isVirtualEndPoint, isAsBoundaryRouter, isAreaBorderRouter, - noLink, routerLinks); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsa.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsa.java deleted file mode 100644 index ec0ffe74dc..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsa.java +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of a Summary LSA, fields and methods to access them. - */ -public class SummaryLsa extends LsaHeader { - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS age | Options | 3 or 4 | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link State ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS sequence number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS checksum | length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Network Mask | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | 0 | metric | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | TOS | TOS metric | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ... | - - */ - private static final Logger log = LoggerFactory.getLogger(SummaryLsa.class); - private Ip4Address networkMask; - private int metric; - - /** - * Creates an instance of Summary LSA. - * - * @param lsaHeader LSA header instance - */ - public SummaryLsa(LsaHeader lsaHeader) { - populateHeader(lsaHeader); - } - - /** - * Gets network mask. - * - * @return network mask - */ - public Ip4Address networkMask() { - return networkMask; - } - - /** - * Sets network mask. - * - * @param networkMask network mask - */ - public void setNetworkMask(Ip4Address networkMask) { - this.networkMask = networkMask; - } - - /** - * Gets metric value. - * - * @return metric - */ - public int metric() { - return metric; - } - - /** - * Sets metric value. - * - * @param metric metric value - */ - public void setMetric(int metric) { - this.metric = metric; - } - - /** - * Reads from channel buffer and populate instance. - * - * @param channelBuffer channelBuffer instance - * @throws OspfParseException might throws exception while parsing buffer - */ - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - - try { - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.setNetworkMask(Ip4Address.valueOf(tempByteArray)); - int unsedByte = channelBuffer.readByte(); - this.setMetric(channelBuffer.readUnsignedMedium()); - } catch (Exception e) { - log.debug("Error::SummaryLsa:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, OspfErrorType.BAD_MESSAGE); - } - } - - /** - * Returns instance as bytes. - * - * @return instance as bytes - */ - public byte[] asBytes() { - byte[] lsaMessage = null; - byte[] lsaHeader = getLsaHeaderAsByteArray(); - byte[] lsaBody = getLsaBodyAsByteArray(); - lsaMessage = Bytes.concat(lsaHeader, lsaBody); - - return lsaMessage; - } - - /** - * Get the LSA body. - * - * @return LSA body - */ - public byte[] getLsaBodyAsByteArray() { - List bodyLst = new ArrayList<>(); - - try { - bodyLst.addAll(Bytes.asList(this.networkMask().toOctets())); - bodyLst.add((byte) 0); - bodyLst.addAll(Bytes.asList(OspfUtil.convertToThreeBytes(this.metric()))); - } catch (Exception e) { - log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage()); - return Bytes.toArray(bodyLst); - } - - return Bytes.toArray(bodyLst); - } - - @Override - public OspfLsaType getOspfLsaType() { - return OspfLsaType.SUMMARY; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("networkMask", networkMask) - .add("metric", metric) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - SummaryLsa that = (SummaryLsa) o; - return Objects.equal(networkMask, that.networkMask) && - Objects.equal(metric, that.metric); - } - - @Override - public int hashCode() { - return Objects.hashCode(networkMask, metric); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/TopLevelTlv.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/TopLevelTlv.java deleted file mode 100644 index d9e8311603..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/TopLevelTlv.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -/** - * Marker interface represents a top level TLV in an Opaque LSA. - */ -public interface TopLevelTlv { -} diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/package-info.java deleted file mode 100644 index 3ec9e2ac2d..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/types/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF LSA types. - */ -package org.onosproject.ospf.protocol.lsa.types; \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReader.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReader.java deleted file mode 100644 index e51672f51d..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReader.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.ospf.protocol.ospfpacket; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfMessage; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge; -import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest; -import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A message reader which reads OSPF messages from ChannelBuffer and converts to OspfMessage instances. - */ -public class OspfMessageReader { - private static final Logger log = LoggerFactory.getLogger(OspfMessageReader.class); - - /** - * Reads and Converts the channel buffer to OspfMessage instance. - * - * @param channelBuffer channel buffer instance. - * @return OSPF message instance. - * @throws OspfParseException might throws exception while parsing buffer - */ - public OspfMessage readFromBuffer(ChannelBuffer channelBuffer) - throws OspfParseException { - - try { - OspfPacketHeader ospfHeader = getOspfHeader(channelBuffer); - OspfMessage ospfMessage = null; - switch (ospfHeader.ospfType()) { - case OspfParameters.HELLO: - ospfMessage = new HelloPacket(ospfHeader); - break; - case OspfParameters.DD: - ospfMessage = new DdPacket(ospfHeader); - break; - case OspfParameters.LSREQUEST: - ospfMessage = new LsRequest(ospfHeader); - break; - case OspfParameters.LSUPDATE: - ospfMessage = new LsUpdate(ospfHeader); - break; - case OspfParameters.LSACK: - ospfMessage = new LsAcknowledge(ospfHeader); - break; - default: - log.debug("Message Reader[Decoder] - Unknown LSA type..!!!"); - break; - } - - if (ospfMessage != null) { - try { - log.debug("{} Received::Message Length :: {} ", ospfMessage.ospfMessageType(), - ospfHeader.ospfPacLength()); - ospfMessage.readFrom(channelBuffer.readBytes(ospfHeader.ospfPacLength() - - OspfUtil.OSPF_HEADER_LENGTH)); - } catch (Exception e) { - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - - } - - return ospfMessage; - } catch (Exception e) { - throw new OspfParseException(OspfErrorType.OSPF_MESSAGE_ERROR, - OspfErrorType.BAD_MESSAGE); - } - } - - /** - * Gets the OSPF packet Header. - * - * @param channelBuffer channel buffer instance. - * @return Ospf Header instance. - */ - private OspfPacketHeader getOspfHeader(ChannelBuffer channelBuffer) { - OspfPacketHeader ospfPacketHeader = new OspfPacketHeader(); - - // Determine OSPF version & Packet Type - int version = channelBuffer.readByte(); //byte 1 is ospf version - int packetType = channelBuffer.readByte(); //byte 2 is ospf packet type - - // byte 3 & 4 combine is packet length. - int packetLength = channelBuffer.readShort(); - - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - Ip4Address routerId = Ip4Address.valueOf(tempByteArray); - - tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - Ip4Address areaId = Ip4Address.valueOf(tempByteArray); - - int checkSum = channelBuffer.readUnsignedShort(); - int auType = channelBuffer.readUnsignedShort(); - int authentication = (int) channelBuffer.readLong(); - - ospfPacketHeader.setOspfVer(version); - ospfPacketHeader.setOspftype(packetType); - ospfPacketHeader.setOspfPacLength(packetLength); - ospfPacketHeader.setRouterId(routerId); - ospfPacketHeader.setAreaId(areaId); - ospfPacketHeader.setChecksum(checkSum); - ospfPacketHeader.setAuthType(auType); - ospfPacketHeader.setAuthentication(authentication); - - return ospfPacketHeader; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriter.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriter.java deleted file mode 100644 index 1a69a3b77a..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriter.java +++ /dev/null @@ -1,82 +0,0 @@ -/* -* Copyright 2016-present Open Networking Foundation -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.onosproject.ospf.protocol.ospfpacket; - -import org.onosproject.ospf.controller.OspfMessage; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A message writer which writes an OSPF message to byte array. - */ -public class OspfMessageWriter { - private static final Logger log = LoggerFactory.getLogger(OspfMessageWriter.class); - - /** - * Writes OSPF message to byte array. - * - * @param ospfMessage OSPF message - * @param interfaceIndex interface index - * @param interfaceState interface state - * @return message as byte array - */ - public byte[] getMessage(OspfMessage ospfMessage, int interfaceIndex, int interfaceState) { - - byte[] buf = null; - switch (ospfMessage.ospfMessageType().value()) { - case OspfParameters.HELLO: - case OspfParameters.LSACK: - case OspfParameters.DD: - case OspfParameters.LSREQUEST: - case OspfParameters.LSUPDATE: - buf = writeMessageToBytes(ospfMessage, interfaceIndex, interfaceState); - break; - default: - log.debug("Message Writer[Encoder] - Unknown Message to encode..!!!"); - break; - } - - return buf; - } - - /** - * Writes an OSPF Message to byte array. - * - * @param ospfMessage OSPF Message instance - * @param interfaceState interface state - * @return message as byte array - */ - private byte[] writeMessageToBytes(OspfMessage ospfMessage, int interfaceIndex, int interfaceState) { - byte[] ospfMessageAsByte = ospfMessage.asBytes(); - //Add the length and checksum in byte array at length position 2 & 3 and Checksum position - ospfMessageAsByte = OspfUtil.addLengthAndCheckSum(ospfMessageAsByte, OspfUtil.OSPFPACKET_LENGTH_POS1, - OspfUtil.OSPFPACKET_LENGTH_POS2, - OspfUtil.OSPFPACKET_CHECKSUM_POS1, - OspfUtil.OSPFPACKET_CHECKSUM_POS2); - //Add Interface State Info and destination IP as metadata - if (interfaceState == OspfParameters.DR || interfaceState == OspfParameters.BDR) { - ospfMessageAsByte = OspfUtil.addMetadata(interfaceIndex, ospfMessageAsByte, OspfUtil.JOIN_ALL_DROUTERS, - ospfMessage.destinationIp()); - } else { - ospfMessageAsByte = OspfUtil.addMetadata(interfaceIndex, ospfMessageAsByte, OspfUtil.ONLY_ALL_SPF_ROUTERS, - ospfMessage.destinationIp()); - } - - return ospfMessageAsByte; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeader.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeader.java deleted file mode 100644 index 2d76cf94ed..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeader.java +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket; - -import com.google.common.base.MoreObjects; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfMessage; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.exceptions.OspfParseException; - -/** - * Defines the OSPF Packet Header, fields and access methods. - * Every OSPF packet starts with a standard 24 byte header. - * This header contains all the information necessary to determine whether - * the packet should be accepted for further processing - */ -public class OspfPacketHeader implements OspfMessage { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version # | Type | Packet length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Router ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Area ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Checksum | AuType | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - private int ospfVer; - private int ospfType; - private int ospfPackLength; - private Ip4Address routerId; - private Ip4Address areaId; - private int checkSum; - private int auType; - private int authentication; - private Ip4Address destinationIp; - private Ip4Address sourceIp; - private int interfaceIndex; - - /** - * Gets the source IP. - * - * @return source IP address - */ - public Ip4Address sourceIp() { - return sourceIp; - } - - /** - * Sets the source IP address. - * - * @param sourceIp source IP address - */ - public void setSourceIp(Ip4Address sourceIp) { - this.sourceIp = sourceIp; - } - - @Override - public OspfPacketType ospfMessageType() { - //default impl - return null; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - //default impl - } - - @Override - public byte[] asBytes() { - //default impl - return new byte[0]; - } - - /** - * Gets OSPF version. - * - * @return OSPF version - */ - public int ospfVersion() { - return ospfVer; - } - - /** - * Sets OSPF version. - * - * @param ospfVer OSPF version - */ - public void setOspfVer(int ospfVer) { - this.ospfVer = ospfVer; - } - - /** - * Gets OSPF packet type. - * - * @return OSPF packet type - */ - public int ospfType() { - return ospfType; - } - - /** - * Sets OSPF packet type. - * - * @param ospfType packet type - */ - public void setOspftype(int ospfType) { - this.ospfType = ospfType; - } - - /** - * Gets ospf packet length. - * - * @return OSPF packet length - */ - public int ospfPacLength() { - return ospfPackLength; - } - - /** - * Sets OSPF packet length. - * - * @param ospfPacLength packet length - */ - public void setOspfPacLength(int ospfPacLength) { - this.ospfPackLength = ospfPacLength; - } - - /** - * Gets router id. - * - * @return routerId - */ - public Ip4Address routerId() { - return routerId; - } - - /** - * Sets router id. - * - * @param routerId router id - */ - public void setRouterId(Ip4Address routerId) { - this.routerId = routerId; - } - - /** - * Gets area id. - * - * @return areaId area id - */ - public Ip4Address areaId() { - return areaId; - } - - /** - * Sets area id. - * - * @param areaId area id - */ - public void setAreaId(Ip4Address areaId) { - this.areaId = areaId; - } - - /** - * Gets checksum value. - * - * @return checkSum check sum value - */ - public int checksum() { - return checkSum; - } - - /** - * Sets checksum. - * - * @param checkSum check sum value - */ - public void setChecksum(int checkSum) { - this.checkSum = checkSum; - } - - /** - * Gets auth type. - * - * @return authType authentication type - */ - public int authType() { - return auType; - } - - /** - * Sets auth Type. - * - * @param auType authentication type - */ - public void setAuthType(int auType) { - this.auType = auType; - } - - /** - * Gets authentication. - * - * @return authentication - */ - public int authentication() { - return authentication; - } - - /** - * Sets authentication. - * - * @param authentication authentication - */ - public void setAuthentication(int authentication) { - this.authentication = authentication; - } - - /** - * Gets destination IP. - * - * @return destination IP - */ - public Ip4Address destinationIp() { - return destinationIp; - } - - /** - * Sets destination IP. - * - * @param destinationIp destination IP - */ - public void setDestinationIp(Ip4Address destinationIp) { - this.destinationIp = destinationIp; - } - - /** - * Returns the interface index on which the message received. - * - * @return interface index on which the message received - */ - public int interfaceIndex() { - return interfaceIndex; - } - - /** - * Sets the interface index on which the message received. - * - * @param interfaceIndex interface index on which the message received - */ - public void setInterfaceIndex(int interfaceIndex) { - this.interfaceIndex = interfaceIndex; - } - - /** - * Populates the header from the packetHeader instance. - * - * @param ospfPacketHeader packet header instance. - */ - public void populateHeader(OspfPacketHeader ospfPacketHeader) { - this.setInterfaceIndex(ospfPacketHeader.interfaceIndex()); - this.setSourceIp(ospfPacketHeader.sourceIp()); - this.setOspfVer(ospfPacketHeader.ospfVersion()); - this.setOspftype(ospfPacketHeader.ospfType()); - this.setOspfPacLength(ospfPacketHeader.ospfPacLength()); - this.setRouterId(ospfPacketHeader.routerId()); - this.setAreaId(ospfPacketHeader.areaId()); - this.setChecksum(ospfPacketHeader.checksum()); - this.setAuthType(ospfPacketHeader.authType()); - this.setAuthentication(ospfPacketHeader.authentication()); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("ospfVersion", ospfVer) - .add("ospfType", ospfType) - .add("ospfPackLength", ospfPackLength) - .add("routerId", routerId) - .add("areaId", areaId) - .add("checkSum", checkSum) - .add("auType", auType) - .add("authentication", authentication) - .add("destinationIP", destinationIp) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/package-info.java deleted file mode 100644 index e408789524..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the different types of OSPF Packets. - */ -package org.onosproject.ospf.protocol.ospfpacket; diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacket.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacket.java deleted file mode 100644 index e8ce640989..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacket.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.subtype; - -import com.google.common.base.MoreObjects; - -/** - * Representation of an LS Request packet and fields and access methods to access it. - */ -public class LsRequestPacket { - - private int lsType; - private String linkStateId; - private String ownRouterId; - - /** - * Gets the LSA type. - * - * @return LSA type - */ - public int lsType() { - return lsType; - } - - /** - * Sets the LSA type. - * - * @param lsType LSA type - */ - public void setLsType(int lsType) { - this.lsType = lsType; - } - - /** - * Gets the link state id. - * - * @return link state id - */ - public String linkStateId() { - return linkStateId; - } - - /** - * Sets link state id. - * - * @param linkStateId state id - */ - public void setLinkStateId(String linkStateId) { - this.linkStateId = linkStateId; - } - - /** - * Gets the router id. - * - * @return router id - */ - public String ownRouterId() { - return ownRouterId; - } - - /** - * Sets the router id. - * - * @param ownRouterId router id - */ - public void setOwnRouterId(String ownRouterId) { - this.ownRouterId = ownRouterId; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("lsType", lsType) - .add("linkStateId", linkStateId) - .add("ownRouterId", ownRouterId) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/package-info.java deleted file mode 100644 index 2b29614550..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/subtype/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF packet sub types which is used in OSPF packets.. - */ -package org.onosproject.ospf.protocol.ospfpacket.subtype; \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacket.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacket.java deleted file mode 100644 index c38b3835cf..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacket.java +++ /dev/null @@ -1,420 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an OSPF Database Description packet. - * Database Description packets are OSPF packet type 2. - * These packets are exchanged when an adjacency is being initialized. - * They describe the contents of the link-state database. - */ -public class DdPacket extends OspfPacketHeader { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version # | 2 | Packet length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Router ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Area ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Checksum | AuType | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Interface MTU | Options |0|0|0|0|0|I|M|MS - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | DD sequence number | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - +- -+ - | | - +- An LSA Header -+ - | | - +- -+ - | | - +- -+ - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ... | - */ - private static final Logger log = LoggerFactory.getLogger(DdPacket.class); - private int imtu; - private int options; - private int ims; // initialize , more but / master slave bit - private int isMaster; - private int isInitialize; - private int isMore; - private long sequenceNo; - private boolean isOpaqueCapable; - private List lsaHeaderList = new ArrayList<>(); - - /** - * Creates an instance of DD packet. - */ - public DdPacket() { - } - - /** - * Creates an instance of DD packet. - * - * @param ospfHeader OSPF header instance - */ - public DdPacket(OspfPacketHeader ospfHeader) { - populateHeader(ospfHeader); - } - - /** - * Gets is opaque capable or not. - * - * @return true if opaque capable else false - */ - public boolean isOpaqueCapable() { - return isOpaqueCapable; - } - - /** - * Sets is opaque capable or not. - * - * @param isOpaqueCapable true or false - */ - public void setIsOpaqueCapable(boolean isOpaqueCapable) { - this.isOpaqueCapable = isOpaqueCapable; - } - - /** - * Gets IMS value. - * - * @return IMS bits as an int value - */ - public int ims() { - return ims; - } - - /** - * Sets IMS value. - * - * @param ims IMS value - */ - public void setIms(int ims) { - this.ims = ims; - } - - /** - * Gets master bit value. - * - * @return 1 if master else 0 - */ - public int isMaster() { - return isMaster; - } - - /** - * Sets master value. - * - * @param isMaster 1 represents master - */ - public void setIsMaster(int isMaster) { - this.isMaster = isMaster; - } - - /** - * Gets Initialize bit value. - * - * @return 1 if initialize else 0 - */ - public int isInitialize() { - return isInitialize; - } - - /** - * Sets initialize value. - * - * @param isInitialize 1 is initialize else 0 - */ - public void setIsInitialize(int isInitialize) { - this.isInitialize = isInitialize; - } - - /** - * Gets is more bit set or not. - * - * @return 1 if more set else 0 - */ - public int isMore() { - return isMore; - } - - /** - * Sets more bit value to 0 or 1. - * - * @param isMore 1 if more set else 0 - */ - public void setIsMore(int isMore) { - this.isMore = isMore; - } - - - /** - * Gets IMTU value. - * - * @return IMTU value - */ - public int imtu() { - return imtu; - } - - /** - * Sets IMTU value. - * - * @param imtu value - */ - public void setImtu(int imtu) { - this.imtu = imtu; - } - - /** - * Gets options value. - * - * @return options - */ - public int options() { - return options; - } - - /** - * Sets options value. - * - * @param options options value - */ - public void setOptions(int options) { - this.options = options; - } - - /** - * Gets sequence number. - * - * @return sequenceNo - */ - public long sequenceNo() { - return sequenceNo; - } - - /** - * Sets Sequence number. - * - * @param sequenceNo sequence number - */ - public void setSequenceNo(long sequenceNo) { - this.sequenceNo = sequenceNo; - } - - /** - * Gets LSA header list. - * - * @return LSA header - */ - public List getLsaHeaderList() { - return lsaHeaderList; - } - - /** - * Adds LSA header to header list. - * - * @param lsaHeader lsa header instance - */ - public void addLsaHeader(LsaHeader lsaHeader) { - - if (!lsaHeaderList.contains(lsaHeader)) { - lsaHeaderList.add(lsaHeader); - } - } - - @Override - public OspfPacketType ospfMessageType() { - return OspfPacketType.DD; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - - try { - this.setImtu(channelBuffer.readShort()); - - int options = channelBuffer.readByte(); - String obit = Integer.toHexString(options); - if (obit.length() == 1) { - obit = "0" + obit; - } - String toBinary = Integer.toBinaryString(Integer.parseInt(new Character(obit.charAt(0)).toString())); - if (toBinary.length() == 1) { - toBinary = "000" + toBinary; - } else if (toBinary.length() == 2) { - toBinary = "00" + toBinary; - } else if (toBinary.length() == 3) { - toBinary = "0" + toBinary; - } - if (Integer.parseInt(new Character(toBinary.charAt(1)).toString()) == 1) { - this.setIsOpaqueCapable(true); - } - this.setOptions(options); - this.setIms(channelBuffer.readByte()); - //Convert the byte to ims bits - String strIms = Integer.toBinaryString(this.ims()); - if (strIms.length() == 3) { - this.setIsInitialize(Integer.parseInt(Character.toString(strIms.charAt(0)))); - this.setIsMore(Integer.parseInt(Character.toString(strIms.charAt(1)))); - this.setIsMaster(Integer.parseInt(Character.toString(strIms.charAt(2)))); - } else if (strIms.length() == 2) { - this.setIsInitialize(0); - this.setIsMore(Integer.parseInt(Character.toString(strIms.charAt(0)))); - this.setIsMaster(Integer.parseInt(Character.toString(strIms.charAt(1)))); - } else if (strIms.length() == 1) { - this.setIsInitialize(0); - this.setIsMore(0); - this.setIsMaster(Integer.parseInt(Character.toString(strIms.charAt(0)))); - } - this.setSequenceNo(channelBuffer.readInt()); - - //add all the LSA Headers - header is of 20 bytes - while (channelBuffer.readableBytes() >= OspfUtil.LSA_HEADER_LENGTH) { - LsaHeader header = OspfUtil.readLsaHeader(channelBuffer.readBytes(OspfUtil.LSA_HEADER_LENGTH)); - //add the LSAHeader to DDPacket - addLsaHeader(header); - } - - } catch (Exception e) { - log.debug("Error::DdPacket:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.MESSAGE_HEADER_ERROR, OspfErrorType.BAD_MESSAGE_LENGTH); - } - } - - @Override - public byte[] asBytes() { - - byte[] ddMessage = null; - - byte[] ddHeader = getDdHeaderAsByteArray(); - byte[] ddBody = getDdBodyAsByteArray(); - ddMessage = Bytes.concat(ddHeader, ddBody); - - return ddMessage; - } - - /** - * Gets DD Header as byte array. - * - * @return dd header as byte array. - */ - public byte[] getDdHeaderAsByteArray() { - List headerLst = new ArrayList<>(); - - try { - headerLst.add((byte) this.ospfVersion()); - headerLst.add((byte) this.ospfType()); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.ospfPacLength()))); - headerLst.addAll(Bytes.asList(this.routerId().toOctets())); - headerLst.addAll(Bytes.asList(this.areaId().toOctets())); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.checksum()))); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.authType()))); - //Authentication is 0 always. Total 8 bytes consist of zero - byte[] auth = new byte[OspfUtil.EIGHT_BYTES]; - headerLst.addAll(Bytes.asList(auth)); - - } catch (Exception e) { - log.debug("Error"); - - } - - return Bytes.toArray(headerLst); - } - - - /** - * Gets DD body as byte array. - * - * @return DD body - */ - public byte[] getDdBodyAsByteArray() { - List bodyLst = new ArrayList<>(); - - try { - bodyLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.imtu()))); - bodyLst.add((byte) this.options()); - - StringBuilder sb = new StringBuilder(); - sb.append(this.isInitialize()); - sb.append(this.isMore()); - sb.append(this.isMaster()); - - bodyLst.add((byte) Integer.parseInt(sb.toString(), 2)); - bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.sequenceNo()))); // passing long value - - for (LsaHeader lsaHeader : lsaHeaderList) { - if (lsaHeader.lsType() == OspfParameters.LINK_LOCAL_OPAQUE_LSA || - lsaHeader.lsType() == OspfParameters.AREA_LOCAL_OPAQUE_LSA || - lsaHeader.lsType() == OspfParameters.AS_OPAQUE_LSA) { - OpaqueLsaHeader header = (OpaqueLsaHeader) lsaHeader; - bodyLst.addAll(Bytes.asList(header.getOpaqueLsaHeaderAsByteArray())); - } else { - bodyLst.addAll(Bytes.asList(lsaHeader.getLsaHeaderAsByteArray())); - } - } - } catch (Exception e) { - log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage()); - return Bytes.toArray(bodyLst); - } - - return Bytes.toArray(bodyLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("imtu", imtu) - .add("options", options) - .add("ims", ims) - .add("isMaster", isMaster) - .add("isInitialize", isInitialize) - .add("isMore", isMore) - .add("sequenceNo", sequenceNo) - .add("isOpaqueCapable", isOpaqueCapable) - .add("lsaHeaderList", lsaHeaderList) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacket.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacket.java deleted file mode 100644 index ab7e8852fe..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacket.java +++ /dev/null @@ -1,362 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Defines an OSPF Hello Message, and the fields and methods to access it. - * Hello packets are OSPF packet type 1. These packets are sent - * periodically on all interfaces in order to establish and - * maintain neighbor relationships. - */ -public class HelloPacket extends OspfPacketHeader { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version # | 1 | Packet length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Router ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Area ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Checksum | AuType | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Network Mask | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | HelloInterval | Options | Rtr Pri | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | RouterDeadInterval | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Designated Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Backup Designated Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Neighbor | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ... | - - Hello Message Format - REFERENCE : RFC 2328 - */ - - private static final Logger log = LoggerFactory.getLogger(HelloPacket.class); - private Ip4Address networkMask; - private int options; - private int helloInterval; - private int routerPriority; - private int routerDeadInterval; - private Ip4Address bdr; - private Ip4Address dr; - private List neighborAddress = new ArrayList<>(); - - /** - * Creates an instance of Hello packet. - */ - public HelloPacket() { - } - - /** - * Creates an instance of Hello packet. - * - * @param ospfHeader OSPF header instance. - */ - public HelloPacket(OspfPacketHeader ospfHeader) { - populateHeader(ospfHeader); - } - - /** - * Gets network mask. - * - * @return network mask - */ - public Ip4Address networkMask() { - return networkMask; - } - - /** - * Sets network mask. - * - * @param networkMask network mask - */ - public void setNetworkMask(Ip4Address networkMask) { - this.networkMask = networkMask; - } - - /** - * Gets BDRs IP address. - * - * @return BDRs IP address - */ - public Ip4Address bdr() { - return bdr; - } - - /** - * Sets BDR IP address. - * - * @param bdr BDR IP address - */ - public void setBdr(Ip4Address bdr) { - this.bdr = bdr; - } - - /** - * Gets DRs IP address. - * - * @return DRs IP address - */ - public Ip4Address dr() { - return dr; - } - - /** - * Sets DRs IP address. - * - * @param dr DRs IP address - */ - public void setDr(Ip4Address dr) { - this.dr = dr; - } - - /** - * Adds neighbor to map. - * - * @param neighborID neighbors id - */ - public void addNeighbor(Ip4Address neighborID) { - if (!neighborAddress.contains(neighborID)) { - neighborAddress.add(neighborID); - } - } - - /** - * Checks neighbor is in map or not. - * - * @param neighborID neighbors id - * @return true if neighbor exist else false - */ - public boolean containsNeighbour(Ip4Address neighborID) { - return (neighborAddress.contains(neighborID)) ? true : false; - } - - /** - * Gets options value. - * - * @return options value - */ - public int options() { - return options; - } - - /** - * Sets options value. - * - * @param options options value - */ - public void setOptions(int options) { - this.options = options; - } - - /** - * Gets router priority. - * - * @return routerPriority - */ - public int routerPriority() { - return routerPriority; - } - - /** - * Sets router priority. - * - * @param routerPriority router priority - */ - public void setRouterPriority(int routerPriority) { - this.routerPriority = routerPriority; - } - - /** - * Gets hello interval. - * - * @return hello Interval - */ - public int helloInterval() { - return helloInterval; - } - - /** - * Sets hello Interval. - * - * @param helloInterval hello Interval - */ - public void setHelloInterval(int helloInterval) { - this.helloInterval = helloInterval; - } - - /** - * Gets router dead interval. - * - * @return router dead interval - */ - public int routerDeadInterval() { - return routerDeadInterval; - } - - /** - * Sets router dead interval. - * - * @param routerDeadInterval router dead interval - */ - public void setRouterDeadInterval(int routerDeadInterval) { - this.routerDeadInterval = routerDeadInterval; - } - - @Override - public OspfPacketType ospfMessageType() { - return OspfPacketType.HELLO; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - - try { - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.setNetworkMask(Ip4Address.valueOf(tempByteArray)); - this.setHelloInterval(channelBuffer.readShort()); - this.setOptions(channelBuffer.readByte()); - this.setRouterPriority(channelBuffer.readByte() & 0xff); - this.setRouterDeadInterval(channelBuffer.readInt()); - tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.setDr(Ip4Address.valueOf(tempByteArray)); - tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.setBdr(Ip4Address.valueOf(tempByteArray)); - - while (channelBuffer.readableBytes() > 0) { - tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - this.addNeighbor(Ip4Address.valueOf(tempByteArray)); - } - - } catch (Exception e) { - log.debug("Error::HelloPacket:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.MESSAGE_HEADER_ERROR, OspfErrorType.BAD_MESSAGE_LENGTH); - } - } - - @Override - public byte[] asBytes() { - - byte[] helloMessage = null; - byte[] helloHeader = getHelloHeaderAsByteArray(); - byte[] helloBody = getHelloBodyAsByteArray(); - helloMessage = Bytes.concat(helloHeader, helloBody); - - log.debug("HelloPacket::asBytes::Hello asBytes:: {}", helloMessage); - - return helloMessage; - } - - /** - * Gets hello header as byte array. - * - * @return hello header - */ - public byte[] getHelloHeaderAsByteArray() { - List headerLst = new ArrayList<>(); - try { - headerLst.add((byte) this.ospfVersion()); - headerLst.add((byte) this.ospfType()); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.ospfPacLength()))); - headerLst.addAll(Bytes.asList(this.routerId().toOctets())); - headerLst.addAll(Bytes.asList(this.areaId().toOctets())); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.checksum()))); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.authType()))); - //Authentication is 0 always. Total 8 bytes consist of zero - byte[] auth = new byte[OspfUtil.EIGHT_BYTES]; - headerLst.addAll(Bytes.asList(auth)); - } catch (Exception e) { - log.debug("Error::getHelloHeaderAsByteArray {}", e.getMessage()); - return Bytes.toArray(headerLst); - } - - return Bytes.toArray(headerLst); - } - - /** - * Gets hello body as byte array. - * - * @return hello body as byte array - */ - public byte[] getHelloBodyAsByteArray() { - List bodyLst = new ArrayList<>(); - - try { - bodyLst.addAll(Bytes.asList(this.networkMask().toOctets())); - bodyLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.helloInterval()))); - bodyLst.add((byte) this.options()); - bodyLst.add((byte) this.routerPriority()); - bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.routerDeadInterval()))); - bodyLst.addAll(Bytes.asList(this.dr().toOctets())); - bodyLst.addAll(Bytes.asList(this.bdr().toOctets())); - for (Ip4Address neighbour : neighborAddress) { - bodyLst.addAll(Bytes.asList(neighbour.toOctets())); - } - - } catch (Exception e) { - log.debug("Error::getHelloBodyAsByteArray {}", e.getMessage()); - return Bytes.toArray(bodyLst); - } - - return Bytes.toArray(bodyLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("networkMask", networkMask) - .add("options", options) - .add("helloInterval", helloInterval) - .add("routerPriority", routerPriority) - .add("routerDeadInterval", routerDeadInterval) - .add("bdr", bdr) - .add("dr", dr) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledge.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledge.java deleted file mode 100644 index 5dd63aadae..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledge.java +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an OSPF Link State Acknowledgment Message. - * Link State Acknowledgment Packets are OSPF packet type 5. - * To make the flooding of LSAs reliable, flooded LSAs are explicitly - * acknowledged. This acknowledgment is accomplished through the - * sending and receiving of Link State Acknowledgment packets. - * Multiple LSAs can be acknowledged in a single Link State Acknowledgment packet. - */ -public class LsAcknowledge extends OspfPacketHeader { - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version # | 5 | Packet length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Router ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Area ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Checksum | AuType | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - +- -+ - | | - +- An LSA Header -+ - | | - +- -+ - | | - +- -+ - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ... | - */ - private static final Logger log = LoggerFactory.getLogger(LsAcknowledge.class); - private List linkStateHeaders = new ArrayList<>(); - - /** - * Creates an instance of Link State Acknowledgment instance. - */ - public LsAcknowledge() { - } - - /** - * Creates an instance of Link State Acknowledgment instance. - * - * @param ospfHeader OSPF header instance. - */ - public LsAcknowledge(OspfPacketHeader ospfHeader) { - populateHeader(ospfHeader); - } - - /** - * Gets ls headers. - * - * @return ls headers - */ - public List getLinkStateHeaders() { - return linkStateHeaders; - } - - /** - * Adds link state header to list. - * - * @param lsaHeader LSA header - */ - public void addLinkStateHeader(LsaHeader lsaHeader) { - if (!linkStateHeaders.contains(lsaHeader)) { - linkStateHeaders.add(lsaHeader); - } - } - - @Override - public OspfPacketType ospfMessageType() { - return OspfPacketType.LSAACK; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - try { - //add all the LSA Headers - one header is of 20 bytes - while (channelBuffer.readableBytes() >= OspfUtil.LSA_HEADER_LENGTH) { - LsaHeader header = OspfUtil.readLsaHeader(channelBuffer); - //add the LSAHeader to acknowledge - addLinkStateHeader(header); - } - - } catch (Exception e) { - log.debug("Error::LsAckPacket:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.MESSAGE_HEADER_ERROR, OspfErrorType.BAD_MESSAGE_LENGTH); - } - } - - @Override - public byte[] asBytes() { - byte[] lsAckMessage = null; - - byte[] lsAckHeader = getLsAckAsByteArray(); - byte[] lsAckBody = getLsAckBodyAsByteArray(); - lsAckMessage = Bytes.concat(lsAckHeader, lsAckBody); - - return lsAckMessage; - } - - /** - * Gets LSAcknowledge as byte array. - * - * @return byte array - */ - public byte[] getLsAckAsByteArray() { - List headerLst = new ArrayList<>(); - try { - headerLst.add((byte) this.ospfVersion()); - headerLst.add((byte) this.ospfType()); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.ospfPacLength()))); - headerLst.addAll(Bytes.asList(this.routerId().toOctets())); - headerLst.addAll(Bytes.asList(this.areaId().toOctets())); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.checksum()))); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.authType()))); - //Authentication is 0 always. Total 8 bytes consist of zero - byte[] auth = new byte[OspfUtil.EIGHT_BYTES]; - headerLst.addAll(Bytes.asList(auth)); - } catch (Exception e) { - log.debug("Error::LsAckPacket:: {}", e.getMessage()); - return Bytes.toArray(headerLst); - } - - return Bytes.toArray(headerLst); - } - - /** - * Gets LsAck body as byte array. - * - * @return byte array - */ - public byte[] getLsAckBodyAsByteArray() { - List bodyLst = new ArrayList<>(); - - try { - for (LsaHeader lsaHeader : linkStateHeaders) { - if (lsaHeader.lsType() == OspfParameters.LINK_LOCAL_OPAQUE_LSA || - lsaHeader.lsType() == OspfParameters.AREA_LOCAL_OPAQUE_LSA || - lsaHeader.lsType() == OspfParameters.AS_OPAQUE_LSA) { - OpaqueLsaHeader header = (OpaqueLsaHeader) lsaHeader; - bodyLst.addAll(Bytes.asList(header.getOpaqueLsaHeaderAsByteArray())); - } else { - bodyLst.addAll(Bytes.asList(lsaHeader.getLsaHeaderAsByteArray())); - } - } - } catch (Exception e) { - log.debug("Error::getLsAckBodyAsByteArray {}", e.getMessage()); - return Bytes.toArray(bodyLst); - } - - return Bytes.toArray(bodyLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("linkStateHeaders", linkStateHeaders) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequest.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequest.java deleted file mode 100644 index 9f7e8841ca..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequest.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; -import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.net.InetAddress; -import java.util.ArrayList; -import java.util.List; - -/** - * Representation of an OSPF Link State Request packet. - * Link State Request packets are OSPF packet type 3. After exchanging - * database description packets with a neighboring router, a router may - * find that parts of its link-state database are out-of-date. The - * Link State Request packet is used to request the pieces of the - * neighbor's database that are more up-to-date. - */ -public class LsRequest extends OspfPacketHeader { - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version # | 3 | Packet length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Router ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Area ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Checksum | AuType | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS type | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Link State ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Advertising Router | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | ... | - - LsRequest Message Format - REFERENCE : RFC 2328 - */ - private static final Logger log = LoggerFactory.getLogger(LsRequest.class); - private List linkStateRequests = new ArrayList<>(); - - /** - * Creates an instance of link state request packet. - */ - public LsRequest() { - } - - /** - * Creates an instance of link state request packet. - * - * @param ospfHeader OSPF header instance. - */ - public LsRequest(OspfPacketHeader ospfHeader) { - populateHeader(ospfHeader); - } - - /** - * Adds link state request. - * - * @param lsRequestPacket ls request packet instance - */ - public void addLinkStateRequests(LsRequestPacket lsRequestPacket) { - if (!linkStateRequests.contains(lsRequestPacket)) { - linkStateRequests.add(lsRequestPacket); - } - } - - /** - * Gets link state request packet instance. - * - * @return link state request packet instance - */ - public List getLinkStateRequests() { - return linkStateRequests; - } - - @Override - public OspfPacketType ospfMessageType() { - return OspfPacketType.LSREQUEST; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - - while (channelBuffer.readableBytes() >= OspfUtil.LSREQUEST_LENGTH) { - LsRequestPacket lsRequestPacket = new LsRequestPacket(); - lsRequestPacket.setLsType(channelBuffer.readInt()); - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - lsRequestPacket.setLinkStateId(Ip4Address.valueOf(tempByteArray).toString()); - tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - lsRequestPacket.setOwnRouterId(Ip4Address.valueOf(tempByteArray).toString()); - - this.addLinkStateRequests(lsRequestPacket); - } - } - - @Override - public byte[] asBytes() { - byte[] lsrMessage = null; - byte[] lsrHeader = getLsrHeaderAsByteArray(); - byte[] lsrBody = getLsrBodyAsByteArray(); - lsrMessage = Bytes.concat(lsrHeader, lsrBody); - - return lsrMessage; - } - - /** - * Gets LS request packet header as byte array. - * - * @return LS request packet header as byte array - */ - public byte[] getLsrHeaderAsByteArray() { - List headerLst = new ArrayList<>(); - - try { - headerLst.add((byte) this.ospfVersion()); - headerLst.add((byte) this.ospfType()); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.ospfPacLength()))); - headerLst.addAll(Bytes.asList(this.routerId().toOctets())); - headerLst.addAll(Bytes.asList(this.areaId().toOctets())); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.checksum()))); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.authType()))); - //Authentication is 0 always. Total 8 bytes consist of zero - byte[] auth = new byte[OspfUtil.EIGHT_BYTES]; - headerLst.addAll(Bytes.asList(auth)); - } catch (Exception e) { - log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage()); - return Bytes.toArray(headerLst); - } - - return Bytes.toArray(headerLst); - } - - /** - * Gets LS request packet body as byte array. - * - * @return LS request packet body as byte array - */ - public byte[] getLsrBodyAsByteArray() { - List bodyLst = new ArrayList<>(); - - try { - for (LsRequestPacket lsrPacket : linkStateRequests) { - bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(lsrPacket.lsType()))); - bodyLst.addAll(Bytes.asList(InetAddress.getByName(lsrPacket.linkStateId()).getAddress())); - bodyLst.addAll(Bytes.asList(InetAddress.getByName(lsrPacket.ownRouterId()).getAddress())); - } - } catch (Exception e) { - log.debug("Error::getLsrBodyAsByteArray {}", e.getMessage()); - return Bytes.toArray(bodyLst); - } - - return Bytes.toArray(bodyLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("linkStateRequests", linkStateRequests) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdate.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdate.java deleted file mode 100644 index a0e9b32159..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdate.java +++ /dev/null @@ -1,310 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; - -import com.google.common.base.MoreObjects; -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.exceptions.OspfErrorType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa; -import org.onosproject.ospf.protocol.lsa.types.ExternalLsa; -import org.onosproject.ospf.protocol.lsa.types.NetworkLsa; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.lsa.types.SummaryLsa; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.protocol.util.OspfParameters; -import org.onosproject.ospf.protocol.util.OspfUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; - -/** - * Representation of an OSPF Link State Update packet. - * Link State Update packets are OSPF packet type 4. These packets - * implement the flooding of LSAs. Each Link State Update packet - * carries a collection of LSAs one hop further from their origin. - * Several LSAs may be included in a single packet. - */ -public class LsUpdate extends OspfPacketHeader { - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version # | 4 | Packet length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Router ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Area ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Checksum | AuType | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Authentication | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | # LSAs | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - +- +-+ - | LSAs | - +- +-+ - | ... | - */ - private static final Logger log = LoggerFactory.getLogger(LsUpdate.class); - private int numberOfLsa; - private List lsaList = new LinkedList<>(); - - /** - * Creates an instance of Link State Update packet. - */ - public LsUpdate() { - } - - /** - * Creates an instance of Link State Update packet. - * - * @param ospfHeader ospf header instance. - */ - public LsUpdate(OspfPacketHeader ospfHeader) { - populateHeader(ospfHeader); - } - - /** - * Gets the LSA list. - * - * @return list of LSA - */ - public List getLsaList() { - return lsaList; - } - - /** - * Adds the LSA to list. - * - * @param lsa LSA - */ - public void addLsa(OspfLsa lsa) { - if (!lsaList.contains(lsa)) { - lsaList.add(lsa); - } - } - - /** - * Gets the number of LSA. - * - * @return number of LSA - */ - public int noLsa() { - return numberOfLsa; - } - - /** - * Sets number of LSA. - * - * @param numberOfLsa number of LSA - */ - public void setNumberOfLsa(int numberOfLsa) { - this.numberOfLsa = numberOfLsa; - } - - - @Override - public OspfPacketType ospfMessageType() { - return OspfPacketType.LSUPDATE; - } - - @Override - public void readFrom(ChannelBuffer channelBuffer) throws OspfParseException { - try { - //From header 4 bytes is number of lsa's - this.setNumberOfLsa(channelBuffer.readInt()); - //get the remaining bytes represents Number of LSA's present. Add all the LSA's - while (channelBuffer.readableBytes() > OspfUtil.LSA_HEADER_LENGTH) { - - LsaHeader header = OspfUtil.readLsaHeader(channelBuffer.readBytes(OspfUtil.LSA_HEADER_LENGTH)); - int lsaLength = header.lsPacketLen(); - int lsType = header.lsType(); - - switch (lsType) { - case OspfParameters.LINK_LOCAL_OPAQUE_LSA: - OpaqueLsa9 opaqueLsa9 = new OpaqueLsa9((OpaqueLsaHeader) header); - opaqueLsa9.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH)); - addLsa(opaqueLsa9); - break; - case OspfParameters.AREA_LOCAL_OPAQUE_LSA: - OpaqueLsa10 opaqueLsa10 = new OpaqueLsa10((OpaqueLsaHeader) header); - opaqueLsa10.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH)); - addLsa(opaqueLsa10); - break; - case OspfParameters.AS_OPAQUE_LSA: - OpaqueLsa11 opaqueLsa11 = new OpaqueLsa11((OpaqueLsaHeader) header); - opaqueLsa11.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH)); - addLsa(opaqueLsa11); - break; - case OspfParameters.ROUTER: - RouterLsa routerLsa = new RouterLsa(header); - routerLsa.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH)); - addLsa(routerLsa); - break; - case OspfParameters.NETWORK: - NetworkLsa networkLsa = new NetworkLsa(header); - networkLsa.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH)); - addLsa(networkLsa); - break; - case OspfParameters.ASBR_SUMMARY: - AsbrSummaryLsa asbrSummaryLsa = new AsbrSummaryLsa(header); - asbrSummaryLsa.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH)); - addLsa(asbrSummaryLsa); - break; - case OspfParameters.SUMMARY: - SummaryLsa summaryLsa = new SummaryLsa(header); - summaryLsa.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH)); - addLsa(summaryLsa); - break; - case OspfParameters.EXTERNAL_LSA: - ExternalLsa externalLsa = new ExternalLsa(header); - externalLsa.readFrom(channelBuffer.readBytes(lsaLength - OspfUtil.LSA_HEADER_LENGTH)); - addLsa(externalLsa); - break; - default: - log.debug("LSUpdate::readLsUpdateBody::UnKnown LS Type: {}", lsType); - break; - } - } - } catch (Exception e) { - log.debug("Error::LsUpdate:: {}", e.getMessage()); - throw new OspfParseException(OspfErrorType.MESSAGE_HEADER_ERROR, OspfErrorType.BAD_MESSAGE_LENGTH); - } - } - - @Override - public byte[] asBytes() { - byte[] lsuMessage = null; - - byte[] ospfHeader = getLsuHeaderAsByteArray(); - byte[] lsuBody = getLsuBodyAsByteArray(); - lsuMessage = Bytes.concat(ospfHeader, lsuBody); - - return lsuMessage; - } - - /** - * Gets lsu header. - * - * @return lsu header as byte array - */ - public byte[] getLsuHeaderAsByteArray() { - List headerLst = new ArrayList<>(); - try { - headerLst.add((byte) this.ospfVersion()); - headerLst.add((byte) this.ospfType()); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.ospfPacLength()))); - headerLst.addAll(Bytes.asList(this.routerId().toOctets())); - headerLst.addAll(Bytes.asList(this.areaId().toOctets())); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.checksum()))); - headerLst.addAll(Bytes.asList(OspfUtil.convertToTwoBytes(this.authType()))); - //Authentication is 0 always. Total 8 bytes consist of zero - byte[] auth = new byte[OspfUtil.EIGHT_BYTES]; - headerLst.addAll(Bytes.asList(auth)); - } catch (Exception e) { - log.debug("Error::LSUpdate::getLsuHeaderAsByteArray:: {}", e.getMessage()); - return Bytes.toArray(headerLst); - } - - return Bytes.toArray(headerLst); - } - - /** - * Get lsu body as byte array. - * - * @return lsu body as byte array - */ - public byte[] getLsuBodyAsByteArray() { - List bodyLst = new ArrayList<>(); - - try { - //add number of LSA's - bodyLst.addAll(Bytes.asList(OspfUtil.convertToFourBytes(this.noLsa()))); - //for each type of LSA's from the list get lsa bytes - for (OspfLsa ospfLsa : lsaList) { - //Check the type of lsa and build bytes accordingly - switch (ospfLsa.getOspfLsaType().value()) { - case OspfParameters.LINK_LOCAL_OPAQUE_LSA: - OpaqueLsa9 opaqueLsa9 = (OpaqueLsa9) ospfLsa; - bodyLst.addAll(Bytes.asList(opaqueLsa9.asBytes())); - break; - case OspfParameters.AREA_LOCAL_OPAQUE_LSA: - OpaqueLsa10 opaqueLsa10 = (OpaqueLsa10) ospfLsa; - bodyLst.addAll(Bytes.asList(opaqueLsa10.asBytes())); - break; - case OspfParameters.AS_OPAQUE_LSA: - OpaqueLsa11 opaqueLsa11 = (OpaqueLsa11) ospfLsa; - bodyLst.addAll(Bytes.asList(opaqueLsa11.asBytes())); - break; - case OspfParameters.ROUTER: - RouterLsa routerLsa = (RouterLsa) ospfLsa; - bodyLst.addAll(Bytes.asList(routerLsa.asBytes())); - break; - case OspfParameters.NETWORK: - NetworkLsa networkLsa = (NetworkLsa) ospfLsa; - bodyLst.addAll(Bytes.asList(networkLsa.asBytes())); - break; - case OspfParameters.ASBR_SUMMARY: - AsbrSummaryLsa asbrSummaryLsa = (AsbrSummaryLsa) ospfLsa; - bodyLst.addAll(Bytes.asList(asbrSummaryLsa.asBytes())); - break; - case OspfParameters.SUMMARY: - SummaryLsa summaryLsa = (SummaryLsa) ospfLsa; - bodyLst.addAll(Bytes.asList(summaryLsa.asBytes())); - break; - case OspfParameters.EXTERNAL_LSA: - ExternalLsa externalLsa = (ExternalLsa) ospfLsa; - bodyLst.addAll(Bytes.asList(externalLsa.asBytes())); - break; - default: - log.debug("LSUpdate::getLsuBodyAsByteArray::UnKnown ospfLsa: {}", ospfLsa); - break; - } - } - - } catch (Exception e) { - log.debug("Error::getLsuBodyAsByteArray {}", e.getMessage()); - return Bytes.toArray(bodyLst); - } - - return Bytes.toArray(bodyLst); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("noLsa", numberOfLsa) - .add("lsaList", lsaList) - .toString(); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/package-info.java deleted file mode 100644 index e5c55b0e19..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/ospfpacket/types/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF Packet. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/package-info.java deleted file mode 100644 index 6ff02a9756..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the OSPF protocol.. - */ -package org.onosproject.ospf.protocol; \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/ChecksumCalculator.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/ChecksumCalculator.java deleted file mode 100644 index bddb853f23..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/ChecksumCalculator.java +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.util; - -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.exceptions.OspfParseException; -import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa; -import org.onosproject.ospf.protocol.lsa.types.ExternalLsa; -import org.onosproject.ospf.protocol.lsa.types.NetworkLsa; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.lsa.types.SummaryLsa; -import org.onosproject.ospf.controller.OspfMessage; -import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge; -import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest; -import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate; -import org.slf4j.Logger; - -import java.util.Arrays; - -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Calculates checksum for different types of OSPF packets. - */ -public class ChecksumCalculator { - - private static final Logger log = getLogger(ChecksumCalculator.class); - - /** - * Converts given string to sixteen bits integer. - * If hexasum is more than 16 bit value, needs to be reduced to 16 bit value. - * - * @param strToConvert hexasum value to convert - * @return 16 bit integer value - */ - public static int convertToSixteenBits(String strToConvert) { - StringBuilder sb = new StringBuilder(strToConvert); - sb = sb.reverse(); - StringBuilder s1 = new StringBuilder(sb.substring(0, 4)); - s1 = s1.reverse(); - StringBuilder s2 = new StringBuilder(sb.substring(4, sb.length())); - s2 = s2.reverse(); - int num = Integer.parseInt(s1.toString(), 16) + Integer.parseInt(s2.toString(), 16); - return num; - } - - /** - * Checks whether checksum is valid or not in the given OSPF message. - * - * @param ospfMessage ospf message instance - * @param checksumPos1 position of checksum bit in packet - * @param checksumPos2 position of checksum bit in packet - * @return true if valid else false - */ - public boolean isValidOspfCheckSum(OspfMessage ospfMessage, int checksumPos1, int checksumPos2) { - - switch (ospfMessage.ospfMessageType().value()) { - case OspfParameters.HELLO: - ospfMessage = (HelloPacket) ospfMessage; - break; - case OspfParameters.DD: - ospfMessage = (DdPacket) ospfMessage; - break; - case OspfParameters.LSREQUEST: - ospfMessage = (LsRequest) ospfMessage; - break; - case OspfParameters.LSUPDATE: - ospfMessage = (LsUpdate) ospfMessage; - break; - case OspfParameters.LSACK: - ospfMessage = (LsAcknowledge) ospfMessage; - break; - default: - break; - } - - byte[] messageAsBytes = ospfMessage.asBytes(); - return validateOspfCheckSum(messageAsBytes, checksumPos1, checksumPos2); - } - - /** - * Checks whether checksum is valid or not in the given OSPF LSA. - * - * @param ospfLsa lsa instance - * @param lsType lsa type - * @param lsaChecksumPos1 lsa checksum position in packet - * @param lsaChecksumPos2 lsa checksum position in packet - * @throws OspfParseException if packet can't be parsed - * @return true if valid else false - */ - public boolean isValidLsaCheckSum(OspfLsa ospfLsa, int lsType, int lsaChecksumPos1, - int lsaChecksumPos2) throws OspfParseException { - - if (lsType == OspfLsaType.ROUTER.value()) { - RouterLsa lsa = (RouterLsa) ospfLsa; - return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2); - } else if (lsType == OspfLsaType.NETWORK.value()) { - NetworkLsa lsa = (NetworkLsa) ospfLsa; - return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2); - } else if (lsType == OspfLsaType.SUMMARY.value()) { - SummaryLsa lsa = (SummaryLsa) ospfLsa; - return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2); - } else if (lsType == OspfLsaType.ASBR_SUMMARY.value()) { - AsbrSummaryLsa lsa = (AsbrSummaryLsa) ospfLsa; - return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2); - } else if (lsType == OspfLsaType.EXTERNAL_LSA.value()) { - ExternalLsa lsa = (ExternalLsa) ospfLsa; - return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2); - } else if (lsType == OspfLsaType.LINK_LOCAL_OPAQUE_LSA.value()) { - OpaqueLsa9 lsa = (OpaqueLsa9) ospfLsa; - return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2); - } else if (lsType == OspfLsaType.AREA_LOCAL_OPAQUE_LSA.value()) { - OpaqueLsa10 lsa = (OpaqueLsa10) ospfLsa; - return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2); - } else if (lsType == OspfLsaType.AS_OPAQUE_LSA.value()) { - OpaqueLsa11 lsa = (OpaqueLsa11) ospfLsa; - return validateLsaCheckSum(lsa.asBytes(), lsaChecksumPos1, lsaChecksumPos2); - } - - - return false; - } - - /** - * Verifies the checksum is valid in given LSA packet bytes. - * - * @param lsaPacket lsa as byte array - * @param lsaChecksumPos1 position of checksum bit in packet - * @param lsaChecksumPos2 position of checksum bit in packet - * @return true if valid else false - */ - public boolean validateLsaCheckSum(byte[] lsaPacket, int lsaChecksumPos1, int lsaChecksumPos2) { - - byte[] checksum = calculateLsaChecksum(lsaPacket, lsaChecksumPos1, lsaChecksumPos2); - - if (lsaPacket[lsaChecksumPos1] == checksum[0] && lsaPacket[lsaChecksumPos2] == checksum[1]) { - return true; - } - - return false; - } - - /** - * Verifies the checksum is valid in given OSPF packet bytes. - * - * @param ospfPacket as byte array - * @param checksumPos1 position of checksum bit in packet - * @param checksumPos2 position of checksum bit in packet - * @return true if valid else false - */ - public boolean validateOspfCheckSum(byte[] ospfPacket, int checksumPos1, int checksumPos2) { - - byte[] checkSum = calculateOspfCheckSum(ospfPacket, checksumPos1, checksumPos2); - - if (ospfPacket[checksumPos1] == checkSum[0] && ospfPacket[checksumPos2] == checkSum[1]) { - return true; - } - - return false; - } - - /** - * Calculates the LSA checksum. - * - * @param lsaBytes as byte array - * @param lsaChecksumPos1 position of checksum bit in packet - * @param lsaChecksumPos2 position of checksum bit in packet - * @return checksum bytes - */ - public byte[] calculateLsaChecksum(byte[] lsaBytes, int lsaChecksumPos1, int lsaChecksumPos2) { - - byte[] tempLsaByte = Arrays.copyOf(lsaBytes, lsaBytes.length); - - int[] checksumOut = {0, 0}; - tempLsaByte[lsaChecksumPos1] = 0; - tempLsaByte[lsaChecksumPos2] = 0; - byte[] byteCheckSum = {0, 0}; - for (int i = 2; i < tempLsaByte.length; i++) { - checksumOut[0] = checksumOut[0] + ((int) tempLsaByte[i] & 0xFF); - checksumOut[1] = checksumOut[1] + checksumOut[0]; - } - checksumOut[0] = checksumOut[0] % 255; - checksumOut[1] = checksumOut[1] % 255; - int byte1 = (int) ((tempLsaByte.length - lsaChecksumPos1 - 1) * checksumOut[0] - checksumOut[1]) % 255; - if (byte1 <= 0) { - byte1 += 255; - } - int byte2 = 510 - checksumOut[0] - byte1; - if (byte2 > 255) { - byte2 -= 255; - } - - byteCheckSum[0] = (byte) byte1; - byteCheckSum[1] = (byte) byte2; - - return byteCheckSum; - } - - /** - * Calculate checksum from hexasum. - * - * @param hexasum total of 16 bits hexadecimal values - * @return checksum value - */ - private int calculateChecksum(int hexasum) { - - char[] tempZeros = {'0', '0', '0', '0'}; - StringBuffer hexaAsBinaryStr = new StringBuffer(Integer.toBinaryString(hexasum)); - int length = hexaAsBinaryStr.length(); - while (length > 16) { - if (hexaAsBinaryStr.length() % 4 != 0) { - int offset = hexaAsBinaryStr.length() % 4; - hexaAsBinaryStr.insert(0, tempZeros, 0, 4 - offset); - } - StringBuffer hexaStr1 = new StringBuffer(hexaAsBinaryStr.reverse().substring(0, 16)); - String revHexaStr1 = hexaStr1.reverse().toString(); - StringBuffer hexaStr2 = new StringBuffer(hexaAsBinaryStr.reverse()); - StringBuffer hexaStr3 = new StringBuffer(hexaStr2.reverse().substring(16, hexaStr2.length())); - String revHexaStr3 = hexaStr3.reverse().toString(); - int lastSixteenHexaBits = Integer.parseInt(revHexaStr1, 2); - int remainingHexaBits = Integer.parseInt(revHexaStr3, 2); - int totalCheckSum = lastSixteenHexaBits + remainingHexaBits; - hexaAsBinaryStr = new StringBuffer(Integer.toBinaryString(totalCheckSum)); - length = hexaAsBinaryStr.length(); - } - if (hexaAsBinaryStr.length() < 16) { - int count = 16 - hexaAsBinaryStr.length(); - String s = hexaAsBinaryStr.toString(); - for (int i = 0; i < count; i++) { - s = "0" + s; - } - - hexaAsBinaryStr = new StringBuffer(s); - - } - StringBuffer checksum = negate(hexaAsBinaryStr); - return Integer.parseInt(checksum.toString(), 2); - } - - /** - * Negates given hexasum. - * - * @param binaryString binary form of hexasum - * @return binary from of calculateChecksum - */ - private StringBuffer negate(StringBuffer binaryString) { - for (int i = 0; i < binaryString.length(); i++) { - if (binaryString.charAt(i) == '1') { - binaryString.replace(i, i + 1, "0"); - } else { - binaryString.replace(i, i + 1, "1"); - } - } - - return binaryString; - } - - /** - * Calculates the OSPF checksum for the given packet. - * - * @param packet as byte array - * @param checksumPos1 position of checksum bit in packet - * @param checksumPos2 position of checksum bit in packet - * @return checksum bytes - */ - public byte[] calculateOspfCheckSum(byte[] packet, int checksumPos1, int checksumPos2) { - - int hexasum = 0; - for (int i = 0; i < packet.length; i = i + 2) { - if (i != 12) { - byte b1 = packet[i]; - String s1 = String.format("%8s", Integer.toBinaryString(b1 & 0xFF)).replace(' ', '0'); - b1 = packet[i + 1]; - String s2 = String.format("%8s", Integer.toBinaryString(b1 & 0xFF)).replace(' ', '0'); - String hexa = s1 + s2; - int num1 = Integer.parseInt(hexa, 2); - hexasum = hexasum + num1; - String convertTo16 = Integer.toHexString(hexasum); - if (convertTo16.length() > 4) { - hexasum = convertToSixteenBits(convertTo16); - } - } - } - StringBuilder sb = new StringBuilder(Integer.toHexString(hexasum)); - if (sb.length() > 4) { - sb = sb.reverse(); - StringBuilder s1 = new StringBuilder(sb.substring(0, 4)); - s1 = s1.reverse(); - StringBuilder s2 = new StringBuilder(sb.substring(4, sb.length())); - s2 = s2.reverse(); - hexasum = Integer.parseInt(s1.toString(), 16) + Integer.parseInt(s2.toString(), 16); - } - int finalChecksum = calculateChecksum(hexasum); - return OspfUtil.convertToTwoBytes(finalChecksum); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfInterfaceState.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfInterfaceState.java deleted file mode 100644 index 794dc244f1..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfInterfaceState.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.util; - -/** - * Representation of an OSPF Interface states. - */ -public enum OspfInterfaceState { - - DOWN(1), - LOOPBACK(2), - WAITING(3), - POINT2POINT(4), - DROTHER(5), - BDR(6), - DR(7); - - private int value; - - /** - * Creates an instance of interface state. - * - * @param value Interface state value - */ - OspfInterfaceState(int value) { - this.value = value; - } - - /** - * Gets value for Interface state. - * - * @return value Interface state - */ - public int value() { - return value; - } - - /** - * Gets interface state. - * - * @return interface state - */ - public String interfaceState() { - String state = null; - switch (value) { - case 1: - state = "DOWN"; - break; - case 2: - state = "LOOPBACK"; - break; - case 3: - state = "WAITING"; - break; - case 4: - state = "POINT2POINT"; - break; - case 5: - state = "DROTHER"; - break; - case 6: - state = "BDR"; - break; - case 7: - state = "DR"; - break; - default: - break; - } - return state; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfParameters.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfParameters.java deleted file mode 100644 index c8c3382017..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfParameters.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.util; - -/** - * Representation of an OSPF configuration parameters and constants. - */ -public final class OspfParameters { - - public static final int LSREFRESHTIME = 1800; //max time between updates; - public static final int MINLSINTERVAL = 5; // set to 5 second - public static final int MINLSARRIVAL = 1; // set to 1 second - public static final int MAXAGE = 3600; // set to 1 hour in seconds - public static final int CHECKAGE = 300; // set to 5 mins - public static final int MAXAGEDIFF = 900; // set to 15 mins - public static final long MAXSEQUENCENUMBER = 2147483647; - public static final long STARTLSSEQUENCENUM = -2147483647; - public static final int AGECOUNTER = 1; - public static final String VERIFYCHECKSUM = "verifyChecksum"; - public static final String REFRESHLSA = "refreshLsa"; - public static final String MAXAGELSA = "maxAgeLsa"; - public static final int START_NOW = 0; - public static final int TRAFFIC_ENGINEERING = 1; - public static final int INITIAL_BANDWIDTH = 12500000; - public static final int ROUTER = 1; - public static final int NETWORK = 2; - public static final int SUMMARY = 3; - public static final int ASBR_SUMMARY = 4; - public static final int EXTERNAL_LSA = 5; - public static final int LINK_LOCAL_OPAQUE_LSA = 9; - public static final int AREA_LOCAL_OPAQUE_LSA = 10; - public static final int AS_OPAQUE_LSA = 11; - public static final int HELLO = 1; - public static final int DD = 2; - public static final int LSREQUEST = 3; - public static final int LSUPDATE = 4; - public static final int LSACK = 5; - public static final int INFTRA_NS_DELAY = 1; - public static final int BDR = 6; - public static final int DR = 7; - public static final String OPAQUE_ENABLED_OPTION_VALUE = "01000010"; - - private OspfParameters() { - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfUtil.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfUtil.java deleted file mode 100644 index 182b827e6f..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/OspfUtil.java +++ /dev/null @@ -1,432 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.util; - -import com.google.common.primitives.Bytes; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.xml.bind.DatatypeConverter; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.security.SecureRandom; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Random; -import java.util.StringTokenizer; - -/** - * Representation of an OSPF constants and utility methods. - */ -public final class OspfUtil { - public static final int OSPF_VERSION_2 = 2; - public static final int OSPF_VERSION = OSPF_VERSION_2; - public static final int PACKET_MINIMUM_LENGTH = 24; - public static final int METADATA_LEN = 5; - public static final int MINIMUM_FRAME_LEN = 1487; - public static final int OSPF_HEADER_LENGTH = 24; - public static final int LSA_HEADER_LENGTH = 20; - public static final int DD_HEADER_LENGTH = OSPF_HEADER_LENGTH + 8; - public static final int LSREQUEST_LENGTH = 12; - public static final int OSPFPACKET_LENGTH_POS1 = 2; - public static final int OSPFPACKET_LENGTH_POS2 = 3; - public static final int OSPFPACKET_CHECKSUM_POS1 = 12; - public static final int OSPFPACKET_CHECKSUM_POS2 = 13; - public static final int LSAPACKET_CHECKSUM_POS1 = 16; - public static final int LSAPACKET_CHECKSUM_POS2 = 17; - public static final Ip4Address ALL_SPF_ROUTERS = Ip4Address.valueOf("224.0.0.5"); - public static final Ip4Address ALL_DROUTERS = Ip4Address.valueOf("224.0.0.6"); - public static final Ip4Address DEFAULTIP = Ip4Address.valueOf("0.0.0.0"); - public static final int RETRANSMITINTERVAL = 5; - public static final int ONLY_ALL_SPF_ROUTERS = 1; - public static final int JOIN_ALL_DROUTERS = 2; - public static final int INITIALIZE_SET = 1; - public static final int INITIALIZE_NOTSET = 0; - public static final int MORE_SET = 1; - public static final int MORE_NOTSET = 0; - public static final int IS_MASTER = 1; - public static final int NOT_MASTER = 0; - public static final int NOT_ASSIGNED = 0; - public static final int FOUR_BYTES = 4; - public static final int FIVE_BYTES = 5; - public static final int EIGHT_BYTES = 8; - public static final int TWELVE_BYTES = 12; - public static final int EXTERNAL_DESTINATION_LENGTH = 12; - public static final String SHOST = "127.0.0.1"; - public static final int SPORT = 7000; - public static final int MTU = 1500; - public static final char CONFIG_LENGTH = 1498; - public static final char ROUTER_PRIORITY = 0; - public static final int HELLO_PACKET_OPTIONS = 2; - private static final Logger log = - LoggerFactory.getLogger(OspfUtil.class); - - /** - * Creates an instance. - */ - private OspfUtil() { - - } - - /** - * Checks given IPs are in same network or not. - * - * @param ip1 IP address - * @param ip2 IP address - * @param mask network mask - * @return true if both are in same network else false - */ - public static boolean sameNetwork(Ip4Address ip1, Ip4Address ip2, Ip4Address mask) { - - byte[] a1 = ip1.toOctets(); - byte[] a2 = ip2.toOctets(); - byte[] m = mask.toOctets(); - - for (int i = 0; i < a1.length; i++) { - if ((a1[i] & m[i]) != (a2[i] & m[i])) { - return false; - } - } - - return true; - } - - /** - * Converts IP address to long. - * - * @param ipAddress IP address - * @return long value represents IP address - */ - public static long ipAddressToLong(String ipAddress) { - StringTokenizer st = new StringTokenizer(ipAddress, "."); - long ipAsNumber = Long.parseLong(st.nextToken()) * (long) Math.pow(256, 3); - ipAsNumber += Long.parseLong(st.nextToken()) * (long) Math.pow(256, 2); - ipAsNumber += Long.parseLong(st.nextToken()) * 256; - ipAsNumber += +Long.parseLong(st.nextToken()); - - return ipAsNumber; - } - - /** - * Checks option field to see whether opaque enabled or not. - * 2nd Bit in options field of DdPacket represents Opaque. - * 7th bit is external capability. - * This method checks Opaque bit is set in the options or not. - * - * @param options options value - * @return true if opaque enabled else false. - */ - public static boolean isOpaqueEnabled(int options) { - Boolean[] bits = new Boolean[8]; - for (int i = 7; i >= 0; i--) { - bits[i] = (options & (1 << i)) != 0; - } - - List list = Arrays.asList(bits); - Collections.reverse(list); - - //2nd bit is Opaque. - return list.get(1); - } - - /** - * Converts a byte to integer variable. - * - * @param bytesToConvert bytes to convert - * @return integer representation of bytes - */ - public static int byteToInteger(byte[] bytesToConvert) { - final StringBuilder builder = new StringBuilder(); - for (byte eachByte : bytesToConvert) { - builder.append(String.format("%02x", eachByte)); - } - int num = Integer.parseInt(builder.toString(), 16); - return num; - } - - /** - * Converts a byte to long variable. - * - * @param bytesToConvert bytes to convert - * @return long representation of bytes - */ - public static long byteToLong(byte[] bytesToConvert) { - final StringBuilder builder = new StringBuilder(); - for (byte eachByte : bytesToConvert) { - builder.append(String.format("%02x", eachByte)); - } - long num = Long.parseLong(builder.toString(), 16); - return num; - } - - /** - * Creates a random number. - * - * @return random number - */ - public static int createRandomNumber() { - Random rnd = new SecureRandom(); - int randomNumber = 10000000 + rnd.nextInt(90000000); - return randomNumber; - } - - /** - * Reads the LSA header from channel buffer. - * - * @param channelBuffer channel buffer instance - * @return LSA header instance. - */ - public static LsaHeader readLsaHeader(ChannelBuffer channelBuffer) { - //add all the LSA Headers - one header is of 20 bytes - LsaHeader lsaHeader = null; - if (channelBuffer.readableBytes() >= OspfUtil.LSA_HEADER_LENGTH) { - byte[] byteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(byteArray, 0, OspfUtil.FOUR_BYTES); - ChannelBuffer tempBuffer = ChannelBuffers.copiedBuffer(byteArray); - int lsType = byteArray[3]; - if (lsType == OspfParameters.AREA_LOCAL_OPAQUE_LSA || lsType == OspfParameters.LINK_LOCAL_OPAQUE_LSA - || lsType == OspfParameters.AS_OPAQUE_LSA) { - OpaqueLsaHeader header = new OpaqueLsaHeader(); - header.setAge(tempBuffer.readShort()); - header.setOptions(tempBuffer.readByte()); - header.setLsType(tempBuffer.readByte()); - header.setOpaqueType(channelBuffer.readByte()); - header.setOpaqueId(channelBuffer.readUnsignedMedium()); - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - header.setAdvertisingRouter(Ip4Address.valueOf(tempByteArray)); - header.setLsSequenceNo(channelBuffer.readInt()); - header.setLsCheckSum(channelBuffer.readUnsignedShort()); - header.setLsPacketLen(channelBuffer.readShort()); - byte[] opaqueIdBytes = OspfUtil.convertToTwoBytes(header.opaqueId()); - header.setLinkStateId(header.opaqueType() + "." + "0" + "." + - opaqueIdBytes[0] + "." + opaqueIdBytes[1]); - lsaHeader = header; - } else { - LsaHeader header = new LsaHeader(); - header.setAge(tempBuffer.readShort()); - header.setOptions(tempBuffer.readByte()); - header.setLsType(tempBuffer.readByte()); - byte[] tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - try { - header.setLinkStateId(InetAddress.getByAddress(tempByteArray).getHostName()); - } catch (UnknownHostException uhe) { - log.warn("Can't look up host", uhe); - } - tempByteArray = new byte[OspfUtil.FOUR_BYTES]; - channelBuffer.readBytes(tempByteArray, 0, OspfUtil.FOUR_BYTES); - header.setAdvertisingRouter(Ip4Address.valueOf(tempByteArray)); - header.setLsSequenceNo(channelBuffer.readInt()); - header.setLsCheckSum(channelBuffer.readUnsignedShort()); - header.setLsPacketLen(channelBuffer.readShort()); - lsaHeader = header; - } - } - return lsaHeader; - } - - - /** - * Converts an integer to two bytes. - * - * @param numberToConvert number to convert - * @return given number as bytes - */ - public static byte[] convertToTwoBytes(int numberToConvert) { - - byte[] numInBytes = new byte[2]; - String s1 = Integer.toHexString(numberToConvert); - if (s1.length() % 2 != 0) { - s1 = "0" + s1; - } - byte[] hexas = DatatypeConverter.parseHexBinary(s1); - if (hexas.length == 1) { - numInBytes[0] = 0; - numInBytes[1] = hexas[0]; - } else { - numInBytes[0] = hexas[0]; - numInBytes[1] = hexas[1]; - } - return numInBytes; - } - - /** - * Converts a number to three bytes. - * - * @param numberToConvert number to convert - * @return given number as bytes - */ - public static byte[] convertToThreeBytes(int numberToConvert) { - byte[] numInBytes = new byte[3]; - String s1 = Integer.toHexString(numberToConvert); - if (s1.length() % 2 != 0) { - s1 = "0" + s1; - } - byte[] hexas = DatatypeConverter.parseHexBinary(s1); - if (hexas.length == 1) { - numInBytes[0] = 0; - numInBytes[1] = 0; - numInBytes[2] = hexas[0]; - } else if (hexas.length == 2) { - numInBytes[0] = 0; - numInBytes[1] = hexas[0]; - numInBytes[2] = hexas[1]; - } else { - numInBytes[0] = hexas[0]; - numInBytes[1] = hexas[1]; - numInBytes[2] = hexas[2]; - } - return numInBytes; - } - - /** - * Converts a number to four bytes. - * - * @param numberToConvert number to convert - * @return given number as bytes - */ - public static byte[] convertToFourBytes(int numberToConvert) { - - byte[] numInBytes = new byte[4]; - String s1 = Integer.toHexString(numberToConvert); - if (s1.length() % 2 != 0) { - s1 = "0" + s1; - } - byte[] hexas = DatatypeConverter.parseHexBinary(s1); - if (hexas.length == 1) { - numInBytes[0] = 0; - numInBytes[1] = 0; - numInBytes[2] = 0; - numInBytes[3] = hexas[0]; - } else if (hexas.length == 2) { - numInBytes[0] = 0; - numInBytes[1] = 0; - numInBytes[2] = hexas[0]; - numInBytes[3] = hexas[1]; - } else if (hexas.length == 3) { - numInBytes[0] = 0; - numInBytes[1] = hexas[0]; - numInBytes[2] = hexas[1]; - numInBytes[3] = hexas[2]; - } else { - numInBytes[0] = hexas[0]; - numInBytes[1] = hexas[1]; - numInBytes[2] = hexas[2]; - numInBytes[3] = hexas[3]; - } - return numInBytes; - } - - /** - * Converts a number to four bytes. - * - * @param numberToConvert number to convert - * @return given number as bytes - */ - public static byte[] convertToFourBytes(long numberToConvert) { - - byte[] numInBytes = new byte[4]; - String s1 = Long.toHexString(numberToConvert); - if (s1.length() % 2 != 0) { - s1 = "0" + s1; - } - if (s1.length() == 16) { - s1 = s1.substring(8, s1.length()); - } - byte[] hexas = DatatypeConverter.parseHexBinary(s1); - if (hexas.length == 1) { - numInBytes[0] = 0; - numInBytes[1] = 0; - numInBytes[2] = 0; - numInBytes[3] = hexas[0]; - } else if (hexas.length == 2) { - numInBytes[0] = 0; - numInBytes[1] = 0; - numInBytes[2] = hexas[0]; - numInBytes[3] = hexas[1]; - } else if (hexas.length == 3) { - numInBytes[0] = 0; - numInBytes[1] = hexas[0]; - numInBytes[2] = hexas[1]; - numInBytes[3] = hexas[2]; - } else { - numInBytes[0] = hexas[0]; - numInBytes[1] = hexas[1]; - numInBytes[2] = hexas[2]; - numInBytes[3] = hexas[3]; - } - return numInBytes; - } - - /** - * Adds the checksum and length in packet. - * - * @param ospfPacket ospf packet - * @param lengthBytePos1 length byte position - * @param lengthBytePos2 length byte position - * @param checksumBytePos1 checksum byte position - * @param checksumBytePos2 checksum byte position - * @return byte array with checksum and length - */ - public static byte[] addLengthAndCheckSum(byte[] ospfPacket, int lengthBytePos1, int lengthBytePos2, - int checksumBytePos1, int checksumBytePos2) { - //Set the length of the packet - //Get the total length of the packet - int length = ospfPacket.length; - //Convert the lenth to two bytes as the length field is 2 bytes - byte[] lenthInTwoBytes = OspfUtil.convertToTwoBytes(length); - //ospf header 3rd and 4th position represents length - ospfPacket[lengthBytePos1] = lenthInTwoBytes[0]; //assign 1st byte in lengthBytePos1 - ospfPacket[lengthBytePos2] = lenthInTwoBytes[1]; //assign 2st byte in lengthBytePos2 - - //Get the checksum as two bytes. - byte[] checkSumInTwoBytes = new ChecksumCalculator().calculateOspfCheckSum(ospfPacket, - checksumBytePos1, checksumBytePos2); - ospfPacket[checksumBytePos1] = checkSumInTwoBytes[0]; //assign 1st byte in checksumBytePos1 - ospfPacket[checksumBytePos2] = checkSumInTwoBytes[1]; //assign 2st byte in checksumBytePos2 - - return ospfPacket; - } - - /** - * Adds metadata to ospf packet like whether to join multi cast group and destination IP. - * - * @param interfaceIndex interface index - * @param ospfPacket OSPF packet - * @param allDroutersValue whether to join multi cast or not - * @param destinationIp destination ip address - * @return byte array - */ - public static byte[] addMetadata(int interfaceIndex, byte[] ospfPacket, int allDroutersValue, - Ip4Address destinationIp) { - byte[] packet; - byte[] interfaceIndexByteVal = {(byte) interfaceIndex}; - byte[] allDroutersByteVal = {(byte) allDroutersValue}; - byte[] destIpAsBytes = destinationIp.toOctets(); - byte[] metadata = Bytes.concat(interfaceIndexByteVal, allDroutersByteVal); - metadata = Bytes.concat(metadata, destIpAsBytes); - packet = Bytes.concat(ospfPacket, metadata); - - return packet; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/package-info.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/package-info.java deleted file mode 100644 index 28c19e0fca..0000000000 --- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/util/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Implementation of the ospf protocol utilities. - */ -package org.onosproject.ospf.protocol.util; \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/LsaHeaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/LsaHeaderTest.java deleted file mode 100644 index 065a2dfa15..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/LsaHeaderTest.java +++ /dev/null @@ -1,308 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.*; - -/** - * Unit test class for LsaHeader. - */ -public class LsaHeaderTest { - - private LsaHeader lsaHeader; - private int result; - private Ip4Address result1; - private long result2; - private OspfLsaType ospflsaType; - private LsaHeader header; - private byte[] result3; - private LsaHeader lsaHeader1; - private String result4; - - @Before - public void setUp() throws Exception { - lsaHeader = new LsaHeader(); - } - - @After - public void tearDown() throws Exception { - lsaHeader = null; - result1 = null; - ospflsaType = null; - header = null; - result3 = null; - lsaHeader1 = null; - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(lsaHeader.equals(new LsaHeader()), is(true)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - result = lsaHeader.hashCode(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests age() getter method. - */ - @Test - public void testGetAge() throws Exception { - lsaHeader.setAge(10); - result = lsaHeader.age(); - assertThat(result, is(10)); - } - - /** - * Tests age() setter method. - */ - @Test - public void testSetAge() throws Exception { - lsaHeader.setAge(10); - result = lsaHeader.age(); - assertThat(result, is(10)); - } - - /** - * Tests options() getter method. - */ - @Test - public void testGetOptions() throws Exception { - lsaHeader.setOptions(2); - result = lsaHeader.options(); - assertThat(result, is(2)); - } - - /** - * Tests options() setter method. - */ - @Test - public void testSetOptions() throws Exception { - lsaHeader.setOptions(2); - result = lsaHeader.options(); - assertThat(result, is(2)); - } - - /** - * Tests lsType() getter method. - */ - @Test - public void testGetLsType() throws Exception { - lsaHeader.setLsType(1); - result = lsaHeader.lsType(); - assertThat(result, is(1)); - } - - /** - * Tests lsType() setter method. - */ - @Test - public void testSetLsType() throws Exception { - lsaHeader.setLsType(1); - result = lsaHeader.lsType(); - assertThat(result, is(1)); - } - - /** - * Tests linkStateId() getter method. - */ - @Test - public void testGetLinkStateId() throws Exception { - lsaHeader.setLinkStateId("10.226.165.164"); - result4 = lsaHeader.linkStateId(); - assertThat(result4, is("10.226.165.164")); - } - - /** - * Tests linkStateId() setter method. - */ - @Test - public void testSetLinkStateId() throws Exception { - lsaHeader.setLinkStateId("10.226.165.164"); - result4 = lsaHeader.linkStateId(); - assertThat(result4, is("10.226.165.164")); - } - - /** - * Tests advertisingRouter() setter method. - */ - @Test - public void testGetAdvertisingRouter() throws Exception { - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.164")); - result1 = lsaHeader.advertisingRouter(); - assertThat(result1, is(Ip4Address.valueOf("10.226.165.164"))); - } - - /** - * Tests advertisingRouter() setter method. - */ - @Test - public void testSetAdvertisingRouter() throws Exception { - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.164")); - result1 = lsaHeader.advertisingRouter(); - assertThat(result1, is(Ip4Address.valueOf("10.226.165.164"))); - } - - /** - * Tests lsSequenceNo() getter method. - */ - @Test - public void testGetLsSequenceNo() throws Exception { - lsaHeader.setLsSequenceNo(222); - result2 = lsaHeader.lsSequenceNo(); - assertThat(result2, is(222L)); - } - - /** - * Tests lsSequenceNo() setter method. - */ - @Test - public void testSetLsSequenceNo() throws Exception { - lsaHeader.setLsSequenceNo(222); - result2 = lsaHeader.lsSequenceNo(); - assertThat(result2, is(222L)); - } - - /** - * Tests lsCheckSum() getter method. - */ - @Test - public void testGetLsChecksum() throws Exception { - lsaHeader.setLsCheckSum(2); - result = lsaHeader.lsCheckSum(); - assertThat(result, is(2)); - } - - /** - * Tests lsCheckSum() setter method. - */ - @Test - public void testSetLsChecksum() throws Exception { - lsaHeader.setLsCheckSum(2); - result = lsaHeader.lsCheckSum(); - assertThat(result, is(2)); - } - - /** - * Tests lsPacketLen() getter method. - */ - @Test - public void testGetLsPacketLen() throws Exception { - lsaHeader.setLsPacketLen(48); - result = lsaHeader.lsPacketLen(); - assertThat(result, is(48)); - } - - /** - * Tests lsPacketLen() getter method. - */ - @Test - public void testSetLsPacketLen() throws Exception { - lsaHeader.setLsPacketLen(48); - result = lsaHeader.lsPacketLen(); - assertThat(result, is(48)); - } - - /** - * Tests getOspfLsaType() getter method. - */ - @Test - public void testGetOspfLsaType() throws Exception { - lsaHeader.setLsType(1); - ospflsaType = lsaHeader.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.ROUTER)); - lsaHeader.setLsType(2); - ospflsaType = lsaHeader.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.NETWORK)); - lsaHeader.setLsType(3); - ospflsaType = lsaHeader.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.SUMMARY)); - lsaHeader.setLsType(4); - ospflsaType = lsaHeader.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.ASBR_SUMMARY)); - lsaHeader.setLsType(5); - ospflsaType = lsaHeader.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.EXTERNAL_LSA)); - lsaHeader.setLsType(6); - ospflsaType = lsaHeader.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.UNDEFINED)); - } - - /** - * Tests lsaHeader() getter method. - */ - @Test - public void testGetLsaHeader() throws Exception { - header = (LsaHeader) lsaHeader.lsaHeader(); - assertThat(header, instanceOf(LsaHeader.class)); - } - - /** - * Tests getLsaHeaderAsByteArray() method. - */ - @Test - public void testGetLsaHeaderAsByteArray() throws Exception { - result3 = lsaHeader.getLsaHeaderAsByteArray(); - assertThat(result3, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(lsaHeader.toString(), is(notNullValue())); - } - - /** - * Tests populateHeader() method. - */ - @Test - public void testPopulateHeader() throws Exception { - lsaHeader1 = new LsaHeader(); - lsaHeader1.setLsPacketLen(10); - lsaHeader1.setAdvertisingRouter(Ip4Address.valueOf("1.1.1.1")); - lsaHeader1.setOptions(2); - lsaHeader1.setAge(20); - lsaHeader1.setLsType(3); - lsaHeader1.setLinkStateId("2.2.2.2"); - lsaHeader1.setLsCheckSum(1234); - lsaHeader1.setLsSequenceNo(456789); - lsaHeader.populateHeader(lsaHeader1); - assertThat(lsaHeader1, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeaderTest.java deleted file mode 100644 index f439af4d84..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/OpaqueLsaHeaderTest.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa; - -import org.hamcrest.Matchers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for OpaqueLsaHeader. - */ -public class OpaqueLsaHeaderTest { - - private OpaqueLsaHeader opaqueHeader; - private OpaqueLsaHeader opaqueLsaHeader1; - private int num; - private byte[] result; - private int result1; - - @Before - public void setUp() throws Exception { - opaqueHeader = new OpaqueLsaHeader(); - } - - @After - public void tearDown() throws Exception { - opaqueHeader = null; - opaqueLsaHeader1 = null; - result = null; - } - - /** - * Tests populateHeader() method. - */ - @Test - public void testPopulateHeader() throws Exception { - opaqueLsaHeader1 = new OpaqueLsaHeader(); - opaqueLsaHeader1.setLsPacketLen(10); - opaqueLsaHeader1.setAdvertisingRouter(Ip4Address.valueOf("1.1.1.1")); - opaqueLsaHeader1.setOptions(2); - opaqueLsaHeader1.setAge(20); - opaqueLsaHeader1.setLsType(3); - opaqueLsaHeader1.setOpaqueId(1); - opaqueLsaHeader1.setOpaqueType(3); - opaqueLsaHeader1.setLsCheckSum(1234); - opaqueLsaHeader1.setLsSequenceNo(456789); - opaqueLsaHeader1.populateHeader(opaqueLsaHeader1); - assertThat(opaqueLsaHeader1, is(notNullValue())); - } - - /** - * Tests opaqueId() getter method. - */ - @Test - public void testGetOpaqueId() throws Exception { - opaqueHeader.setOpaqueId(1); - num = opaqueHeader.opaqueId(); - assertThat(num, is(1)); - } - - /** - * Tests opaqueId() setter method. - */ - @Test - public void testSetOpaqueId() throws Exception { - opaqueHeader.setOpaqueId(1); - num = opaqueHeader.opaqueId(); - assertThat(num, is(1)); - } - - /** - * Tests opaqueType() getter method. - */ - @Test - public void testGetOpaqueType() throws Exception { - opaqueHeader.setOpaqueType(1); - num = opaqueHeader.opaqueType(); - assertThat(num, is(1)); - } - - /** - * Tests opaqueType() setter method. - */ - @Test - public void testSetOpaqueType() throws Exception { - opaqueHeader.setOpaqueType(1); - num = opaqueHeader.opaqueType(); - assertThat(num, is(1)); - } - - /** - * Tests getOpaqueLsaHeaderAsByteArray() method. - */ - @Test - public void testGetOpaqueLsaHeaderAsByteArray() throws Exception { - result = opaqueHeader.getOpaqueLsaHeaderAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(opaqueHeader.toString(), is(notNullValue())); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashcode() throws Exception { - - result1 = opaqueHeader.hashCode(); - assertThat(result1, is(Matchers.notNullValue())); - - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/TlvHeaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/TlvHeaderTest.java deleted file mode 100644 index 0b232c325b..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/TlvHeaderTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for Tlv Header. - */ -public class TlvHeaderTest { - - private TlvHeader tlvHeader; - private byte[] result; - - - @Before - public void setUp() throws Exception { - tlvHeader = new TlvHeader(); - } - - @After - public void tearDown() throws Exception { - tlvHeader = null; - result = null; - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(tlvHeader.toString(), is(notNullValue())); - } - - /** - * Tests tlvLength() getter method. - */ - @Test - public void testGetTlvLength() throws Exception { - tlvHeader.setTlvLength(2); - assertThat(tlvHeader.tlvLength(), is(2)); - } - - /** - * Tests tlvLength() setter method. - */ - @Test - public void testSetTlvLength() throws Exception { - tlvHeader.setTlvLength(2); - assertThat(tlvHeader.tlvLength(), is(2)); - } - - /** - * Tests tlvType() getter method. - */ - @Test - public void testGetTlvType() throws Exception { - tlvHeader.setTlvType(2); - assertThat(tlvHeader.tlvType(), is(2)); - } - - /** - * Tests tlvType() setter method. - */ - @Test - public void testSetTlvType() throws Exception { - tlvHeader.setTlvType(2); - assertThat(tlvHeader.tlvType(), is(2)); - } - - /** - * Tests getTlvHeaderAsByteArray() method. - */ - @Test - public void testGetTlvHeaderAsByteArray() throws Exception { - result = tlvHeader.getTlvHeaderAsByteArray(); - assertThat(result, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroupTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroupTest.java deleted file mode 100644 index 778588b22c..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/AdministrativeGroupTest.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for AdministrativeGroup. - */ -public class AdministrativeGroupTest { - - private final byte[] packet = {0, 0, 0, 1}; - private AdministrativeGroup administrativeGroup; - private ChannelBuffer channelBuffer; - private TlvHeader tlvHeader; - private byte[] result; - - @Before - public void setUp() throws Exception { - administrativeGroup = new AdministrativeGroup(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - administrativeGroup = null; - channelBuffer = null; - tlvHeader = null; - } - - /** - * Tests administrativeGroup() getter method. - */ - @Test - public void testGetAdministrativeGroup() throws Exception { - administrativeGroup.setAdministrativeGroup(1); - assertThat(administrativeGroup.administrativeGroup(), is(1)); - } - - /** - * Tests administrativeGroup() setter method. - */ - @Test - public void testSetAdministrativeGroup() throws Exception { - administrativeGroup.setAdministrativeGroup(1); - assertThat(administrativeGroup.administrativeGroup(), is(1)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(9); - tlvHeader.setTlvLength(4); - administrativeGroup = new AdministrativeGroup(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - administrativeGroup.readFrom(channelBuffer); - assertThat(administrativeGroup.administrativeGroup(), is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = administrativeGroup.asBytes(); - assertThat(result, is(notNullValue())); - } - - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = administrativeGroup.getLinkSubTypeTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(administrativeGroup.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkIdTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkIdTest.java deleted file mode 100644 index 718492f5ac..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkIdTest.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for LinkId. - */ -public class LinkIdTest { - - private final byte[] packet = {1, 1, 1, 1}; - private final byte[] packet1 = {0, 0, 1}; - private LinkId linkId; - private TlvHeader tlvHeader; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - linkId = new LinkId(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - linkId = null; - channelBuffer = null; - tlvHeader = null; - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(linkId.toString(), is(notNullValue())); - } - - /** - * Tests linkId() getter method. - */ - @Test - public void testGetLinkId() throws Exception { - linkId.setLinkId("1.1.1.1"); - assertThat(linkId, is(notNullValue())); - } - - /** - * Tests linkId() setter method. - */ - @Test - public void testSetLinkId() throws Exception { - linkId.setLinkId("1.1.1.1"); - assertThat(linkId, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(2); - tlvHeader.setTlvLength(4); - linkId = new LinkId(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - linkId.readFrom(channelBuffer); - assertThat(linkId, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test(expected = Exception.class) - public void testReadFrom1() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(2); - tlvHeader.setTlvLength(4); - linkId = new LinkId(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - linkId.readFrom(channelBuffer); - assertThat(linkId, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = linkId.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = linkId.getLinkSubTypeTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkTypeTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkTypeTest.java deleted file mode 100644 index 727b0d1f82..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LinkTypeTest.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for LinkType. - */ -public class LinkTypeTest { - - private final byte[] packet = {0, 0, 0, 1}; - private final byte[] packet1 = {0, 0, 1}; - private LinkType linkType; - private byte[] result; - private ChannelBuffer channelBuffer; - private TlvHeader tlvHeader; - - @Before - public void setUp() throws Exception { - linkType = new LinkType(); - } - - @After - public void tearDown() throws Exception { - linkType = null; - channelBuffer = null; - tlvHeader = null; - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(linkType.toString(), is(notNullValue())); - } - - /** - * Tests linkType() getter method. - */ - @Test - public void testGetLinkType() throws Exception { - linkType.setLinkType(1); - assertThat(linkType, is(notNullValue())); - } - - /** - * Tests linkType() setter method. - */ - @Test - public void testSetLinkType() throws Exception { - linkType.setLinkType(1); - assertThat(linkType, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(1); - tlvHeader.setTlvLength(4); - linkType = new LinkType(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - linkType.readFrom(channelBuffer); - assertThat(linkType, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom1() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(1); - tlvHeader.setTlvLength(4); - linkType = new LinkType(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - linkType.readFrom(channelBuffer); - assertThat(linkType, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = linkType.asBytes(); - assertThat(result, is(notNullValue())); - } - - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = linkType.getLinkSubTypeTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddressTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddressTest.java deleted file mode 100644 index 7e551ceec9..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/LocalInterfaceIpAddressTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for LocalInterfaceIpAddress. - */ -public class LocalInterfaceIpAddressTest { - - private final byte[] packet = {1, 1, 1, 1}; - private final byte[] packet1 = {}; - private LocalInterfaceIpAddress localInterfaceIpAddress; - private TlvHeader tlvHeader; - private byte[] result; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - localInterfaceIpAddress = new LocalInterfaceIpAddress(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - localInterfaceIpAddress = null; - tlvHeader = null; - result = null; - channelBuffer = null; - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(localInterfaceIpAddress.toString(), is(notNullValue())); - } - - /** - * Tests addLocalInterfaceIPAddress() method. - */ - @Test - public void testAddLocalInterfaceIPAddress() throws Exception { - localInterfaceIpAddress.addLocalInterfaceIPAddress("1.1.1.1"); - assertThat(localInterfaceIpAddress, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(3); - tlvHeader.setTlvLength(4); - localInterfaceIpAddress = new LocalInterfaceIpAddress(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - localInterfaceIpAddress.readFrom(channelBuffer); - assertThat(localInterfaceIpAddress, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom1() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(3); - tlvHeader.setTlvLength(4); - localInterfaceIpAddress = new LocalInterfaceIpAddress(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - localInterfaceIpAddress.readFrom(channelBuffer); - assertThat(localInterfaceIpAddress, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = localInterfaceIpAddress.asBytes(); - assertThat(result, is(notNullValue())); - } - - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = localInterfaceIpAddress.getLinkSubTypeTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } -} diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidthTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidthTest.java deleted file mode 100644 index 090988a324..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumBandwidthTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for MaximumBandwidth. - */ -public class MaximumBandwidthTest { - - private final byte[] packet = {0, 0, 0, 0}; - private MaximumBandwidth maximumBandwidth; - private TlvHeader header; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - maximumBandwidth = new MaximumBandwidth(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - maximumBandwidth = null; - header = null; - channelBuffer = null; - result = null; - } - - /** - * Tests maximumBandwidth() setter method. - */ - @Test - public void testSetMaximumBandwidth() throws Exception { - maximumBandwidth.setMaximumBandwidth(123456.00f); - assertThat(maximumBandwidth, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - header = new TlvHeader(); - header.setTlvType(6); - header.setTlvLength(4); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - maximumBandwidth = new MaximumBandwidth(header); - maximumBandwidth.readFrom(channelBuffer); - assertThat(maximumBandwidth, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = maximumBandwidth.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(maximumBandwidth.toString(), is(notNullValue())); - } -} diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidthTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidthTest.java deleted file mode 100644 index e0a00ed27e..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/MaximumReservableBandwidthTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for MaximumReservableBandwidth. - */ -public class MaximumReservableBandwidthTest { - - private final byte[] packet = {0, 0, 0, 0}; - private MaximumReservableBandwidth maximumReservableBandwidth; - private TlvHeader header; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - maximumReservableBandwidth = new MaximumReservableBandwidth(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - maximumReservableBandwidth = null; - header = null; - channelBuffer = null; - result = null; - } - - - /** - * Tests maximumBandwidth() setter method. - */ - @Test - public void testSetMaximumBandwidth() throws Exception { - maximumReservableBandwidth.setMaximumBandwidth(123456.78f); - assertThat(maximumReservableBandwidth, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - header = new TlvHeader(); - header.setTlvType(6); - header.setTlvLength(4); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - maximumReservableBandwidth = new MaximumReservableBandwidth(header); - maximumReservableBandwidth.readFrom(channelBuffer); - assertThat(maximumReservableBandwidth, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = maximumReservableBandwidth.asBytes(); - assertThat(result, is(notNullValue())); - } - - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = maximumReservableBandwidth.getLinksubTypeTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(maximumReservableBandwidth.toString(), is(notNullValue())); - } -} diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddressTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddressTest.java deleted file mode 100644 index b534f5eac2..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/RemoteInterfaceIpAddressTest.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - - -/** - * Unit test class for RemoteInterfaceIpAddress. - */ -public class RemoteInterfaceIpAddressTest { - - private final byte[] packet = {1, 1, 1, 1}; - private final byte[] packet1 = {}; - private byte[] result; - private TlvHeader tlvHeader; - private RemoteInterfaceIpAddress remoteInterfaceIpAddress; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - remoteInterfaceIpAddress = new RemoteInterfaceIpAddress(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - remoteInterfaceIpAddress = null; - result = null; - tlvHeader = null; - channelBuffer = null; - } - - /** - * Tests addRemoteInterfaceAddress() method. - */ - @Test - public void testAddRemoteInterfaceIpAddress() throws Exception { - remoteInterfaceIpAddress.addRemoteInterfaceAddress("1.1.1.1"); - assertThat(remoteInterfaceIpAddress, is(notNullValue())); - } - - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(4); - tlvHeader.setTlvLength(4); - remoteInterfaceIpAddress = new RemoteInterfaceIpAddress(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - remoteInterfaceIpAddress.readFrom(channelBuffer); - assertThat(remoteInterfaceIpAddress, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom1() throws Exception { - tlvHeader = new TlvHeader(); - tlvHeader.setTlvType(4); - tlvHeader.setTlvLength(4); - remoteInterfaceIpAddress = new RemoteInterfaceIpAddress(tlvHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - remoteInterfaceIpAddress.readFrom(channelBuffer); - assertThat(remoteInterfaceIpAddress, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = remoteInterfaceIpAddress.asBytes(); - assertThat(result, is(notNullValue())); - } - - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = remoteInterfaceIpAddress.getLinkSubTypeTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(remoteInterfaceIpAddress.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetricTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetricTest.java deleted file mode 100644 index 078ef4ef8f..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/TrafficEngineeringMetricTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for TrafficEngineeringMetric. - */ -public class TrafficEngineeringMetricTest { - - private final byte[] packet = {0, 0, 1, 1}; - private TrafficEngineeringMetric trafficEngineeringMetric; - private TlvHeader header; - private byte[] result; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - trafficEngineeringMetric = new TrafficEngineeringMetric(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - trafficEngineeringMetric = null; - header = null; - result = null; - channelBuffer = null; - } - - - /** - * Tests trafficEngineeringMetric() setter method. - */ - @Test - public void testSetTrafficEngineeringMetric() throws Exception { - trafficEngineeringMetric.setTrafficEngineeringMetric(123456789L); - assertThat(trafficEngineeringMetric, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - header = new TlvHeader(); - header.setTlvLength(4); - header.setTlvType(5); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - trafficEngineeringMetric = new TrafficEngineeringMetric(header); - trafficEngineeringMetric.readFrom(channelBuffer); - assertThat(trafficEngineeringMetric, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = trafficEngineeringMetric.asBytes(); - assertThat(result, is(notNullValue())); - } - - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = trafficEngineeringMetric.getLinkSubTypeTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(trafficEngineeringMetric.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubTypeTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubTypeTest.java deleted file mode 100644 index 7ff01de9fa..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnknownLinkSubTypeTest.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for UnknownLinkSubType. - */ -public class UnknownLinkSubTypeTest { - private final byte[] packet = {0, 114, 0, 4, 0, 0, 0, 1}; - private UnknownLinkSubType unknownLinkSubType; - private TlvHeader header; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - unknownLinkSubType = new UnknownLinkSubType(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - unknownLinkSubType = null; - header = null; - } - - /** - * Tests value() getter method. - */ - @Test - public void testValue() throws Exception { - unknownLinkSubType.setValue(packet); - assertThat(unknownLinkSubType.value(), is(notNullValue())); - } - - /** - * Tests value() setter method. - */ - @Test - public void testSetValue() throws Exception { - unknownLinkSubType.setValue(packet); - assertThat(unknownLinkSubType.value(), is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(114); - unknownLinkSubType = new UnknownLinkSubType(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - unknownLinkSubType.readFrom(channelBuffer); - assertThat(unknownLinkSubType, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test(expected = Exception.class) - public void testAsBytes() throws Exception { - result = unknownLinkSubType.asBytes(); - assertThat(result, is(notNullValue())); - } - - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(packet); - unknownLinkSubType.readFrom(channelBuffer); - result = unknownLinkSubType.getLinkSubTypeTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(unknownLinkSubType.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidthTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidthTest.java deleted file mode 100644 index 9287546055..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/linksubtype/UnreservedBandwidthTest.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.linksubtype; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for OspfRouterId. - */ -public class UnreservedBandwidthTest { - - private final byte[] packet = {0, 0, 0, 1}; - private UnreservedBandwidth unreservedBandwidth; - private TlvHeader header; - private byte[] result; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - unreservedBandwidth = new UnreservedBandwidth(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - unreservedBandwidth = null; - header = null; - result = null; - channelBuffer = null; - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(unreservedBandwidth.toString(), is(notNullValue())); - } - - /** - * Tests addUnReservedBandwidth() method. - */ - @Test - public void testAddUnReservedBandwidth() throws Exception { - unreservedBandwidth.addUnReservedBandwidth(123456.78f); - assertThat(unreservedBandwidth, is(notNullValue())); - } - - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - header = new TlvHeader(); - header.setTlvLength(4); - header.setTlvType(8); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - unreservedBandwidth = new UnreservedBandwidth(header); - unreservedBandwidth.readFrom(channelBuffer); - unreservedBandwidth.readFrom(channelBuffer); - assertThat(unreservedBandwidth, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = unreservedBandwidth.asBytes(); - assertThat(result, is(notNullValue())); - } - - - /** - * Tests getLinkSubTypeTlvBodyAsByteArray() method. - */ - @Test - public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception { - result = unreservedBandwidth.getLinkSubTypeTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestinationTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestinationTest.java deleted file mode 100644 index 30e393ddaf..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfExternalDestinationTest.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.subtypes; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for OspfRouterId. - */ -public class OspfExternalDestinationTest { - - private static final Ip4Address LOCAL_ADDRESS = Ip4Address.valueOf("127.0.0.1"); - - private OspfExternalDestination ospfExternalDestination; - - @Before - public void setUp() throws Exception { - ospfExternalDestination = new OspfExternalDestination(); - } - - @After - public void tearDown() throws Exception { - ospfExternalDestination = null; - } - - /** - * Tests isType1orType2Metric() getter method. - */ - @Test - public void testIsType1orType2Metric() throws Exception { - ospfExternalDestination.setType1orType2Metric(true); - assertThat(ospfExternalDestination.isType1orType2Metric(), is(true)); - } - - /** - * Tests isType1orType2Metric() setter method. - */ - @Test - public void testSetType1orType2Metric() throws Exception { - ospfExternalDestination.setType1orType2Metric(true); - assertThat(ospfExternalDestination.isType1orType2Metric(), is(true)); - } - - /** - * Tests metric() getter method. - */ - @Test - public void testGetMetric() throws Exception { - ospfExternalDestination.setMetric(100); - assertThat(ospfExternalDestination.metric(), is(100)); - } - - /** - * Tests metric() setter method. - */ - @Test - public void testSetMetric() throws Exception { - ospfExternalDestination.setMetric(100); - assertThat(ospfExternalDestination.metric(), is(100)); - } - - /** - * Tests forwardingAddress() getter method. - */ - @Test - public void testGetForwardingAddress() throws Exception { - ospfExternalDestination.setForwardingAddress(LOCAL_ADDRESS); - assertThat(ospfExternalDestination.forwardingAddress(), is(LOCAL_ADDRESS)); - - } - - /** - * Tests forwardingAddress() setter method. - */ - @Test - public void testSetForwardingAddress() throws Exception { - ospfExternalDestination.setForwardingAddress(LOCAL_ADDRESS); - assertThat(ospfExternalDestination.forwardingAddress(), is(LOCAL_ADDRESS)); - } - - /** - * Tests externalRouterTag() getter method. - */ - @Test - public void testGetExternalRouterTag() throws Exception { - ospfExternalDestination.setExternalRouterTag(100); - assertThat(ospfExternalDestination.externalRouterTag(), is(100)); - } - - /** - * Tests externalRouterTag() setter method. - */ - @Test - public void testSetExternalRouterTag() throws Exception { - ospfExternalDestination.setExternalRouterTag(100); - assertThat(ospfExternalDestination.externalRouterTag(), is(100)); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(ospfExternalDestination.toString(), is(notNullValue())); - } -} diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLinkTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLinkTest.java deleted file mode 100644 index a129ed053f..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/subtypes/OspfLsaLinkTest.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.subtypes; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for OspfLsaLink. - */ -public class OspfLsaLinkTest { - - private OspfLsaLink ospfLsaLink; - - @Before - public void setUp() throws Exception { - ospfLsaLink = new OspfLsaLink(); - } - - @After - public void tearDown() throws Exception { - ospfLsaLink = null; - } - - /** - * Tests linkId() getter method. - */ - @Test - public void testGetLinkID() throws Exception { - ospfLsaLink.setLinkId("1.1.1.1"); - assertThat(ospfLsaLink.linkId(), is("1.1.1.1")); - } - - /** - * Tests linkId() setter method. - */ - @Test - public void testSetLinkID() throws Exception { - ospfLsaLink.setLinkId("1.1.1.1"); - assertThat(ospfLsaLink.linkId(), is("1.1.1.1")); - } - - /** - * Tests linkData() getter method. - */ - @Test - public void testGetLinkData() throws Exception { - ospfLsaLink.setLinkData("1.1.1.1"); - assertThat(ospfLsaLink.linkData(), is("1.1.1.1")); - } - - /** - * Tests linkData() setter method. - */ - @Test - public void testSetLinkData() throws Exception { - ospfLsaLink.setLinkData("1.1.1.1"); - assertThat(ospfLsaLink.linkData(), is("1.1.1.1")); - } - - /** - * Tests linkType() getter method. - */ - @Test - public void testGetLinkType() throws Exception { - ospfLsaLink.setLinkType(1); - assertThat(ospfLsaLink.linkType(), is(1)); - } - - /** - * Tests linkType() setter method. - */ - @Test - public void testSetLinkType() throws Exception { - ospfLsaLink.setLinkType(1); - assertThat(ospfLsaLink.linkType(), is(1)); - } - - /** - * Tests metric() getter method. - */ - @Test - public void testGetMetric() throws Exception { - ospfLsaLink.setMetric(100); - assertThat(ospfLsaLink.metric(), is(100)); - } - - /** - * Tests metric() setter method. - */ - @Test - public void testSetMetric() throws Exception { - ospfLsaLink.setMetric(100); - assertThat(ospfLsaLink.metric(), is(100)); - } - - /** - * Tests tos() getter method. - */ - @Test - public void testGetTos() throws Exception { - ospfLsaLink.setTos(100); - assertThat(ospfLsaLink.tos(), is(100)); - } - - /** - * Tests tos() setter method. - */ - @Test - public void testSetTos() throws Exception { - ospfLsaLink.setTos(100); - assertThat(ospfLsaLink.tos(), is(100)); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(ospfLsaLink.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlvTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlvTest.java deleted file mode 100644 index b28e7e0a9a..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/LinkTlvTest.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.tlvtypes; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.*; - -/** - * Unit test class for LinkTlv. - */ -public class LinkTlvTest { - - private final byte[] packet1 = {0, 9, 0, 4, 0, 0, 0, 1}; - private final byte[] packet2 = {0, 1, 0, 4, 0, 0, 0, 1}; - private final byte[] packet3 = {0, 2, 0, 4, 0, 0, 0, 1}; - private final byte[] packet4 = {0, 3, 0, 4, 0, 0, 0, 1}; - private final byte[] packet5 = {0, 4, 0, 4, 0, 0, 0, 1}; - private final byte[] packet6 = {0, 6, 0, 4, 0, 0, 0, 1}; - private final byte[] packet7 = {0, 7, 0, 4, 0, 0, 0, 1}; - private final byte[] packet8 = {0, 8, 0, 4, 0, 0, 0, 1}; - private final byte[] packet9 = {0, 9, 0, 4, 0, 0, 0, 1, - 0, 9, 0, 4, 0, 0, 0, 1, - 0, 1, 0, 4, 0, 0, 0, 1, - 0, 2, 0, 4, 0, 0, 0, 1, - 0, 3, 0, 4, 0, 0, 0, 1, - 0, 4, 0, 4, 0, 0, 0, 1, - 0, 6, 0, 4, 0, 0, 0, 1, - 0, 7, 0, 4, 0, 0, 0, 1, - 0, 8, 0, 4, 0, 0, 0, 1, - }; - private LinkTlv linkTlv; - private TlvHeader header; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - linkTlv = new LinkTlv(new TlvHeader()); - - } - - @After - public void tearDown() throws Exception { - linkTlv = null; - header = null; - channelBuffer = null; - result = null; - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(linkTlv.toString(), is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(9); - linkTlv = new LinkTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - linkTlv.readFrom(channelBuffer); - assertThat(linkTlv, is(notNullValue())); - - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(1); - linkTlv = new LinkTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet2); - linkTlv.readFrom(channelBuffer); - assertThat(linkTlv, is(notNullValue())); - - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(2); - linkTlv = new LinkTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet3); - linkTlv.readFrom(channelBuffer); - assertThat(linkTlv, is(notNullValue())); - - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(3); - linkTlv = new LinkTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet4); - linkTlv.readFrom(channelBuffer); - assertThat(linkTlv, is(notNullValue())); - - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(4); - linkTlv = new LinkTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet5); - linkTlv.readFrom(channelBuffer); - assertThat(linkTlv, is(notNullValue())); - - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(5); - linkTlv = new LinkTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - linkTlv.readFrom(channelBuffer); - assertThat(linkTlv, is(notNullValue())); - - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(6); - linkTlv = new LinkTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet6); - linkTlv.readFrom(channelBuffer); - assertThat(linkTlv, is(notNullValue())); - - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(7); - linkTlv = new LinkTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet7); - linkTlv.readFrom(channelBuffer); - assertThat(linkTlv, is(notNullValue())); - - header = new TlvHeader(); - header.setTlvLength(8); - header.setTlvType(8); - linkTlv = new LinkTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet8); - linkTlv.readFrom(channelBuffer); - assertThat(linkTlv, is(notNullValue())); - assertThat(linkTlv, instanceOf(LinkTlv.class)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = linkTlv.asBytes(); - assertThat(result, is(notNullValue())); - } - - - /** - * Tests getTlvBodyAsByteArray() method. - */ - @Test - public void testGetTlvBodyAsByteArray() throws Exception { - - channelBuffer = ChannelBuffers.copiedBuffer(packet9); - linkTlv.readFrom(channelBuffer); - - result = linkTlv.getTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlvTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlvTest.java deleted file mode 100644 index 8a250c9b67..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/tlvtypes/RouterTlvTest.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.tlvtypes; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.protocol.lsa.TlvHeader; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.*; - -/** - * Unit test class for RouterTlv. - */ -public class RouterTlvTest { - - private final byte[] packet = {1, 1, 1, 1}; - private final byte[] packet1 = {1, 1, 1}; - private RouterTlv rtlv; - private TlvHeader header; - private ChannelBuffer channelBuffer; - private byte[] result; - - @Before - public void setUp() throws Exception { - rtlv = new RouterTlv(new TlvHeader()); - } - - @After - public void tearDown() throws Exception { - rtlv = null; - header = null; - channelBuffer = null; - result = null; - } - - /** - * Tests routerAddress() getter method. - */ - @Test - public void testGetRouterAddress() throws Exception { - rtlv.setRouterAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(rtlv.routerAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests routerAddress() setter method. - */ - @Test - public void testSetRouterAddress() throws Exception { - rtlv.setRouterAddress(Ip4Address.valueOf("1.1.1.1")); - assertThat(rtlv.routerAddress(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - header = new TlvHeader(); - header.setTlvType(1); - header.setTlvLength(4); - rtlv = new RouterTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - rtlv.readFrom(channelBuffer); - assertThat(rtlv, is(notNullValue())); - assertThat(rtlv, instanceOf(RouterTlv.class)); - } - - /** - * Tests readFrom() method. - */ - @Test(expected = Exception.class) - public void testReadFrom1() throws Exception { - header = new TlvHeader(); - header.setTlvType(1); - header.setTlvLength(4); - rtlv = new RouterTlv(header); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - rtlv.readFrom(channelBuffer); - assertThat(rtlv, is(notNullValue())); - assertThat(rtlv, instanceOf(RouterTlv.class)); - } - - /** - * Tests asBytes() method. - */ - @Test(expected = Exception.class) - public void testAsBytes() throws Exception { - result = rtlv.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getTlvBodyAsByteArray() method. - */ - @Test(expected = Exception.class) - public void testGetTlvBodyAsByteArray() throws Exception { - result = rtlv.getTlvBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(rtlv.toString(), is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsaTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsaTest.java deleted file mode 100644 index 5bf7d0111d..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/AsbrSummaryLsaTest.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.LsaHeader; - - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for AsbrSummaryLsa. - */ -public class AsbrSummaryLsaTest { - - private final Ip4Address ipAddress = Ip4Address.valueOf("10.226.165.164"); - private AsbrSummaryLsa asbrSummaryLsa; - private Ip4Address result; - private int result1; - private int num; - private byte[] inputByteArray; - private byte[] result2; - private ChannelBuffer channelBuffer; - private LsaHeader lsaHeader; - private OspfLsaType ospflsaType; - private String result3; - private boolean result4; - - @Before - public void setUp() throws Exception { - asbrSummaryLsa = new AsbrSummaryLsa(new LsaHeader()); - } - - @After - public void tearDown() throws Exception { - asbrSummaryLsa = null; - } - - /** - * Tests networkMask() getter method. - */ - @Test - public void testGetNetworkMask() throws Exception { - asbrSummaryLsa.setNetworkMask(ipAddress); - result = asbrSummaryLsa.networkMask(); - assertThat(result, is(notNullValue())); - assertThat(result, is(ipAddress)); - } - - /** - * Tests networkMask() setter method. - */ - @Test - public void testSetNetworkMask() throws Exception { - asbrSummaryLsa.setNetworkMask(ipAddress); - result = asbrSummaryLsa.networkMask(); - assertThat(result, is(notNullValue())); - assertThat(result, is(ipAddress)); - } - - /** - * Tests metric() getter method. - */ - @Test - public void testGetMetric() throws Exception { - num = 10; - asbrSummaryLsa.setMetric(num); - result1 = asbrSummaryLsa.metric(); - assertThat(result1, is(notNullValue())); - assertThat(result1, is(num)); - } - - /** - * Tests metric() setter method. - */ - @Test - public void testSetMetric() throws Exception { - num = 20; - asbrSummaryLsa.setMetric(num); - result1 = asbrSummaryLsa.metric(); - assertThat(result1, is(notNullValue())); - assertThat(result1, is(num)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - inputByteArray = createByteForNetworkLsa(); - lsaHeader = createLsaHeader(); - asbrSummaryLsa = new AsbrSummaryLsa(lsaHeader); - channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray); - asbrSummaryLsa.readFrom(channelBuffer); - assertThat(asbrSummaryLsa, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test(expected = Exception.class) - public void testReadFrom1() throws Exception { - byte[] temp = {0, 1, 2, 3}; - inputByteArray = temp; - lsaHeader = createLsaHeader(); - asbrSummaryLsa = new AsbrSummaryLsa(lsaHeader); - channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray); - asbrSummaryLsa.readFrom(channelBuffer); - assertThat(asbrSummaryLsa, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test(expected = Exception.class) - public void testAsBytes() throws Exception { - result2 = asbrSummaryLsa.asBytes(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test(expected = Exception.class) - public void testGetLsaBodyAsByteArray() throws Exception { - result2 = asbrSummaryLsa.getLsaBodyAsByteArray(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests ospfLsaType() getter method. - */ - @Test - public void testGetOspfLsaType() throws Exception { - - ospflsaType = asbrSummaryLsa.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.ASBR_SUMMARY)); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - - result3 = asbrSummaryLsa.toString(); - assertThat(result3, is(notNullValue())); - - } - - /** - * Tests hashcode() method. - */ - @Test - public void testHashcode() throws Exception { - - result1 = asbrSummaryLsa.hashCode(); - assertThat(result1, is(notNullValue())); - - } - - /** - * Tests equals() method. - */ - @Test - public void testEqual() throws Exception { - - result4 = asbrSummaryLsa.equals(new AsbrSummaryLsa(new LsaHeader())); - assertThat(result4, is(true)); - - } - - /** - * Utility method used by junit methods. - */ - private byte[] createByteForNetworkLsa() { - byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64, - -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, - 1}; - return packet; - } - - /** - * Utility method used by junit methods. - */ - private LsaHeader createLsaHeader() { - lsaHeader = new LsaHeader(); - lsaHeader.setLsType(1); - lsaHeader.setLsPacketLen(48); - lsaHeader.setLsCheckSum(10); - lsaHeader.setAge(4); - lsaHeader.setLinkStateId("10.226.165.164"); - lsaHeader.setLsSequenceNo(250); - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - lsaHeader.setOptions(2); - return lsaHeader; - } -} diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsaTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsaTest.java deleted file mode 100644 index d5a4256e63..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/ExternalLsaTest.java +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.subtypes.OspfExternalDestination; - -import java.net.UnknownHostException; -import java.util.Vector; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for ExternalLsa. - */ -public class ExternalLsaTest { - - private static final Ip4Address LOCAL_ADDRESS = Ip4Address.valueOf("127.0.0.1"); - - private ExternalLsa externalLsa; - private Vector externalDestinations = new Vector(); - private Ip4Address result; - private OspfExternalDestination ospfExternalDestination; - private OspfExternalDestination ospfExternalDestination1; - private LsaHeader lsaHeader; - private byte[] inputByteArray; - private ChannelBuffer channelBuffer; - private byte[] result1; - private OspfLsaType ospflsaType; - private int result2; - - @Before - public void setUp() throws Exception { - externalLsa = new ExternalLsa(new LsaHeader()); - } - - @After - public void tearDown() throws Exception { - externalLsa = null; - externalDestinations = null; - result = null; - ospfExternalDestination = null; - ospfExternalDestination1 = null; - lsaHeader = null; - inputByteArray = null; - channelBuffer = null; - result1 = null; - ospflsaType = null; - } - - /** - * Tests networkMask() getter method. - */ - @Test - public void testGetNetworkMask() throws Exception { - externalLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.164")); - result = externalLsa.networkMask(); - assertThat(result, is(notNullValue())); - assertThat(result, is(Ip4Address.valueOf("10.226.165.164"))); - } - - /** - * Tests networkMask() setter method. - */ - @Test - public void testSetNetworkMask() throws Exception { - externalLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.164")); - result = externalLsa.networkMask(); - assertThat(result, is(notNullValue())); - assertThat(result, is(Ip4Address.valueOf("10.226.165.164"))); - } - - /** - * Tests addExternalDesitnation() method. - */ - @Test - public void testAddExternalDesitnation() throws Exception { - externalLsa.addExternalDestination(createOspfExternalDestination()); - assertThat(externalLsa, is(notNullValue())); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashcode() throws Exception { - - result2 = externalLsa.hashCode(); - assertThat(result2, is(notNullValue())); - - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - ospfExternalDestination = new OspfExternalDestination(); - ospfExternalDestination.setExternalRouterTag(2); - ospfExternalDestination.setMetric(100); - ospfExternalDestination.setType1orType2Metric(true); - externalLsa.addExternalDestination(ospfExternalDestination); - ospfExternalDestination1 = new OspfExternalDestination(); - ospfExternalDestination.setExternalRouterTag(3); - ospfExternalDestination.setMetric(50); - ospfExternalDestination.setType1orType2Metric(true); - externalLsa.addExternalDestination(ospfExternalDestination1); - ospfExternalDestination.setForwardingAddress(LOCAL_ADDRESS); - inputByteArray = createByteForNetworkLsa(); - lsaHeader = createLsaHeader(); - externalLsa = new ExternalLsa(lsaHeader); - channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray); - externalLsa.readFrom(channelBuffer); - assertThat(externalLsa, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test(expected = Exception.class) - public void testReadFrom1() throws Exception { - ospfExternalDestination = new OspfExternalDestination(); - ospfExternalDestination.setExternalRouterTag(2); - ospfExternalDestination.setMetric(100); - ospfExternalDestination.setType1orType2Metric(true); - externalLsa.addExternalDestination(ospfExternalDestination); - ospfExternalDestination1 = new OspfExternalDestination(); - ospfExternalDestination.setExternalRouterTag(3); - ospfExternalDestination.setMetric(50); - ospfExternalDestination.setType1orType2Metric(true); - externalLsa.addExternalDestination(ospfExternalDestination1); - ospfExternalDestination.setForwardingAddress(LOCAL_ADDRESS); - byte[] temp = {0, 0, 0}; - inputByteArray = temp; - lsaHeader = createLsaHeader(); - externalLsa = new ExternalLsa(lsaHeader); - channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray); - externalLsa.readFrom(channelBuffer); - assertThat(externalLsa, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result1 = externalLsa.asBytes(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test - public void testGetLsaBodyAsByteArray() throws Exception { - ospfExternalDestination = new OspfExternalDestination(); - ospfExternalDestination.setExternalRouterTag(2); - ospfExternalDestination.setMetric(100); - ospfExternalDestination.setType1orType2Metric(true); - externalLsa.addExternalDestination(ospfExternalDestination); - ospfExternalDestination1 = new OspfExternalDestination(); - ospfExternalDestination.setExternalRouterTag(3); - ospfExternalDestination.setMetric(100); - ospfExternalDestination.setType1orType2Metric(true); - externalLsa.addExternalDestination(ospfExternalDestination1); - result1 = externalLsa.getLsaBodyAsByteArray(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test - public void testGetLsaBodyAsByteArray1() throws Exception { - externalLsa.setNetworkMask(Ip4Address.valueOf("255.255.255.255")); - ospfExternalDestination = new OspfExternalDestination(); - ospfExternalDestination.setExternalRouterTag(2); - ospfExternalDestination.setMetric(100); - ospfExternalDestination.setType1orType2Metric(true); - externalLsa.addExternalDestination(ospfExternalDestination); - ospfExternalDestination1 = new OspfExternalDestination(); - ospfExternalDestination.setExternalRouterTag(3); - ospfExternalDestination.setMetric(100); - ospfExternalDestination.setType1orType2Metric(true); - externalLsa.addExternalDestination(ospfExternalDestination1); - result1 = externalLsa.getLsaBodyAsByteArray(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests getOspfLsaType() getter method. - */ - @Test - public void testGetOspfLsaType() throws Exception { - ospflsaType = externalLsa.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.EXTERNAL_LSA)); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(externalLsa.toString(), is(notNullValue())); - } - - /** - * Utility method used by junit methods. - */ - private byte[] createByteForNetworkLsa() { - byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64, - -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, - 1}; - return packet; - } - - /** - * Utility method used by junit methods. - */ - private LsaHeader createLsaHeader() { - lsaHeader = new LsaHeader(); - lsaHeader.setLsType(1); - lsaHeader.setLsPacketLen(48); - lsaHeader.setLsCheckSum(10); - lsaHeader.setAge(4); - lsaHeader.setLinkStateId("10.226.165.164"); - lsaHeader.setLsSequenceNo(250); - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - lsaHeader.setOptions(2); - return lsaHeader; - } - - /** - * Utility method used by junit methods. - */ - private OspfExternalDestination createOspfExternalDestination() throws UnknownHostException { - ospfExternalDestination = new OspfExternalDestination(); - ospfExternalDestination.setExternalRouterTag(1); - ospfExternalDestination.setMetric(10); - ospfExternalDestination.setType1orType2Metric(true); - ospfExternalDestination.setForwardingAddress(LOCAL_ADDRESS); - return ospfExternalDestination; - } -} diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsaTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsaTest.java deleted file mode 100644 index 7924cd399d..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/NetworkLsaTest.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.LsaHeader; - -import java.util.Vector; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for NetworkLsa. - */ -public class NetworkLsaTest { - - private static final Ip4Address LOCAL_ADDRESS = Ip4Address.valueOf("127.0.0.1"); - - private Vector attachedRouters = new Vector(); - private NetworkLsa networkLsa; - private Ip4Address result; - private Ip4Address inetAddres; - private byte[] inputByteArray; - private LsaHeader lsaHeader; - private ChannelBuffer channelBuffer; - private byte[] result1; - private OspfLsaType ospflsaType; - private int result2; - - @Before - public void setUp() throws Exception { - networkLsa = new NetworkLsa(); - } - - @After - public void tearDown() throws Exception { - networkLsa = null; - attachedRouters = null; - result = null; - inetAddres = null; - inputByteArray = null; - lsaHeader = null; - channelBuffer = null; - result1 = null; - ospflsaType = null; - } - - /** - * Tests networkMask() getter method. - */ - @Test - public void testGetNetworkMask() throws Exception { - networkLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.164")); - result = networkLsa.networkMask(); - assertThat(result, is(Ip4Address.valueOf("10.226.165.164"))); - } - - /** - * Tests networkMask() setter method. - */ - @Test - public void testSetNetworkMask() throws Exception { - networkLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.165")); - result = networkLsa.networkMask(); - result = networkLsa.networkMask(); - assertThat(result, is(Ip4Address.valueOf("10.226.165.165"))); - } - - /** - * Tests addAttachedRouter() getter method. - */ - @Test - public void testGetAttachedRouters() throws Exception { - attachedRouters.add("1.1.1.1"); - networkLsa.addAttachedRouter(Ip4Address.valueOf("1.1.1.1")); - assertThat(attachedRouters, is(notNullValue())); - } - - /** - * Tests addAttachedRouter() setter method. - */ - @Test - public void testSetAttachedRouters() throws Exception { - attachedRouters.add("1.1.1.1"); - networkLsa.addAttachedRouter(Ip4Address.valueOf("1.1.1.1")); - assertThat(attachedRouters, is(notNullValue())); - } - - /** - * Tests addAttachedRouter() method. - */ - @Test - public void testAddAttachedRouter() throws Exception { - networkLsa.addAttachedRouter(LOCAL_ADDRESS); - networkLsa.addAttachedRouter(LOCAL_ADDRESS); - assertThat(networkLsa, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - - @Test - public void testReadFrom() throws Exception { - inputByteArray = createByteForNetworkLsa(); - lsaHeader = createLsaHeader(); - networkLsa = new NetworkLsa(lsaHeader); - channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray); - networkLsa.readFrom(channelBuffer); - assertThat(networkLsa, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test(expected = Exception.class) - public void testReadFrom1() throws Exception { - byte[] temp = {0, 0, 0}; - inputByteArray = temp; - lsaHeader = createLsaHeader(); - networkLsa = new NetworkLsa(lsaHeader); - channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray); - networkLsa.readFrom(channelBuffer); - assertThat(networkLsa, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test(expected = Exception.class) - public void testAsBytes() throws Exception { - result1 = networkLsa.asBytes(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test(expected = Exception.class) - public void testGetLsaBodyAsByteArray() throws Exception { - networkLsa.addAttachedRouter(Ip4Address.valueOf("1.1.1.1")); - networkLsa.addAttachedRouter(Ip4Address.valueOf("2.2.2.2")); - networkLsa.addAttachedRouter(Ip4Address.valueOf("3.3.3.3")); - result1 = networkLsa.getLsaBodyAsByteArray(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test - public void testGetLsaBodyAsByteArray1() throws Exception { - networkLsa.setNetworkMask(Ip4Address.valueOf("255.255.255.255")); - networkLsa.addAttachedRouter(Ip4Address.valueOf("1.1.1.1")); - networkLsa.addAttachedRouter(Ip4Address.valueOf("2.2.2.2")); - networkLsa.addAttachedRouter(Ip4Address.valueOf("3.3.3.3")); - result1 = networkLsa.getLsaBodyAsByteArray(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests getOspfLsaType() getter method. - */ - @Test - public void testGetOspfLsaType() throws Exception { - networkLsa.setLsType(2); - ospflsaType = networkLsa.getOspfLsaType(); - assertThat(ospflsaType, is(OspfLsaType.NETWORK)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashcode() throws Exception { - - result2 = networkLsa.hashCode(); - assertThat(result2, is(notNullValue())); - - } - - /** - * Utility method used by junit methods. - */ - private byte[] createByteForNetworkLsa() { - byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64, - -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, - 1}; - return packet; - } - - /** - * Utility method used by junit methods. - */ - private LsaHeader createLsaHeader() { - lsaHeader = new LsaHeader(); - lsaHeader.setLsType(2); - lsaHeader.setLsPacketLen(48); - lsaHeader.setLsCheckSum(10); - lsaHeader.setAge(4); - lsaHeader.setLinkStateId("10.226.165.164"); - lsaHeader.setLsSequenceNo(250); - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - lsaHeader.setOptions(2); - return lsaHeader; - } -} diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10Test.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10Test.java deleted file mode 100644 index 172863a72a..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa10Test.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.TlvHeader; -import org.onosproject.ospf.protocol.lsa.tlvtypes.LinkTlv; -import org.onosproject.ospf.protocol.lsa.tlvtypes.RouterTlv; - - -import java.util.List; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for OpaqueLsa10. - */ -public class OpaqueLsa10Test { - - private final byte[] packet = {0, 1, 0, 4, 1, 1, 1, 1, 0, 2, 0, 84, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private OpaqueLsa10 opaqueLsa10; - private TopLevelTlv tlv; - private OpaqueLsaHeader opqueHeader; - private ChannelBuffer channelBuffer; - private byte[] result; - private RouterTlv routerTlv; - private RouterTlv routerTlv1; - private LinkTlv linkTlv; - private LinkTlv linkTlv1; - private OspfLsaType ospflsaType; - private int result1; - private List result2; - - @Before - public void setUp() throws Exception { - opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader()); - } - - @After - public void tearDown() throws Exception { - opaqueLsa10 = null; - tlv = null; - opqueHeader = null; - channelBuffer = null; - result = null; - routerTlv = null; - routerTlv1 = null; - linkTlv1 = null; - ospflsaType = null; - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(opaqueLsa10.toString(), is(notNullValue())); - } - - /** - * Tests addValue() method. - */ - @Test - public void testAddValue() throws Exception { - tlv = new RouterTlv(new TlvHeader()); - opaqueLsa10.addValue(tlv); - assertThat(opaqueLsa10, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test(expected = Exception.class) - public void testReadFrom() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(10); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(1); - opqueHeader.setOpaqueType(10); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(66); - opaqueLsa10 = new OpaqueLsa10(opqueHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - opaqueLsa10.readFrom(channelBuffer); - result = opaqueLsa10.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test(expected = Exception.class) - public void testAsBytes() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(10); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(1); - opqueHeader.setOpaqueType(10); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(66); - opaqueLsa10 = new OpaqueLsa10(opqueHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - opaqueLsa10.readFrom(channelBuffer); - result = opaqueLsa10.getLsaBodyAsByteArray(); - result = opaqueLsa10.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test(expected = Exception.class) - public void testGetLsaBodyAsByteArray() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(10); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(1); - opqueHeader.setOpaqueType(10); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(2); - opaqueLsa10 = new OpaqueLsa10(opqueHeader); - routerTlv = new RouterTlv(new TlvHeader()); - linkTlv = new LinkTlv(new TlvHeader()); - opaqueLsa10.addValue(routerTlv); - opaqueLsa10.addValue(linkTlv); - routerTlv1 = new RouterTlv(new TlvHeader()); - linkTlv1 = new LinkTlv(new TlvHeader()); - opaqueLsa10.addValue(routerTlv1); - opaqueLsa10.addValue(linkTlv1); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - opaqueLsa10.readFrom(channelBuffer); - result = opaqueLsa10.getLsaBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test(expected = Exception.class) - public void testGetLsaBodyAsByteArray1() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(10); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(1); - opqueHeader.setOpaqueType(10); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(2); - opaqueLsa10 = new OpaqueLsa10(opqueHeader); - routerTlv = new RouterTlv(new TlvHeader()); - opaqueLsa10.addValue(routerTlv); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - result = opaqueLsa10.getLsaBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test(expected = Exception.class) - public void testGetLsaBodyAsByteArray2() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(10); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(1); - opqueHeader.setOpaqueType(10); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(2); - opaqueLsa10 = new OpaqueLsa10(opqueHeader); - linkTlv = new LinkTlv(new TlvHeader()); - opaqueLsa10.addValue(linkTlv); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - opaqueLsa10.readFrom(channelBuffer); - result = opaqueLsa10.getLsaBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getOspfLsaType() getter method. - */ - @Test - public void testGetOspfLsaType() throws Exception { - opaqueLsa10.setLsType(10); - ospflsaType = opaqueLsa10.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.AREA_LOCAL_OPAQUE_LSA)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashcode() throws Exception { - - result1 = opaqueLsa10.hashCode(); - assertThat(result1, is(notNullValue())); - - } - - /** - * Tests topLevelValues() method. - */ - @Test - public void testTopLevelValues() throws Exception { - - result2 = opaqueLsa10.topLevelValues(); - assertThat(result2, is(notNullValue())); - - } - -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11Test.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11Test.java deleted file mode 100644 index 07b50c567c..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa11Test.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; - - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for OpaqueLsa11. - */ -public class OpaqueLsa11Test { - - private final byte[] packet = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - private OpaqueLsa11 opaqueLsa11; - private OpaqueLsaHeader opqueHeader; - private ChannelBuffer channelBuffer; - private byte[] result; - private int result1; - private String result2; - private OspfLsaType ospflsaType; - - @Before - public void setUp() throws Exception { - opaqueLsa11 = new OpaqueLsa11(new OpaqueLsaHeader()); - } - - @After - public void tearDown() throws Exception { - opaqueLsa11 = null; - opqueHeader = null; - channelBuffer = null; - result = null; - ospflsaType = null; - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(11); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(1); - opqueHeader.setOpaqueType(11); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(2); - opaqueLsa11 = new OpaqueLsa11(opqueHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - opaqueLsa11.readFrom(channelBuffer); - assertThat(opaqueLsa11, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(11); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(1); - opqueHeader.setOpaqueType(11); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(2); - opaqueLsa11 = new OpaqueLsa11(opqueHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - opaqueLsa11.readFrom(channelBuffer); - result = opaqueLsa11.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test - public void testGetLsaBodyAsByteArray() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(11); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(1); - opqueHeader.setOpaqueType(11); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(2); - opaqueLsa11 = new OpaqueLsa11(opqueHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - opaqueLsa11.readFrom(channelBuffer); - result = opaqueLsa11.getLsaBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getOspfLsaType() method. - */ - @Test - public void testGetOspfLsaType() throws Exception { - opaqueLsa11.setLsType(11); - ospflsaType = opaqueLsa11.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.AS_OPAQUE_LSA)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashcode() throws Exception { - - result1 = opaqueLsa11.hashCode(); - assertThat(result1, is(notNullValue())); - - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - - result2 = opaqueLsa11.toString(); - assertThat(result2, is(notNullValue())); - - } -} diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9Test.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9Test.java deleted file mode 100644 index 0c6fa4124f..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/OpaqueLsa9Test.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; - - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for OpaqueLsa9. - */ -public class OpaqueLsa9Test { - - private final byte[] packet = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}; - private byte[] result; - private String result1; - private OpaqueLsaHeader opqueHeader; - private OpaqueLsa9 opaqueLsa9; - private ChannelBuffer channelBuffer; - private OspfLsaType ospflsaType; - private int result2; - - @Before - public void setUp() throws Exception { - opaqueLsa9 = new OpaqueLsa9(new OpaqueLsaHeader()); - - } - - @After - public void tearDown() throws Exception { - opaqueLsa9 = null; - opqueHeader = null; - channelBuffer = null; - result = null; - ospflsaType = null; - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(1); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(9); - opqueHeader.setOpaqueType(9); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(2); - opaqueLsa9 = new OpaqueLsa9(opqueHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - opaqueLsa9.readFrom(channelBuffer); - assertThat(opaqueLsa9, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(9); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(9); - opqueHeader.setOpaqueType(9); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(2); - opaqueLsa9 = new OpaqueLsa9(opqueHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - opaqueLsa9.readFrom(channelBuffer); - result = opaqueLsa9.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test - public void testGetLsaBodyAsByteArray() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(9); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(9); - opqueHeader.setOpaqueType(9); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(2); - opaqueLsa9 = new OpaqueLsa9(opqueHeader); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - opaqueLsa9.readFrom(channelBuffer); - result = opaqueLsa9.getLsaBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashcode() throws Exception { - - result2 = opaqueLsa9.hashCode(); - assertThat(result2, is(notNullValue())); - - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - - result1 = opaqueLsa9.toString(); - assertThat(result1, is(notNullValue())); - - } - - /** - * Tests to getOspfLsaType() getter method. - */ - @Test - public void testGetOspfLsaType() throws Exception { - opaqueLsa9.setLsType(9); - ospflsaType = opaqueLsa9.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.LINK_LOCAL_OPAQUE_LSA)); - } -} diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/RouterLsaTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/RouterLsaTest.java deleted file mode 100644 index 461197660d..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/RouterLsaTest.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.subtypes.OspfLsaLink; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.*; - -/** - * Unit test class for RouterLsa. - */ -public class RouterLsaTest { - - private RouterLsa routerLsa; - private int result1; - private OspfLsaLink ospflsaLink; - private byte[] inputArray; - private LsaHeader lsaHeader; - private ChannelBuffer channelBuffer; - private byte[] result2; - private OspfLsaType result3; - - @Before - public void setUp() throws Exception { - routerLsa = new RouterLsa(); - } - - @After - public void tearDown() throws Exception { - routerLsa = null; - ospflsaLink = null; - inputArray = null; - lsaHeader = null; - channelBuffer = null; - result2 = null; - result3 = null; - } - - - /** - * Tests virtualEndPoint() setter method. - */ - @Test - public void testSetVirtualEndPoint() throws Exception { - routerLsa.setVirtualEndPoint(true); - assertThat(routerLsa, is(notNullValue())); - } - - - /** - * Tests isAsBoundaryRouter() setter method. - */ - @Test - public void testSetAsBoundaryRouter() throws Exception { - routerLsa.setAsBoundaryRouter(true); - assertThat(routerLsa, is(notNullValue())); - } - - /** - * Tests areaBorderRouter() setter method. - */ - @Test - public void testSetAreaBorderRouter() throws Exception { - routerLsa.setAreaBorderRouter(true); - assertThat(routerLsa, is(notNullValue())); - } - - /** - * Tests noLink() getter method. - */ - @Test - public void testGetNoLink() throws Exception { - routerLsa.setNoLink(10); - result1 = routerLsa.noLink(); - assertThat(result1, is(10)); - } - - /** - * Tests noLink() setter method. - */ - @Test - public void testSetNoLink() throws Exception { - routerLsa.setNoLink(10); - result1 = routerLsa.noLink(); - assertThat(result1, is(10)); - } - - /** - * Tests addRouterLink() method. - */ - @Test - public void testAddRouterLink() throws Exception { - routerLsa.setNoLink(0); - ospflsaLink = createOspfLsaLink(); - routerLsa.addRouterLink(ospflsaLink); - routerLsa.incrementLinkNo(); - result1 = routerLsa.noLink(); - assertThat(result1, is(1)); - - } - - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - ospflsaLink = createOspfLsaLink(); - routerLsa.addRouterLink(ospflsaLink); - inputArray = createByteForRouterLsa(); - lsaHeader = createLsaHeader(); - routerLsa = new RouterLsa(lsaHeader); - channelBuffer = ChannelBuffers.copiedBuffer(inputArray); - routerLsa.readFrom(channelBuffer); - assertThat(routerLsa, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test(expected = Exception.class) - public void testReadFrom1() throws Exception { - byte[] temp = {0, 0, 0}; - ospflsaLink = createOspfLsaLink(); - routerLsa.addRouterLink(ospflsaLink); - inputArray = temp; - lsaHeader = createLsaHeader(); - routerLsa = new RouterLsa(lsaHeader); - channelBuffer = ChannelBuffers.copiedBuffer(inputArray); - routerLsa.readFrom(channelBuffer); - assertThat(routerLsa, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result2 = routerLsa.asBytes(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test - public void testGetLsaBodyAsByteArray() throws Exception { - routerLsa.setAreaBorderRouter(true); - routerLsa.setVirtualEndPoint(true); - routerLsa.setAreaBorderRouter(true); - ospflsaLink = createOspfLsaLink(); - routerLsa.addRouterLink(ospflsaLink); - result2 = routerLsa.getLsaBodyAsByteArray(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests getOspfLsaType() getter method. - */ - @Test - public void testGetOspfLsaType() throws Exception { - routerLsa.setLsType(1); - result3 = routerLsa.getOspfLsaType(); - assertThat(result3, is(OspfLsaType.ROUTER)); - } - - /** - * Tests incrementLinkNo() method. - */ - @Test - public void testIncrementLinkNo() throws Exception { - routerLsa.setNoLink(1); - routerLsa.incrementLinkNo(); - assertThat(routerLsa.noLink(), is(2)); - } - - /** - * Tests lsaHeader() method. - */ - @Test - public void testGetLsaHeader() throws Exception { - lsaHeader = (LsaHeader) routerLsa.lsaHeader(); - assertThat(lsaHeader, instanceOf(RouterLsa.class)); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(routerLsa.toString(), is(notNullValue())); - - } - - /** - * Utility method used by junit methods. - */ - private OspfLsaLink createOspfLsaLink() { - ospflsaLink = new OspfLsaLink(); - ospflsaLink.setLinkId("10.226.165.164"); - ospflsaLink.setMetric(10); - ospflsaLink.setTos(50); - ospflsaLink.setLinkType(2); - ospflsaLink.setLinkData("10.226.165.170"); - return ospflsaLink; - } - - /** - * Utility method used by junit methods. - */ - private byte[] createByteForRouterLsa() { - byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64, - -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, - 1}; - return packet; - } - - /** - * Utility method used by junit methods. - */ - private LsaHeader createLsaHeader() { - lsaHeader = new LsaHeader(); - lsaHeader.setLsType(1); - lsaHeader.setLsPacketLen(48); - lsaHeader.setLsCheckSum(10); - lsaHeader.setAge(4); - lsaHeader.setLinkStateId("10.226.165.164"); - lsaHeader.setLsSequenceNo(250); - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - lsaHeader.setOptions(2); - return lsaHeader; - } - - /** - * Tests hashcode() method. - */ - @Test - public void testHashcode() throws Exception { - - result1 = routerLsa.hashCode(); - assertThat(result1, is(notNullValue())); - - } -} diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsaTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsaTest.java deleted file mode 100644 index eb061925b1..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/types/SummaryLsaTest.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.lsa.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsaType; -import org.onosproject.ospf.protocol.lsa.LsaHeader; - - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -/** - * Unit test class for SummaryLsa. - */ -public class SummaryLsaTest { - - private SummaryLsa summaryLsa; - private Ip4Address result; - private int result1; - private byte[] inputByteArray; - private LsaHeader lsaHeader; - private ChannelBuffer channelBuffer; - private byte[] result2; - private OspfLsaType ospflsaType; - - @Before - public void setUp() throws Exception { - summaryLsa = new SummaryLsa(new LsaHeader()); - } - - @After - public void tearDown() throws Exception { - summaryLsa = null; - result = null; - inputByteArray = null; - lsaHeader = null; - channelBuffer = null; - result2 = null; - ospflsaType = null; - } - - /** - * Tests networkMask() getter method. - */ - @Test - public void testGetNetworkMask() throws Exception { - summaryLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.164")); - result = summaryLsa.networkMask(); - assertThat(result, is(Ip4Address.valueOf("10.226.165.164"))); - } - - /** - * Tests networkMask() setter method. - */ - @Test - public void testSetNetworkMask() throws Exception { - summaryLsa.setNetworkMask(Ip4Address.valueOf("10.226.165.164")); - result = summaryLsa.networkMask(); - assertThat(result, is(Ip4Address.valueOf("10.226.165.164"))); - } - - /** - * Tests metric() getter method. - */ - @Test - public void testGetMetric() throws Exception { - summaryLsa.setMetric(10); - result1 = summaryLsa.metric(); - assertThat(result1, is(10)); - } - - /** - * Tests metric() setter method. - */ - @Test - public void testSetMetric() throws Exception { - summaryLsa.setMetric(20); - result1 = summaryLsa.metric(); - assertThat(result1, is(20)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - inputByteArray = createByteForNetworkLsa(); - lsaHeader = createLsaHeader(); - summaryLsa = new SummaryLsa(lsaHeader); - channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray); - summaryLsa.readFrom(channelBuffer); - assertThat(summaryLsa, is(notNullValue())); - } - - /** - * Tests readFrom() method. - */ - @Test(expected = Exception.class) - public void testReadFrom1() throws Exception { - byte[] temp = {0, 0, 0}; - inputByteArray = temp; - lsaHeader = createLsaHeader(); - summaryLsa = new SummaryLsa(lsaHeader); - channelBuffer = ChannelBuffers.copiedBuffer(inputByteArray); - summaryLsa.readFrom(channelBuffer); - assertThat(summaryLsa, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result2 = summaryLsa.asBytes(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests getLsaBodyAsByteArray() method. - */ - @Test - public void testGetLsaBodyAsByteArray() throws Exception { - result2 = summaryLsa.getLsaBodyAsByteArray(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests getOspfLsaType() getter method. - */ - @Test - public void testGetOspfLsaType() throws Exception { - ospflsaType = summaryLsa.getOspfLsaType(); - assertThat(ospflsaType, is(notNullValue())); - assertThat(ospflsaType, is(OspfLsaType.SUMMARY)); - } - - /** - * Utility method used by junit methods. - */ - private byte[] createByteForNetworkLsa() { - byte[] packet = {2, 1, 1, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, -64, - -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, - 1}; - return packet; - } - - /** - * Utility method used by junit methods. - */ - private LsaHeader createLsaHeader() { - lsaHeader = new LsaHeader(); - lsaHeader.setLsType(3); - lsaHeader.setLsPacketLen(48); - lsaHeader.setLsCheckSum(10); - lsaHeader.setAge(4); - lsaHeader.setLinkStateId("10.226.165.164"); - lsaHeader.setLsSequenceNo(250); - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - lsaHeader.setOptions(2); - return lsaHeader; - } - - /** - * Tests hashcode() method. - */ - @Test - public void testHashcode() throws Exception { - - result1 = summaryLsa.hashCode(); - assertThat(result1, is(notNullValue())); - - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReaderTest.java deleted file mode 100644 index 8cf0aef2fc..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReaderTest.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onosproject.ospf.protocol.util.OspfUtil; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfMessageReader. - */ - -public class OspfMessageReaderTest { - - private final byte[] packet1 = {2, 1, 0, 44, -64, -88, -86, 8, - 0, 0, 0, 1, 39, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, - 10, 2, 1, 0, 0, 0, 40, -64, -88, -86, 8, 0, 0, 0, 0}; - private final byte[] packet2 = {2, 2, 0, 52, -64, -88, -86, 8, 0, - 0, 0, 1, -96, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119, - -87, 126, 0, 23, 2, 1, 10, 10, 10, 10, 10, 10, 10, 10, -128, 0, 0, 6, - -69, 26, 0, 36}; - private final byte[] packet3 = {2, 3, 0, 36, -64, -88, -86, 3, 0, - 0, 0, 1, -67, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88, - -86, 8, -64, -88, -86, 8}; - private final byte[] packet4 = {2, 4, 1, 36, -64, -88, -86, 3, 0, - 0, 0, 1, 54, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 2, 2, 1, -64, -88, -86, 3, -64, -88, -86, 3, -128, 0, - 0, 1, 58, -100, 0, 48, 2, 0, 0, 2, -64, -88, -86, - 0, -1, -1, -1, 0, 3, 0, 0, 10, -64, -88, -86, 0, - -1, -1, -1, 0, 3, 0, 0, 10, 0, 3, 2, 5, 80, -44, - 16, 0, -64, -88, -86, 2, -128, 0, 0, 1, 42, 73, 0, - 36, -1, -1, -1, -1, -128, 0, 0, 20, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 2, 5, -108, 121, -85, 0, -64, -88, - -86, 2, -128, 0, 0, 1, 52, -91, 0, 36, -1, -1, -1, - 0, -128, 0, 0, 20, -64, -88, -86, 1, 0, 0, 0, 0, 0, - 3, 2, 5, -64, -126, 120, 0, -64, -88, -86, 2, -128, 0, - 0, 1, -45, 25, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, 0, 0, - -64, -88, -86, 2, -128, 0, 0, 1, 55, 8, 0, 36, -1, -1, - -1, 0, -128, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 2, 5, -64, -88, 1, 0, -64, -88, -86, 2, -128, 0, 0, - 1, 44, 18, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, -84, 0, -64, - -88, -86, 2, -128, 0, 0, 1, 51, 65, 0, 36, -1, -1, -1, 0, - -128, 0, 0, 20, -64, -88, -86, 10, 0, 0, 0, 0}; - private final byte[] packet5 = {2, 5, 0, 44, -64, -88, -86, 8, 0, 0, - 0, 1, -30, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86, - 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48}; - private OspfMessageReader ospfMessageReader; - private ChannelBuffer channelBuffer; - - @Before - public void setUp() throws Exception { - ospfMessageReader = new OspfMessageReader(); - } - - @After - public void tearDown() throws Exception { - ospfMessageReader = null; - channelBuffer = null; - } - - /** - * Tests readFromBuffer() method. - */ - @Test - public void testReadFromBuffer() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet1)); - ospfMessageReader.readFromBuffer(channelBuffer); - - channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet2)); - ospfMessageReader.readFromBuffer(channelBuffer); - - channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet3)); - ospfMessageReader.readFromBuffer(channelBuffer); - - channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet4)); - ospfMessageReader.readFromBuffer(channelBuffer); - - channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet5)); - ospfMessageReader.readFromBuffer(channelBuffer); - assertThat(ospfMessageReader, is(notNullValue())); - } - - /** - * Frames the packet to min frame length. - * - * @param ospfPacket OSPF packet - * @return OSPF packet as byte array - */ - private byte[] framePacket(byte[] ospfPacket) { - //Set the length of the packet - //Get the total length of the packet - int length = ospfPacket.length; - //PDU_LENGTH + 1 byte for interface index - if (length < OspfUtil.MINIMUM_FRAME_LEN) { - byte[] bytes = new byte[OspfUtil.MINIMUM_FRAME_LEN + 5]; - System.arraycopy(ospfPacket, 0, bytes, 0, length); - return bytes; - } - return ospfPacket; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriterTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriterTest.java deleted file mode 100644 index 94f8702720..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriterTest.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge; -import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest; -import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for OspfMessageWriter. - */ -public class OspfMessageWriterTest { - - private OspfMessageWriter ospfMessageWriter; - private HelloPacket helloPacket; - private DdPacket ddPacket; - private LsAcknowledge lsAck; - private LsRequest lsReq; - private LsUpdate lsUpdate; - - @Before - public void setUp() throws Exception { - ospfMessageWriter = new OspfMessageWriter(); - } - - @After - public void tearDown() throws Exception { - ospfMessageWriter = null; - helloPacket = null; - ddPacket = null; - lsAck = null; - lsReq = null; - lsUpdate = null; - } - - /** - * Tests getMessage() method. - */ - @Test - public void testGetMessage() throws Exception { - helloPacket = new HelloPacket(); - helloPacket.setAuthType(1); - helloPacket.setOspftype(1); - helloPacket.setRouterId(Ip4Address.valueOf("10.226.165.164")); - helloPacket.setAreaId(Ip4Address.valueOf("10.226.165.100")); - helloPacket.setChecksum(201); - helloPacket.setAuthentication(2); - helloPacket.setOspfPacLength(48); - helloPacket.setOspfVer(2); - helloPacket.setNetworkMask(Ip4Address.valueOf("255.255.255.255")); - helloPacket.setOptions(2); //not setting now - helloPacket.setHelloInterval(10); - helloPacket.setRouterPriority(1); - helloPacket.setRouterDeadInterval(40); - helloPacket.setDr(Ip4Address.valueOf("1.1.1.1")); - helloPacket.setBdr(Ip4Address.valueOf("2.2.2.2")); - helloPacket.addNeighbor(Ip4Address.valueOf("8.8.8.8")); - helloPacket.setDestinationIp(Ip4Address.valueOf("5.5.5.5")); - ospfMessageWriter.getMessage(helloPacket, 7, 1); - assertThat(ospfMessageWriter, is(notNullValue())); - } - - @Test(expected = Exception.class) - public void testGetMessage1() throws Exception { - - ddPacket = new DdPacket(); - ddPacket.setAuthType(1); - ddPacket.setOspftype(2); - ddPacket.setRouterId(Ip4Address.valueOf("10.226.165.164")); - ddPacket.setAreaId(Ip4Address.valueOf("10.226.165.100")); - ddPacket.setChecksum(201); - ddPacket.setAuthentication(2); - ddPacket.setOspfPacLength(48); - ddPacket.setOspfVer(2); - ospfMessageWriter.getMessage(ddPacket, 1, 1); - assertThat(ospfMessageWriter, is(notNullValue())); - } - - @Test(expected = Exception.class) - public void testGetMessage2() throws Exception { - - lsAck = new LsAcknowledge(); - lsAck.setAuthType(1); - lsAck.setOspftype(5); - lsAck.setRouterId(Ip4Address.valueOf("10.226.165.164")); - lsAck.setAreaId(Ip4Address.valueOf("10.226.165.100")); - lsAck.setChecksum(201); - lsAck.setAuthentication(2); - lsAck.setOspfPacLength(48); - lsAck.setOspfVer(2); - ospfMessageWriter.getMessage(lsAck, 1, 1); - assertThat(ospfMessageWriter, is(notNullValue())); - } - - @Test(expected = Exception.class) - public void testGetMessage3() throws Exception { - lsReq = new LsRequest(); - lsReq.setAuthType(1); - lsReq.setOspftype(3); - lsReq.setRouterId(Ip4Address.valueOf("10.226.165.164")); - lsReq.setAreaId(Ip4Address.valueOf("10.226.165.100")); - lsReq.setChecksum(201); - lsReq.setAuthentication(2); - lsReq.setOspfPacLength(48); - lsReq.setOspfVer(2); - ospfMessageWriter.getMessage(lsReq, 1, 1); - assertThat(ospfMessageWriter, is(notNullValue())); - } - - /** - * Tests getMessage() method. - */ - @Test(expected = Exception.class) - public void testGetMessage4() throws Exception { - lsUpdate = new LsUpdate(); - lsUpdate.setAuthType(1); - lsUpdate.setOspftype(3); - lsUpdate.setRouterId(Ip4Address.valueOf("10.226.165.164")); - lsUpdate.setAreaId(Ip4Address.valueOf("10.226.165.100")); - lsUpdate.setChecksum(201); - lsUpdate.setAuthentication(2); - lsUpdate.setOspfPacLength(48); - lsUpdate.setOspfVer(2); - ospfMessageWriter.getMessage(lsUpdate, 1, 1); - assertThat(ospfMessageWriter, is(notNullValue())); - } - - /** - * Tests getMessage() method. - */ - @Test(expected = Exception.class) - public void testGetMessage5() throws Exception { - lsAck = new LsAcknowledge(); - lsAck.setAuthType(1); - lsAck.setOspftype(5); - lsAck.setRouterId(Ip4Address.valueOf("10.226.165.164")); - lsAck.setAreaId(Ip4Address.valueOf("10.226.165.100")); - lsAck.setChecksum(201); - lsAck.setAuthentication(2); - lsAck.setOspfPacLength(48); - lsAck.setOspfVer(2); - ospfMessageWriter.getMessage(lsAck, 1, 1); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeaderTest.java deleted file mode 100644 index e4852a1ca3..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfPacketHeaderTest.java +++ /dev/null @@ -1,318 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; - -import static org.hamcrest.CoreMatchers.*; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for OspfPacketHeader. - */ -public class OspfPacketHeaderTest { - - private final byte[] packet = {0, 0, 0, 0}; - private OspfPacketHeader ospfPacketHeader; - private ChannelBuffer channelBuffer; - private byte[] result2; - private int result; - private Ip4Address result1; - - @Before - public void setUp() throws Exception { - ospfPacketHeader = new OspfPacketHeader(); - } - - @After - public void tearDown() throws Exception { - ospfPacketHeader = null; - ospfPacketHeader = null; - channelBuffer = null; - result2 = null; - result1 = null; - } - - /** - * Tests sourceIp() getter method. - */ - @Test - public void testGetSourceIP() throws Exception { - ospfPacketHeader.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - assertThat(ospfPacketHeader.sourceIp(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests sourceIp() setter method. - */ - @Test - public void testSetSourceIP() throws Exception { - ospfPacketHeader.setSourceIp(Ip4Address.valueOf("1.1.1.1")); - assertThat(result, is(notNullValue())); - assertThat(ospfPacketHeader.sourceIp(), is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests ospfMessageType() getter method. - */ - @Test - public void testGetOspfMessageType() throws Exception { - assertThat(ospfPacketHeader.ospfMessageType(), nullValue()); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(packet); - ospfPacketHeader.readFrom(channelBuffer); - assertThat(ospfPacketHeader, is(notNullValue())); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result2 = ospfPacketHeader.asBytes(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests ospfVersion() getter method. - */ - @Test - public void testGetOspfVer() throws Exception { - ospfPacketHeader.setOspfVer(2); - result = ospfPacketHeader.ospfVersion(); - assertThat(result, is(notNullValue())); - assertThat(result, is(2)); - } - - /** - * Tests ospfVersion() setter method. - */ - @Test - public void testSetOspfVer() throws Exception { - ospfPacketHeader.setOspfVer(2); - result = ospfPacketHeader.ospfVersion(); - assertThat(result, is(notNullValue())); - assertThat(result, is(2)); - } - - /** - * Tests ospfType() getter method. - */ - @Test - public void testGetOspfType() throws Exception { - ospfPacketHeader.setOspftype(3); - result = ospfPacketHeader.ospfType(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests ospfType() setter method. - */ - @Test - public void testSetOspfType() throws Exception { - ospfPacketHeader.setOspftype(3); - result = ospfPacketHeader.ospfType(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests ospfPacLength() getter method. - */ - @Test - public void testGetOspfPacLength() throws Exception { - ospfPacketHeader.setOspfPacLength(3); - result = ospfPacketHeader.ospfPacLength(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests ospfPacLength() setter method. - */ - @Test - public void testSetOspfPacLength() throws Exception { - ospfPacketHeader.setOspfPacLength(3); - int result = ospfPacketHeader.ospfPacLength(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests routerId()getter method. - */ - @Test - public void testGetRouterId() throws Exception { - - ospfPacketHeader.setRouterId(Ip4Address.valueOf("1.1.1.1")); - result1 = ospfPacketHeader.routerId(); - assertThat(result1, is(notNullValue())); - assertThat(result1, is(Ip4Address.valueOf("1.1.1.1"))); - - } - - /** - * Tests routerId() setter method. - */ - @Test - public void testSetRouterId() throws Exception { - ospfPacketHeader.setRouterId(Ip4Address.valueOf("1.1.1.1")); - result1 = ospfPacketHeader.routerId(); - assertThat(result1, is(notNullValue())); - assertThat(result1, is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests areaId() getter method. - */ - @Test - public void testGetAreaId() throws Exception { - ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1")); - result1 = ospfPacketHeader.areaId(); - assertThat(result1, is(notNullValue())); - assertThat(result1, is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests areaId() setter method. - */ - @Test - public void testSetAreaId() throws Exception { - ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1")); - result1 = ospfPacketHeader.areaId(); - assertThat(result1, is(notNullValue())); - assertThat(result1, is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests checksum() getter method. - */ - @Test - public void testGetChecksum() throws Exception { - ospfPacketHeader.setChecksum(3); - result = ospfPacketHeader.checksum(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests checksum() setter method. - */ - @Test - public void testSetChecksum() throws Exception { - ospfPacketHeader.setChecksum(3); - result = ospfPacketHeader.checksum(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests authType() getter method. - */ - @Test - public void testGetAutype() throws Exception { - ospfPacketHeader.setAuthType(3); - result = ospfPacketHeader.authType(); - Assert.assertNotNull(result); - Assert.assertEquals(3, result); - } - - /** - * Tests authType() setter method. - */ - @Test - public void testSetAutype() throws Exception { - ospfPacketHeader.setAuthType(3); - result = ospfPacketHeader.authType(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests authentication() getter method. - */ - @Test - public void testGetAuthentication() throws Exception { - ospfPacketHeader.setAuthentication(3); - result = ospfPacketHeader.authentication(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests authentication() setter method. - */ - @Test - public void testSetAuthentication() throws Exception { - ospfPacketHeader.setAuthentication(3); - result = ospfPacketHeader.authentication(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests destinationIp() getter method. - */ - @Test - public void testGetDestinationIP() throws Exception { - ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("1.1.1.1")); - result1 = ospfPacketHeader.destinationIp(); - assertThat(result1, is(notNullValue())); - assertThat(result1, is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests destinationIp() setter method. - */ - @Test - public void testSetDestinationIP() throws Exception { - ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("1.1.1.1")); - result1 = ospfPacketHeader.destinationIp(); - assertThat(result1, is(notNullValue())); - assertThat(result1, is(Ip4Address.valueOf("1.1.1.1"))); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(ospfPacketHeader.toString(), is(notNullValue())); - } - - /** - * Tests populateHeader() method. - */ - @Test - public void testPopulateHeader() throws Exception { - ospfPacketHeader.populateHeader(new OspfPacketHeader()); - assertThat(ospfPacketHeader, is(notNullValue())); - } - -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacketTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacketTest.java deleted file mode 100644 index 34809d68a9..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/subtype/LsRequestPacketTest.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.subtype; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for LsRequestPacket. - */ -public class LsRequestPacketTest { - - private LsRequestPacket lsrPacket; - private int result; - - @Before - public void setUp() throws Exception { - lsrPacket = new LsRequestPacket(); - } - - @After - public void tearDown() throws Exception { - lsrPacket = null; - } - - /** - * Tests lsType() getter method. - */ - @Test - public void testGetLsType() throws Exception { - lsrPacket.setLsType(1); - assertThat(lsrPacket.lsType(), is(1)); - } - - /** - * Tests lsType() setter method. - */ - @Test - public void testSetLsType() throws Exception { - lsrPacket.setLsType(1); - assertThat(lsrPacket.lsType(), is(1)); - } - - /** - * Tests linkStateId() getter method. - */ - @Test - public void testGetLinkStateId() throws Exception { - lsrPacket.setLinkStateId("1.1.1.1"); - assertThat(lsrPacket.linkStateId(), is("1.1.1.1")); - } - - /** - * Tests linkStateId() setter method. - */ - @Test - public void testSetLinkStateId() throws Exception { - lsrPacket.setLinkStateId("1.1.1.1"); - assertThat(lsrPacket.linkStateId(), is("1.1.1.1")); - } - - /** - * Tests ownRouterId() getter method. - */ - @Test - public void testGetOwnRouterId() throws Exception { - lsrPacket.setOwnRouterId("1.1.1.1"); - assertThat(lsrPacket.ownRouterId(), is("1.1.1.1")); - } - - /** - * Tests ownRouterId() setter method. - */ - @Test - public void testSetOwnRouterId() throws Exception { - lsrPacket.setOwnRouterId("1.1.1.1"); - assertThat(lsrPacket.ownRouterId(), is("1.1.1.1")); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(lsrPacket.toString(), is(notNullValue())); - } - - /** - * Tests equals() method. - */ - @Test - public void testEquals() throws Exception { - assertThat(lsrPacket.equals(new LsRequestPacket()), is(false)); - } - - /** - * Tests hashCode() method. - */ - @Test - public void testHashCode() throws Exception { - result = lsrPacket.hashCode(); - assertThat(result, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacketTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacketTest.java deleted file mode 100644 index 166cffa782..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacketTest.java +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; - -import java.util.List; -import java.util.Vector; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for OspfRouterId. - */ -public class DdPacketTest { - - private byte[] packet; - private byte[] result2; - private DdPacket ddPacket; - private Vector lsaHeaderList = new Vector(); - private int result; - private long result1; - private OpaqueLsaHeader opqueHeader; - private OpaqueLsaHeader opqueHeader1; - private List header; - private OspfPacketHeader ospfPacketHeader; - private ChannelBuffer channelBuffer; - private LsaHeader lsaHeader; - private long result3; - private OspfPacketType ospfPacketType; - - @Before - public void setUp() throws Exception { - ddPacket = new DdPacket(); - ddPacket.setAuthType(1); - ddPacket.setOspftype(2); - ddPacket.setRouterId(Ip4Address.valueOf("10.226.165.164")); - ddPacket.setAreaId(Ip4Address.valueOf("10.226.165.100")); - ddPacket.setChecksum(201); - ddPacket.setAuthentication(2); - ddPacket.setOspfPacLength(48); - ddPacket.setOspfVer(2); - } - - @After - public void tearDown() throws Exception { - ddPacket = null; - lsaHeaderList.clear(); - opqueHeader = null; - opqueHeader1 = null; - header = null; - ospfPacketHeader = null; - channelBuffer = null; - lsaHeader = null; - ospfPacketType = null; - } - - /** - * Tests isOpaqueCapable() getter method. - */ - @Test - public void testIsOpaqueCapable() throws Exception { - ddPacket.setIsOpaqueCapable(true); - assertThat(ddPacket.isOpaqueCapable(), is(true)); - } - - /** - * Tests isOpaqueCapable() setter method. - */ - @Test - public void testSetIsOpaqueCapable() throws Exception { - ddPacket.setIsOpaqueCapable(true); - assertThat(ddPacket.isOpaqueCapable(), is(true)); - } - - /** - * Tests ims() getter method. - */ - @Test - public void testGetIms() throws Exception { - ddPacket.setIms(1); - result = ddPacket.ims(); - assertThat(result, is(notNullValue())); - assertThat(result, is(1)); - } - - /** - * Tests ims() setter method. - */ - @Test - public void testSetIms() throws Exception { - ddPacket.setIms(1); - result = ddPacket.ims(); - assertThat(result, is(notNullValue())); - assertThat(result, is(1)); - } - - /** - * Tests isMaster() getter method. - */ - @Test - public void testGetIsMaster() throws Exception { - ddPacket.setIsMaster(2); - result = ddPacket.isMaster(); - assertThat(result, is(notNullValue())); - assertThat(result, is(2)); - } - - /** - * Tests isMaster() setter method. - */ - @Test - public void testSetIsMaster() throws Exception { - ddPacket.setIsMaster(2); - result = ddPacket.isMaster(); - assertThat(result, is(notNullValue())); - assertThat(result, is(2)); - } - - /** - * Tests isInitialize() getter method. - */ - @Test - public void testGetIsInitialize() throws Exception { - ddPacket.setIsInitialize(3); - result = ddPacket.isInitialize(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests isInitialize() setter method. - */ - @Test - public void testSetIsInitialize() throws Exception { - ddPacket.setIsInitialize(3); - int result = ddPacket.isInitialize(); - assertThat(result, is(notNullValue())); - assertThat(result, is(3)); - } - - /** - * Tests isMore() getter method. - */ - @Test - public void testGetIsMore() throws Exception { - ddPacket.setIsMore(4); - result = ddPacket.isMore(); - assertThat(result, is(notNullValue())); - assertThat(result, is(4)); - } - - /** - * Tests isMore() setter method. - */ - @Test - public void testSetIsMore() throws Exception { - ddPacket.setIsMore(4); - int result = ddPacket.isMore(); - assertThat(result, is(notNullValue())); - assertThat(result, is(4)); - } - - /** - * Tests imtu() getter method. - */ - @Test - public void testGetImtu() throws Exception { - ddPacket.setImtu(5); - result = ddPacket.imtu(); - assertThat(result, is(notNullValue())); - assertThat(result, is(5)); - } - - /** - * Tests imtu() setter method. - */ - @Test - public void testSetImtu() throws Exception { - ddPacket.setImtu(5); - result = ddPacket.imtu(); - assertThat(result, is(notNullValue())); - assertThat(result, is(5)); - } - - /** - * Tests options() getter method. - */ - @Test - public void testGetOptions() throws Exception { - ddPacket.setOptions(2); - result = ddPacket.options(); - assertThat(result, is(notNullValue())); - assertThat(result, is(2)); - } - - /** - * Tests options() setter method. - */ - @Test - public void testSetOptions() throws Exception { - ddPacket.setOptions(2); - result = ddPacket.options(); - Assert.assertNotNull(result); - Assert.assertEquals(2, result); - } - - /** - * Tests sequenceNo() getter method. - */ - @Test - public void testGetSequenceno() throws Exception { - ddPacket.setSequenceNo(2020); - result1 = ddPacket.sequenceNo(); - assertThat(result1, is(notNullValue())); - assertThat(result1, is(2020L)); - } - - /** - * Tests sequenceNo() setter method. - */ - @Test - public void testSetSequenceno() throws Exception { - ddPacket.setSequenceNo(2020); - result3 = ddPacket.sequenceNo(); - assertThat(result3, is(notNullValue())); - assertThat(result3, is(2020L)); - } - - /** - * Tests getLsaHeaderList() getter method. - */ - @Test - public void testGetLsaHeaderList() throws Exception { - ddPacket.addLsaHeader(createLsaHeader()); - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(9); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(9); - opqueHeader.setOpaqueType(9); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(2); - ddPacket.setIsOpaqueCapable(true); - ddPacket.addLsaHeader(opqueHeader); - opqueHeader1 = new OpaqueLsaHeader(); - opqueHeader1.setLsType(10); - opqueHeader1.setLsPacketLen(48); - opqueHeader1.setLsCheckSum(10); - opqueHeader1.setAge(4); - opqueHeader1.setOpaqueId(9); - opqueHeader1.setOpaqueType(9); - opqueHeader1.setLsSequenceNo(250); - opqueHeader1.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader1.setOptions(66); - ddPacket.addLsaHeader(opqueHeader1); - header = ddPacket.getLsaHeaderList(); - assertThat(header, is(notNullValue())); - } - - /** - * Tests getLsaHeaderList() setter method. - */ - @Test - public void testSetLsaHeaderList() throws Exception { - ddPacket.addLsaHeader(createLsaHeader()); - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(9); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(9); - opqueHeader.setOpaqueType(9); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(66); - ddPacket.addLsaHeader(opqueHeader); - opqueHeader1 = new OpaqueLsaHeader(); - opqueHeader1.setLsType(10); - opqueHeader1.setLsPacketLen(48); - opqueHeader1.setLsCheckSum(10); - opqueHeader1.setAge(4); - opqueHeader1.setOpaqueId(9); - opqueHeader1.setOpaqueType(9); - opqueHeader1.setLsSequenceNo(250); - opqueHeader1.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader1.setOptions(2); - ddPacket.addLsaHeader(opqueHeader1); - header = ddPacket.getLsaHeaderList(); - assertThat(header.contains(createLsaHeader()), is(true)); - } - - /** - * Tests addLsaHeader() method. - */ - @Test - public void testAddLsaHeader() throws Exception { - ddPacket.addLsaHeader(createLsaHeader()); - assertThat(ddPacket, is(notNullValue())); - } - - /** - * Tests ospfMessageType() getter method. - */ - @Test - public void testGetOspfMessageType() throws Exception { - ospfPacketType = ddPacket.ospfMessageType(); - assertThat(ospfPacketType, is(notNullValue())); - assertThat(ospfPacketType, is(OspfPacketType.DD)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - ospfPacketHeader = new OspfPacketHeader(); - ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1")); - ospfPacketHeader.setAuthentication(0); - ospfPacketHeader.setAuthType(0); - ospfPacketHeader.setChecksum(12345); - ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10")); - ospfPacketHeader.setOspfPacLength(56); - ospfPacketHeader.setOspftype(2); - ospfPacketHeader.setOspfVer(2); - ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3")); - ddPacket.setIsOpaqueCapable(true); - ddPacket.setOptions(66); - ddPacket = new DdPacket(ospfPacketHeader); - packet = createByteForDdPacket(); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - ddPacket.readFrom(channelBuffer); - assertThat(ddPacket, is(notNullValue())); - assertThat(ddPacket.ospfMessageType(), is(OspfPacketType.DD)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result2 = ddPacket.asBytes(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests getDdHeaderAsByteArray() method. - */ - @Test - public void testGetDdHeaderAsByteArray() throws Exception { - opqueHeader = new OpaqueLsaHeader(); - opqueHeader.setLsType(9); - opqueHeader.setLsPacketLen(48); - opqueHeader.setLsCheckSum(10); - opqueHeader.setAge(4); - opqueHeader.setOpaqueId(9); - opqueHeader.setOpaqueType(9); - opqueHeader.setLsSequenceNo(250); - opqueHeader.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader.setOptions(66); - ddPacket.addLsaHeader(opqueHeader); - opqueHeader1 = new OpaqueLsaHeader(); - opqueHeader1.setLsType(10); - opqueHeader1.setLsPacketLen(48); - opqueHeader1.setLsCheckSum(10); - opqueHeader1.setAge(4); - opqueHeader1.setOpaqueId(9); - opqueHeader1.setOpaqueType(9); - opqueHeader1.setLsSequenceNo(250); - opqueHeader1.setAdvertisingRouter(Ip4Address.valueOf("100.226.165.165")); - opqueHeader1.setOptions(2); - ddPacket.addLsaHeader(opqueHeader1); - result2 = ddPacket.getDdHeaderAsByteArray(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests getDdBodyAsByteArray() method. - */ - @Test - public void testGetDdBodyAsByteArray() throws Exception { - lsaHeader = createLsaHeader(); - ddPacket.addLsaHeader(lsaHeader); - result2 = ddPacket.getDdBodyAsByteArray(); - assertThat(result2, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(ddPacket.toString(), is(notNullValue())); - } - - /** - * Utility method used by junit methods. - */ - private LsaHeader createLsaHeader() { - lsaHeader = new LsaHeader(); - lsaHeader.setAge(10); - lsaHeader.setLinkStateId("10.226.165.164"); - lsaHeader.setLsCheckSum(222); - lsaHeader.setLsPacketLen(48); - lsaHeader.setLsSequenceNo(2020); - lsaHeader.setLsType(2); - lsaHeader.setOptions(2); - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.165")); - return lsaHeader; - } - - /** - * Utility method used by junit methods. - */ - private byte[] createByteForDdPacket() { - byte[] ddPacket = {5, -36, 66, 1, 65, 119, -87, 126, 0, 23, 2, 1, 10, 10, - 10, 10, 10, 10, 10, 10, -128, 0, 0, 6, -69, 26, 0, 36}; - - return ddPacket; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacketTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacketTest.java deleted file mode 100644 index f4dd79ea0c..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacketTest.java +++ /dev/null @@ -1,325 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; - -import java.util.Vector; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for HelloPacket. - */ -public class HelloPacketTest { - - private boolean result1; - private OspfPacketType ospfPacketType; - private OspfPacketHeader ospfPacketHeader; - private HelloPacket helloPacket; - private Vector neighborAddress = new Vector(); - private Ip4Address result; - private int result2; - private byte[] packet; - private ChannelBuffer channelBuffer; - private byte[] result3; - - @Before - public void setUp() throws Exception { - helloPacket = new HelloPacket(); - helloPacket.setAuthType(1); - helloPacket.setOspftype(2); - helloPacket.setRouterId(Ip4Address.valueOf("10.226.165.164")); - helloPacket.setAreaId(Ip4Address.valueOf("10.226.165.100")); - helloPacket.setChecksum(201); - helloPacket.setAuthentication(2); - helloPacket.setOspfPacLength(48); - helloPacket.setOspfVer(2); - - } - - @After - public void tearDown() throws Exception { - helloPacket = null; - result = null; - ospfPacketType = null; - ospfPacketHeader = null; - packet = null; - channelBuffer = null; - result3 = null; - } - - /** - * Tests networkMask() getter method. - */ - @Test - public void testGetNetworkMask() throws Exception { - helloPacket.setNetworkMask(Ip4Address.valueOf("10.226.165.164")); - result = helloPacket.networkMask(); - assertThat(result, is(notNullValue())); - assertThat(result, is(Ip4Address.valueOf("10.226.165.164"))); - } - - /** - * Tests networkMask() setter method. - */ - @Test - public void testSetNetworkMask() throws Exception { - helloPacket.setNetworkMask(Ip4Address.valueOf("10.226.165.164")); - result = helloPacket.networkMask(); - assertThat(result, is(notNullValue())); - assertThat(result, is(Ip4Address.valueOf("10.226.165.164"))); - } - - /** - * Tests bdr() setter method. - */ - @Test - public void testSetBdr() throws Exception { - helloPacket.setBdr(Ip4Address.valueOf("10.226.165.166")); - result = helloPacket.bdr(); - assertThat(result, is(notNullValue())); - assertThat(result, is(Ip4Address.valueOf("10.226.165.166"))); - } - - /** - * Tests dr() getter method. - */ - @Test - public void testGetDr() throws Exception { - helloPacket.setDr(Ip4Address.valueOf("10.226.165.167")); - result = helloPacket.dr(); - assertThat(result, is(notNullValue())); - assertThat(result, is(Ip4Address.valueOf("10.226.165.167"))); - } - - /** - * Tests dr() setter method. - */ - @Test - public void testSetDr() throws Exception { - helloPacket.setDr(Ip4Address.valueOf("10.226.165.167")); - result = helloPacket.dr(); - assertThat(result, is(notNullValue())); - assertThat(result, is(Ip4Address.valueOf("10.226.165.167"))); - } - - /** - * Tests addNeighbor() method. - */ - @Test - public void testAddNeighbor() throws Exception { - helloPacket.addNeighbor(Ip4Address.valueOf("10.226.165.170")); - result1 = helloPacket.containsNeighbour(Ip4Address.valueOf("10.226.165.170")); - assertThat(result1, is(true)); - } - - /** - * Tests containsNeighbour() method. - */ - @Test - public void testContainsNeighbour() throws Exception { - helloPacket.addNeighbor(Ip4Address.valueOf("10.226.165.200")); - result1 = helloPacket.containsNeighbour(Ip4Address.valueOf("10.226.165.200")); - assertThat(result1, is(true)); - } - - - /** - * Tests options() getter method. - */ - @Test - public void testGetOptions() throws Exception { - helloPacket.setOptions(10); - result2 = helloPacket.options(); - assertThat(result2, is(notNullValue())); - assertThat(result2, is(10)); - } - - /** - * Tests options() setter method. - */ - @Test - public void testSetOptions() throws Exception { - helloPacket.setOptions(11); - result2 = helloPacket.options(); - assertThat(result2, is(notNullValue())); - assertThat(result2, is(11)); - } - - /** - * Tests routerPriority() getter method. - */ - @Test - public void testGetRouterPriority() throws Exception { - helloPacket.setRouterPriority(1); - result2 = helloPacket.routerPriority(); - assertThat(result2, is(notNullValue())); - assertThat(result2, is(1)); - } - - /** - * Tests routerPriority() setter method. - */ - @Test - public void testSetRouterPriority() throws Exception { - helloPacket.setRouterPriority(2); - result2 = helloPacket.routerPriority(); - assertThat(result2, is(notNullValue())); - assertThat(result2, is(2)); - } - - /** - * Tests helloInterval() getter method. - */ - @Test - public void testGetHelloInterval() throws Exception { - helloPacket.setHelloInterval(10); - result2 = helloPacket.helloInterval(); - assertThat(result2, is(notNullValue())); - assertThat(result2, is(10)); - } - - /** - * Tests helloInterval() setter method. - */ - @Test - public void testSetHelloInterval() throws Exception { - helloPacket.setHelloInterval(10); - result2 = helloPacket.helloInterval(); - assertThat(result2, is(notNullValue())); - assertThat(result2, is(10)); - } - - /** - * Tests routerDeadInterval() getter method. - */ - @Test - public void testGetRouterDeadInterval() throws Exception { - helloPacket.setRouterDeadInterval(50); - result2 = helloPacket.routerDeadInterval(); - assertThat(result2, is(notNullValue())); - assertThat(result2, is(50)); - } - - /** - * Tests routerDeadInterval() setter method. - */ - @Test - public void testSetRouterDeadInterval() throws Exception { - helloPacket.setRouterDeadInterval(50); - result2 = helloPacket.routerDeadInterval(); - assertThat(result2, is(notNullValue())); - assertThat(result2, is(50)); - } - - /** - * Tests ospfMessageType() getter method. - */ - @Test - public void testGetOspfMessageType() throws Exception { - ospfPacketType = helloPacket.ospfMessageType(); - assertThat(ospfPacketType, is(notNullValue())); - assertThat(ospfPacketType, is(OspfPacketType.HELLO)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - ospfPacketHeader = new OspfPacketHeader(); - ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1")); - ospfPacketHeader.setAuthentication(0); - ospfPacketHeader.setAuthType(0); - ospfPacketHeader.setChecksum(12345); - ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10")); - ospfPacketHeader.setOspfPacLength(56); - ospfPacketHeader.setOspftype(1); - ospfPacketHeader.setOspfVer(2); - ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3")); - packet = createByteForHelloPacket(); - channelBuffer = ChannelBuffers.copiedBuffer(packet); - helloPacket.readFrom(channelBuffer); - assertThat(helloPacket, is(notNullValue())); - assertThat(helloPacket.ospfMessageType(), is(OspfPacketType.HELLO)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result3 = helloPacket.asBytes(); - assertThat(result3, is(notNullValue())); - } - - /** - * Tests getHelloHeaderAsByteArray() method. - */ - @Test - public void testGetHelloHeaderAsByteArray() throws Exception { - result3 = helloPacket.getHelloHeaderAsByteArray(); - assertThat(result3, is(notNullValue())); - } - - /** - * Tests getHelloBodyAsByteArray() method. - */ - @Test - public void testGetHelloBodyAsByteArray() throws Exception { - neighborAddress.add("10.226.165.100"); - result3 = helloPacket.getHelloBodyAsByteArray(); - assertThat(result3, is(notNullValue())); - } - - /** - * Tests getHelloBodyAsByteArray() method. - */ - @Test - public void testReadHelloBody() throws Exception { - helloPacket.getHelloBodyAsByteArray(); - assertThat(helloPacket, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(helloPacket.toString(), is(notNullValue())); - } - - /** - * Utility method used by junit methods. - */ - private byte[] createByteForHelloPacket() { - byte[] helloPacket = {2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0, 0, 40, -64, -88, -86, 8, 0, 0, 0, 0}; - - return helloPacket; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledgeTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledgeTest.java deleted file mode 100644 index f25b66a6f7..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledgeTest.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; - -import org.hamcrest.MatcherAssert; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; - -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for LsAck. - */ -public class LsAcknowledgeTest { - - private LsaHeader lsaHeader; - private LsAcknowledge lsAck; - private OspfPacketType ospfPacketType; - private OspfPacketHeader ospfPacketHeader; - private byte[] result; - private ChannelBuffer channelBuffer; - private OpaqueLsaHeader opaqueLsaHeader; - - @Before - public void setUp() throws Exception { - lsaHeader = new LsaHeader(); - lsAck = new LsAcknowledge(); - lsAck.setAuthType(1); - lsAck.setOspftype(5); - lsAck.setRouterId(Ip4Address.valueOf("10.226.165.164")); - lsAck.setAreaId(Ip4Address.valueOf("10.226.165.100")); - lsAck.setChecksum(201); - lsAck.setAuthentication(2); - lsAck.setOspfPacLength(48); - lsAck.setOspfVer(2); - } - - @After - public void tearDown() throws Exception { - lsaHeader = null; - lsAck = null; - ospfPacketType = null; - ospfPacketHeader = null; - result = null; - channelBuffer = null; - opaqueLsaHeader = null; - } - - /** - * Tests getLinkStateHeaders() getter method. - */ - @Test - public void testGetLinkStateHeaders() throws Exception { - lsaHeader = createLsaHeader(); - lsAck.addLinkStateHeader(lsaHeader); - lsAck.addLinkStateHeader(lsaHeader); - List headers = lsAck.getLinkStateHeaders(); - assertThat(headers.size(), is(1)); - - } - - /** - * Tests addLinkStateHeader() method. - */ - @Test - public void testAddLinkStateHeader() throws Exception { - lsaHeader = createLsaHeader(); - lsAck.addLinkStateHeader(lsaHeader); - lsAck.addLinkStateHeader(lsaHeader); - assertThat(lsAck, is(notNullValue())); - } - - /** - * Tests ospfMessageType() getter method. - */ - @Test - public void testGetOspfMessageType() throws Exception { - ospfPacketType = lsAck.ospfMessageType(); - assertThat(ospfPacketType, is(notNullValue())); - assertThat(ospfPacketType, is(OspfPacketType.LSAACK)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - ospfPacketHeader = new OspfPacketHeader(); - ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1")); - ospfPacketHeader.setAuthentication(0); - ospfPacketHeader.setAuthType(0); - ospfPacketHeader.setChecksum(12345); - ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10")); - ospfPacketHeader.setOspfPacLength(56); - ospfPacketHeader.setOspftype(5); - ospfPacketHeader.setOspfVer(2); - ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3")); - result = createByteForLSAck(); - lsAck = new LsAcknowledge(ospfPacketHeader); - channelBuffer = ChannelBuffers.copiedBuffer(result); - lsAck.readFrom(channelBuffer); - assertThat(lsAck, is(notNullValue())); - assertThat(lsAck.ospfMessageType(), is(OspfPacketType.LSAACK)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result = lsAck.asBytes(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLsAckAsByteArray() method. - */ - @Test - public void testGetLsAckAsByteArray() throws Exception { - result = lsAck.getLsAckAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests getLsAckBodyAsByteArray() method. - */ - @Test - public void testGetLsAckBodyAsByteArray() throws Exception { - lsaHeader = createLsaHeader(); - opaqueLsaHeader = new OpaqueLsaHeader(); - lsAck.addLinkStateHeader(lsaHeader); - lsAck.addLinkStateHeader(opaqueLsaHeader); - result = lsAck.getLsAckBodyAsByteArray(); - assertThat(result, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - MatcherAssert.assertThat(lsAck.toString(), is(notNullValue())); - } - - /** - * Utility method used by junit methods. - */ - private LsaHeader createLsaHeader() { - lsaHeader = new LsaHeader(); - lsaHeader.setAge(10); - lsaHeader.setLinkStateId("10.226.165.164"); - lsaHeader.setLsCheckSum(222); - lsaHeader.setLsPacketLen(48); - lsaHeader.setLsSequenceNo(2020); - lsaHeader.setLsType(5); - lsaHeader.setOptions(2); - lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.165")); - return lsaHeader; - } - - /** - * Utility method used by junit methods. - */ - private byte[] createByteForLSAck() { - byte[] lsAckPacket = {2, 5, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, -30, - -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86, - 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48}; - - return lsAckPacket; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java deleted file mode 100644 index af6320f2cb..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; -import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket; - -import java.net.UnknownHostException; -import java.util.List; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for LsRequest. - */ -public class LsRequestTest { - - private LsRequest lsRequest; - private List result; - private OspfPacketType ospfMessageType; - private OspfPacketHeader ospfPacketHeader; - private byte[] result1; - private String result2; - private ChannelBuffer channelBuffer; - private LsRequestPacket lsRequestPacket; - - @Before - public void setUp() throws Exception { - lsRequest = new LsRequest(); - lsRequest.setAuthType(1); - lsRequest.setOspftype(3); - lsRequest.setRouterId(Ip4Address.valueOf("10.226.165.164")); - lsRequest.setAreaId(Ip4Address.valueOf("10.226.165.163")); - lsRequest.setChecksum(201); - lsRequest.setAuthentication(2); - lsRequest.setOspfPacLength(48); - lsRequest.setOspfVer(2); - } - - @After - public void tearDown() throws Exception { - lsRequest = null; - result = null; - ospfMessageType = null; - ospfPacketHeader = null; - result1 = null; - channelBuffer = null; - lsRequestPacket = null; - } - - /** - * Tests addLinkStateRequests() method. - */ - @Test - public void testAddLinkStateRequests() throws Exception { - lsRequest.addLinkStateRequests(createLsRequestPacket()); - result = lsRequest.getLinkStateRequests(); - assertThat(result, is(notNullValue())); - assertThat(result.size(), is(1)); - } - - /** - * Tests getLinkStateRequests() method. - */ - @Test - public void testGetLinkStateRequests() throws Exception { - lsRequest.addLinkStateRequests(createLsRequestPacket()); - lsRequest.addLinkStateRequests(new LsRequestPacket()); - result = lsRequest.getLinkStateRequests(); - assertThat(result, is(notNullValue())); - assertThat(result.size(), is(2)); - } - - /** - * Tests ospfMessageType()getter method. - */ - @Test - public void testGetOspfMessageType() throws Exception { - ospfMessageType = lsRequest.ospfMessageType(); - assertThat(ospfMessageType, is(notNullValue())); - assertThat(ospfMessageType, is(OspfPacketType.LSREQUEST)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - ospfPacketHeader = new OspfPacketHeader(); - ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1")); - ospfPacketHeader.setAuthentication(0); - ospfPacketHeader.setAuthType(0); - ospfPacketHeader.setChecksum(12345); - ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10")); - ospfPacketHeader.setOspfPacLength(56); - ospfPacketHeader.setOspftype(3); - ospfPacketHeader.setOspfVer(2); - ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3")); - lsRequest = new LsRequest(ospfPacketHeader); - result1 = createByteLsReqestPacket(); - channelBuffer = ChannelBuffers.copiedBuffer(result1); - lsRequest.readFrom(channelBuffer); - assertThat(lsRequest, is(notNullValue())); - assertThat(lsRequest.ospfMessageType(), is(OspfPacketType.LSREQUEST)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result1 = lsRequest.asBytes(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests getLsrHeaderAsByteArray() method. - */ - @Test - public void testGetLsrHeaderAsByteArray() throws Exception { - result1 = lsRequest.getLsrHeaderAsByteArray(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests getLsrBodyAsByteArray() method. - */ - @Test - public void testGetLsrBodyAsByteArray() throws Exception { - lsRequest.addLinkStateRequests(createLsRequestPacket()); - lsRequest.addLinkStateRequests(new LsRequestPacket()); - result1 = lsRequest.getLsrBodyAsByteArray(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - result2 = lsRequest.toString(); - assertThat(result2, is(notNullValue())); - } - - private LsRequestPacket createLsRequestPacket() throws UnknownHostException { - lsRequestPacket = new LsRequestPacket(); - lsRequestPacket.setOwnRouterId("165"); - lsRequestPacket.setLinkStateId("10.226.165.164"); - lsRequestPacket.setLsType(2); - return lsRequestPacket; - } - - private byte[] createByteLsReqestPacket() { - byte[] lsRequestPacket = {2, 3, 0, 36, -64, -88, -86, 3, 0, 0, 0, 1, -67, - -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88, -86, 8, - -64, -88, -86, 8}; - return lsRequestPacket; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdateTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdateTest.java deleted file mode 100644 index b45821b321..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdateTest.java +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.ospfpacket.types; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.controller.OspfLsa; -import org.onosproject.ospf.controller.OspfPacketType; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa; -import org.onosproject.ospf.protocol.lsa.types.ExternalLsa; -import org.onosproject.ospf.protocol.lsa.types.NetworkLsa; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.lsa.types.SummaryLsa; -import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader; - -import java.util.List; -import java.util.Vector; - -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for LsUpdate. - */ -public class LsUpdateTest { - - private final byte[] packet1 = {0, 0, 0, 2, 0, 10, 2, 1, 7, 7, 7, 7, 7, 7, 7, 7, - -128, 0, 0, 2, 46, -126, 0, 48, 0, 0, 0, 2, 1, 1, 1, 1, 10, 10, 10, 7, 1, - 0, 0, 10, 10, 10, 10, 0, -1, -1, -1, 0, 3, 0, 0, 10, 0, 10, 66, 10, 1, 0, - 0, 1, 7, 7, 7, 7, -128, 0, 0, 1, -64, 79, 0, 116, 0, 1, 0, 4, 0, 0, 0, 0, - 0, 2, 0, 84, 0, 1, 0, 1, 1, 0, 0, 0, 0, 2, 0, 4, 10, 10, 10, 0, 0, 5, 0, - 4, 0, 0, 0, 0, 0, 6, 0, 4, 73, -104, -106, -128, 0, 7, 0, 4, 73, -104, -106, - -128, 0, 8, 0, 32, 73, -104, -106, -128, 73, -104, -106, -128, 73, -104, -106, - -128, 73, -104, -106, -128, 73, -104, -106, -128, 73, -104, -106, -128, 73, - -104, -106, -128, 73, -104, -106, -128, 0, 9, 0, 4, 0, 0, 0, 0}; - private final byte[] packet3 = {0, 0, 0, 1, 0, 100, 2, 10, 1, 0, 0, 1, 9, 9, 9, 9, - -128, 0, 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, - 0, 4, -64, -88, 7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, - 0, 0, 5, 0, 4, 0, 0, 0, 1, 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, - 0, 8, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, - 0, 0, 1}; - private final byte[] packet2 = {0, 0, - 0, 1, 0, 1, 2, 2, -64, -88, - -86, 8, -64, -88, -86, 8, -128, 0, 0, 1, 55, -73, 0, 32, -1, -1, -1, 0, -64, - -88, -86, 3, -64, -88, -86, 8}; - private final byte[] packet4 = {0, 0, 0, 1, 0, 100, 2, 9, 1, 0, 0, 1, 9, 9, 9, 9, -128, - 0, 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, 0, 4, -64, - -88, 7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, - 0, 0, 1, 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, 0, 0, 1}; - - private final byte[] packet5 = {0, 0, 0, 1, 0, 100, 2, 11, 1, 0, 0, 1, 9, 9, 9, 9, -128, 0, - 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, 0, 4, -64, -88, - 7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, - 1, 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, 0, 0, 1}; - private final byte[] packet6 = {0, 0, 0, 1, 0, 100, 2, 3, 1, 0, 0, 1, 9, 9, 9, 9, -128, - 0, 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, 0, 4, -64, - -88, 7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, - 0, 0, 0, 1, 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 9, 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, 0, 0, 1}; - private final byte[] packet7 = {0, 0, 0, 1, 0, 100, 2, 4, 1, 0, 0, 1, 9, 9, 9, 9, -128, - 0, 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, 0, 4, -64, - -88, 7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, - 0, 0, 1, 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 9, 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, 0, 0, 1}; - - private final byte[] packet8 = {0, 0, 0, 2, 1, 4, 2, 1, 5, 5, 5, 5, 5, 5, 5, 5, -128, 0, 0, - 4, -39, -84, 0, 36, 1, 0, 0, 1, -64, -88, 7, 90, -64, -88, 7, 92, 2, 0, 0, 10, 1, 4, - 2, 4, -34, -34, -34, -34, 5, 5, 5, 5, -128, 0, 0, 1, 31, -93, 0, 28, 0, 0, 0, 0, 0, - 0, 0, 10}; - private LsUpdate lsUpdate; - private RouterLsa ospflsa; - private NetworkLsa ospflsa1; - private SummaryLsa ospflsa2; - private AsbrSummaryLsa ospflsa3; - private ExternalLsa ospflsa4; - private Vector listLsa = new Vector(); - private List lsa; - private int result; - private OspfPacketType ospfMessageType; - private OspfPacketHeader ospfPacketHeader; - private byte[] result1; - private ChannelBuffer channelBuffer; - private OpaqueLsa10 opaqueLsa10; - private OpaqueLsa9 opaqueLsa9; - private OpaqueLsa11 opaqueLsa11; - - @Before - public void setUp() throws Exception { - lsUpdate = new LsUpdate(); - ospflsa = new RouterLsa(); - lsUpdate.setAuthType(1); - lsUpdate.setOspftype(2); - lsUpdate.setRouterId(Ip4Address.valueOf("10.226.165.164")); - lsUpdate.setAreaId(Ip4Address.valueOf("10.226.165.100")); - lsUpdate.setChecksum(201); - lsUpdate.setAuthentication(2); - lsUpdate.setOspfPacLength(48); - lsUpdate.setOspfVer(2); - ospflsa.setLsType(1); - lsUpdate.addLsa(ospflsa); - ospflsa1 = new NetworkLsa(); - ospflsa1.setNetworkMask(Ip4Address.valueOf("10.226.165.164")); - ospflsa1.setLsType(2); - lsUpdate.addLsa(ospflsa1); - ospflsa2 = new SummaryLsa(new LsaHeader()); - ospflsa2.setLsType(3); - lsUpdate.addLsa(ospflsa2); - ospflsa3 = new AsbrSummaryLsa(new LsaHeader()); - ospflsa3.setNetworkMask(Ip4Address.valueOf("10.226.165.164")); - ospflsa3.setLsType(4); - lsUpdate.addLsa(ospflsa3); - ospflsa4 = new ExternalLsa(new LsaHeader()); - ospflsa4.setLsType(5); - lsUpdate.addLsa(ospflsa4); - } - - @After - public void tearDown() throws Exception { - lsUpdate = null; - ospflsa = null; - ospflsa1 = null; - ospflsa2 = null; - ospflsa3 = null; - ospflsa4 = null; - listLsa.clear(); - lsa = null; - ospfMessageType = null; - ospfPacketHeader = null; - result1 = null; - channelBuffer = null; - opaqueLsa9 = null; - opaqueLsa10 = null; - opaqueLsa11 = null; - } - - /** - * Tests getLsaList() getter method. - */ - @Test - public void testGetListLsa() throws Exception { - lsUpdate.addLsa(ospflsa); - lsUpdate.addLsa(ospflsa); - lsa = lsUpdate.getLsaList(); - assertThat(lsa, is(notNullValue())); - assertThat(lsa.size(), is(5)); - } - - /** - * Tests addLsa() method. - */ - @Test - public void testAddLsa() throws Exception { - lsUpdate.addLsa(ospflsa); - assertThat(lsUpdate, is(notNullValue())); - } - - /** - * Tests noLsa() getter method. - */ - @Test - public void testGetNoLsa() throws Exception { - lsUpdate.setNumberOfLsa(5); - result = lsUpdate.noLsa(); - assertThat(result, is(notNullValue())); - assertThat(result, is(5)); - } - - /** - * Tests noLsa() setter method. - */ - @Test - public void testSetNoLsa() throws Exception { - lsUpdate.setNumberOfLsa(5); - result = lsUpdate.noLsa(); - assertThat(result, is(notNullValue())); - assertThat(result, is(5)); - } - - /** - * Tests ospfMessageType() getter method. - */ - @Test - public void testGetOspfMessageType() throws Exception { - ospfMessageType = lsUpdate.ospfMessageType(); - assertThat(ospfMessageType, is(OspfPacketType.LSUPDATE)); - } - - /** - * Tests readFrom() method. - */ - @Test - public void testReadFrom() throws Exception { - ospfPacketHeader = new OspfPacketHeader(); - ospfPacketHeader.setAreaId(Ip4Address.valueOf("1.1.1.1")); - ospfPacketHeader.setAuthentication(0); - ospfPacketHeader.setAuthType(0); - ospfPacketHeader.setChecksum(12345); - ospfPacketHeader.setDestinationIp(Ip4Address.valueOf("10.10.10.10")); - ospfPacketHeader.setOspfPacLength(56); - ospfPacketHeader.setOspftype(4); - ospfPacketHeader.setOspfVer(2); - ospfPacketHeader.setRouterId(Ip4Address.valueOf("2.2.2.2")); - ospfPacketHeader.setSourceIp(Ip4Address.valueOf("3.3.3.3")); - lsUpdate = new LsUpdate(ospfPacketHeader); - result1 = createLsUpdatePacket(); - channelBuffer = ChannelBuffers.copiedBuffer(result1); - lsUpdate.readFrom(channelBuffer); - channelBuffer = ChannelBuffers.copiedBuffer(packet1); - lsUpdate.readFrom(channelBuffer); - channelBuffer = ChannelBuffers.copiedBuffer(packet2); - lsUpdate.readFrom(channelBuffer); - channelBuffer = ChannelBuffers.copiedBuffer(packet3); - lsUpdate.readFrom(channelBuffer); - channelBuffer = ChannelBuffers.copiedBuffer(packet4); - lsUpdate.readFrom(channelBuffer); - channelBuffer = ChannelBuffers.copiedBuffer(packet5); - lsUpdate.readFrom(channelBuffer); - channelBuffer = ChannelBuffers.copiedBuffer(packet6); - lsUpdate.readFrom(channelBuffer); - channelBuffer = ChannelBuffers.copiedBuffer(packet7); - lsUpdate.readFrom(channelBuffer); - channelBuffer = ChannelBuffers.copiedBuffer(packet8); - lsUpdate.readFrom(channelBuffer); - assertThat(lsUpdate, is(notNullValue())); - assertThat(lsUpdate.ospfMessageType(), is(OspfPacketType.LSUPDATE)); - } - - /** - * Tests asBytes() method. - */ - @Test - public void testAsBytes() throws Exception { - result1 = lsUpdate.asBytes(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests getLsuHeaderAsByteArray() method. - */ - @Test - public void testGetLsuHeaderAsByteArray() throws Exception { - result1 = lsUpdate.getLsuHeaderAsByteArray(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests getLsuBodyAsByteArray() method. - */ - @Test - public void testGetLsuBodyAsByteArray() throws Exception { - lsUpdate.setNumberOfLsa(8); - lsUpdate.addLsa(ospflsa3); - opaqueLsa9 = new OpaqueLsa9(new OpaqueLsaHeader()); - opaqueLsa9.setLsType(9); - lsUpdate.addLsa(opaqueLsa9); - opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader()); - opaqueLsa10.setLsType(10); - lsUpdate.addLsa(opaqueLsa10); - opaqueLsa11 = new OpaqueLsa11(new OpaqueLsaHeader()); - opaqueLsa10.setLsType(11); - lsUpdate.addLsa(opaqueLsa11); - result1 = lsUpdate.getLsuBodyAsByteArray(); - assertThat(result1, is(notNullValue())); - } - - @Test - public void testGetLsuBodyAsByteArray1() throws Exception { - lsUpdate.setNumberOfLsa(8); - opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader()); - opaqueLsa10.setLsType(10); - lsUpdate.addLsa(opaqueLsa10); - assertThat(result1, is(nullValue())); - } - - @Test - public void testGetLsuBodyAsByteArray2() throws Exception { - opaqueLsa11 = new OpaqueLsa11(new OpaqueLsaHeader()); - opaqueLsa11.setLsType(11); - lsUpdate.addLsa(opaqueLsa11); - result1 = lsUpdate.getLsuBodyAsByteArray(); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests to string method. - */ - @Test - public void testToString() throws Exception { - assertThat(lsUpdate.toString(), is(notNullValue())); - } - - /** - * Utility method used by junit methods. - */ - private byte[] createLsUpdatePacket() { - byte[] lsUpdatePacket = {0, 0, 0, 7, 0, 2, 2, - 1, -64, -88, -86, 3, -64, -88, -86, 3, -128, 0, 0, 1, 58, - -100, 0, 48, 2, 0, 0, 2, -64, -88, -86, 0, -1, -1, -1, 0, - 3, 0, 0, 10, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10, - 0, 3, 2, 5, 80, -44, 16, 0, -64, -88, -86, 2, -128, 0, 0, - 1, 42, 73, 0, 36, -1, -1, -1, -1, -128, 0, 0, 20, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -108, 121, -85, 0, -64, -88, - -86, 2, -128, 0, 0, 1, 52, -91, 0, 36, -1, -1, -1, 0, - -128, 0, 0, 20, -64, -88, -86, 1, 0, 0, 0, 0, 0, 3, 2, 5, - -64, -126, 120, 0, -64, -88, -86, 2, -128, 0, 0, 1, -45, - 25, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 2, 5, -64, -88, 0, 0, -64, -88, -86, 2, - -128, 0, 0, 1, 55, 8, 0, 36, -1, -1, -1, 0, -128, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, 1, 0, - -64, -88, -86, 2, -128, 0, 0, 1, 44, 18, 0, 36, -1, -1, -1, 0, -128, 0, - 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, -84, 0, -64, -88, - -86, 2, -128, 0, 0, 1, 51, 65, 0, 36, -1, -1, -1, 0, -128, 0, 0, 20, -64, - -88, -86, 10, 0, 0, 0, 0}; - return lsUpdatePacket; - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/ChecksumCalculatorTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/ChecksumCalculatorTest.java deleted file mode 100644 index 5f96afcfbc..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/ChecksumCalculatorTest.java +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.util; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.protocol.lsa.LsaHeader; -import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader; -import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa; -import org.onosproject.ospf.protocol.lsa.types.ExternalLsa; -import org.onosproject.ospf.protocol.lsa.types.NetworkLsa; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11; -import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9; -import org.onosproject.ospf.protocol.lsa.types.RouterLsa; -import org.onosproject.ospf.protocol.lsa.types.SummaryLsa; -import org.onosproject.ospf.protocol.ospfpacket.types.DdPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.HelloPacket; -import org.onosproject.ospf.protocol.ospfpacket.types.LsAcknowledge; -import org.onosproject.ospf.protocol.ospfpacket.types.LsRequest; -import org.onosproject.ospf.protocol.ospfpacket.types.LsUpdate; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.MatcherAssert.assertThat; - -/** - * Unit test class for ChecksumCalculator. - */ -public class ChecksumCalculatorTest { - - private final int ospfChecksumPos1 = 12; - private final int ospfChecksumPos2 = 13; - private final int lsaChecksumPos1 = 16; - private final int lsaChecksumPos2 = 17; - private final byte[] updatePacket = {1, 1, 1, 1, 2, 4, 0, -96, 9, 9, 9, 9, 5, 5, 5, 5, 62, 125, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 100, 2, 10, 1, 0, 0, 1, 9, 9, 9, 9, -128, - 0, 0, 1, -7, 62, 0, -124, 0, 2, 0, 108, 0, 1, 0, 1, 2, 0, 0, 0, 0, 2, 0, 4, -64, -88, - 7, -91, 0, 3, 0, 4, -64, -88, 7, -91, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 4, 0, 0, 0, 1, - 0, 6, 0, 4, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 8, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 0, 4, 0, 0, 0, 0, -128, 2, 0, 4, 0, 0, 0, 1}; - - private final byte[] helloPacket = {2, 1, 0, 44, -64, -88, -86, 8, 0, 0, 0, 1, 39, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 10, 2, 1, 0, 0, 0, 40, -64, -88, - -86, 8, 0, 0, 0, 0}; - private final byte[] rlsa = {14, 16, 2, 1, -64, -88, -86, 2, -64, -88, -86, 2, -128, 0, - 0, 1, 74, -114, 0, 48, 2, 0, 0, 2, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10, - -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10}; - private ChecksumCalculator checksumCalculator; - private boolean validate; - private HelloPacket hello; - private LsUpdate message; - private DdPacket message1; - private LsRequest message2; - private RouterLsa router; - private LsAcknowledge lsack; - private ExternalLsa external; - private NetworkLsa external1; - private SummaryLsa external2; - private AsbrSummaryLsa external3; - private OpaqueLsa9 external4; - private OpaqueLsa10 external5; - private OpaqueLsa11 external6; - private byte[] result; - - @Before - public void setUp() throws Exception { - checksumCalculator = new ChecksumCalculator(); - } - - @After - public void tearDown() throws Exception { - checksumCalculator = null; - hello = null; - message = null; - message1 = null; - message2 = null; - router = null; - lsack = null; - external = null; - external1 = null; - external2 = null; - external3 = null; - result = null; - } - - /** - * Tests convertToSixteenBits() method. - */ - @Test - public void testConvertToSixteenBits() throws Exception { - int num = checksumCalculator.convertToSixteenBits("16cdd"); - assertThat(num, is(27870)); - } - - /** - * Tests isValidOspfCheckSum() method. - */ - @Test - public void testIsValidOspfCheckSum() throws Exception { - hello = new HelloPacket(); - hello.setOspfVer(2); - hello.setOspftype(1); - hello.setOspfPacLength(172); - hello.setRouterId(Ip4Address.valueOf("192.168.170.3")); - hello.setAreaId(Ip4Address.valueOf("0.0.0.1")); - hello.setChecksum(5537); - hello.setAuthType(0); - hello.setAuthentication(0); - validate = checksumCalculator.isValidOspfCheckSum(hello, ospfChecksumPos1, ospfChecksumPos2); - assertThat(validate, is(false)); - lsack = new LsAcknowledge(); - lsack.setOspfVer(2); - lsack.setOspftype(5); - lsack.setOspfPacLength(172); - lsack.setRouterId(Ip4Address.valueOf("192.168.170.3")); - lsack.setAreaId(Ip4Address.valueOf("0.0.0.1")); - lsack.setChecksum(37537); - lsack.setAuthType(0); - lsack.setAuthentication(0); - validate = checksumCalculator.isValidOspfCheckSum(lsack, ospfChecksumPos1, ospfChecksumPos2); - assertThat(validate, is(true)); - message = new LsUpdate(); - message.setOspfVer(2); - message.setOspftype(5); - message.setOspfPacLength(172); - message.setRouterId(Ip4Address.valueOf("192.168.170.3")); - message.setAreaId(Ip4Address.valueOf("0.0.0.1")); - message.setChecksum(37537); - message.setAuthType(0); - message.setAuthentication(0); - validate = checksumCalculator.isValidOspfCheckSum(message, ospfChecksumPos1, ospfChecksumPos2); - assertThat(validate, is(true)); - message1 = new DdPacket(); - message1.setOspfVer(2); - message1.setOspftype(5); - message1.setOspfPacLength(172); - message1.setRouterId(Ip4Address.valueOf("192.168.170.3")); - message1.setAreaId(Ip4Address.valueOf("0.0.0.1")); - message1.setChecksum(37537); - message1.setAuthType(0); - message1.setAuthentication(0); - validate = checksumCalculator.isValidOspfCheckSum(message1, ospfChecksumPos1, ospfChecksumPos2); - assertThat(validate, is(true)); - message2 = new LsRequest(); - message2.setOspfVer(2); - message2.setOspftype(5); - message2.setOspfPacLength(172); - message2.setRouterId(Ip4Address.valueOf("192.168.170.3")); - message2.setAreaId(Ip4Address.valueOf("0.0.0.1")); - message2.setChecksum(37537); - message2.setAuthType(0); - message2.setAuthentication(0); - validate = checksumCalculator.isValidOspfCheckSum(message2, ospfChecksumPos1, ospfChecksumPos2); - assertThat(validate, is(true)); - } - - /** - * Tests isValidLsaCheckSum() method. - */ - @Test - public void testIsValidLsaCheckSum() throws Exception { - router = new RouterLsa(); - router.setAge(1); - router.setOptions(2); - router.setLsType(1); - router.setLinkStateId("192.168.170.3"); - router.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.3")); - router.setLsSequenceNo(2147483649L); - router.setLsCheckSum(49499); - router.setLsPacketLen(48); - validate = checksumCalculator.isValidLsaCheckSum(router, router.lsType(), lsaChecksumPos1, lsaChecksumPos2); - assertThat(validate, is(true)); - - } - - /** - * Tests isValidLsaCheckSum() method. - */ - @Test - public void testIsValidLsaCheckSum4() throws Exception { - external = new ExternalLsa(new LsaHeader()); - external.setAge(2); - external.setOptions(2); - external.setLsType(5); - external.setLinkStateId("80.212.16.0"); - external.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2")); - external.setLsSequenceNo(2147483649L); - external.setLsCheckSum(25125); - external.setLsPacketLen(36); - validate = checksumCalculator.isValidLsaCheckSum(external, external.lsType(), lsaChecksumPos1, lsaChecksumPos2); - assertThat(validate, is(false)); - } - - /** - * Tests isValidLsaCheckSum() method. - */ - @Test(expected = Exception.class) - public void testIsValidLsaCheckSum5() throws Exception { - external1 = new NetworkLsa(); - external1.setAge(2); - external1.setOptions(2); - external1.setLsType(2); - external1.setLinkStateId("80.212.16.0"); - external1.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2")); - external1.setLsSequenceNo(2147483649L); - external1.setLsCheckSum(25125); - external1.setLsPacketLen(36); - validate = checksumCalculator.isValidLsaCheckSum(external1, external1.lsType(), - lsaChecksumPos1, lsaChecksumPos2); - assertThat(validate, is(false)); - } - - /** - * Tests isValidLsaCheckSum() method. - */ - @Test - public void testIsValidLsaCheckSum6() throws Exception { - - external2 = new SummaryLsa(new LsaHeader()); - external2.setAge(2); - external2.setOptions(2); - external2.setLsType(3); - external2.setLinkStateId("80.212.16.0"); - external2.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2")); - external2.setLsSequenceNo(2147483649L); - external2.setLsCheckSum(25125); - external2.setLsPacketLen(36); - validate = checksumCalculator.isValidLsaCheckSum(external2, external2.lsType(), - lsaChecksumPos1, lsaChecksumPos2); - assertThat(validate, is(false)); - } - - /** - * Tests isValidLsaCheckSum() method. - */ - @Test(expected = Exception.class) - public void testIsValidLsaCheckSum7() throws Exception { - external3 = new AsbrSummaryLsa(new LsaHeader()); - external3.setAge(2); - external3.setOptions(2); - external3.setLsType(4); - external3.setLinkStateId("80.212.16.0"); - external3.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2")); - external3.setLsSequenceNo(2147483649L); - external3.setLsCheckSum(25125); - external3.setLsPacketLen(36); - validate = checksumCalculator.isValidLsaCheckSum(external3, external3.lsType(), - lsaChecksumPos1, lsaChecksumPos2); - assertThat(validate, is(false)); - } - - /** - * Tests isValidLsaCheckSum() method. - */ - @Test(expected = Exception.class) - public void testIsValidLsaCheckSum1() throws Exception { - external4 = new OpaqueLsa9(new OpaqueLsaHeader()); - external4.setAge(2); - external4.setOptions(2); - external4.setLsType(9); - external4.setLinkStateId("80.212.16.0"); - external4.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2")); - external4.setLsSequenceNo(2147483649L); - external4.setLsCheckSum(25125); - external4.setLsPacketLen(36); - validate = checksumCalculator.isValidLsaCheckSum(external4, external4.lsType(), - lsaChecksumPos1, lsaChecksumPos2); - assertThat(validate, is(false)); - } - - /** - * Tests isValidLsaCheckSum() method. - */ - @Test(expected = Exception.class) - public void testIsValidLsaCheckSum2() throws Exception { - external5 = new OpaqueLsa10(new OpaqueLsaHeader()); - external5.setAge(2); - external5.setOptions(2); - external5.setLsType(10); - external5.setLinkStateId("80.212.16.0"); - external5.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2")); - external5.setLsSequenceNo(2147483649L); - external5.setLsCheckSum(25125); - external5.setLsPacketLen(36); - validate = checksumCalculator.isValidLsaCheckSum(external5, external5.lsType(), - lsaChecksumPos1, lsaChecksumPos2); - - assertThat(validate, is(false)); - } - - /** - * Tests isValidLsaCheckSum() method. - */ - @Test(expected = Exception.class) - public void testIsValidLsaCheckSum3() throws Exception { - external6 = new OpaqueLsa11(new OpaqueLsaHeader()); - external6.setAge(2); - external6.setOptions(2); - external6.setLsType(10); - external6.setLinkStateId("80.212.16.0"); - external6.setAdvertisingRouter(Ip4Address.valueOf("192.168.170.2")); - external6.setLsSequenceNo(2147483649L); - external6.setLsCheckSum(25125); - external6.setLsPacketLen(36); - validate = checksumCalculator.isValidLsaCheckSum(external6, external6.lsType(), - lsaChecksumPos1, lsaChecksumPos2); - assertThat(validate, is(false)); - } - - /** - * Tests validateLsaCheckSum() method. - */ - @Test - public void testValidateLsaCheckSum() throws Exception { - assertThat(checksumCalculator.validateLsaCheckSum(rlsa, lsaChecksumPos1, - lsaChecksumPos2), is(true)); - - } - - /** - * Tests validateOspfCheckSum() method. - */ - @Test - public void testValidateOspfCheckSum() throws Exception { - assertThat(checksumCalculator.validateOspfCheckSum(helloPacket, ospfChecksumPos1, - ospfChecksumPos2), is(true)); - } - - /** - * Tests calculateLsaChecksum() method. - */ - @Test - public void testCalculateLsaChecksum() throws Exception { - result = checksumCalculator.calculateLsaChecksum(rlsa, lsaChecksumPos1, lsaChecksumPos2); - assertThat(result, is(notNullValue())); - } - - /** - * Tests calculateOspfCheckSum() method. - */ - @Test - public void testCalculateOspfCheckSum() throws Exception { - result = checksumCalculator.calculateOspfCheckSum(helloPacket, ospfChecksumPos1, - ospfChecksumPos2); - assertThat(result, is(notNullValue())); - result = checksumCalculator.calculateOspfCheckSum(updatePacket, ospfChecksumPos1, - ospfChecksumPos2); - assertThat(result, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/OspfUtilTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/OspfUtilTest.java deleted file mode 100644 index 4c192a31a0..0000000000 --- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/OspfUtilTest.java +++ /dev/null @@ -1,317 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.ospf.protocol.util; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.Ip4Address; -import org.onosproject.ospf.protocol.lsa.LsaHeader; - -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertThat; - -/** - * Unit test class for OspfUtil. - */ -public class OspfUtilTest { - - private final int ospfChecksumPos1 = 12; - private final int ospfChecksumPos2 = 13; - private final int lsaChecksumPos1 = 16; - private final int lsaChecksumPos2 = 17; - private final int ospfLengthPos1 = 2; - private final int ospfLengthPos2 = 3; - private final int lsaLengthPos1 = 18; - private final int lsaLengthPos2 = 19; - private final byte[] input = {0, 2}; - private final byte[] packet = {2, 1, 0, 52, -64, -88, 56, 1, -64, -88, 56, 1, 0, 100, 0, 100, 0, 0, 0, 0, 0, 0, - 0, 0, -64, -88, 56, 1, 0, 10, 1, 1, 0, 0, 0, 40, -64, -88, 56, 1, -64, -88, 56, 1, -64, -88, 56, 1, -64, - -88, 56, 1}; - private final byte[] rLsa = {14, 16, 2, 1, -64, -88, -86, 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48, 2, - 0, 0, 2, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10, -64, -88, -86, 0, -1, -1, -1, 0, 3, 0, 0, 10}; - private final byte[] opaqueheader = {14, 16, 2, 1, -64, -88, -86, 2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, - 0, 48}; - private int num; - private int result; - private int input2; - private long input4; - private ChannelBuffer channelBuffer; - private byte[] result1; - private LsaHeader lsaHeader; - private boolean result2; - private long result3; - - - @Before - public void setUp() throws Exception { - - } - - @After - public void tearDown() throws Exception { - channelBuffer = null; - result1 = null; - lsaHeader = null; - } - - - /** - * Tests byteToInteger() method. - */ - @Test - public void testByteToInteger() throws Exception { - result = OspfUtil.byteToInteger(input); - assertThat(result, is(notNullValue())); - assertThat(result, is(2)); - - } - - /** - * Tests byteToLong() method. - */ - @Test - public void testByteToLong() throws Exception { - result3 = OspfUtil.byteToLong(input); - assertThat(result3, is(notNullValue())); - assertThat(result3, is(2L)); - } - - /** - * Tests byteToInteger() method. - */ - @Test - public void testByteToLong1() throws Exception { - result3 = OspfUtil.byteToLong(input); - assertThat(result3, is(notNullValue())); - assertThat(result3, is(2L)); - } - - /** - * Tests byteToInteger() method. - */ - @Test - public void testByteToInteger1() throws Exception { - result = OspfUtil.byteToInteger(input); - assertThat(result, is(notNullValue())); - assertThat(result, is(2)); - } - - /** - * Tests to createRandomNumber() method. - */ - @Test - public void testCreateRandomNumber() throws Exception { - num = OspfUtil.createRandomNumber(); - assertThat(num, is(notNullValue())); - } - - /** - * Tests readLsaHeader() method. - */ - @Test - public void testReadLsaHeader2() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(packet); - lsaHeader = OspfUtil.readLsaHeader(channelBuffer); - assertThat(lsaHeader, is(notNullValue())); - } - - /** - * Tests to readLsaHeader method. - */ - @Test - public void testReadLsaHeader1() throws Exception { - channelBuffer = ChannelBuffers.copiedBuffer(opaqueheader); - lsaHeader = OspfUtil.readLsaHeader(channelBuffer); - assertThat(lsaHeader, is(notNullValue())); - } - - /** - * Tests convertToTwoBytes() method. - */ - @Test - public void testConvertToTwoBytes() throws Exception { - input2 = 4; - result1 = OspfUtil.convertToTwoBytes(input2); - assertThat(result1.length, is(2)); - input2 = 1000; - result1 = OspfUtil.convertToTwoBytes(input2); - assertThat(result1.length, is(2)); - } - - /** - * Tests convertToThreeBytes() method. - */ - @Test - public void testConvertToThreeBytes() throws Exception { - input2 = 1000000; - result1 = OspfUtil.convertToThreeBytes(input2); - assertThat(result1.length, is(3)); - input2 = 1000; - result1 = OspfUtil.convertToThreeBytes(input2); - assertThat(result1.length, is(3)); - input2 = 1; - result1 = OspfUtil.convertToThreeBytes(input2); - assertThat(result1.length, is(3)); - } - - /** - * Tests convertToFourBytes() method. - */ - @Test - public void testConvertToFourBytes() throws Exception { - input4 = 214748364110L; - result1 = OspfUtil.convertToFourBytes(input4); - assertThat(result1.length, is(4)); - input4 = 1000000; - result1 = OspfUtil.convertToFourBytes(input4); - assertThat(result1.length, is(4)); - input4 = 10000; - result1 = OspfUtil.convertToFourBytes(input4); - assertThat(result1.length, is(4)); - input4 = 1; - result1 = OspfUtil.convertToFourBytes(input4); - assertThat(result1.length, is(4)); - - } - - /** - * Tests convertToFourBytes() method. - */ - @Test - public void testConvertToFourBytes1() throws Exception { - input4 = 2147483635; - result1 = OspfUtil.convertToFourBytes(this.input4); - assertThat(result1.length, is(4)); - this.input4 = 1000000; - result1 = OspfUtil.convertToFourBytes(this.input4); - assertThat(result1.length, is(4)); - this.input4 = 10000; - result1 = OspfUtil.convertToFourBytes(this.input4); - assertThat(result1.length, is(4)); - this.input4 = 1; - result1 = OspfUtil.convertToFourBytes(this.input4); - assertThat(result1.length, is(4)); - - } - - /** - * Tests addLengthAndCheckSum() method. - */ - @Test - public void testAddLengthAndCheckSum() throws Exception { - result1 = OspfUtil.addLengthAndCheckSum(packet, ospfLengthPos1, ospfLengthPos2, - ospfChecksumPos1, ospfChecksumPos2); - assertThat(result1[ospfChecksumPos1], is(packet[ospfChecksumPos1])); - assertThat(result1[ospfChecksumPos2], is(packet[ospfChecksumPos2])); - assertThat(result1[ospfLengthPos1], is(packet[ospfLengthPos1])); - assertThat(result1[ospfLengthPos2], is(packet[ospfLengthPos2])); - } - - /** - * Tests addMetadata() method. - */ - @Test - public void testAddMetadata() throws Exception { - result1 = OspfUtil.addMetadata(2, packet, 1, Ip4Address.valueOf("1.1.1.1")); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests addLengthAndCheckSum() method. - */ - @Test - public void testAddLsaLengthAndCheckSum() throws Exception { - result1 = OspfUtil.addLengthAndCheckSum(rLsa, lsaLengthPos1, lsaLengthPos2, - lsaChecksumPos1, lsaChecksumPos2); - assertThat(result1[lsaLengthPos1], is(rLsa[lsaLengthPos1])); - assertThat(result1[lsaLengthPos2], is(rLsa[lsaLengthPos2])); - assertThat(result1[lsaChecksumPos1], is(rLsa[lsaChecksumPos1])); - assertThat(result1[lsaChecksumPos2], is(rLsa[lsaChecksumPos2])); - } - - /** - * Tests addMetadata() method. - */ - @Test - public void testAddMetaData() throws Exception { - result1 = OspfUtil.addMetadata(2, packet, 1, Ip4Address.valueOf("2.2.2.2")); - assertThat(result1, is(notNullValue())); - } - - /** - * Tests sameNetwork() method. - */ - @Test - public void testSameNetwork() throws Exception { - result2 = OspfUtil.sameNetwork(Ip4Address.valueOf("10.10.10.10"), Ip4Address.valueOf("10.10.10.11"), - Ip4Address.valueOf("255.255.255.255")); - assertThat(result2, is(false)); - result2 = OspfUtil.sameNetwork(Ip4Address.valueOf("10.10.10.10"), Ip4Address.valueOf("10.10.10.10"), - Ip4Address.valueOf("255.255.255.255")); - assertThat(result2, is(true)); - } - - /** - * Tests isOpaqueEnabled() method. - */ - @Test - public void testIsOpaqueEnabled() throws Exception { - result2 = OspfUtil.isOpaqueEnabled(2); - assertThat(result2, is(false)); - } - - /** - * Tests sameNetwork() method. - */ - @Test - public void testisIsOpaqueEnabled() throws Exception { - result2 = OspfUtil.isOpaqueEnabled(2); - assertThat(result2, is(false)); - } - - /** - * Tests readLsaHeader() method. - */ - @Test - public void testReadLsaHeader() throws Exception { - byte[] header = {0, 10, 2, 1, 7, 7, 7, 7, 7, 7, 7, 7, -128, 0, 0, 2, 46, -126, 0, - 48, 0, 0, 0, 2, 1, 1, 1, 1, 10, 10, 10, 7, 1, 0, 0, 10, 10, 10, 10, 0, -1, -1, -1, - 0, 3, 0, 0, 10, 0, 10, 66, 10, 1, 0, 0, 1, 7, 7, 7, 7, -128, 0, 0, 1, -64, 79, 0, - 116, 0, 1, 0, 4, 0, 0, 0, 0, 0, 2, 0, 84, 0, 1, 0, 1, 1, 0, 0, 0, 0, 2, 0, 4, 10, - 10, 10, 0, 0, 5, 0, 4, 0, 0, 0, 0, 0, 6, 0, 4, 73, -104, -106, -128, 0, 7, 0, 4, 73, - -104, -106, -128, 0, 8, 0, 32, 73, -104, -106, -128, 73, -104, -106, -128, 73, -104, -106, - -128, 73, -104, -106, -128, 73, -104, -106, -128, 73, -104, -106, -128, 73, -104, -106, -128, - 73, -104, -106, -128, 0, 9, 0, 4, 0, 0, 0, 0}; - channelBuffer = ChannelBuffers.copiedBuffer(header); - lsaHeader = OspfUtil.readLsaHeader(channelBuffer); - assertThat(lsaHeader, is(notNullValue())); - } - - /** - * Tests readLsaHeader() method. - */ - @Test - public void testReadreadLsaHeader() throws Exception { - byte[] header = {0, 2, 2, 1, -64, -88, -86, 3, -64, -88, -86, 3, -128, 0, 0, 1, 58, -100, 0, 48}; - channelBuffer = ChannelBuffers.copiedBuffer(header); - lsaHeader = OspfUtil.readLsaHeader(channelBuffer); - assertThat(lsaHeader, is(notNullValue())); - } -} \ No newline at end of file diff --git a/protocols/pcep/pcepio/BUILD b/protocols/pcep/pcepio/BUILD deleted file mode 100644 index cfea3182f7..0000000000 --- a/protocols/pcep/pcepio/BUILD +++ /dev/null @@ -1,8 +0,0 @@ -COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [ - "@org_apache_karaf_shell_console//jar", - "@io_netty_netty//jar", -] - -osgi_jar_with_tests( - deps = COMPILE_DEPS, -) diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepOutOfBoundMessageException.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepOutOfBoundMessageException.java deleted file mode 100644 index 27d5502f72..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepOutOfBoundMessageException.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.exceptions; - -/** - * Custom exception for message out-of-bound. - */ -public class PcepOutOfBoundMessageException extends Exception { - - private static final long serialVersionUID = 3L; - - /** - * Default constructor to create a new exception. - */ - public PcepOutOfBoundMessageException() { - super(); - } - - /** - * Constructor to create exception from message and cause. - * - * @param message the detail of exception in string - * @param cause underlying cause of the error - */ - public PcepOutOfBoundMessageException(final String message, final Throwable cause) { - super(message, cause); - } - - /** - * Constructor to create exception from message. - * - * @param message the detail of exception in string - */ - public PcepOutOfBoundMessageException(final String message) { - super(message); - } - - /** - * Constructor to create exception from cause. - * - * @param cause underlying cause of the error - */ - public PcepOutOfBoundMessageException(final Throwable cause) { - super(cause); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java deleted file mode 100644 index e1798a3131..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepParseException.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.exceptions; - -/** - * Custom Exception for PCEP IO. - */ -public class PcepParseException extends Exception { - - private static final long serialVersionUID = 1L; - private byte errType = 0; - private byte errValue = 0; - - /** - * Default constructor to create a new exception. - */ - public PcepParseException() { - super(); - } - - /** - * Constructor to create exception from message and cause. - * - * @param message the detail of exception in string - * @param cause underlying cause of the error - */ - public PcepParseException(final String message, final Throwable cause) { - super(message, cause); - } - - /** - * Constructor to create exception from message. - * - * @param message the detail of exception in string - */ - public PcepParseException(final String message) { - super(message); - } - - /** - * Constructor to create exception from error type and error value. - * - * @param errType error type of pcep - * @param errValue error value of pcep - */ - public PcepParseException(final byte errType, final byte errValue) { - super(); - this.errType = errType; - this.errValue = errValue; - } - - /** - * Constructor to create exception from cause. - * - * @param cause underlying cause of the error - */ - public PcepParseException(final Throwable cause) { - super(cause); - } - - /** - * Returns error type for this exception. - * - * @return ErrorType - */ - public byte getErrorType() { - return this.errType; - } - - /** - * Returns error value for this exception. - * - * @return ErrorValue - */ - public byte getErrorValue() { - return this.errValue; - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java deleted file mode 100644 index d57310919d..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/PcepTunnelAttributeException.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.exceptions; - -/** - * Custom exception for Tunnel Attributes. - */ -public class PcepTunnelAttributeException extends Exception { - - private static final long serialVersionUID = 2L; - - /** - * Default constructor to create a new exception. - */ - public PcepTunnelAttributeException() { - super(); - } - - /** - * Constructor to create exception from message and cause. - * - * @param message the detail of exception in string - * @param cause underlying cause of the error - */ - public PcepTunnelAttributeException(final String message, final Throwable cause) { - super(message, cause); - } - - /** - * Constructor to create exception from message. - * - * @param message the detail of exception in string - */ - public PcepTunnelAttributeException(final String message) { - super(message); - } - - /** - * Constructor to create exception from cause. - * - * @param cause underlying cause of the error - */ - public PcepTunnelAttributeException(final Throwable cause) { - super(cause); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java deleted file mode 100644 index b3d452e508..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/exceptions/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * PCEP custom exceptions. - */ -package org.onosproject.pcepio.exceptions; diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java deleted file mode 100644 index 49056654cd..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcInitiatedLspRequest.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity Provides PcInitiatedLspRequest for PCEP Initiate message. - * Reference : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03. - */ -public interface PcInitiatedLspRequest { - - /** - * Returns object of PcepSrpObject. - * - * @return srpObject PCEP SRP object - */ - PcepSrpObject getSrpObject(); - - /** - * Returns object of PcepLspObject. - * - * @return lspObject PCEP LSP object - */ - PcepLspObject getLspObject(); - - /** - * Returns object of PcepEndPointsObject. - * - * @return endPointsObject PCEP EndPoints object - */ - PcepEndPointsObject getEndPointsObject(); - - /** - * Returns object of PcepEroObject. - * - * @return eroObject PCEP ERO object - */ - PcepEroObject getEroObject(); - - /** - * Returns object of PcepAttribute. - * - * @return pcepAttribute PCEP Attributes - */ - PcepAttribute getPcepAttribute(); - - /** - * Sets PcepSrpObject. - * - * @param srpobj PCEP SRP object - */ - void setSrpObject(PcepSrpObject srpobj); - - /** - * Sets PcepLspObject. - * - * @param lspObject PCEP LSP object - */ - void setLspObject(PcepLspObject lspObject); - - /** - * Sets PcepEndPointsObject. - * - * @param endPointsObject PCEP EndPoints object - */ - void setEndPointsObject(PcepEndPointsObject endPointsObject); - - /** - * Sets PcepEroObject. - * - * @param eroObject PCEP ERO object - */ - void setEroObject(PcepEroObject eroObject); - - /** - * Sets PcepAttribute. - * - * @param pcepAttribute PCEP Attributes - */ - void setPcepAttribute(PcepAttribute pcepAttribute); - - /** - * Builder interface with get and set functions to build PcInitiatedLspRequest. - */ - interface Builder { - - /** - * Builds PcInitiatedLspRequest. - * - * @return PcInitiatedLspRequest - * @throws PcepParseException when mandatory object is not set - */ - PcInitiatedLspRequest build() throws PcepParseException; - - /** - * Returns object of PcepSrpObject. - * - * @return srpObject - */ - PcepSrpObject getSrpObject(); - - /** - * Returns object of PcepLspObject. - * - * @return lspObject - */ - PcepLspObject getLspObject(); - - /** - * Returns object of PcepEndPointsObject. - * - * @return endPointsObject - */ - PcepEndPointsObject getEndPointsObject(); - - /** - * Returns object of PcepEroObject. - * - * @return eroObject - */ - PcepEroObject getEroObject(); - - /** - * Returns object of PcepAttribute. - * - * @return pcepAttribute - */ - PcepAttribute getPcepAttribute(); - - /** - * Sets PcepSrpObject. - * - * @param srpobj PCEP SRP Object - * @return builder by setting PcepSrpObject - */ - Builder setSrpObject(PcepSrpObject srpobj); - - /** - * Sets PcepLspObject. - * - * @param lspObject PCEP LSP Object - * @return builder by setting PcepLspObject - */ - Builder setLspObject(PcepLspObject lspObject); - - /** - * Sets PcepEndPointsObject. - * - * @param endPointsObject EndPoints Object - * @return builder by setting PcepEndPointsObject - */ - Builder setEndPointsObject(PcepEndPointsObject endPointsObject); - - /** - * Sets PcepEroObject. - * - * @param eroObject PCEP ERO Object - * @return builder by setting PcepEroObject - */ - Builder setEroObject(PcepEroObject eroObject); - - /** - * Sets PcepAttribute. - * - * @param pcepAttribute PCEP Attributes - * @return builder by setting PcepAttribute - */ - Builder setPcepAttribute(PcepAttribute pcepAttribute); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java deleted file mode 100644 index 0c510027b3..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepAttribute.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity which Provides List of PCEP Attributes. - */ -public interface PcepAttribute { - - /** - * writes lspa , bandwidth , Metriclist and Iro objects to the channel. - * - * @param bb of type channel buffer. - * @return object length index. - * @throws PcepParseException while writing objects to channel buffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Returns PcepLspaObject. - * - * @return LspaObject - */ - PcepLspaObject getLspaObject(); - - /** - * Returns PcepBandwidthObject. - * - * @return BandwidthObject - */ - PcepBandwidthObject getBandwidthObject(); - - /** - * Returns PcepIroObject. - * - * @return iroObject - */ - PcepIroObject getIroObject(); - - /** - * Sets the PcepBandwidthObject. - * - * @param bandwidthObject bandwidth object - */ - void setBandwidthObject(PcepBandwidthObject bandwidthObject); - - /** - * Sets the PcepLspaObject. - * - * @param lspaObject lspa object - */ - void setLspaObject(PcepLspaObject lspaObject); - - /** - * Sets the PcepIroObject. - * - * @param iroObject iro object - */ - void setIroObject(PcepIroObject iroObject); - - /** - * Returns PcepMetricObject List. - * - * @return list of metric objects - */ - LinkedList getMetricObjectList(); - - /** - * Sets PcepMetricObject List. - * - * @param llMetricList list of metric objects - */ - void setMetricObjectList(LinkedList llMetricList); - - /** - * Builder interface with get and set functions to build PcepAttribute. - */ - interface Builder { - - /** - * Builds PcepAttribute. - * - * @return PcepAttribute - */ - PcepAttribute build(); - - /** - * Returns PcepLspaObject. - * - * @return LspaObject - */ - PcepLspaObject getLspaObject(); - - /** - * Returns PcepBandwidthObject. - * - * @return BandwidthObject - */ - PcepBandwidthObject getBandwidthObject(); - - /** - * Returns PcepIroObject. - * - * @return iroObject - */ - PcepIroObject getIroObject(); - - /** - * Sets the PcepBandwidthObject. - * - * @param bandwidthObject bandwidth object - * @return Builder object for PcepAttrubute - */ - Builder setBandwidthObject(PcepBandwidthObject bandwidthObject); - - /** - * Sets the PcepLspaObject. - * - * @param lspaObject lspa object - * @return Builder object for PcepAttrubute - */ - Builder setLspaObject(PcepLspaObject lspaObject); - - /** - * Sets the PcepIroObject. - * - * @param iroObject iro object - * @return Builder object for PcepAttrubute - */ - Builder setIroObject(PcepIroObject iroObject); - - /** - * Returns PcepMetricObject List. - * - * @return list of metric objects - */ - LinkedList getMetricObjectList(); - - /** - * Sets PcepMetricObject List. - * - * @param llMetricList list of metric objects - * @return Builder object for PcepAttrubute - */ - Builder setMetricObjectList(LinkedList llMetricList); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java deleted file mode 100644 index 03b84b4233..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepBandwidthObject.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP Bandwidth Object. - */ -public interface PcepBandwidthObject { - - /** - * Returns bandwidth value. - * - * @return bandwidth value - */ - float getBandwidth(); - - /** - * Sets bandwidth with specified value. - * - * @param iBandwidth Bandwidth's value - */ - void setBandwidth(float iBandwidth); - - /** - * Writes the BandwidthObject into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException if bandwidth object header fails to write in channel buffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build bandwidth object. - */ - interface Builder { - - /** - * Builds BandwidthObject. - * - * @return BandwidthObject - * @throws PcepParseException if build fails while creating PcepBandwidthObject - */ - PcepBandwidthObject build() throws PcepParseException; - - /** - * Returns bandwidth object header. - * - * @return bandwidth object header - */ - PcepObjectHeader getBandwidthObjHeader(); - - /** - * Sets bandwidth object header and returns its builder. - * - * @param obj Bandwidth object header - * @return Builder by setting Bandwidth object header - */ - Builder setBandwidthObjHeader(PcepObjectHeader obj); - - /** - * Returns bandwidth value. - * - * @return bandwidth - */ - float getBandwidth(); - - /** - * Sets bandwidth value and return its builder. - * - * @param iBandwidth bandwidth value - * @return Builder by setting bandwidth - */ - Builder setBandwidth(float iBandwidth); - - /** - * Sets P flag in Bandwidth object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Bandwidth object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java deleted file mode 100644 index 72d94d91ea..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepCloseMsg.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP Close Message. - */ -public interface PcepCloseMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns reason field in Close message. - * - * @return reason field - */ - byte getReason(); - - /** - * Sets reason field in Close message with specified value. - * - * @param value of Reason field - */ - void setReason(byte value); - - /** - * Returns LinkedList of Optional Tlv in Close Message. - * - * @return list of optional tlv - */ - LinkedList getOptionalTlv(); - - /** - * Sets LinkedList of Optional Tlvs in Close Message. - * - * @param llOptionalTlv LinkedList of type PcepValueType - */ - void setOptionalTlv(LinkedList llOptionalTlv); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Close message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepCloseMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns Close Object header. - * - * @return Close Object header - */ - PcepObjectHeader getCloseObjHeader(); - - /** - * Sets close object header and returns its builder. - * - * @param obj close object header - * @return Builder by setting Close object header - */ - Builder setCloseObjHeader(PcepObjectHeader obj); - - /** - * Returns reason field in Close message. - * - * @return reason field in Close message - */ - byte getReason(); - - /** - * Sets reason field and return its builder. - * - * @param value of Reason field - * @return builder by setting reason field - */ - Builder setReason(byte value); - - /** - * Returns LinkedList of Optional Tlvs. - * - * @return list of optional tlv - */ - LinkedList getOptionalTlv(); - - /** - * Sets LinkedList of Optional Tlvs in Close Message. - * - * @param llOptionalTlv list of optional tlv - * @return Builder by setting Optional Tlvs - */ - Builder setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Sets P flag in Close object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Close object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java deleted file mode 100644 index 1a41129780..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEndPointsObject.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP End Points Object. - */ -public interface PcepEndPointsObject { - - /** - * Returns Source IpAddress from End Points Object. - * - * @return Source IpAddress from End Points Object - */ - int getSourceIpAddress(); - - /** - * Sets Source IpAddress in End Points Object. - * - * @param sourceIpAddress Source IP Address - */ - void setSourceIpAddress(int sourceIpAddress); - - /** - * Returns Destination IpAddress from End Points Object. - * - * @return Destination IpAddress from End Points Object - */ - int getDestIpAddress(); - - /** - * Sets Destination IpAddress in End Points Object. - * - * @param destIpAddress Destination IP Address - */ - void setDestIpAddress(int destIpAddress); - - /** - * Writes the EndPointsObject into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing EndPointObject into ChannelBuffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build EndPoints object. - */ - interface Builder { - - /** - * Builds End Points Object. - * - * @return End Points Object - * @throws PcepParseException while building EndPointObject - */ - PcepEndPointsObject build() throws PcepParseException; - - /** - * Returns End Points Object header. - * - * @return End Points Object header - */ - PcepObjectHeader getEndPointsObjHeader(); - - /** - * Sets End Points Object header and returns its builder. - * - * @param obj End Points Object header - * @return Builder by setting End Points Object header - */ - Builder setEndPointsObjHeader(PcepObjectHeader obj); - - /** - * Returns Source IpAddress from End Points Object. - * - * @return Source IpAddress from End Points Object - */ - int getSourceIpAddress(); - - /** - * Sets Source IpAddress in End Points Object and returns builder. - * - * @param sourceIpAddress Source IP Address - * @return Builder by setting Source IpAddress in End Points Object - */ - Builder setSourceIpAddress(int sourceIpAddress); - - /** - * Returns Destination IpAddress from End Points Object. - * - * @return Destination IpAddress from End Points Object - */ - int getDestIpAddress(); - - /** - * Sets Destination IpAddress in End Points Object. - * - * @param destIpAddress Destination IP Address - * @return Builder by setting Destination IpAddress in End Points Object - */ - Builder setDestIpAddress(int destIpAddress); - - /** - * Sets P flag in Bandwidth object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Bandwidth object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java deleted file mode 100644 index 69b7271af2..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepEroObject.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP ERO Object. - */ -public interface PcepEroObject { - - /** - * Return LinkedList of SubObjects of ERO Object. - * - * @return list of subobjects - */ - LinkedList getSubObjects(); - - /** - * Sets LinkedList of SubObjects in ERO Object. - * - * @param llSubObjects list of subobjects - */ - void setSubObjects(LinkedList llSubObjects); - - /** - * Writes the ERO Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing ERO Object into ChannelBuffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build ERO object. - */ - interface Builder { - - /** - * Builds ERO Object. - * - * @return ERO Object - */ - PcepEroObject build(); - - /** - * Returns ERO Object Header. - * - * @return ERO Object Header - */ - PcepObjectHeader getEroObjHeader(); - - /** - * Sets ERO Object header and returns its builder. - * - * @param obj ERO Object header - * @return Builder by setting ERO Object header - */ - Builder setEroObjHeader(PcepObjectHeader obj); - - /** - * Returns LinkedList of SubObjects in ERO Objects. - * - * @return list of subobjects - */ - LinkedList getSubObjects(); - - /** - * Sets LinkedList of SubObjects and returns its builder. - * - * @param llSubObjects list of SubObjects - * @return Builder by setting list of SubObjects - */ - Builder setSubObjects(LinkedList llSubObjects); - - /** - * Sets P flag in ERO object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in ERO object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java deleted file mode 100644 index 86220aa5c6..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepError.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity which provides PCEP error for PCEP error message. - */ -public interface PcepError { - - /** - * Returns the PcepRPObject List. - * - * @return list of type PcepRPObject - */ - List getRPObjList(); - - /** - * Sets the RP Objects lists. - * - * @param rpObjList list of type PcepRPObject - */ - void setRPObjList(List rpObjList); - - /** - * Returns the PcepLSObject List. - * - * @return list of type PcepLSObject - */ - List getLSObjList(); - - /** - * Sets the LS Objects lists. - * - * @param lsObjList list of type PcepLSObject - */ - void setLSObjList(List lsObjList); - - /** - * Returns the PcepErrorObject. - * - * @return list of type PcepErrorObject - */ - List getErrorObjList(); - - /** - * Sets the Error Objects lists. - * - * @param errorObjList list of type PcepErrorObject - */ - void setErrorObjList(List errorObjList); - - /** - * Writes the byte stream of PCEP error to the channel buffer. - * - * @param bb of type channel buffer - * @return object length index - * @throws PcepParseException while writing Error part into ChannelBuffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PcepError. - */ - interface Builder { - - /** - * Builds PcepError Object. - * - * @return PcepError Object - */ - PcepError build(); - - /** - * Returns the PcepRPObject. - * - * @return list of type PcepRPObject - */ - List getRPObjList(); - - /** - * Sets RP Object lists and returns its builder. - * - * @param rpObjList list of type PcepRpObject - * @return builder by setting Linked list of RP Object - */ - Builder setRPObjList(List rpObjList); - - /** - * Returns the PcepLSObject. - * - * @return lsObjList of type PcepLSObject - */ - List getLSObjList(); - - /** - * Sets LS Object lists and returns its builder. - * - * @param lsObjList list of type PcepLSObject - * @return builder by setting list of type PcepLSObject - */ - Builder setLSObjList(List lsObjList); - - /** - * Returns the PcepErrorObject. - * - * @return list of type PcepErrorObject - */ - List getErrorObjList(); - - /** - * Sets Error Object lists and returns its builder. - * - * @param errorObjList list of type PcepErrorObject - * @return builder by setting list of type PcepErrorObject - */ - Builder setErrorObjList(List errorObjList); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java deleted file mode 100644 index 3f2cdaff6b..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorInfo.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity which provides PCEP Error Info. - * Reference :PCEP Extension for Transporting TE Data draft-dhodylee-pce-pcep-te-data-extn-02. - */ -public interface PcepErrorInfo { - - /** - * Returns whether error info list is present or not. - * - * @return true if error info present, false otherwise - */ - boolean isErrorInfoPresent(); - - /** - * Reads from channel buffer for TE and RP objects. - * - * @param bb of channel buffer - * @throws PcepParseException while parsing Error info part. - */ - void read(ChannelBuffer bb) throws PcepParseException; - - /** - * Writes byte stream of PCEP error info to channel buffer. - * - * @param bb of type channel buffer - * @throws PcepParseException while writing Error info part into Channel Buffer. - */ - void write(ChannelBuffer bb) throws PcepParseException; - - /** - * Returns Error Value in PCEP-ERROR Object. - * - * @return list of Error Value in PCEP-ERROR Object - */ - List getErrorValue(); - - /** - * Returns Error Type in PCEP-ERROR Object. - * - * @return list of Error Type in PCEP-ERROR Object - */ - List getErrorType(); - - /** - * Builder interface with get and set functions to build ErrorInfo. - */ - interface Builder { - - /** - * Builds ErrorInfo Object. - * - * @return ErrorInfo Object. - */ - PcepErrorInfo build(); - - /** - * Returns list of PcepError. - * - * @return list of PcepError - */ - List getPcepErrorList(); - - /** - * Sets PcepError lists and returns its builder. - * - * @param llPcepErrorList list of PcepError - * @return builder by setting list of PcepError. - */ - Builder setPcepErrorList(List llPcepErrorList); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java deleted file mode 100644 index 15c5163983..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorMsg.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.ErrorObjListWithOpen; - -/** - * Abstraction of an entity providing PCEP Error Message. - */ -public interface PcepErrorMsg extends PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns Object of ErrorObjListWithOpen. - * - * @return Object of ErrorObjListWithOpen - */ - ErrorObjListWithOpen getErrorObjListWithOpen(); - - /** - * Sets errObjListWithOpen object. - * - * @param errObjListWithOpen error object List with open object - */ - void setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen); - - /** - * Returns Object of PcepErrorInfo. - * - * @return Object of PcepErrorInfo - */ - PcepErrorInfo getPcepErrorInfo(); - - /** - * Sets errInfo Object. - * - * @param errInfo error information - */ - void setPcepErrorInfo(PcepErrorInfo errInfo); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PCEP Error message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepErrorMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns Object of ErrorObjListWithOpen. - * - * @return Object of ErrorObjListWithOpen - */ - ErrorObjListWithOpen getErrorObjListWithOpen(); - - /** - * Sets errObjListWithOpen object. - * - * @param errObjListWithOpen error object with open object - * @return builder by setting Object of ErrorObjListWithOpen - */ - Builder setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen); - - /** - * Returns Object of PcepErrorInfo. - * - * @return Object of PcepErrorInfo - */ - PcepErrorInfo getPcepErrorInfo(); - - /** - * Sets errInfo Object. - * - * @param errInfo error information - * @return builder by getting Object of PcepErrorInfo - */ - Builder setPcepErrorInfo(PcepErrorInfo errInfo); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java deleted file mode 100644 index 3dc7cebb0a..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepErrorObject.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP Error Object. - */ -public interface PcepErrorObject { - - /** - * Returns Error Type in Error Object. - * - * @return Error Type in Error Object - */ - int getErrorType(); - - /** - * Sets Error Type in Error Object. - * - * @param value Error Type - */ - void setErrorType(byte value); - - /** - * Returns Error Value in Error Object. - * - * @return Error Value - */ - byte getErrorValue(); - - /** - * Sets Error Value in Error Object. - * - * @param value Error Value - */ - void setErrorValue(byte value); - - /** - * Returns Optional Tlvs in Error Object. - * - * @return list of Optional Tlvs in Error Object - */ - LinkedList getOptionalTlv(); - - /** - * Sets Optional Tlvs in Error Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Writes the Error Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing Error Object into ChannelBuffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Error object. - */ - interface Builder { - - /** - * Builds Error Object. - * - * @return Error Object. - */ - PcepErrorObject build(); - - /** - * Returns Error Object header. - * - * @return Error Object header - */ - PcepObjectHeader getErrorObjHeader(); - - /** - * Sets Error Object header and returns its Builder. - * - * @param obj Error Object header - * @return Builder by setting Error Object header - */ - Builder setErrorObjHeader(PcepObjectHeader obj); - - /** - * Returns Error Type in Error Object. - * - * @return Error Type in Error Object - */ - int getErrorType(); - - /** - * Sets Error Type and returns its builder. - * - * @param value of Error-Type field - * @return builder by setting Error Type field. - */ - Builder setErrorType(byte value); - - /** - * Returns Error Value in Error Object. - * - * @return Error Value - */ - byte getErrorValue(); - - /** - * Sets Error Value and returns its builder. - * - * @param value of Error-Value field - * @return Builder by setting Error Value field. - */ - Builder setErrorValue(byte value); - - /** - * Returns list of Optional Tlvs of Error Object. - * - * @return list of Optional Tlvs of Error Object - */ - LinkedList getOptionalTlv(); - - /** - * Sets Optional Tlvs of Error Object and returns its Builder. - * - * @param llOptionalTlv Optional Tlvs of Error Object - * @return Builder by setting Optional Tlvs. - */ - Builder setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Sets P flag in Error object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Error object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java deleted file mode 100644 index 4f6f24ef76..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactories.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.ver1.PcepFactoryVer1; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Abstraction to provide the version for PCEP. - */ -public final class PcepFactories { - - private static final Logger log = LoggerFactory.getLogger(PcepFactories.class); - - private static final GenericReader GENERIC_READER = new GenericReader(); - - public static final byte SHIFT_FLAG = 5; - - private PcepFactories() { - } - - /** - * Returns the instance of PCEP Version. - * - * @param version PCEP version - * @return PCEP version - */ - public static PcepFactory getFactory(PcepVersion version) { - switch (version) { - case PCEP_1: - return PcepFactoryVer1.INSTANCE; - default: - throw new IllegalArgumentException("Unknown version: " + version); - } - } - - private static class GenericReader implements PcepMessageReader { - - @Override - public PcepMessage readFrom(ChannelBuffer bb) throws PcepParseException, PcepOutOfBoundMessageException { - - if (!bb.readable()) { - throw new PcepParseException("Empty message received"); - } - - /* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | Ver | Flags | | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * - * Currently Version 1 is supported - * Currently no flags are used, it is all ignored - */ - - byte packetVersion = bb.getByte(bb.readerIndex()); - packetVersion = (byte) (packetVersion >> SHIFT_FLAG); - PcepFactory factory; - - switch (packetVersion) { - - case 1: - factory = org.onosproject.pcepio.protocol.ver1.PcepFactoryVer1.INSTANCE; - break; - default: - throw new PcepParseException("Unknown Packet version: " + packetVersion); - } - return factory.getReader().readFrom(bb); - } - } - - /** - * Returns GENERIC_READER. - * - * @return GENERIC_READER - */ - public static PcepMessageReader getGenericReader() { - return GENERIC_READER; - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java deleted file mode 100644 index 3f7bd85ee1..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFactory.java +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -/** - * Abstraction of an Message factory providing Builder functions to PCEP Messages and Objects. - */ -public interface PcepFactory { - - /** - * Returns Builder Object for Open Message. - * - * @return Builder Object for Open Message - */ - PcepOpenMsg.Builder buildOpenMsg(); - - /** - * Returns Builder Object for Open Object. - * - * @return Builder Object for Open Object - */ - PcepOpenObject.Builder buildOpenObject(); - - /** - * Returns Builder Object for Keepalive Message. - * - * @return Builder Object for Keepalive Message - */ - PcepKeepaliveMsg.Builder buildKeepaliveMsg(); - - /** - * Returns Builder Object for Close Message. - * - * @return Builder Object for Close Message - */ - PcepCloseMsg.Builder buildCloseMsg(); - - /** - * Returns Builder Object for Report Message. - * - * @return Builder Object for Report Message - */ - PcepReportMsg.Builder buildReportMsg(); - - /** - * Returns Builder Object for Update Message. - * - * @return Builder Object for Update Message - */ - PcepUpdateMsg.Builder buildUpdateMsg(); - - /** - * Returns Builder Object for Initiate Message. - * - * @return Builder Object for Initiate Message - */ - PcepInitiateMsg.Builder buildPcepInitiateMsg(); - - /** - * Returns Builder Object for LSP Object. - * - * @return Builder Object for LSP Object - */ - PcepLspObject.Builder buildLspObject(); - - /** - * Returns Builder Object for SRP Object. - * - * @return Builder Object for SRP Object - */ - PcepSrpObject.Builder buildSrpObject(); - - /** - * Returns Builder Object for EndPoints Object. - * - * @return Builder Object for EndPoints Object - */ - PcepEndPointsObject.Builder buildEndPointsObject(); - - /** - * Returns Builder Object for ERO Object. - * - * @return Builder Object for ERO Object - */ - PcepEroObject.Builder buildEroObject(); - - /** - * Returns Builder Object for RRO Object. - * - * @return Builder Object for RRO Object - */ - PcepRroObject.Builder buildRroObject(); - - /** - * Returns Builder Object for LSPA Object. - * - * @return Builder Object for LSPA Object - */ - PcepLspaObject.Builder buildLspaObject(); - - /** - * Returns Builder Object for IRO Object. - * - * @return Builder Object for IRO Object - */ - PcepIroObject.Builder buildIroObject(); - - /** - * Returns Builder Object for METRIC Object. - * - * @return Builder Object for METRIC Object - */ - PcepMetricObject.Builder buildMetricObject(); - - /** - * Returns Builder Object for Bandwidth Object. - * - * @return Builder Object for Bandwidth Object - */ - PcepBandwidthObject.Builder buildBandwidthObject(); - - /** - * Returns PCEP Message Reader. - * - * @return PCEP Message Reader - */ - PcepMessageReader getReader(); - - /** - * Returns PCEP version. - * - * @return PCEP version - */ - PcepVersion getVersion(); - - /** - * Returns PcepStateReport. - * - * @return PcepStateReport - */ - PcepStateReport.Builder buildPcepStateReport(); - - /** - * Returns PcepUpdateRequest. - * - * @return PcepUpdateRequest - */ - PcepUpdateRequest.Builder buildPcepUpdateRequest(); - - /** - * Returns PcInitiatedLspRequest. - * - * @return PcInitiatedLspRequest - */ - PcInitiatedLspRequest.Builder buildPcInitiatedLspRequest(); - - /** - * Returns PcepMsgPath. - * - * @return PcepMsgPath - */ - PcepMsgPath.Builder buildPcepMsgPath(); - - /** - * Return PcepAttribute list. - * - * @return PcepAttribute - */ - PcepAttribute.Builder buildPcepAttribute(); - - /** - * Returns Builder Object for LabelUpdate message. - * - * @return Builder Object for LabelUpdate message - */ - PcepLabelUpdateMsg.Builder buildPcepLabelUpdateMsg(); - - /** - * Returns Builder Object for PcepLabelUpdate Object. - * - * @return Builder Object for PcepLabelUpdate Object - */ - PcepLabelUpdate.Builder buildPcepLabelUpdateObject(); - - /** - * Returns Builder Object for PcepLabel Object. - * - * @return Builder Object for PcepLabel Object - */ - PcepLabelObject.Builder buildLabelObject(); - - /** - * Returns Builder Object for Error Message. - * - * @return Builder Object for Error Message - */ - PcepErrorMsg.Builder buildPcepErrorMsg(); - - /** - * Returns Builder Object for Error Object. - * - * @return Builder Object for Error Object - */ - PcepErrorObject.Builder buildPcepErrorObject(); - - /** - * Returns Builder Object for FecIpv4Adjacency. - * - * @return Builder Object for FecIpv4Adjacency - */ - PcepFecObjectIPv4Adjacency.Builder buildFecIpv4Adjacency(); - - /** - * Returns Builder Object for FecObjectIPv4. - * - * @return Builder Object for FecObjectIPv4 - */ - PcepFecObjectIPv4.Builder buildFecObjectIpv4(); - - /** - * Returns Builder Object for ErrorInfo. - * - * @return Builder Object for ErrorInfo - */ - PcepErrorInfo.Builder buildPcepErrorInfo(); - - /** - * Returns Builder Object for PcepError. - * - * @return Builder Object for PcepError - */ - PcepError.Builder buildPcepError(); - - /** - * Returns Builder Object for PcepLabelRangeObject. - * - * @return Builder Object for PcepLabelRangeObject - */ - PcepLabelRangeObject.Builder buildPcepLabelRangeObject(); - - /** - * Returns Builder Object for PcepLabelRangeResvMsg. - * - * @return Builder Object for PcepLabelRangeResvMsg - */ - PcepLabelRangeResvMsg.Builder buildPcepLabelRangeResvMsg(); -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java deleted file mode 100644 index 71cf87a9e7..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObject.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP FEC Object. - */ -public interface PcepFecObject { - - /** - * Returns PCEP Version of FEC Object. - * - * @return PCEP Version of FEC Object - */ - PcepVersion getVersion(); - - /** - * Returns FEC Object type. - * - * @return FEC Object type - */ - int getType(); - - /** - * Writes the FEC into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing FEC Object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java deleted file mode 100644 index b15b039d7f..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP FEC Object of Type 1 IPv4 Node ID. - */ -public interface PcepFecObjectIPv4 extends PcepFecObject { - - /** - * Returns NodeID of FEC Object. - * - * @return NodeID of FEC Object - */ - int getNodeID(); - - /** - * Sets NodeID with specified value. - * - * @param value node id - */ - void setNodeID(int value); - - @Override - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - interface Builder { - - /** - * Builds FEC Object IPv4. - * - * @return FEC Object IPv4 - * @throws PcepParseException while creating FEC IPv4 Object. - */ - PcepFecObjectIPv4 build() throws PcepParseException; - - /** - * Returns FEC Object IPv4 header. - * - * @return FEC Object IPv4 header - */ - PcepObjectHeader getFecIpv4ObjHeader(); - - /** - * Sets FEC Object IPv4 header and returns its builder. - * - * @param obj FEC Object IPv4 header - * @return Builder by setting FEC Object IPv4 header - */ - Builder setFecIpv4ObjHeader(PcepObjectHeader obj); - - /** - * Returns NodeID of FEC Object. - * - * @return NodeID of FEC Object - */ - int getNodeID(); - - /** - * Sets NodeID and returns its builder. - * - * @param value node id - * @return builder by setting NodeID - */ - Builder setNodeID(int value); - - /** - * Sets P flag in FEC object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in FEC object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java deleted file mode 100644 index b1ed6a3823..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4Adjacency.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing FEC Object of Type 3 IPv4 Adjacency. - */ -public interface PcepFecObjectIPv4Adjacency extends PcepFecObject { - - /** - * Returns Local IPv4Address of FEC Object. - * - * @return Local IPv4Address of FEC Object - */ - int getLocalIPv4Address(); - - /** - * Sets Local IPv4Address with specified value. - * - * @param value Local IPv4Address - */ - void seLocalIPv4Address(int value); - - /** - * Returns Remote IPv4Address of FEC Object. - * - * @return Remote IPv4Address of FEC Object - */ - int getRemoteIPv4Address(); - - /** - * Sets Remote IPv4Address with specified value. - * - * @param value Remote IPv4Address - */ - void seRemoteIPv4Address(int value); - - @Override - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - interface Builder { - - /** - * Builds FEC Object IPv4 Adjacency. - * - * @return FEC Object IPv4 Adjacency - * @throws PcepParseException while building FEC IPv4 Adjacency object. - */ - PcepFecObjectIPv4Adjacency build() throws PcepParseException; - - /** - * Returns FEC Object IPv4 Adjacency header. - * - * @return FEC Object IPv4 Adjacency header - */ - PcepObjectHeader getFecIpv4AdjacencyObjHeader(); - - /** - * Sets FEC Object IPv4 Adjacency header and returns its builder. - * - * @param obj FEC Object IPv4 Adjacency header - * @return Builder by setting FEC Object IPv4 header - */ - Builder setFecIpv4AdjacencyObjHeader(PcepObjectHeader obj); - - /** - * Returns Local IPv4Address of FEC Object. - * - * @return Local IPv4Address of FEC Object - */ - int getLocalIPv4Address(); - - /** - * Sets Local IPv4Address and returns its builder. - * - * @param value Local IPv4Address - * @return Builder by setting Local IPv4Address - */ - Builder seLocalIPv4Address(int value); - - /** - * Sets Remote IPv4Address with specified value. - * - * @return Remote IPv4 Address - */ - int getRemoteIPv4Address(); - - /** - * Sets Remote IPv4Address and returns its builder. - * - * @param value Remote IPv4Address - * @return Builder by setting Remote IPv4Address - */ - Builder seRemoteIPv4Address(int value); - - /** - * Sets P flag in FEC object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in FEC object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java deleted file mode 100644 index 2de5550d26..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv4UnnumberedAdjacency.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP FEC Object of Type is 5 Unnumbered Adjacency with IPv4 NodeIDs. - */ -public interface PcepFecObjectIPv4UnnumberedAdjacency extends PcepFecObject { - - /** - * Returns Local NodeID of FEC Object. - * - * @return Local NodeID of FEC Object - */ - int getLocalNodeID(); - - /** - * Sets Local NodeID with specified value. - * - * @param value Local NodeID - */ - void setLocalNodeID(int value); - - /** - * Returns Local InterfaceID of FEC Object. - * - * @return Local InterfaceID of FEC Object - */ - int getLocalInterfaceID(); - - /** - * Sets Local InterfaceID with specified value. - * - * @param value Local InterfaceID - */ - void setLocalInterfaceID(int value); - - /** - * Returns Remote NodeID of FEC Object. - * - * @return Remote NodeID of FEC Object - */ - int getRemoteNodeID(); - - /** - * Sets Remote NodeID with specified value. - * - * @param value Remote NodeID - */ - void setRemoteNodeID(int value); - - /** - * Returns Remote InterfaceID of FEC Object. - * - * @return Remote InterfaceID of FEC Object - */ - int getRemoteInterfaceID(); - - /** - * Sets Remote InterfaceID with specified value. - * - * @param value Remote InterfaceID - */ - void setRemoteInterfaceID(int value); - - @Override - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build bandwidth object. - */ - interface Builder { - - /** - * Builds FEC Unnumbered Adjacency with IPv4 Object. - * - * @return FEC Unnumbered Adjacency with IPv4 Object - * @throws PcepParseException when building FEC IPv4 Unnumbered Adjacency object. - */ - PcepFecObjectIPv4UnnumberedAdjacency build() throws PcepParseException; - - /** - * Returns FEC Unnumbered Adjacency with IPv4 header. - * - * @return FEC Unnumbered Adjacency with IPv4 header - */ - PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader(); - - /** - * Sets FEC Unnumbered Adjacency with IPv4 header and returns its builder. - * - * @param obj FEC Unnumbered Adjacency with IPv4 header - * @return Builder by setting FEC Unnumbered Adjacency with IPv4 header - */ - Builder setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj); - - /** - * Returns Local NodeID of FEC Object. - * - * @return Local NodeID of FEC Object - */ - int getLocalNodeID(); - - /** - * Sets Local NodeID and returns its builder. - * - * @param value Local NodeID - * @return Builder by setting Local NodeID - */ - Builder setLocalNodeID(int value); - - /** - * Returns Local InterfaceID of FEC Object. - * - * @return Local InterfaceID of FEC Object - */ - int getLocalInterfaceID(); - - /** - * Sets Local InterfaceID and returns its builder. - * - * @param value Local InterfaceID - * @return Builder by setting Local InterfaceID - */ - Builder setLocalInterfaceID(int value); - - /** - * Returns Remote NodeID of FEC Object. - * - * @return Remote NodeID of FEC Object - */ - int getRemoteNodeID(); - - /** - * Sets Remote NodeID and returns its builder. - * - * @param value Remote NodeID - * @return Builder by setting Remote NodeID - */ - Builder setRemoteNodeID(int value); - - /** - * Returns Remote InterfaceID of FEC Object. - * - * @return Remote InterfaceID of FEC Object - */ - int getRemoteInterfaceID(); - - /** - * Sets Remote InterfaceID and returns its builder. - * - * @param value Remote InterfaceID - * @return Builder by setting Remote InterfaceID - */ - Builder setRemoteInterfaceID(int value); - - /** - * Sets P flag in FEC object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in FEC object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java deleted file mode 100644 index 5e97a8d27e..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing FEC Object of Type is 2 IPv6 Node ID. - */ -public interface PcepFecObjectIPv6 extends PcepFecObject { - - /** - * Returns NodeID of FEC Object. - * - * @return NodeID of FEC Object - */ - byte[] getNodeID(); - - /** - * Sets NodeID with specified value. - * - * @param value node id - */ - void setNodeID(byte[] value); - - @Override - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - interface Builder { - - /** - * Builds FEC Object IPv6. - * - * @return FEC Object IPv6 - * @throws PcepParseException while building FEC IPv6 Object. - */ - PcepFecObjectIPv6 build() throws PcepParseException; - - /** - * Returns FEC Object IPv6 header. - * - * @return FEC Object IPv6 header - */ - PcepObjectHeader getFecIpv6ObjHeader(); - - /** - * Sets FEC Object IPv6 header and returns its builder. - * - * @param obj FEC Object IPv6 header - * @return Builder by setting FEC Object IPv6 header - */ - Builder setFecIpv6ObjHeader(PcepObjectHeader obj); - - /** - * Returns NodeID of FEC Object. - * - * @return NodeID of FEC Object - */ - byte[] getNodeID(); - - /** - * Sets NodeID and returns its builder. - * - * @param value node id - * @return Builder by setting NodeID - */ - Builder setNodeID(byte[] value); - - /** - * Sets P flag in FEC object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in FEC object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java deleted file mode 100644 index 57338ea304..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing FEC Object of Type is 4 IPv6 Adjacency. - */ -public interface PcepFecObjectIPv6Adjacency extends PcepFecObject { - - /** - * Returns Local IPv6Address of FEC Object. - * - * @return Local IPv6Address of FEC Object - */ - byte[] getLocalIPv6Address(); - - /** - * Sets Local IPv6Address with specified value. - * - * @param value Local IPv6Address - */ - void seLocalIPv6Address(byte[] value); - - /** - * Returns Remote IPv6Address of FEC Object. - * - * @return Remote IPv6Address of FEC Object - */ - byte[] getRemoteIPv6Address(); - - /** - * Sets Remote IPv6Address with specified value. - * - * @param value Remote IPv6Address - */ - void seRemoteIPv6Address(byte[] value); - - @Override - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build FEC object. - */ - interface Builder { - - /** - * Builds FEC Object IPv6 Adjacency. - * - * @return FEC Object IPv6 Adjacency - * @throws PcepParseException while building FEC IPv6 Adjacency object. - */ - PcepFecObjectIPv6Adjacency build() throws PcepParseException; - - /** - * Returns FEC Object IPv6 Adjacency header. - * - * @return FEC Object IPv6 Adjacency header - */ - PcepObjectHeader getFecIpv6AdjacencyObjHeader(); - - /** - * Sets FEC Object IPv6 Adjacency header and returns its builder. - * - * @param obj FEC Object IPv6 Adjacency header - * @return Builder by setting FEC Object IPv6 Adjacency header - */ - Builder setFecIpv6AdjacencyObjHeader(PcepObjectHeader obj); - - /** - * Returns Local IPv6Address of FEC Object. - * - * @return Local IPv6Address of FEC Object - */ - byte[] getLocalIPv6Address(); - - /** - * Sets Local IPv6Address and returns its builder. - * - * @param value Local IPv6Address - * @return Builder by setting Local IPv6Address - */ - Builder setLocalIPv6Address(byte[] value); - - /** - * Returns Remote IPv6Address of FEC Object. - * - * @return Remote IPv6Address of FEC Object - */ - byte[] getRemoteIPv6Address(); - - /** - * Sets Remote IPv6Address and returns its builder. - * - * @param value Remote IPv6Address - * @return Builder by setting Remote IPv6Address - */ - Builder setRemoteIPv6Address(byte[] value); - - /** - * Sets P flag in FEC object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in FEC object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java deleted file mode 100644 index 082b13acd0..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInitiateMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Initiate Message. - */ -public interface PcepInitiateMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of PcInitiatedLspRequestList. - * - * @return list of PcInitiatedLspRequestList - */ - LinkedList getPcInitiatedLspRequestList(); - - /** - * Sets list of PcInitiatedLspRequestList. - * - * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequestList - */ - void setPcInitiatedLspRequestList(LinkedList llPcInitiatedLspRequestList); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Initiate message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepInitiateMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of PcInitiatedLspRequestList. - * - * @return list of PcInitiatedLspRequestList - */ - LinkedList getPcInitiatedLspRequestList(); - - /** - * Sets PcInitiatedLspRequestList. - * - * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequestList - * @return builder by setting list of PcInitiatedLspRequestList - */ - Builder setPcInitiatedLspRequestList(LinkedList llPcInitiatedLspRequestList); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java deleted file mode 100644 index 9794ffeb8a..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepInterLayerObject.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP INTER Layer Object. - */ -public interface PcepInterLayerObject { - - /** - * Returns N Flag in INTER Layer Object. - * - * @return N Flag in INTER Layer Object - */ - boolean getbNFlag(); - - /** - * Sets N Flag in INTER Layer Object with specified value. - * - * @param value N Flag - */ - void setbNFlag(boolean value); - - /** - * Returns I Flag in INTER Layer Object. - * - * @return I Flag in INTER Layer Object - */ - boolean getbIFlag(); - - /** - * Sets I Flag in INTER Layer Object with specified value. - * - * @param value I Flag - */ - void setbIFlag(boolean value); - - /** - * Writes the INTER Layer Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing Inter Layer Object. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build INTER Layer object. - */ - interface Builder { - - /** - * Builds INTER Layer object. - * - * @return INTER Layer object - */ - PcepInterLayerObject build(); - - /** - * Returns INTER Layer object header. - * - * @return INTER Layer object header - */ - PcepObjectHeader getInterLayerObjHeader(); - - /** - * Sets INTER Layer object header and returns its builder. - * - * @param obj INTER Layer object header - * @return Builder by setting INTER Layer object header - */ - Builder setInterLayerObjHeader(PcepObjectHeader obj); - - /** - * Returns N Flag in INTER Layer Object. - * - * @return N Flag in INTER Layer Object - */ - boolean getbNFlag(); - - /** - * Sets N flag and return its builder. - * - * @param value N flag - * @return Builder by setting N flag - */ - Builder setbNFlag(boolean value); - - /** - * Returns I Flag in INTER Layer Object. - * - * @return I Flag in INTER Layer Object - */ - boolean getbIFlag(); - - /** - * Sets I flag and return its builder. - * - * @param value I flag - * @return Builder by setting N flag - */ - Builder setbIFlag(boolean value); - - /** - * Sets P flag in INTER Layer object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in INTER Layer object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java deleted file mode 100644 index 105c545b9d..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepIroObject.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP IRO Object. - */ -public interface PcepIroObject { - - /** - * Returns list of SubObjects. - * - * @return list of SubObjects - */ - LinkedList getSubObjects(); - - /** - * Sets list of SubObjects. - * - * @param llSubObjects list of SubObjects - */ - void setSubObjects(LinkedList llSubObjects); - - /** - * Writes the IRO into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing IRO object. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build IRO object. - */ - interface Builder { - - /** - * Builds IRO Object. - * - * @return IRO Object - */ - PcepIroObject build(); - - /** - * Returns IRO object header. - * - * @return IRO object header - */ - PcepObjectHeader getIroObjHeader(); - - /** - * Sets IRO object header and returns its builder. - * - * @param obj IRO object header - * @return Builder by setting IRO object header - */ - Builder setIroObjHeader(PcepObjectHeader obj); - - /** - * Returns list of SubObjects. - * - * @return list of SubObjects - */ - LinkedList getSubObjects(); - - /** - * Sets list of SubObjects in IRO Object and returns its builder. - * - * @param llSubObjects list of SubObjects - * @return Builder by setting list of SubObjects - */ - Builder setSubObjects(LinkedList llSubObjects); - - /** - * Sets P flag in IRO object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in IRO object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java deleted file mode 100644 index 9c7c4f1499..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepKeepaliveMsg.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; - -/** - * Abstraction of an entity providing PCEP Keepalive Message. - */ -public interface PcepKeepaliveMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - @Override - void writeTo(ChannelBuffer channelBuffer); - - /** - * Builder interface with get and set functions to build Keepalive message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepKeepaliveMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSObject.java deleted file mode 100644 index 520246ed8d..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSObject.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP LS Object. - */ -public interface PcepLSObject { - - /** - * Returns LS object header. - * - * @return LS object header - */ - PcepObjectHeader getLSObjHeader(); - - /** - * Sets LS Object header. - * - * @param obj LS Object header - */ - void setLSObjHeader(PcepObjectHeader obj); - - /** - * Returns ProtocolId in LS Object. - * - * @return ProtocolId in LS Object - */ - byte getProtocolId(); - - /** - * Sets ProtocolId in LS Object. - * - * @param protId ProtocolId in LS Object - */ - void setProtocolId(byte protId); - - /** - * Returns R flag in LS Object. - * - * @return R flag in LS Object - */ - boolean getRemoveFlag(); - - /** - * Sets R flag in LS Object. - * - * @param removeFlag R flag in LS Object - */ - void setRemoveFlag(boolean removeFlag); - - /** - * Returns sync flag in LS Object. - * - * @return sync flag in LS Object - */ - boolean getSyncFlag(); - - /** - * Sets sync flag in LS Object. - * - * @param syncFlag sync flag in LS Object - */ - void setSyncFlag(boolean syncFlag); - - /** - * Returns LS ID in LS Object. - * - * @return LS ID in LS Object - */ - long getLSId(); - - /** - * Sets LS ID in LS Object. - * - * @param lsId LS ID in LS Object - */ - void setLSId(long lsId); - - /** - * Returns list of Optional Tlvs in LS Object. - * - * @return list of Optional Tlvs - */ - List getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in LS Object. - * - * @param optionalTlvList list of Optional Tlvs - */ - void setOptionalTlv(List optionalTlvList); - - /** - * Writes the LS Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException when object header is not written to channel buffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build LS object. - */ - interface Builder { - - /** - * Builds LS Object. - * - * @return LS Object - */ - PcepLSObject build(); - - /** - * Returns LS object header. - * - * @return LS object header - */ - PcepObjectHeader getLSObjHeader(); - - /** - * Sets LS object header and returns its builder. - * - * @param obj LS object header - * @return Builder by setting LS object header - */ - Builder setLSObjHeader(PcepObjectHeader obj); - - /** - * Returns ProtocolId in LS Object. - * - * @return ProtocolId in LS Object - */ - byte getProtocolId(); - - /** - * Sets ProtocolId in LS Object and returns its builder. - * - * @param protId ProtocolId in LS Object - * @return Builder by setting ProtocolId - */ - Builder setProtocolId(byte protId); - - /** - * Returns R flag in LS Object. - * - * @return R flag in LS Object - */ - boolean getRemoveFlag(); - - /** - * Sets R flag in LS Object and returns its builder. - * - * @param removeFlag R flag in LS Object - * @return Builder by setting R flag - */ - Builder setRemoveFlag(boolean removeFlag); - - /** - * Returns sync flag in LS Object. - * - * @return sync flag in LS Object - */ - boolean getSyncFlag(); - - /** - * Sets sync flag in LS Object and returns its builder. - * - * @param syncFlag sync flag in LS Object - * @return Builder by setting sync flag - */ - Builder setSyncFlag(boolean syncFlag); - - /** - * Returns LS ID in LS Object. - * - * @return LS ID in LS Object - */ - long getLSId(); - - /** - * Sets LS ID in LS Object and returns its builder. - * - * @param lsId LS ID in LS Object - * @return Builder by setting LS ID - */ - Builder setLSId(long lsId); - - /** - * Returns list of Optional Tlvs in LS Object. - * - * @return list of Optional Tlvs - */ - List getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in LS Object and returns its builder. - * - * @param optionalTlvList list of Optional Tlvs - * @return Builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(List optionalTlvList); - - /** - * Sets Processing rule flag in LS object header and returns its builder. - * - * @param value boolean value to set Processing rule flag - * @return Builder by setting Processing rule flag - */ - Builder setPFlag(boolean value); - - /** - * Sets Ignore flag in LS object header and returns its builder. - * - * @param value boolean value to set Ignore flag - * @return Builder by setting Ignore flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSReportMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSReportMsg.java deleted file mode 100644 index e257613187..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLSReportMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP LS-Report Message. - */ -public interface PcepLSReportMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of PCEP LS Objects. - * - * @return list of PCEP LS Objects - */ - List getLSReportList(); - - /** - * Sets list of Optional Tlvs in LS-Report Message. - * - * @param lsReportList list of optional Tlvs - */ - void setLSReportList(List lsReportList); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build LS-Report message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepLSReportMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of LS Object in LS Report Message. - * - * @return list of LS Objects - */ - List getLSReportList(); - - /** - * Sets list of LS Objects and returns its builder. - * - * @param lsReportList list of LS Objects - * @return Builder object for LS-Report message - */ - Builder setLSReportList(List lsReportList); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java deleted file mode 100644 index 70dad22e59..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelObject.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP Label Object. - */ -public interface PcepLabelObject { - - /** - * Returns O flag in Label Object. - * - * @return Boolean value - */ - boolean getOFlag(); - - /** - * Sets O flag in Label Object with specified value. - * - * @param value O flag - */ - void setOFlag(boolean value); - - /** - * Returns Label from Label Object. - * - * @return Label value - */ - int getLabel(); - - /** - * Sets Label field in Label Object with specified value. - * - * @param value Label - */ - void setLabel(int value); - - /** - * Returns list of Optional Tlvs. - * - * @return list of Optional Tlvs - */ - LinkedList getOptionalTlv(); - - /** - * Sets Optional Tlvs in Label Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Writes the Label Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing LABEL object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Label object. - */ - interface Builder { - - /** - * Builds Label Object. - * - * @return Label Object - * @throws PcepParseException while building LABEL object. - */ - PcepLabelObject build() throws PcepParseException; - - /** - * Returns Label object header. - * - * @return Label object header - */ - PcepObjectHeader getLabelObjHeader(); - - /** - * Sets Label object header and returns its builder. - * - * @param obj Label object header - * @return Builder by setting Label object header - */ - Builder setLabelObjHeader(PcepObjectHeader obj); - - /** - * Returns O flag in Label Object. - * - * @return Label value - */ - boolean getOFlag(); - - /** - * Sets O flag and return its builder. - * - * @param value O flag - * @return Builder by setting O flag - */ - Builder setOFlag(boolean value); - - /** - * Returns Label from Label Object. - * - * @return Label value - */ - int getLabel(); - - /** - * Sets Label field and return its builder. - * - * @param value Label field - * @return Builder by setting Label field - */ - Builder setLabel(int value); - - /** - * Returns list of Optional Tlvs. - * - * @return list of Optional Tlvs - */ - LinkedList getOptionalTlv(); - - /** - * Sets list of Optional Tlvs and return its builder. - * - * @param llOptionalTlv list of Optional Tlvs - * @return Builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Sets P flag in Label object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Label object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java deleted file mode 100644 index 49aa14a4cd..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRange.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Label Range. - */ -public interface PcepLabelRange { - - /** - * Returns object of PCEP SRP Object. - * - * @return srpObject - */ - PcepSrpObject getSrpObject(); - - /** - * Sets PCEP SRP Object. - * - * @param srpObject SRP object. - */ - void setSrpObject(PcepSrpObject srpObject); - - /** - * Returns list of PcepLabelRangeObject. - * - * @return Label Range List - */ - LinkedList getLabelRangeList(); - - /** - * Sets list of PcepLabelRangeObject. - * - * @param llLabelRangeList Label Range List - */ - void setLabelRangeList(LinkedList llLabelRangeList); - - /** - * Write the byte stream of PcepLabelRange to channel buffer. - * - * @param bb of type channel buffer - * @return object length index - * @throws PcepParseException while writing LABEL RANGE into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java deleted file mode 100644 index 74e9eba483..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeObject.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP LabelRange Object. - */ -public interface PcepLabelRangeObject { - - /** - * Sets LabelRange Object header. - * - * @param obj LabelRange Object header - */ - void setLabelRangeObjHeader(PcepObjectHeader obj); - - /** - * Sets LabelType in LabelRange Object. - * - * @param labelType label type value - */ - void setLabelType(byte labelType); - - /** - * Sets RangeSize in LabelRange Object. - * - * @param rangeSize range size value - */ - void setRangeSize(int rangeSize); - - /** - * Sets LabelBase in LabelRange Object. - * - * @param labelBase label base value - */ - void setLabelBase(int labelBase); - - /** - * Returns LabelRange object header. - * - * @return LabelRange object header - */ - PcepObjectHeader getLabelRangeObjHeader(); - - /** - * Returns LabelType field in LabelRange object. - * - * @return LabelType field in LabelRange object - */ - byte getLabelType(); - - /** - * Returns RangeSize field in LabelRange object. - * - * @return RangeSize field in LabelRange object - */ - int getRangeSize(); - - /** - * Returns LabelBase field in LabelRange object. - * - * @return LabelBase field in LabelRange object - */ - int getLabelBase(); - - /** - * Writes the LabelRange Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing LABEL RANGE object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build LabelRange object. - */ - interface Builder { - - /** - * Builds LabelRange Object. - * - * @return LabelRange Object - * @throws PcepParseException while building LABEL RANGE object. - */ - PcepLabelRangeObject build() throws PcepParseException; - - /** - * Returns LabelRange object header. - * - * @return LabelRange object header - */ - PcepObjectHeader getLabelRangeObjHeader(); - - /** - * Sets LabelRange object header and returns its builder. - * - * @param obj LabelRange object header - * @return Builder by setting LabelRange object header - */ - Builder setLabelRangeObjHeader(PcepObjectHeader obj); - - /** - * Returns LabelType field in LabelRange object. - * - * @return LabelType field in LabelRange object - */ - byte getLabelType(); - - /** - * Sets LabelType field and returns its builder. - * - * @param labelType LabelType field - * @return Builder by setting LabelType field - */ - Builder setLabelType(byte labelType); - - /** - * Returns RangeSize field in LabelRange object. - * - * @return RangeSize field in LabelRange object - */ - int getRangeSize(); - - /** - * Sets RangeSize field and returns its builder. - * - * @param rangeSize RangeSize field - * @return Builder by setting RangeSize field - */ - Builder setRangeSize(int rangeSize); - - /** - * Returns LabelBase field in LabelRange object. - * - * @return LabelBase field in LabelRange object - */ - int getLabelBase(); - - /** - * Sets LabelBase field and returns its builder. - * - * @param labelBase LabelBase field - * @return Builder by setting LabelBase field - */ - Builder setLabelBase(int labelBase); - - /** - * Sets P flag in TE object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in TE object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java deleted file mode 100644 index f4ef81f25b..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelRangeResvMsg.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Label Range Reservation Message. - */ -public interface PcepLabelRangeResvMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns LabelRange field in Label Range Reservation message. - * - * @return LabelRange field - */ - PcepLabelRange getLabelRange(); - - /** - * Sets LabelRange field in Label Range Reservation message with specified value. - * - * @param lR label range object - */ - void setLabelRange(PcepLabelRange lR); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Label Range Reservation message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepLabelRangeResvMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns LabelRange field in Label Range Reservation message. - * - * @return LabelRange object - */ - PcepLabelRange getLabelRange(); - - /** - * Sets LabelRange field and returns its Builder. - * - * @param lR label range object - * @return builder by setting LabelRange field - */ - Builder setLabelRange(PcepLabelRange lR); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java deleted file mode 100644 index 3e3b40e27e..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdate.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepLabelDownload; -import org.onosproject.pcepio.types.PcepLabelMap; - -/*** - * Abstraction to provide PCEP Label Updates. - */ -public interface PcepLabelUpdate { - - /** - * Writes the byte stream of PcepLabelUpdate into channel buffer. - * - * @param bb of type channel buffer - * @throws PcepParseException while writing LABEL UPDATE. - */ - void write(ChannelBuffer bb) throws PcepParseException; - - /** - * Sets the Label Download object. - * - * @param labelDownload PCEP Label Download object - */ - void setLabelDownload(PcepLabelDownload labelDownload); - - /** - * Returns the PcepLabelDownload object. - * - * @return labelDownload PCEP Label Download - */ - PcepLabelDownload getLabelDownload(); - - /** - * Sets the Label map object. - * - * @param labelMap PCEP Label Map object - */ - void setLabelMap(PcepLabelMap labelMap); - - /** - * Returns the PcepLabelMap object. - * - * @return labelMap PCEP Label Map - */ - PcepLabelMap getLabelMap(); - - /** - * Builder interface with get and set functions to build Label Update message. - */ - interface Builder { - - /** - * Builds PcepLableUpdate Object. - * - * @return PcepLableUpdate Object - * @throws PcepParseException while building LABEL-UPDATE. - */ - PcepLabelUpdate build() throws PcepParseException; - - /** - * Sets the Label Download object. - * - * @param labelDownload PCEP Label Download object - * @return Builder by setting labelDownload object - */ - Builder setLabelDownload(PcepLabelDownload labelDownload); - - /** - * Returns the PcepLabelDownload object. - * - * @return labelDownload PCEP Label Download - */ - PcepLabelDownload getLabelDownload(); - - /** - * Sets the Label map object. - * - * @param labelMap PCEP Label Map object - * @return Builder by setting PcepLabelMap object - */ - Builder setLabelMap(PcepLabelMap labelMap); - - /** - * Returns the PcepLabelMap object. - * - * @return labelMap PCEP Label Map - */ - PcepLabelMap getLabelMap(); - } - -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java deleted file mode 100644 index 3aa94b7b90..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLabelUpdateMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Label Update Message. - */ -public interface PcepLabelUpdateMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of PcLabelUpdateList. - * - * @return list of PcLabelUpdateList. - */ - LinkedList getPcLabelUpdateList(); - - /** - * Sets list of PcLabelUpdateList. - * - * @param llPcLabelUpdateList list of PcLabelUpdateList - */ - void setPcLabelUpdateList(LinkedList llPcLabelUpdateList); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Label Update message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepLabelUpdateMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns list of PcLabelUpdateList. - * - * @return list of PcLabelUpdateList. - */ - LinkedList getPcLabelUpdateList(); - - /** - * Sets list of PcLabelUpdateList. - * - * @param llPcLabelUpdateList list of PcLabelUpdateList. - * @return Builder by setting list of PcLabelUpdateList. - */ - Builder setPcLabelUpdateList(LinkedList llPcLabelUpdateList); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java deleted file mode 100644 index 52ff95fd53..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspObject.java +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP LSP Object. - */ -public interface PcepLspObject { - - /** - * Returns PlspId of LSP Object. - * - * @return PlspId of LSP Object - */ - int getPlspId(); - - /** - * Sets PlspId with specified value. - * - * @param value PlspId - */ - void setPlspId(int value); - - /** - * Returns O flag in LSP Object. - * - * @return O flag in LSP Object - */ - byte getOFlag(); - - /** - * Sets O flag with specified value. - * - * @param value O flag - */ - void setOFlag(byte value); - - /** - * Returns C flag in LSP Object. - * - * @return C flag in LSP Object - */ - boolean getCFlag(); - - /** - * Sets C flag with specified value. - * - * @param value C flag - */ - void setCFlag(boolean value); - - /** - * Returns A flag in LSP Object. - * - * @return A flag in LSP Object - */ - boolean getAFlag(); - - /** - * Sets A flag with specified value. - * - * @param value A flag - */ - void setAFlag(boolean value); - - /** - * Returns R flag in LSP Object. - * - * @return R flag in LSP Object - */ - boolean getRFlag(); - - /** - * Sets R flag with specified value. - * - * @param value R flag - */ - void setRFlag(boolean value); - - /** - * Returns S flag in LSP Object. - * - * @return S flag in LSP Object - */ - boolean getSFlag(); - - /** - * Sets S flag with specified value. - * - * @param value S flag - */ - void setSFlag(boolean value); - - /** - * Returns D flag in LSP Object. - * - * @return D flag in LSP Object - */ - boolean getDFlag(); - - /** - * Sets D flag with specified value. - * - * @param value D flag - */ - void setDFlag(boolean value); - - /** - * Returns list of Optional Tlvs in LSP Object. - * - * @return list of Optional Tlvs - */ - LinkedList getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in LSP Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Writes the LSP Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing LSP object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build LSP object. - */ - interface Builder { - - /** - * Builds LSP Object. - * - * @return LSP Object - */ - PcepLspObject build(); - - /** - * Returns LSP object header. - * - * @return LSP object header - */ - PcepObjectHeader getLspObjHeader(); - - /** - * Sets LSP object header and returns its builder. - * - * @param obj LSP object header - * @return Builder by setting LSP object header - */ - Builder setLspObjHeader(PcepObjectHeader obj); - - /** - * Returns PlspId of LSP Object. - * - * @return PlspId of LSP Object - */ - int getPlspId(); - - /** - * Sets PlspId with specific value and return its builder. - * - * @param value PlspId - * @return Builder by setting PlspId - */ - Builder setPlspId(int value); - - /** - * Returns C flag in LSP Object. - * - * @return C flag in LSP Object - */ - boolean getCFlag(); - - /** - * Sets C flag with specific value and return its builder. - * - * @param value C flag - * @return Builder by setting C flag - */ - Builder setCFlag(boolean value); - - /** - * Returns O flag in LSP Object. - * - * @return O flag in LSP Object - */ - byte getOFlag(); - - /** - * Sets O flag with specific value and return its builder. - * - * @param value O flag - * @return Builder by setting O flag - */ - Builder setOFlag(byte value); - - /** - * Returns A flag in LSP Object. - * - * @return A flag in LSP Object - */ - boolean getAFlag(); - - /** - * Sets A flag with specific value and return its builder. - * - * @param value A flag - * @return Builder by setting A flag - */ - Builder setAFlag(boolean value); - - /** - * Returns A flag in LSP Object. - * - * @return A flag in LSP Object - */ - boolean getRFlag(); - - /** - * Sets R flag with specific value and return its builder. - * - * @param value r flag - * @return Builder by setting r flag - */ - Builder setRFlag(boolean value); - - /** - * Returns S flag in LSP Object. - * - * @return S flag in LSP Object - */ - boolean getSFlag(); - - /** - * Sets S flag with specific value and return its builder. - * - * @param value s flag - * @return Builder by setting S flag - */ - Builder setSFlag(boolean value); - - /** - * Returns D flag in LSP Object. - * - * @return D flag in LSP Object - */ - boolean getDFlag(); - - /** - * Sets D flag with specific value and return its builder. - * - * @param value D flag - * @return Builder by setting D flag - */ - Builder setDFlag(boolean value); - - /** - * Returns list of Optional Tlvs in LSP Object. - * - * @return list of Optional Tlvs in LSP Object - */ - LinkedList getOptionalTlv(); - - /** - * Sets list of Optional Tlvs and return its builder. - * - * @param llOptionalTlv list of Optional Tlvs - * @return Builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Sets P flag in LSP object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in LSP object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java deleted file mode 100644 index 9314bb76a4..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepLspaObject.java +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP LSPA Object. - */ -public interface PcepLspaObject { - - /** - * Returns L flag in LSPA Object. - * - * @return L flag in LSPA Object - */ - boolean getLFlag(); - - /** - * Sets L flag in LSPA Object. - * - * @param value L flag - */ - void setLFlag(boolean value); - - /** - * Returns Exclude Any field in LSPA Object. - * - * @return Exclude Any field in LSPA Object - */ - int getExcludeAny(); - - /** - * Sets Exclude Any field in LSPA Object. - * - * @param value Exclude Any field - */ - void setExcludeAny(int value); - - /** - * Returns Include Any field in LSPA Object. - * - * @return Include Any field in LSPA Object - */ - int getIncludeAny(); - - /** - * Sets Include Any field in LSPA Object. - * - * @param value Include Any field - */ - void setIncludeAny(int value); - - /** - * Returns Include All field in LSPA Object. - * - * @return Include All field in LSPA Object - */ - int getIncludeAll(); - - /** - * Sets Include All field in LSPA Object. - * - * @param value Include All field - */ - void setIncludeAll(int value); - - /** - * Returns Setup Priority field in LSPA Object. - * - * @return Setup Priority field in LSPA Object - */ - byte getSetupPriority(); - - /** - * Sets Setup Priority field in LSPA Object. - * - * @param value Setup Priority field - */ - void setSetupPriority(byte value); - - /** - * Returns Hold Priority field in LSPA Object. - * - * @return Hold Priority field in LSPA Object - */ - byte getHoldPriority(); - - /** - * Sets Hold Priority field in LSPA Object. - * - * @param value Hold Priority field - */ - void setHoldPriority(byte value); - - /** - * Returns list of Optional Tlvs in LSPA Object. - * - * @return list of Optional Tlvs in LSPA Object - */ - LinkedList getOptionalTlv(); - - /** - * Sets Optional Tlvs in LSPA Object. - * - * @param llOptionalTlv Optional Tlvs in LSPA Object - */ - void setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Writes the LSPA Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing LSPA object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build bandwidth object. - */ - interface Builder { - - /** - * Builds LSPA Object. - * - * @return LSPA Object - * @throws PcepParseException while building LSPA object. - */ - PcepLspaObject build() throws PcepParseException; - - /** - * Returns LSPA object header. - * - * @return LSPA object header - */ - PcepObjectHeader getLspaObjHeader(); - - /** - * Sets LSPA object header and returns its builder. - * - * @param obj LSPA object header - * @return Builder by setting LSPA object header - */ - Builder setLspaObjHeader(PcepObjectHeader obj); - - /** - * Returns L flag in LSPA Object. - * - * @return L flag in LSPA Object - */ - boolean getLFlag(); - - /** - * Sets L flag in LSPA Object and return its builder. - * - * @param value L flag in LSPA Object - * @return Builder by setting L flag - */ - Builder setLFlag(boolean value); - - /** - * Returns Exclude Any field in LSPA Object. - * - * @return Exclude Any field in LSPA Object - */ - int getExcludeAny(); - - /** - * Sets Exclude Any field in LSPA Object and return its builder. - * - * @param value Exclude Any field in LSPA Object - * @return Builder by setting Exclude Any field - */ - Builder setExcludeAny(int value); - - /** - * Returns Include Any field in LSPA Object. - * - * @return Include Any field in LSPA Object - */ - int getIncludeAny(); - - /** - * Sets Include Any field in LSPA Object and return its builder. - * - * @param value Include Any field in LSPA Object - * @return Builder by setting Include Any field - */ - Builder setIncludeAny(int value); - - /** - * Returns Include All field in LSPA Object. - * - * @return Include All field in LSPA Object - */ - int getIncludeAll(); - - /** - * Sets Include All field in LSPA Object and return its builder. - * - * @param value Include All field in LSPA Object - * @return Builder by setting Include All field - */ - Builder setIncludeAll(int value); - - /** - * Returns Setup Priority field in LSPA Object. - * - * @return Setup Priority field in LSPA Object - */ - byte getSetupPriority(); - - /** - * Sets Setup Priority field in LSPA Object and return its builder. - * - * @param value Setup Priority field in LSPA Object - * @return Builder by setting Setup Priority field - */ - Builder setSetupPriority(byte value); - - /** - * Returns Hold Priority field in LSPA Object. - * - * @return Hold Priority field in LSPA Object - */ - byte getHoldPriority(); - - /** - * Sets Hold Priority field in LSPA Object and return its builder. - * - * @param value Hold Priority field in LSPA Object - * @return Builder by setting Hold Priority field - */ - Builder setHoldPriority(byte value); - - /** - * Returns list of Optional Tlvs in LSPA Object. - * - * @return list of Optional Tlvs in LSPA Object - */ - LinkedList getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in LSPA Object. - * - * @param llOptionalTlv list of Optional Tlvs - * @return builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Sets P flag in LSPA object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in LSPA object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java deleted file mode 100644 index 3b0c729e27..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessage.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Messages. - */ -public interface PcepMessage extends PcepObject { - - @Override - PcepVersion getVersion(); - - /** - * Returns Type of PCEP Message. - * - * @return Type of PCEP Message - */ - PcepType getType(); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PCEP Message. - */ - interface Builder { - - /** - * Builds PCEP Message. - * - * @return PCEP Message - * @throws PcepParseException when build fails to create PCEP message - */ - PcepMessage build() throws PcepParseException; - - /** - * Returns Version of PCEP Message. - * - * @return Version of PCEP Message - */ - PcepVersion getVersion(); - - /** - * Returns Type of PCEP Message. - * - * @return Type of PCEP Message - */ - PcepType getType(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java deleted file mode 100644 index 30196acca6..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageReader.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Message Reader. - */ -public interface PcepMessageReader { - - /** - * Reads the Objects in the PCEP Message and Returns PCEP Message. - * - * @param bb Channel Buffer - * @return PCEP Message - * @throws PcepParseException while parsing PCEP message - * @throws PcepOutOfBoundMessageException if out-of-bound message is received - */ - T readFrom(ChannelBuffer bb) throws PcepParseException, PcepOutOfBoundMessageException; -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java deleted file mode 100644 index b10951b29f..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMessageWriter.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Message Writer. - */ -public interface PcepMessageWriter { - - /** - * Writes the Objects of the PCEP Message into Channel Buffer. - * - * @param bb Channel Buffer - * @param message PCEP Message - * @throws PcepParseException while writing PCEP message. - */ - void write(ChannelBuffer bb, T message) throws PcepParseException; -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java deleted file mode 100644 index 54fffe20a9..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMetricObject.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; - -/** - * Abstraction of an entity providing PCEP Metric Object. - */ -public interface PcepMetricObject { - - /** - * Returns Metric value in Metric Object. - * - * @return Metric value - */ - int getMetricVal(); - - /** - * Sets Metric value in Metric Object with specified value. - * - * @param value Metric value - */ - void setMetricVal(int value); - - /** - * Returns Y flag in Metric Object. - * - * @return Y flag in Metric Object - */ - byte getYFlag(); - - /** - * Sets Y flag in Metric Object with specified value. - * - * @param value Y flag - */ - void setYFlag(byte value); - - /** - * Returns C flag in Metric Object. - * - * @return C flag in Metric Object - */ - boolean getCFlag(); - - /** - * Sets C flag in Metric Object with specified value. - * - * @param value C flag - */ - void setCFlag(boolean value); - - /** - * Returns B flag in Metric Object. - * - * @return B flag in Metric Object - */ - boolean getBFlag(); - - /** - * Sets B flag in Metric Object with specified value. - * - * @param value B flag - */ - void setBFlag(boolean value); - - /** - * Returns BType field in Metric Object. - * - * @return BType field in Metric Object - */ - byte getBType(); - - /** - * Sets BType field in Metric Object with specified value. - * - * @param value BType field - */ - void setBType(byte value); - - /** - * Writes the Metric Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing METRIC object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Metric object. - */ - interface Builder { - - /** - * Builds Metric Object. - * - * @return Metric Object - * @throws PcepParseException when mandatory object is not set - */ - PcepMetricObject build() throws PcepParseException; - - /** - * Returns Metric object header. - * - * @return Metric object header - */ - PcepObjectHeader getMetricObjHeader(); - - /** - * Sets Metric object header and returns its builder. - * - * @param obj Metric object header - * @return Builder by setting Metric object header - */ - Builder setMetricObjHeader(PcepObjectHeader obj); - - /** - * Returns Metric value in Metric Object. - * - * @return Metric value - */ - int getMetricVal(); - - /** - * Sets Metric Value in Metric Object and returns its builder. - * - * @param value Metric Value - * @return Builder by setting Metric Value - */ - Builder setMetricVal(int value); - - /** - * Returns Flags in Metric Object. - * - * @return Flags in Metric Object - */ - byte getYFlag(); - - /** - * Sets Flags in Metric Object and returns its builder. - * - * @param value Flags - * @return Builder by setting Flags - */ - Builder setYFlag(byte value); - - /** - * Returns C flag in Metric Object. - * - * @return C flag in Metric Object - */ - boolean getCFlag(); - - /** - * Sets C flag in Metric Object and returns its builder. - * - * @param value C flag - * @return Builder by setting C flag - */ - Builder setCFlag(boolean value); - - /** - * Returns B flag in Metric Object. - * - * @return B flag in Metric Object - */ - boolean getBFlag(); - - /** - * Sets B flag in Metric Object and returns its builder. - * - * @param value B flag - * @return Builder by setting B flag - */ - Builder setBFlag(boolean value); - - /** - * Returns BType field in Metric Object. - * - * @return BType field in Metric Object - */ - byte getBType(); - - /** - * Sets B Type field in Metric Object and returns its builder. - * - * @param value B Type field - * @return Builder by setting B Type field - */ - Builder setBType(byte value); - - /** - * Sets P flag in Metric object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Metric object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java deleted file mode 100644 index 97091e09ad..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepMsgPath.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity Provides PCEP Message PAth for update message. - * Reference :PCE extensions for stateful draft-ietf-pce-stateful-pce-10. - */ -public interface PcepMsgPath { - - /** - * Returns object of PcepEroObject. - * - * @return eroObject - */ - PcepEroObject getEroObject(); - - /** - * Returns object of PcepAttribute. - * - * @return pcepAttribute - */ - PcepAttribute getPcepAttribute(); - - /** - * Sets PcepEroObject. - * - * @param eroObject PCEP ERO Object. - */ - void setEroObject(PcepEroObject eroObject); - - /** - * Sets PcepAttribute. - * - * @param pcepAttribute PCEP-Attribute. - */ - void setPcepAttribute(PcepAttribute pcepAttribute); - - /** - * reads ERO object and attribute list. - * - * @param bb of type channel buffer - * @return PcepMsgPath - * @throws PcepParseException while parsing Message Path from Channel Buffer. - */ - PcepMsgPath read(ChannelBuffer bb) throws PcepParseException; - - /** - * writes ERO object and attribute list to channel. - * - * @param bb of type channel buffer - * @return object length index - * @throws PcepParseException while writing Message Path into Channel Buffer. - */ - - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build PcepMsgPath. - */ - interface Builder { - - /** - * Builds PcepMsgPath. - * - * @return PcepMsgPath - * @throws PcepParseException when mandatory object is not set - */ - PcepMsgPath build() throws PcepParseException; - - /** - * Returns object of PcepEroObject. - * - * @return PcepEroObject - */ - PcepEroObject getEroObject(); - - /** - * Returns object of PcepAttribute. - * - * @return pcepAttribute - */ - PcepAttribute getPcepAttribute(); - - /** - * Sets PcepEroObject. - * - * @param eroObject PcepEroObject - * @return Builder by setting ERO object. - */ - Builder setEroObject(PcepEroObject eroObject); - - /** - * Sets PcepAttribute. - * - * @param pcepAttribute PCEP-Attribute - * @return Builder by setting PCEP-Attribute. - */ - Builder setPcepAttribute(PcepAttribute pcepAttribute); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java deleted file mode 100644 index ab335474c0..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepNai.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; - -/** - * Abstraction of an entity provides NAI information in SR ERO Object. - */ -public interface PcepNai { - - /** - * To get the ST type of the NAI information. - * - * @return type of ST info - */ - byte getType(); - - /** - * To write the object information to channelBuffer. - * - * @param cb of type channel buffer - * @return length of written bytes. - */ - int write(ChannelBuffer cb); -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java deleted file mode 100644 index 09ffdc340b..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepObject.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -/** - * Abstraction of an entity providing PCEP Object. - */ -public interface PcepObject extends Writeable { - - /** - * Returns Version of PCEP Object. - * - * @return Version of PCEP Object - */ - PcepVersion getVersion(); -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java deleted file mode 100644 index d3ea78b872..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenMsg.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Open Message. - */ -public interface PcepOpenMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Sets OpenObject in Open Message with Specified Obj. - * - * @param obj OpenObject - */ - void setPcepOpenObject(PcepOpenObject obj); - - /** - * Returns OpenObject in Open Message. - * - * @return OpenObject in Open Message - */ - PcepOpenObject getPcepOpenObject(); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Open message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepOpenMsg build() throws PcepParseException; - - /** - * Sets Open Object in Open Message and return its builder. - * - * @param obj Open Object - * @return builder by setting Open Object - */ - Builder setPcepOpenObj(PcepOpenObject obj); - - /** - * Returns OpenObject in Open Message. - * - * @return OpenObject in Open Message - */ - PcepOpenObject getPcepOpenObj(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java deleted file mode 100644 index 73228f0722..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepOpenObject.java +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP Open Object. - */ -public interface PcepOpenObject { - - /** - * Returns Open object header. - * - * @return Open object header - */ - PcepObjectHeader getOpenObjHeader(); - - /** - * Sets Open object header in Open Object. - * - * @param obj Open object header - */ - void setOpenObjHeader(PcepObjectHeader obj); - - /** - * Returns version of Open Object. - * - * @return Version of Open Object - */ - PcepVersion getVersion(); - - /** - * Returns KeepAlive Time in Open Object. - * - * @return KeepAlive Time in Open Object - */ - byte getKeepAliveTime(); - - /** - * Sets KeepAlive Time in Open Object with specified value. - * - * @param value KeepAlive Time - */ - void setKeepAliveTime(byte value); - - /** - * Returns Dead Time in Open Object. - * - * @return Dead Time in Open Object - */ - byte getDeadTime(); - - /** - * Sets Dead Time in Open Object with specified value. - * - * @param value Dead Time - */ - void setDeadTime(byte value); - - /** - * Returns SessionId in Open Object. - * - * @return SessionId in Open Object - */ - byte getSessionId(); - - /** - * Sets SessionId in Open Object with specified value. - * - * @param value SessionId - */ - void setSessionId(byte value); - - /** - * Returns list of Optional Tlvs in Open Object. - * - * @return list of Optional Tlvs - */ - LinkedList getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in Open Object. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Writes the Open into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing Open Object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Open object. - */ - interface Builder { - - /** - * Builds Open Object. - * - * @return Open Object - * @throws PcepParseException while building PCEP-Open object - */ - PcepOpenObject build() throws PcepParseException; - - /** - * Returns Open object header. - * - * @return Open object header - */ - PcepObjectHeader getOpenObjHeader(); - - /** - * Sets Open object header and returns its builder. - * - * @param obj Open object header - * @return Builder by setting Open object header - */ - Builder setOpenObjHeader(PcepObjectHeader obj); - - /** - * Returns KeepAlive Time in Open Object. - * - * @return KeepAlive Time in Open Object - */ - byte getKeepAliveTime(); - - /** - * Sets KeepAlive Time and returns its builder. - * - * @param value KeepAlive Time - * @return Builder by setting KeepAlive Time - */ - Builder setKeepAliveTime(byte value); - - /** - * Returns Dead Time in Open Object. - * - * @return Dead Time in Open Object - */ - byte getDeadTime(); - - /** - * Sets Dead Time and returns its builder. - * - * @param value Dead Time - * @return Builder by setting Dead Time - */ - Builder setDeadTime(byte value); - - /** - * Returns SessionId in Open Object. - * - * @return SessionId in Open Object - */ - byte getSessionId(); - - /** - * Sets SessionId and returns its builder. - * - * @param value SessionId - * @return Builder by setting SessionId - */ - Builder setSessionId(byte value); - - /** - * Returns list of Optional Tlvs in Open Object. - * - * @return list of Optional Tlvs in Open Object - */ - LinkedList getOptionalTlv(); - - /** - * Sets list of Optional Tlvs and return its Builder. - * - * @param llOptionalTlv list of Optional Tlvs - * @return builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Sets P flag in Open object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in Open object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java deleted file mode 100644 index 932a225ad6..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRPObject.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP RP Object. - */ -public interface PcepRPObject { - - /** - * Returns RequestId Number in RP Object. - * - * @return RequestId Number in RP Object - */ - int getRequestIdNum(); - - /** - * Sets RequestId Number with specified value. - * - * @param value RequestId Number - */ - void setRequestIdNum(int value); - - /** - * Returns O flag in RP Object. - * - * @return O flag in RP Object - */ - boolean getOFlag(); - - /** - * Sets O flag with specified value. - * - * @param value O flag - */ - void setOFlag(boolean value); - - /** - * Returns B flag in RP Object. - * - * @return B flag in RP Object - */ - boolean getBFlag(); - - /** - * Sets B flag with specified value. - * - * @param value B flag - */ - void setBFlag(boolean value); - - /** - * Returns R flag in RP Object. - * - * @return R flag in RP Object - */ - boolean getRFlag(); - - /** - * Sets R flag with specified value. - * - * @param value R flag - */ - void setRFlag(boolean value); - - /** - * Returns Priority Flag in RP Object. - * - * @return Priority Flag in RP Object - */ - byte getPriFlag(); - - /** - * Sets Priority Flag with specified value. - * - * @param value Priority Flag - */ - void setPriFlag(byte value); - - /** - * Returns list of Optional Tlvs in RP Object. - * - * @return list of Optional Tlvs in RP Object - */ - LinkedList getOptionalTlv(); - - /** - * Sets list of Optional Tlvs in RP Object and returns its builder. - * - * @param llOptionalTlv list of Optional Tlvs - */ - void setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Writes the RP Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException while writing RP object into Channel Buffer. - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build bandwidth object. - */ - interface Builder { - - /** - * Builds RP Object. - * - * @return RP Object - */ - PcepRPObject build(); - - /** - * Returns RP object header. - * - * @return RP object header - */ - PcepObjectHeader getRPObjHeader(); - - /** - * Sets RP object header and returns its builder. - * - * @param obj RP object header - * @return Builder by setting RP object header - */ - Builder setRPObjHeader(PcepObjectHeader obj); - - /** - * Returns Request Id Number in RP Object. - * - * @return Request Id Number in RP Object - */ - int getRequestIdNum(); - - /** - * Sets Request Id Number and returns its builder. - * - * @param value Request Id Number - * @return Builder by setting Request Id Number - */ - Builder setRequestIdNum(int value); - - /** - * Returns O flag in RP Object. - * - * @return O flag in RP Object - */ - boolean getOFlag(); - - /** - * Sets O flag and returns its builder. - * - * @param value O flag - * @return Builder by setting O flag - */ - Builder setOFlag(boolean value); - - /** - * Returns B flag in RP Object. - * - * @return B flag in RP Object - */ - boolean getBFlag(); - - /** - * Sets B flag and returns its builder. - * - * @param value B flag - * @return Builder by setting B flag - */ - Builder setBFlag(boolean value); - - /** - * Returns R flag in RP Object. - * - * @return R flag in RP Object - */ - boolean getRFlag(); - - /** - * Sets R flag and returns its builder. - * - * @param value R flag - * @return Builder by setting R flag - */ - Builder setRFlag(boolean value); - - /** - * Returns Priority Flag in RP Object. - * - * @return Priority Flag in RP Object - */ - byte getPriFlag(); - - /** - * Sets Priority Flag and returns its builder. - * - * @param value Priority Flag - * @return Builder by setting Priority Flag - */ - Builder setPriFlag(byte value); - - /** - * Returns list of Optional Tlvs in RP Object. - * - * @return list of Optional Tlvs - */ - LinkedList getOptionalTlv(); - - /** - * Sets list of Optional Tlvs and returns its builder. - * - * @param llOptionalTlv list of Optional Tlvs - * @return Builder by setting list of Optional Tlvs - */ - Builder setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Sets P flag in RP object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in RP object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java deleted file mode 100644 index f4d8bf62ba..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepReportMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Report Message. - */ -public interface PcepReportMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns PcepStateReport list. - * - * @return list of PcepStateReport - */ - LinkedList getStateReportList(); - - /** - * Sets StateReportList. - * - * @param llStateReportList list of PcepStateReport. - */ - void setStateReportList(LinkedList llStateReportList); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with get and set functions to build Report message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepReportMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns StateReportList. - * - * @return StateReportList. - */ - LinkedList getStateReportList(); - - /** - * Sets list of PcepStateReport and returns builder. - * - * @param llStateReportList list of PcepStateReport. - * @return Builder by setting list of PcepStateReport. - */ - Builder setStateReportList(LinkedList llStateReportList); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java deleted file mode 100644 index a93a1b783c..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepRroObject.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP RRO Object. - */ -public interface PcepRroObject { - - /** - * Returns list of SubObjects. - * - * @return list of SubObjects - */ - LinkedList getSubObjects(); - - /** - * Sets list of SubObjects and return its builder. - * - * @param llSubObjects list of SubObjects - */ - void setSubObjects(LinkedList llSubObjects); - - /** - * Writes the RRO Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException when object header failed to write in channel buffer - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build RRO object. - */ - interface Builder { - - /** - * Builds RRO Object. - * - * @return RRO Object - */ - PcepRroObject build(); - - /** - * Returns RRO object header. - * - * @return RRO object header - */ - PcepObjectHeader getRroObjHeader(); - - /** - * Sets RRO object header and returns its builder. - * - * @param obj RRO object header - * @return Builder by setting RRO object header - */ - Builder setRroObjHeader(PcepObjectHeader obj); - - /** - * Returns list of SubObjects. - * - * @return list of SubObjects - */ - LinkedList getSubObjects(); - - /** - * Sets list of SubObjects in RRO Object and returns its builder. - * - * @param llSubObjects list of SubObjects - * @return Builder by setting list of SubObjects - */ - Builder setSubObjects(LinkedList llSubObjects); - - /** - * Sets P flag in RRO object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in RRO object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java deleted file mode 100644 index b3ba03fcf9..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepSrpObject.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; - -/** - * Abstraction of an entity providing PCEP SRP Object. - */ -public interface PcepSrpObject { - - /** - * Returns SRP ID of SRP Object. - * - * @return SRP ID of SRP Object - */ - int getSrpID(); - - /** - * Sets SRP ID with specified value. - * - * @param srpID SRP ID of SRP Object - */ - void setSrpID(int srpID); - - /** - * Returns R flag of SRP Object. - * - * @return R flag of SRP Object - */ - boolean getRFlag(); - - /** - * Sets R flag with specified value. - * - * @param bRFlag R Flag of SRP Object - */ - void setRFlag(boolean bRFlag); - - /** - * Returns S flag of SRP Object. - * - * @return S flag of SRP Object - */ - boolean getSFlag(); - - /** - * Sets S(sync) flag with specified value. - * - * @param bSFlag S Flag of SRP Object - */ - void setSFlag(boolean bSFlag); - - /** - * sets the optional TLvs. - * - * @param llOptionalTlv list of optional tlvs - */ - void setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Returns list of optional tlvs. - * - * @return llOptionalTlv list of optional tlvs - */ - LinkedList getOptionalTlv(); - - /** - * Writes the SRP Object into channel buffer. - * - * @param bb channel buffer - * @return Returns the writerIndex of this buffer - * @throws PcepParseException when tlv is null - */ - int write(ChannelBuffer bb) throws PcepParseException; - - /** - * Builder interface with get and set functions to build SRP object. - */ - interface Builder { - - /** - * Builds SRP Object. - * - * @return SRP Object - * @throws PcepParseException when mandatory object is not set - */ - PcepSrpObject build() throws PcepParseException; - - /** - * Returns SRP object header. - * - * @return SRP object header - */ - PcepObjectHeader getSrpObjHeader(); - - /** - * Sets SRP object header and returns its builder. - * - * @param obj SRP object header - * @return Builder by setting SRP object header - */ - Builder setSrpObjHeader(PcepObjectHeader obj); - - /** - * Returns SRP ID of SRP Object. - * - * @return SRP ID of SRP Object - */ - int getSrpID(); - - /** - * Sets SRP ID and returns its builder. - * - * @param srpID SRP ID - * @return Builder by setting SRP ID - */ - Builder setSrpID(int srpID); - - /** - * Returns R flag of SRP Object. - * - * @return R flag of SRP Object - */ - boolean getRFlag(); - - /** - * Returns S(sync) flag of SRP Object. - * - * @return S flag of SRP Object - */ - boolean getSFlag(); - - /** - * Sets R flag and returns its builder. - * - * @param bRFlag R flag - * @return Builder by setting R flag - */ - Builder setRFlag(boolean bRFlag); - - /** - * Sets S flag and returns its builder. - * - * @param bSFlag S flag - * @return Builder by setting S flag - */ - Builder setSFlag(boolean bSFlag); - - /** - * Returns list of optional tlvs. - * - * @return llOptionalTlv list of optional tlvs - */ - LinkedList getOptionalTlv(); - - /** - * sets the optional TLvs. - * - * @param llOptionalTlv List of optional tlv - * @return builder by setting list of optional tlv. - */ - Builder setOptionalTlv(LinkedList llOptionalTlv); - - /** - * Sets P flag in SRP object header and returns its builder. - * - * @param value boolean value to set P flag - * @return Builder by setting P flag - */ - Builder setPFlag(boolean value); - - /** - * Sets I flag in SRP object header and returns its builder. - * - * @param value boolean value to set I flag - * @return Builder by setting I flag - */ - Builder setIFlag(boolean value); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java deleted file mode 100644 index 555fe07a85..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepStateReport.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity provides State Report for PCEP Report Message. - */ -public interface PcepStateReport { - - /** - * Provides PCEP Message path for report message. - */ - interface PcepMsgPath { - - /** - * Returns PcepEroObject. - * - * @return eroObj - */ - PcepEroObject getEroObject(); - - /** - * Sets PcepEroObject. - * - * @param eroObject Ero Object - */ - void setEroObject(PcepEroObject eroObject); - - /** - * Returns PcepAttribute. - * - * @return attrList - */ - PcepAttribute getPcepAttribute(); - - /** - * Sets PcepAttribute. - * - * @param pcepAttribute Pcep Attribute object - */ - void setPcepAttribute(PcepAttribute pcepAttribute); - - /** - * Returns PcepRroObject. - * - * @return rroObj - */ - PcepRroObject getRroObject(); - - /** - * Sets PcepRroObject. - * - * @param rroObject Rro object - */ - void setRroObject(PcepRroObject rroObject); - - /** - * Returns PcepBandwidthObject. - * - * @return bandwidth object - */ - PcepBandwidthObject getBandwidthObject(); - - /** - * Sets PcepBandwidthObject. - * - * @param bandwidth bandwidth object - */ - void setBandwidthObject(PcepBandwidthObject bandwidth); - - /** - * Reads all the Objects for PCEP Message Path. - * - * @param bb of type channel buffer - * @return PCEP Message path - * @throws PcepParseException when invalid buffer received - */ - PcepMsgPath read(ChannelBuffer bb) throws PcepParseException; - - /** - * Writes all the objects for pcep message path. - * - * @param bb of type channel buffer. - * @return object length index - * @throws PcepParseException when mandatory object is not set - */ - int write(ChannelBuffer bb) throws PcepParseException; - } - - /** - * Returns PcepSrpObject. - * - * @return srpObject - */ - PcepSrpObject getSrpObject(); - - /** - * Returns PcepLspObject. - * - * @return lspObject - */ - PcepLspObject getLspObject(); - - /** - * Returns PcepMsgPath. - * - * @return msgPath - */ - PcepMsgPath getMsgPath(); - - /** - * Sets the SRP Object. - * - * @param srpObj Pcep Srp Object - */ - void setSrpObject(PcepSrpObject srpObj); - - /** - * Sets the LSP Object. - * - * @param lspObject Pcep Lsp Object - */ - void setLspObject(PcepLspObject lspObject); - - /** - * Sets the Path Object. - * - * @param msgPath Pcep MsgPath object - */ - void setMsgPath(PcepMsgPath msgPath); - - /** - * Builder interface with get and set functions to build PcepStateReport. - */ - interface Builder { - - /** - * Builds PcepStateReport. - * - * @return PcepStateReport - * @throws PcepParseException when mandatory object is not set - */ - PcepStateReport build() throws PcepParseException; - - /** - * Returns PcepSrpObject. - * - * @return srpObject - */ - PcepSrpObject getSrpObject(); - - /** - * Returns PcepLspObject. - * - * @return lspObject - */ - PcepLspObject getLspObject(); - - /** - * Returns PcepMsgPath. - * - * @return msgPath - */ - PcepMsgPath getMsgPath(); - - /** - * Sets the SRP Object. - * - * @param srpObj Pcep Srp Object - * @return builder by setting PcepSrpObject - */ - Builder setSrpObject(PcepSrpObject srpObj); - - /** - * Sets the LSP Object. - * - * @param lspObject Pcep Lsp Object - * @return builder by setting PcepLspObject - */ - Builder setLspObject(PcepLspObject lspObject); - - /** - * Sets the Path Object. - * - * @param msgPath Pcep MsgPath object - * @return builder by setting PcepMsgPath - */ - Builder setMsgPath(PcepMsgPath msgPath); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java deleted file mode 100644 index 1cf6b11e80..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepType.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -/** - * Enum to Provide the Different types of PCEP messages. - */ -public enum PcepType { - - NONE(0), OPEN(1), KEEP_ALIVE(2), PATH_COMPUTATION_REQUEST(3), PATH_COMPUTATION_REPLY(4), - NOTIFICATION(5), ERROR(6), CLOSE(7), REPORT(10), UPDATE(11), INITIATE(12), - LS_REPORT(224), LABEL_RANGE_RESERV(225), LABEL_UPDATE(226), MAX(227), END(228); - - int iValue; - - /** - * Assign iValue with the value iVal as the types of PCEP message. - * - * @param iVal type of pcep message - */ - PcepType(int iVal) { - - iValue = iVal; - } - - /** - * Returns iValue as type of PCEP message. - * - * @return iValue type of pcep message - */ - public byte getType() { - - return (byte) iValue; - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java deleted file mode 100644 index 59d0076019..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateMsg.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import java.util.LinkedList; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Update Message. - */ -public interface PcepUpdateMsg extends PcepObject, PcepMessage { - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns the update request list for PCEP Update Message. - * - * @return list of Update Requests - */ - LinkedList getUpdateRequestList(); - - /** - * Sets the update request list for PCEP update message. - * - * @param llUpdateRequestList is a list of PCEP Update Requests - */ - void setUpdateRequestList(LinkedList llUpdateRequestList); - - @Override - void writeTo(ChannelBuffer channelBuffer) throws PcepParseException; - - /** - * Builder interface with Get and Set Functions to build the PCEP update Message. - */ - interface Builder extends PcepMessage.Builder { - - @Override - PcepUpdateMsg build(); - - @Override - PcepVersion getVersion(); - - @Override - PcepType getType(); - - /** - * Returns the update request list for the PCEP update message. - * - * @return list of Update Requests - */ - LinkedList getUpdateRequestList(); - - /** - * Sets the update request list for the PCEP update message. - * - * @param llUpdateRequestList list of Update requests - * @return builder by setting list llUpdateRequestList of PcepUpdateRequest. - */ - Builder setUpdateRequestList(LinkedList llUpdateRequestList); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java deleted file mode 100644 index fbed59b83a..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepUpdateRequest.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing PCEP Update Request List. - */ -public interface PcepUpdateRequest { - - /** - * Returns object of PCEP SRP Object. - * - * @return srpObject of type PCEP SRP Object - */ - PcepSrpObject getSrpObject(); - - /** - * Returns object of PCEP LSP Object. - * - * @return lspObject of type PCEP LSP Object - */ - PcepLspObject getLspObject(); - - /** - * Returns object of PCEP MSG PATH. - * - * @return msgPath of type PCEP MSG PATH - */ - PcepMsgPath getMsgPath(); - - /** - * Sets the PCEP SRP Object. - * - * @param srpObject object of type PCEP SRP Object - */ - void setSrpObject(PcepSrpObject srpObject); - - /** - * Sets the PCEP LSP Object. - * - * @param lspObject object of type PCEP LSP Object - */ - void setLspObject(PcepLspObject lspObject); - - /** - * sets the PCEP MSG PATH. - * - * @param msgPath object of type PCEP MSG PATH - */ - void setMsgPath(PcepMsgPath msgPath); - - /** - * Builder interface with get and set functions to build PcepUpdateRequest. - */ - interface Builder { - - /** - * Builds PcepUpdateRequest. - * - * @return PcepUpdateRequest - * @throws PcepParseException if mandatory object is not set - */ - PcepUpdateRequest build() throws PcepParseException; - - /** - * Returns PcepSrpObject. - * - * @return srpObject - */ - PcepSrpObject getSrpObject(); - - /** - * Returns PcepLspObject. - * - * @return lspObject - */ - PcepLspObject getLspObject(); - - /** - * Returns PcepMsgPath. - * - * @return msgPath - */ - PcepMsgPath getMsgPath(); - - /** - * Sets the SRP Object. - * - * @param srpObj of type PcepSrpObject - * @return builder by setting PcepSrpObject - */ - Builder setSrpObject(PcepSrpObject srpObj); - - /** - * Sets the LSP Object. - * - * @param lspObject of type PcepLspObject - * @return builder by setting PcepLspObject - */ - Builder setLspObject(PcepLspObject lspObject); - - /** - * Sets the Path Object. - * - * @param msgPath of type PcepMsgPath - * @return builder by setting PcepMsgPath - */ - Builder setMsgPath(PcepMsgPath msgPath); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java deleted file mode 100644 index 691847ae9e..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepVersion.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -/** - * Enum to provide PCEP Message Version. - */ -public enum PcepVersion { - - PCEP_1(1); - - public final int packetVersion; - - /** - * Assign PCEP PacketVersion with WireVersion. - * - * @param wireVersion version of pcep - */ - PcepVersion(final int wireVersion) { - - this.packetVersion = wireVersion; - } - - /** - * Returns Wire version of PCEP Message. - * - * @return packetVersion - */ - public int getWireVersion() { - return packetVersion; - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java deleted file mode 100644 index a589f9b974..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/Writeable.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; - -/** - * Abstraction of an entity providing functionality to write byte streams of - * Messages to channel buffer. - */ -public interface Writeable { - - /** - * Writes byte streams of messages to channel buffer. - * - * @param bb parameter of type channel buffer - * @throws PcepParseException when error occurs while writing pcep message to channel buffer - */ - void writeTo(ChannelBuffer bb) throws PcepParseException; -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java deleted file mode 100644 index 5d0c6aa267..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Abstraction of an entity providing PCEP messages. - */ -package org.onosproject.pcepio.protocol; diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java deleted file mode 100644 index 11d6ffbc18..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcInitiatedLspRequestVer1.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcInitiatedLspRequest; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcInitiatedLspRequest for PCEP Initiate message. - * Reference : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03. - */ -public class PcInitiatedLspRequestVer1 implements PcInitiatedLspRequest { - - /* - * ::= (|) - ::= - - - - [] - ::= - - */ - - private static final Logger log = LoggerFactory.getLogger(PcInitiatedLspRequestVer1.class); - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP End Point Object - private PcepEndPointsObject endPointsObject; - //PCEP ERO Object - private PcepEroObject eroObject; - //PCEP Attribute list - private PcepAttribute pcepAttribute; - - /** - * Default constructor. - */ - public PcInitiatedLspRequestVer1() { - srpObject = null; - lspObject = null; - endPointsObject = null; - eroObject = null; - pcepAttribute = null; - - } - - /** - * Constructor to initialize all parameters of PC initiated lsp request. - * - * @param srpObject PCEP srp Object - * @param lspObject PCEP lsp object - * @param endPointsObject PCPE endpoints object - * @param eroObject PCEP ero object - * @param pcepAttribute PCEP attribute - */ - public PcInitiatedLspRequestVer1(PcepSrpObject srpObject, PcepLspObject lspObject, - PcepEndPointsObject endPointsObject, PcepEroObject eroObject, PcepAttribute pcepAttribute) { - this.srpObject = srpObject; - this.lspObject = lspObject; - this.endPointsObject = endPointsObject; - this.eroObject = eroObject; - this.pcepAttribute = pcepAttribute; - - } - - @Override - public PcepSrpObject getSrpObject() { - return srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return lspObject; - } - - @Override - public PcepEndPointsObject getEndPointsObject() { - return endPointsObject; - } - - @Override - public PcepEroObject getEroObject() { - return eroObject; - } - - @Override - public PcepAttribute getPcepAttribute() { - return pcepAttribute; - } - - @Override - public void setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - - } - - @Override - public void setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - } - - @Override - public void setEndPointsObject(PcepEndPointsObject endPointsObject) { - this.endPointsObject = endPointsObject; - } - - @Override - public void setEroObject(PcepEroObject eroObject) { - this.eroObject = eroObject; - } - - @Override - public void setPcepAttribute(PcepAttribute pcepAttribute) { - this.pcepAttribute = pcepAttribute; - } - - /** - * Builder class for PC initiated lsp reuqest. - */ - public static class Builder implements PcInitiatedLspRequest.Builder { - - private boolean bIsSrpObjectSet = false; - private boolean bIsLspObjectSet = false; - private boolean bIsEndPointsObjectSet = false; - private boolean bIsEroObjectSet = false; - private boolean bIsPcepAttributeSet = false; - private boolean bIsbRFlagSet = false; - - //PCEP SRP Object - private PcepSrpObject srpObject; - //PCEP LSP Object - private PcepLspObject lspObject; - //PCEP End Point Object - private PcepEndPointsObject endPointsObject; - //PCEP ERO Object - private PcepEroObject eroObject; - //PCEP Attribute list - private PcepAttribute pcepAttribute; - - @Override - public PcInitiatedLspRequest build() throws PcepParseException { - - //PCEP SRP Object - PcepSrpObject srpObject = null; - //PCEP LSP Object - PcepLspObject lspObject = null; - //PCEP End Point Object - PcepEndPointsObject endPointsObject = null; - //PCEP ERO Object - PcepEroObject eroObject = null; - //PCEP Attribute list - PcepAttribute pcepAttribute = null; - boolean bRFlag = false; - - if (!this.bIsSrpObjectSet) { - throw new PcepParseException("Srp object NOT Set while building PcInitiatedLspRequest"); - } else { - srpObject = this.srpObject; - bRFlag = srpObject.getRFlag(); - } - - if (bRFlag) { - this.bIsbRFlagSet = true; - } else { - this.bIsbRFlagSet = false; - } - - if (!this.bIsLspObjectSet) { - throw new PcepParseException("LSP Object NOT Set while building PcInitiatedLspRequest"); - } else { - lspObject = this.lspObject; - } - if (!this.bIsbRFlagSet) { - - if (!this.bIsEndPointsObjectSet) { - throw new PcepParseException("EndPoints Object NOT Set while building PcInitiatedLspRequest"); - } else { - endPointsObject = this.endPointsObject; - } - if (!this.bIsEroObjectSet) { - throw new PcepParseException("ERO Object NOT Set while building PcInitiatedLspRequest"); - } else { - eroObject = this.eroObject; - } - if (bIsPcepAttributeSet) { - pcepAttribute = this.pcepAttribute; - } - } - return new PcInitiatedLspRequestVer1(srpObject, lspObject, endPointsObject, eroObject, pcepAttribute); - } - - @Override - public PcepSrpObject getSrpObject() { - return this.srpObject; - } - - @Override - public PcepLspObject getLspObject() { - return this.lspObject; - } - - @Override - public PcepEndPointsObject getEndPointsObject() { - return this.endPointsObject; - } - - @Override - public PcepEroObject getEroObject() { - return this.eroObject; - } - - @Override - public PcepAttribute getPcepAttribute() { - return this.pcepAttribute; - } - - @Override - public Builder setSrpObject(PcepSrpObject srpobj) { - this.srpObject = srpobj; - this.bIsSrpObjectSet = true; - return this; - - } - - @Override - public Builder setLspObject(PcepLspObject lspObject) { - this.lspObject = lspObject; - this.bIsLspObjectSet = true; - return this; - } - - @Override - public Builder setEndPointsObject(PcepEndPointsObject endPointsObject) { - this.endPointsObject = endPointsObject; - this.bIsEndPointsObjectSet = true; - return this; - } - - @Override - public Builder setEroObject(PcepEroObject eroObject) { - this.eroObject = eroObject; - this.bIsEroObjectSet = true; - return this; - } - - @Override - public Builder setPcepAttribute(PcepAttribute pcepAttribute) { - this.pcepAttribute = pcepAttribute; - this.bIsPcepAttributeSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("SrpObject", srpObject) - .add("LspObject", lspObject) - .add("EndPointObject", endPointsObject) - .add("EroObject", eroObject) - .add("PcepAttribute", pcepAttribute) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java deleted file mode 100644 index cb0700104f..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepAttributeVer1.java +++ /dev/null @@ -1,431 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.protocol.PcepIroObject; -import org.onosproject.pcepio.protocol.PcepLspaObject; -import org.onosproject.pcepio.protocol.PcepMetricObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Attribute List. - */ -public class PcepAttributeVer1 implements PcepAttribute { - - /* Reference : RFC5440 - * where: - * ::=[] - * [] - * [] - * [] - * - * ::=[] - */ - private static final Logger log = LoggerFactory.getLogger(PcepAttributeVer1.class); - - public static final int OBJECT_HEADER_LENGTH = 4; - - //PCEP LSPA Object - private PcepLspaObject lspaObject; - private boolean isLspaObjectSet; - - //PCEP Bandwidth Object - private PcepBandwidthObject bandwidthObject; - private boolean isBandwidthObjectSet; - - //PCEP Metric list - private LinkedList llMetricList; - private boolean isMetricListSet; - - //PCEP IRO object - private PcepIroObject iroObject; - private boolean isIroObjectSet; - - /** - * Default constructor to initialize member variables. - */ - public PcepAttributeVer1() { - - lspaObject = null; - bandwidthObject = null; - llMetricList = null; - iroObject = null; - this.isLspaObjectSet = false; - this.isBandwidthObjectSet = false; - this.isMetricListSet = false; - this.isIroObjectSet = false; - } - - /** - * Constructor to initialize all parameters for PCEP attribute. - * - * @param lspaObject PCEP lspa Object. - * @param bandwidthObject PCEP bandwidth object. - * @param llMetricList list of PCEP metric objects. - * @param iroObject PCEP iro object. - */ - public PcepAttributeVer1(PcepLspaObject lspaObject, PcepBandwidthObject bandwidthObject, - LinkedList llMetricList, PcepIroObject iroObject) { - - this.lspaObject = lspaObject; - this.bandwidthObject = bandwidthObject; - this.llMetricList = llMetricList; - this.iroObject = iroObject; - if (lspaObject == null) { - this.isLspaObjectSet = false; - } else { - this.isLspaObjectSet = true; - } - if (bandwidthObject == null) { - this.isBandwidthObjectSet = false; - } else { - this.isBandwidthObjectSet = true; - } - if (llMetricList == null) { - this.isMetricListSet = false; - } else { - this.isMetricListSet = true; - } - if (iroObject == null) { - this.isIroObjectSet = false; - } else { - this.isIroObjectSet = true; - } - } - - /** - * constructor to initialize bandwidthObject. - * - * @param bandwidthObject bandwidth object - */ - public PcepAttributeVer1(PcepBandwidthObject bandwidthObject) { - this.isLspaObjectSet = false; - - this.bandwidthObject = bandwidthObject; - this.isBandwidthObjectSet = true; - - this.isMetricListSet = false; - - this.isIroObjectSet = false; - } - - /** - * Parse list for MeticObject. - * - * @param cb of type channel buffer - * @return true if parsing metric list is success - * @throws PcepParseException when a non metric object is received - */ - public boolean parseMetricList(ChannelBuffer cb) throws PcepParseException { - - if (llMetricList == null) { - llMetricList = new LinkedList<>(); - } - - PcepMetricObject metriclist; - - //caller should verify for metric object - byte yObjClass = PcepMetricObjectVer1.METRIC_OBJ_CLASS; - byte yObjType = PcepMetricObjectVer1.METRIC_OBJ_TYPE; - - while ((yObjClass == PcepMetricObjectVer1.METRIC_OBJ_CLASS) - && (yObjType == PcepMetricObjectVer1.METRIC_OBJ_TYPE)) { - - metriclist = PcepMetricObjectVer1.read(cb); - llMetricList.add(metriclist); - yObjClass = 0; - yObjType = 0; - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } - } - return true; - } - - /** - * Reads lspa , bandwidth , Metriclist and Iro objects and sets the objects. - * - * @param cb of type channel buffer - * @return instance of Pcep Attribute - * @throws PcepParseException while parsing Pcep Attributes from channel buffer - */ - - public static PcepAttribute read(ChannelBuffer cb) throws PcepParseException { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - return null; - } - //check whether any pcep attribute is present - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - - if (PcepLspaObjectVer1.LSPA_OBJ_CLASS != yObjClass && PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS != yObjClass - && PcepMetricObjectVer1.METRIC_OBJ_CLASS != yObjClass && PcepIroObjectVer1.IRO_OBJ_CLASS != yObjClass) { - //No PCEP attribute is present - return null; - } - - PcepAttributeVer1 pcepAttribute = new PcepAttributeVer1(); - - //If LSPA present then store it.LSPA is optional - if (yObjClass == PcepLspaObjectVer1.LSPA_OBJ_CLASS) { - pcepAttribute.setLspaObject(PcepLspaObjectVer1.read(cb)); - yObjClass = checkNextObject(cb); - } - - //If BANDWIDTH present then store it.BANDWIDTH is optional - if (yObjClass == PcepBandwidthObjectVer1.BANDWIDTH_OBJ_CLASS) { - pcepAttribute.setBandwidthObject(PcepBandwidthObjectVer1.read(cb)); - yObjClass = checkNextObject(cb); - } - - //If Metric list present then store it.MetricList is optional - if (yObjClass == PcepMetricObjectVer1.METRIC_OBJ_CLASS) { - pcepAttribute.parseMetricList(cb); - yObjClass = checkNextObject(cb); - } - - //If IRO present then store it.IRO is optional - if (yObjClass == PcepIroObjectVer1.IRO_OBJ_CLASS) { - pcepAttribute.setIroObject(PcepIroObjectVer1.read(cb)); - } - - PcepLspaObject lspaObject = pcepAttribute.getLspaObject(); - PcepBandwidthObject bandwidthObject = pcepAttribute.getBandwidthObject(); - LinkedList metriclist = pcepAttribute.llMetricList; - PcepIroObject iroObject = pcepAttribute.getIroObject(); - - return new PcepAttributeVer1(lspaObject, bandwidthObject, metriclist, iroObject); - } - - /** - * Checks whether there is a more object or not. - * - * @param cb of type channel buffer - * @return instance of object header - */ - private static byte checkNextObject(ChannelBuffer cb) { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - return 0; - } - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - return tempObjHeader.getObjClass(); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - int iLenStartIndex = cb.writerIndex(); - //PCEP LSPA object is optional - if (this.isLspaObjectSet) { - this.lspaObject.write(cb); - } - - //PCEP BANDWIDTH object is optional - if (this.isBandwidthObjectSet) { - this.bandwidthObject.write(cb); - } - - //PCEP Metric list is optional - if (this.isMetricListSet) { - ListIterator listIterator = this.llMetricList.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - } - - //PCEP IRO object is optional - if (this.isIroObjectSet) { - this.iroObject.write(cb); - } - return cb.writerIndex() - iLenStartIndex; - } - - @Override - public PcepLspaObject getLspaObject() { - return lspaObject; - } - - @Override - public PcepBandwidthObject getBandwidthObject() { - return bandwidthObject; - } - - @Override - public LinkedList getMetricObjectList() { - return llMetricList; - } - - @Override - public PcepIroObject getIroObject() { - return iroObject; - } - - @Override - public void setBandwidthObject(PcepBandwidthObject bandwidthObject) { - this.isBandwidthObjectSet = true; - this.bandwidthObject = bandwidthObject; - } - - @Override - public void setMetricObjectList(LinkedList llMetricList) { - this.isMetricListSet = true; - this.llMetricList = llMetricList; - - } - - @Override - public void setLspaObject(PcepLspaObject lspaObject) { - this.isLspaObjectSet = true; - this.lspaObject = lspaObject; - } - - @Override - public void setIroObject(PcepIroObject iroObject) { - this.isIroObjectSet = true; - this.iroObject = iroObject; - } - - /** - * Builder class for PCEP attributes. - */ - public static class Builder implements PcepAttribute.Builder { - - //PCEP LSPA Object - private PcepLspaObject lspaObject; - private boolean isLspaObjectSet; - - //PCEP BANDWIDTH Object - private PcepBandwidthObject bandwidthObject; - private boolean isBandwidthObjectSet; - - //PCEP Metric list - private LinkedList llMetricList; - private boolean isMetricListSet; - - //PCEP IRO object - private PcepIroObject iroObject; - private boolean isIroObjectSet; - - @Override - public PcepAttribute build() { - - //PCEP LSPA Object - PcepLspaObject lspaObject = null; - - //PCEP BANDWIDTH Object - PcepBandwidthObject bandwidthObject = null; - - //PCEP Metric list - LinkedList llMetricList = null; - - //PCEP IRO object - PcepIroObject iroObject = null; - - if (this.isLspaObjectSet) { - lspaObject = this.lspaObject; - } - if (this.isBandwidthObjectSet) { - bandwidthObject = this.bandwidthObject; - } - if (this.isMetricListSet) { - llMetricList = this.llMetricList; - } - if (this.isIroObjectSet) { - iroObject = this.iroObject; - } - return new PcepAttributeVer1(lspaObject, bandwidthObject, llMetricList, iroObject); - } - - @Override - public PcepLspaObject getLspaObject() { - return this.lspaObject; - } - - @Override - public PcepBandwidthObject getBandwidthObject() { - return this.bandwidthObject; - } - - @Override - public LinkedList getMetricObjectList() { - return this.llMetricList; - } - - @Override - public PcepIroObject getIroObject() { - return this.iroObject; - } - - @Override - public Builder setBandwidthObject(PcepBandwidthObject bandwidthObject) { - this.isBandwidthObjectSet = true; - this.bandwidthObject = bandwidthObject; - return this; - } - - @Override - public Builder setMetricObjectList(LinkedList llMetricList) { - this.isMetricListSet = true; - this.llMetricList = llMetricList; - return this; - } - - @Override - public Builder setLspaObject(PcepLspaObject lspaObject) { - this.isLspaObjectSet = true; - this.lspaObject = lspaObject; - return this; - } - - @Override - public Builder setIroObject(PcepIroObject iroObject) { - this.isIroObjectSet = true; - this.iroObject = iroObject; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("lspaObject", lspaObject) - .add("bandwidthObject", bandwidthObject) - .add("MetricObjectList", llMetricList) - .add("IroObject", iroObject) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java deleted file mode 100644 index 090c96f786..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepBandwidthObjectVer1.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepBandwidthObject. - */ -public class PcepBandwidthObjectVer1 implements PcepBandwidthObject { - - /* - * RFC : 5440 , section : 7.7. - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Bandwidth | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - The BANDWIDTH Object format - */ - - private static final Logger log = LoggerFactory.getLogger(PcepBandwidthObjectVer1.class); - /* - * Requested bandwidth: BANDWIDTH Object-Type is 1. - Bandwidth of an existing TE LSP for which a re-optimization is - requested. BANDWIDTH Object-Type is 2. - */ - //Right now handling type 1 - public static final byte BANDWIDTH_OBJ_TYPE = 1; - public static final byte BANDWIDTH_OBJ_CLASS = 5; - public static final byte BANDWIDTH_OBJECT_VERSION = 1; - public static final int NO_OF_BITS = 8; - public static final short BANDWIDTH_OBJ_MINIMUM_LENGTH = 8; - - static final PcepObjectHeader DEFAULT_BANDWIDTH_OBJECT_HEADER = new PcepObjectHeader(BANDWIDTH_OBJ_CLASS, - BANDWIDTH_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - BANDWIDTH_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader bandwidthObjHeader; - private float iBandwidth; - - /** - * Constructor to bandwidth object header and bandwidth. - * - * @param bandwidthObjHeader bandwidth object header - * @param iBandwidth bandwidth value - */ - public PcepBandwidthObjectVer1(PcepObjectHeader bandwidthObjHeader, float iBandwidth) { - this.bandwidthObjHeader = bandwidthObjHeader; - this.iBandwidth = iBandwidth; - } - - /** - * Constructor to initialize bandwidth. - * - * @param iBandwidth bandwidth value - */ - public PcepBandwidthObjectVer1(float iBandwidth) { - this.bandwidthObjHeader = DEFAULT_BANDWIDTH_OBJECT_HEADER; - this.iBandwidth = iBandwidth; - } - - /** - * Returns Object Header. - * - * @return bandwidthObjHeader - */ - public PcepObjectHeader getBandwidthObjHeader() { - return this.bandwidthObjHeader; - } - - /** - * Sets Object Header. - * - * @param obj bandwidth object header - */ - public void setBandwidthObjHeader(PcepObjectHeader obj) { - this.bandwidthObjHeader = obj; - } - - @Override - public float getBandwidth() { - return this.iBandwidth; - } - - @Override - public void setBandwidth(float iBandwidth) { - this.iBandwidth = iBandwidth; - } - - /** - * Reads from channel buffer and returns object of PcepBandwidthObject. - * - * @param cb channel buffer to parse - * @return object of PcepBandwidthObject - * @throws PcepParseException while parsing channel buffer - */ - public static PcepBandwidthObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader bandwidthObjHeader; - float bandwidth; - - bandwidthObjHeader = PcepObjectHeader.read(cb); - bandwidth = ieeeToFloatRead(cb.readInt()) * NO_OF_BITS; - - return new PcepBandwidthObjectVer1(bandwidthObjHeader, bandwidth); - } - - /** - * Parse the IEEE floating point notation and returns it in normal float. - * - * @param iVal IEEE floating point number - * @return normal float - */ - public static float ieeeToFloatRead(int iVal) { - - return Float.intBitsToFloat(iVal); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - int objLenIndex = bandwidthObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write bandwidth object header. Index " + objLenIndex); - } - - //Convert to bytes per second - float bwBytes = iBandwidth / 8.0f; - //Bytes/sec to IEEE floating format - int bandwidth = Float.floatToIntBits(bwBytes); - - cb.writeByte(bandwidth >>> 24); - cb.writeByte(bandwidth >> 16 & 0xff); - cb.writeByte(bandwidth >> 8 & 0xff); - cb.writeByte(bandwidth & 0xff); - - short hLength = (short) (cb.writerIndex() - objStartIndex); - cb.setShort(objLenIndex, hLength); - //will be helpful during print(). - bandwidthObjHeader.setObjLen(hLength); - - return cb.writerIndex() - objStartIndex; - } - - /** - * builder class for PCEP bandwidth object. - */ - public static class Builder implements PcepBandwidthObject.Builder { - - private PcepObjectHeader bandwidthObjHeader; - private boolean bIsHeaderSet = false; - - private float iBandwidth; - private boolean bIsBandwidthSet = false; - - private boolean bPFlag; - private boolean bIsPFlagSet = false; - - private boolean bIFlag; - private boolean bIsIFlagSet = false; - - @Override - public PcepBandwidthObject build() throws PcepParseException { - - PcepObjectHeader bandwidthObjHeader = this.bIsHeaderSet ? this.bandwidthObjHeader - : DEFAULT_BANDWIDTH_OBJECT_HEADER; - - if (bIsPFlagSet) { - bandwidthObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - bandwidthObjHeader.setIFlag(bIFlag); - } - - if (!this.bIsBandwidthSet) { - throw new PcepParseException("bandwidth not Set while building Bandwidth Object."); - } - - return new PcepBandwidthObjectVer1(bandwidthObjHeader, iBandwidth); - } - - @Override - public float getBandwidth() { - return this.iBandwidth; - } - - @Override - public PcepObjectHeader getBandwidthObjHeader() { - return this.bandwidthObjHeader; - } - - @Override - public Builder setBandwidthObjHeader(PcepObjectHeader obj) { - this.bandwidthObjHeader = obj; - return this; - } - - @Override - public Builder setBandwidth(float iBandwidth) { - this.iBandwidth = iBandwidth; - this.bIsBandwidthSet = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("BandwidthObjectHeader", bandwidthObjHeader) - .add("Bandwidth", iBandwidth).toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java deleted file mode 100644 index fcf3421ccd..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepCloseMsgVer1.java +++ /dev/null @@ -1,351 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepCloseMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Close Message. - */ -class PcepCloseMsgVer1 implements PcepCloseMsg { - - /* - * RFC : 5440 , section : 6.8 - * ::= - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Ver | Flags | Message-Type | Message-Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags | Reason | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - private static final Logger log = LoggerFactory.getLogger(PcepCloseMsgVer1.class); - - // Pcep version: 1 - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 12; - public static final PcepType MSG_TYPE = PcepType.CLOSE; - public static final byte CLOSE_OBJ_TYPE = 1; - public static final byte CLOSE_OBJ_CLASS = 15; - public static final byte CLOSE_OBJECT_VERSION = 1; - public static final byte DEFAULT_REASON = 1; // Default reason to close - public static final short CLOSE_OBJ_MINIMUM_LENGTH = 8; - public static final int SHIFT_FLAG = 5; - static final PcepObjectHeader DEFAULT_CLOSE_HEADER = new PcepObjectHeader(CLOSE_OBJ_CLASS, CLOSE_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, CLOSE_OBJ_MINIMUM_LENGTH); - - private final PcepObjectHeader closeObjHeader; - private byte yReason; - private LinkedList llOptionalTlv; - - public static final PcepCloseMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading close message for channel buffer. - */ - static class Reader implements PcepMessageReader { - PcepObjectHeader closeObjHeader; - byte yReason; - // Optional TLV - private LinkedList llOptionalTlv; - - @Override - public PcepCloseMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum length."); - } - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 7 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.CLOSE(7), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " - + length); - } - closeObjHeader = PcepObjectHeader.read(cb); - // Reserved - cb.readShort(); - // Flags - cb.readByte(); - // Reason - yReason = cb.readByte(); - // parse optional TLV - llOptionalTlv = parseOptionalTlv(cb); - return new PcepCloseMsgVer1(closeObjHeader, yReason, llOptionalTlv); - } - } - - /** - * Parse the list of Optional Tlvs. - * - * @param cb channel buffer - * @return list of Optional Tlvs - * @throws PcepParseException when fails to parse optional tlvs - */ - public static LinkedList parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList llOptionalTlv = new LinkedList<>(); - /* - rfc 5440: - Optional TLVs may be included within the CLOSE object body. The - specification of such TLVs is outside the scope of this document. - */ - return llOptionalTlv; - } - - /** - * constructor to initialize PCEP close Message with all the parameters. - * - * @param closeObjHeader object header for close message - * @param yReason reason for closing the channel - * @param llOptionalTlv list of optional tlvs - */ - PcepCloseMsgVer1(PcepObjectHeader closeObjHeader, byte yReason, LinkedList llOptionalTlv) { - - this.closeObjHeader = closeObjHeader; - this.yReason = yReason; - this.llOptionalTlv = llOptionalTlv; - } - - /** - * Builder class for PCEP close message. - */ - static class Builder implements PcepCloseMsg.Builder { - - // PCEP Close message fields - private boolean bIsHeaderSet = false; - private PcepObjectHeader closeObjHeader; - private boolean bIsReasonSet = false; - private byte yReason; - private LinkedList llOptionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.CLOSE; - } - - @Override - public PcepCloseMsg build() { - - PcepObjectHeader closeObjHeader = this.bIsHeaderSet ? this.closeObjHeader : DEFAULT_CLOSE_HEADER; - byte yReason = this.bIsReasonSet ? this.yReason : DEFAULT_REASON; - - if (bIsPFlagSet) { - closeObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - closeObjHeader.setIFlag(bIFlag); - } - return new PcepCloseMsgVer1(closeObjHeader, yReason, this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getCloseObjHeader() { - return this.closeObjHeader; - } - - @Override - public Builder setCloseObjHeader(PcepObjectHeader obj) { - this.closeObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte getReason() { - return this.yReason; - } - - @Override - public Builder setReason(byte value) { - this.yReason = value; - this.bIsReasonSet = true; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - return this; - } - - @Override - public LinkedList getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing close message to channel buffer. - */ - static class Writer implements PcepMessageWriter { - - @Override - public void write(ChannelBuffer cb, PcepCloseMsgVer1 message) throws PcepParseException { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort((short) 0); - int objStartIndex = cb.writerIndex(); - int objLenIndex = message.closeObjHeader.write(cb); - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write Close object header."); - } - // first 3 bits set to version - cb.writeShort(0); // Reserved - cb.writeByte(0); // Flags - cb.writeByte(message.yReason); - // Pack optional TLV - packOptionalTlv(cb, message); - int length = cb.writerIndex() - objStartIndex; - cb.setShort(objLenIndex, (short) length); - // will be helpful during print(). - message.closeObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - // update message length field - length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - - public void packOptionalTlv(ChannelBuffer cb, PcepCloseMsgVer1 message) { - - LinkedList llOptionalTlv = message.llOptionalTlv; - ListIterator listIterator = llOptionalTlv.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public byte getReason() { - return this.yReason; - } - - @Override - public void setReason(byte value) { - this.yReason = value; - } - - @Override - public LinkedList getOptionalTlv() { - return this.llOptionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList llOptionalTlv) { - this.llOptionalTlv = llOptionalTlv; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("closeObjectHeader", closeObjHeader).add("Reason", yReason) - .add("OptionalTlvlist", llOptionalTlv).toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java deleted file mode 100644 index 4690626094..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEndPointsObjectVer1.java +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Endpoints Object. - */ -public class PcepEndPointsObjectVer1 implements PcepEndPointsObject { - - /* - * RFC : 5440 , section : 7.6 - * An End point is defined as follows: - END-POINTS Object-Class is 4. - - END-POINTS Object-Type is 1 for IPv4 and 2 for IPv6. - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Source IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Destination IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - */ - private static final Logger log = LoggerFactory.getLogger(PcepEndPointsObjectVer1.class); - - static final byte END_POINTS_OBJ_TYPE = 1; - static final byte END_POINTS_OBJ_CLASS = 4; - static final byte END_POINTS_OBJECT_VERSION = 1; - static final short END_POINTS_OBJ_MINIMUM_LENGTH = 12; - static byte endPointObjType; - - static final PcepObjectHeader DEFAULT_END_POINTS_OBJECT_HEADER = new PcepObjectHeader(END_POINTS_OBJ_CLASS, - END_POINTS_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - END_POINTS_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader endPointsObjHeader; - int sourceIpAddress; - int destIpAddress; - - /** - * Constructor to initialize all variables. - * - * @param endPointsObjHeader end points object header - * @param sourceIpAddress source IP address - * @param destIpAddress destination IP address - */ - public PcepEndPointsObjectVer1(PcepObjectHeader endPointsObjHeader, int sourceIpAddress, int destIpAddress) { - - this.endPointsObjHeader = endPointsObjHeader; - this.sourceIpAddress = sourceIpAddress; - this.destIpAddress = destIpAddress; - } - - /** - * Sets End Points Object Header. - * - * @param obj of PcepObjectHeader - */ - public void setEndPointsObjHeader(PcepObjectHeader obj) { - this.endPointsObjHeader = obj; - } - - @Override - public void setSourceIpAddress(int sourceIpAddress) { - this.sourceIpAddress = sourceIpAddress; - } - - @Override - public void setDestIpAddress(int destIpAddress) { - this.destIpAddress = destIpAddress; - } - - @Override - public int getSourceIpAddress() { - return this.sourceIpAddress; - } - - @Override - public int getDestIpAddress() { - return this.destIpAddress; - } - - /** - * Reads from channel buffer and returns object of PcepEndPointsObject. - * - * @param cb of channel buffer - * @return object of PcepEndPointsObject - * @throws PcepParseException while parsing channel buffer - */ - public static PcepEndPointsObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader endPointsObjHeader; - int sourceIpAddress; - int destIpAddress; - - endPointsObjHeader = PcepObjectHeader.read(cb); - if (endPointsObjHeader.getObjType() == END_POINTS_OBJ_TYPE - && endPointsObjHeader.getObjClass() == END_POINTS_OBJ_CLASS) { - sourceIpAddress = cb.readInt(); - destIpAddress = cb.readInt(); - } else { - throw new PcepParseException("Expected PcepEndPointsObject."); - } - return new PcepEndPointsObjectVer1(endPointsObjHeader, sourceIpAddress, destIpAddress); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - //write common header - int objLenIndex = endPointsObjHeader.write(cb); - - //write source IPv4 IP - cb.writeInt(sourceIpAddress); - //write destination IPv4 IP - cb.writeInt(destIpAddress); - - int length = cb.writerIndex() - objStartIndex; - //now write EndPoints Object Length - cb.setShort(objLenIndex, (short) length); - //will be helpful during print(). - endPointsObjHeader.setObjLen((short) length); - - return cb.writerIndex(); - - } - - /** - * Builder class for PCEP end points objects. - */ - public static class Builder implements PcepEndPointsObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsSourceIpAddressset = false; - private boolean bIsDestIpAddressset = false; - private PcepObjectHeader endpointsObjHeader; - private int sourceIpAddress; - private int destIpAddress; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepEndPointsObject build() throws PcepParseException { - - PcepObjectHeader endpointsObjHeader = this.bIsHeaderSet ? this.endpointsObjHeader - : DEFAULT_END_POINTS_OBJECT_HEADER; - - if (bIsPFlagSet) { - endpointsObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - endpointsObjHeader.setIFlag(bIFlag); - } - - if (!this.bIsSourceIpAddressset) { - throw new PcepParseException("SourceIpAddress not set while building EndPoints object"); - } - - if (!this.bIsDestIpAddressset) { - throw new PcepParseException("DestIpAddress not set while building EndPoints object"); - } - - return new PcepEndPointsObjectVer1(endpointsObjHeader, this.sourceIpAddress, this.destIpAddress); - } - - @Override - public PcepObjectHeader getEndPointsObjHeader() { - return this.endpointsObjHeader; - } - - @Override - public Builder setEndPointsObjHeader(PcepObjectHeader obj) { - this.endpointsObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getSourceIpAddress() { - return this.sourceIpAddress; - } - - @Override - public Builder setSourceIpAddress(int sourceIpAddress) { - this.sourceIpAddress = sourceIpAddress; - this.bIsSourceIpAddressset = true; - return this; - } - - @Override - public int getDestIpAddress() { - return this.destIpAddress; - } - - @Override - public Builder setDestIpAddress(int destIpAddress) { - this.destIpAddress = destIpAddress; - this.bIsDestIpAddressset = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("sourceIpAddress", sourceIpAddress) - .add("destIpAddress", destIpAddress).toString(); - } - -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java deleted file mode 100644 index 76dc1fa114..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepEroObjectVer1.java +++ /dev/null @@ -1,447 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; -import java.util.Objects; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.types.AutonomousSystemNumberSubObject; -import org.onosproject.pcepio.types.IPv4SubObject; -import org.onosproject.pcepio.types.IPv6SubObject; -import org.onosproject.pcepio.types.PathKeySubObject; -import org.onosproject.pcepio.types.PcepErrorDetailInfo; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.SrEroSubObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Ero Object. - */ -public class PcepEroObjectVer1 implements PcepEroObject { - /* - * rfc3209 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // (Subobjects) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - If a Path message contains multiple EXPLICIT_ROUTE objects, only the - first object is meaningful. Subsequent EXPLICIT_ROUTE objects MAY be - ignored and SHOULD NOT be propagated. - - In current implementation, only strict hops are supported. So, - empty ERO with no sub-objects is considered illegal. - - Subobjects: - 0 1 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------//----------------+ - |L| Type | Length | (Subobject contents) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-------------//----------------+ - - L - - The L bit is an attribute of the subobject. The L bit is set - if the subobject represents a loose hop in the explicit route. - If the bit is not set, the subobject represents a strict hop in - the explicit route. - - Type - - The Type indicates the type of contents of the subobject. - - - Subobject 1: IPv4 address - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv4 address (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 2: IPv6 Prefix - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv6 address (16 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv6 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 3: Autonomous System Number - - The contents of an Autonomous System (AS) number subobject are a 2- - octet AS number. The abstract node represented by this subobject is - the set of nodes belonging to the autonomous system. - - The length of the AS number subobject is 4 octets. - - Subobject 4: PATH_KEY_32_BIT_SUB_OBJ_TYPE: - - Pathkey subobject(RFC 5520): - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | Path-Key | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | PCE ID (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Subobject 5: SR_ERO_SUB_OBJ_TYPE: - - SR-ERO subobject: (draft-ietf-pce-segment-routing-00) - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | ST | Flags |F|S|C|M| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | SID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // NAI (variable) // - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - private static final Logger log = LoggerFactory.getLogger(PcepEroObjectVer1.class); - - public static final byte ERO_OBJ_TYPE = 1; - public static final byte ERO_OBJ_CLASS = 7; - public static final byte ERO_OBJECT_VERSION = 1; - public static final short ERO_OBJ_MINIMUM_LENGTH = 12; - public static final byte IPV4_TYPE = 1; - public static final byte PATH_KEY_32_BIT_SUB_OBJ_TYPE = 64; - public static final int LABEL_SUB_OBJ_TYPE = 3; - public static final int SR_ERO_SUB_OBJ_TYPE = 96; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int TYPE_SHIFT_VALUE = 0x7F; - - public static final PcepObjectHeader DEFAULT_ERO_OBJECT_HEADER = new PcepObjectHeader(ERO_OBJ_CLASS, ERO_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, ERO_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader eroObjHeader; - private LinkedList subObjectList = new LinkedList<>(); - - /** - * reset variables. - */ - public PcepEroObjectVer1() { - this.eroObjHeader = null; - this.subObjectList = null; - } - - /** - * Constructor to initialize parameters of ERO object. - * - * @param eroObjHeader ERO object header - * @param subObjectList list of sub objects. - */ - public PcepEroObjectVer1(PcepObjectHeader eroObjHeader, LinkedList subObjectList) { - - this.eroObjHeader = eroObjHeader; - this.subObjectList = subObjectList; - } - - /** - * Returns ERO object header. - * - * @return eroObjHeader ERO object header - */ - public PcepObjectHeader getEroObjHeader() { - return this.eroObjHeader; - } - - /** - * Sets Object Header. - * - * @param obj ERO object header - */ - public void setEroObjHeader(PcepObjectHeader obj) { - this.eroObjHeader = obj; - } - - @Override - public LinkedList getSubObjects() { - return this.subObjectList; - } - - @Override - public void setSubObjects(LinkedList subObjectList) { - this.subObjectList = subObjectList; - } - - /** - * Reads from channel buffer and returns object of PcepEroObject. - * - * @param cb channel buffer. - * @return object of PcepEroObject - * @throws PcepParseException when ERO object is not present in channel buffer - */ - public static PcepEroObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader eroObjHeader; - LinkedList subObjectList = new LinkedList<>(); - - eroObjHeader = PcepObjectHeader.read(cb); - - if (eroObjHeader.getObjClass() != PcepEroObjectVer1.ERO_OBJ_CLASS) { - log.debug("ErrorType:" + PcepErrorDetailInfo.ERROR_TYPE_6 + " ErrorValue:" - + PcepErrorDetailInfo.ERROR_VALUE_9); - throw new PcepParseException(PcepErrorDetailInfo.ERROR_TYPE_6, PcepErrorDetailInfo.ERROR_VALUE_9); - } - - if (eroObjHeader.getObjLen() > OBJECT_HEADER_LENGTH) { - ChannelBuffer tempCb = cb.readBytes(eroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - subObjectList = parseSubObjects(tempCb); - } - return new PcepEroObjectVer1(eroObjHeader, subObjectList); - } - - /** - * Parse list of Sub Objects. - * - * @param cb channel buffer - * @return list of Sub Objects - * @throws PcepParseException when fails to parse sub object list - */ - protected static LinkedList parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList subObjectList = new LinkedList<>(); - - while (0 < cb.readableBytes()) { - - //check the Type of the TLV - short type = cb.readByte(); - type = (short) (type & (TYPE_SHIFT_VALUE)); - byte hLength = cb.readByte(); - - PcepValueType subObj; - - switch (type) { - - case IPv4SubObject.TYPE: - subObj = IPv4SubObject.read(cb); - break; - case IPv6SubObject.TYPE: - byte[] ipv6Value = new byte[IPv6SubObject.VALUE_LENGTH]; - cb.readBytes(ipv6Value, 0, IPv6SubObject.VALUE_LENGTH); - subObj = new IPv6SubObject(ipv6Value); - break; - case AutonomousSystemNumberSubObject.TYPE: - subObj = AutonomousSystemNumberSubObject.read(cb); - break; - case PathKeySubObject.TYPE: - subObj = PathKeySubObject.read(cb); - break; - case SrEroSubObject.TYPE: - subObj = SrEroSubObject.read(cb); - break; - default: - throw new PcepParseException("Unexpected sub object. Type: " + (int) type); - } - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - subObjectList.add(subObj); - } - if (0 < cb.readableBytes()) { - throw new PcepParseException("Subobject parsing error. Extra bytes received."); - } - return subObjectList; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = eroObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("Failed to write ERO object header. Index " + objLenIndex); - } - - ListIterator listIterator = subObjectList.listIterator(); - - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - cb.setShort(objLenIndex, (short) length); - //will be helpful during print(). - eroObjHeader.setObjLen((short) length); - - //As per RFC the length of object should be multiples of 4 - int pad = length % 4; - - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP ERO object. - */ - public static class Builder implements PcepEroObject.Builder { - - private boolean bIsHeaderSet = false; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - private PcepObjectHeader eroObjHeader; - LinkedList subObjectList = new LinkedList<>(); - - @Override - public PcepEroObject build() { - - PcepObjectHeader eroObjHeader = this.bIsHeaderSet ? this.eroObjHeader : DEFAULT_ERO_OBJECT_HEADER; - - if (bIsPFlagSet) { - eroObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - eroObjHeader.setIFlag(bIFlag); - } - - return new PcepEroObjectVer1(eroObjHeader, this.subObjectList); - } - - @Override - public PcepObjectHeader getEroObjHeader() { - return this.eroObjHeader; - } - - @Override - public Builder setEroObjHeader(PcepObjectHeader obj) { - this.eroObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public LinkedList getSubObjects() { - return this.subObjectList; - } - - @Override - public Builder setSubObjects(LinkedList subObjectList) { - this.subObjectList = subObjectList; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public int hashCode() { - return Objects.hash(eroObjHeader, subObjectList); - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("EroObjHeader", eroObjHeader) - .add("SubObjects", subObjectList) - .toString(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - - if (obj instanceof PcepEroObjectVer1) { - int countObjSubTlv = 0; - int countOtherSubTlv = 0; - boolean isCommonSubTlv = true; - PcepEroObjectVer1 other = (PcepEroObjectVer1) obj; - Iterator objListIterator = other.subObjectList.iterator(); - countOtherSubTlv = other.subObjectList.size(); - countObjSubTlv = subObjectList.size(); - if (countObjSubTlv != countOtherSubTlv) { - return false; - } else { - while (objListIterator.hasNext() && isCommonSubTlv) { - PcepValueType subTlv = objListIterator.next(); - if (subObjectList.contains(subTlv)) { - isCommonSubTlv = Objects.equals(subObjectList.get(subObjectList.indexOf(subTlv)), - other.subObjectList.get(other.subObjectList.indexOf(subTlv))); - } else { - isCommonSubTlv = false; - } - } - return isCommonSubTlv && Objects.equals(eroObjHeader, other.eroObjHeader); - } - } - return false; - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java deleted file mode 100644 index 43c9f3c2b2..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorInfoVer1.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepRPObject; -import org.onosproject.pcepio.protocol.PcepLSObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Error Info. - * Reference : draft-dhodylee-pce-pcep-ls-01, section 8.2. - */ -public class PcepErrorInfoVer1 implements PcepErrorInfo { - - private static final Logger log = LoggerFactory.getLogger(PcepErrorInfoVer1.class); - //Error list is optional - private List errList; - - /** - * Constructor to add PCEP error object to the list. - * - * @param llRPObjList list of PCEP RP object - * @param llLSObjList list of PCEP LS object - * @param llErrObjList list of PCEP error object - */ - public PcepErrorInfoVer1(List llRPObjList, List llLSObjList, - List llErrObjList) { - this.errList = new LinkedList<>(); - if ((llErrObjList != null) && (!llErrObjList.isEmpty())) { - this.errList.add(new PcepErrorVer1(llRPObjList, llLSObjList, llErrObjList)); - } - } - - /** - * Constructor to initialize error info. - * - * @param errll linked list or pcep error - */ - public PcepErrorInfoVer1(List errll) { - this.errList = errll; - } - - @Override - public boolean isErrorInfoPresent() { - return !this.errList.isEmpty(); - } - - @Override - public void read(ChannelBuffer cb) throws PcepParseException { - PcepObjectHeader tempObjHeader; - - while (0 < cb.readableBytes()) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - if ((yObjClass != PcepRPObjectVer1.RP_OBJ_CLASS) && (yObjClass != PcepLSObjectVer1.LS_OBJ_CLASS) - && (yObjClass != PcepErrorObjectVer1.ERROR_OBJ_CLASS)) { - throw new PcepParseException("Unknown Object is present in PCEP-ERROR. Object Class: " + yObjClass); - } - - this.errList.add(PcepErrorVer1.read(cb)); - } - } - - @Override - public void write(ChannelBuffer cb) throws PcepParseException { - //write - ListIterator listIterator = errList.listIterator(); - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - - //RP Object list is optional - List llRPObjList = pcepError.getRPObjList(); - if (llRPObjList != null) { - ListIterator rpListIterator = llRPObjList.listIterator(); - while (rpListIterator.hasNext()) { - rpListIterator.next().write(cb); - } - } - - //LS Object list is optional - List llLSObjList = pcepError.getLSObjList(); - if (llLSObjList != null) { - ListIterator teListIterator = llLSObjList.listIterator(); - while (teListIterator.hasNext()) { - teListIterator.next().write(cb); - } - } - - // is mandatory - boolean bIsErrorObjListFound = false; - - List llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObjListIterator.next().write(cb); - bIsErrorObjListFound = true; - } - } - - if (!bIsErrorObjListFound) { - throw new PcepParseException(" is mandatory."); - } - } - } - - @Override - public List getErrorType() { - List errorType = new LinkedList<>(); - ListIterator listIterator = errList.listIterator(); - PcepErrorObject errObj; - int error; - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - List llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObj = errObjListIterator.next(); - error = errObj.getErrorType(); - errorType.add(error); - } - } - } - return errorType; - } - - @Override - public List getErrorValue() { - List errorValue = new LinkedList<>(); - ListIterator listIterator = errList.listIterator(); - PcepErrorObject errObj; - int error; - while (listIterator.hasNext()) { - PcepError pcepError = listIterator.next(); - List llErrObjList = pcepError.getErrorObjList(); - if (llErrObjList != null) { - ListIterator errObjListIterator = llErrObjList.listIterator(); - while (errObjListIterator.hasNext()) { - errObj = errObjListIterator.next(); - error = errObj.getErrorValue(); - errorValue.add(error); - } - } - } - return errorValue; - } - - /** - * Builder class for PCEP error info. - */ - public static class Builder implements PcepErrorInfo.Builder { - private List errll; - - @Override - public PcepErrorInfo build() { - return new PcepErrorInfoVer1(errll); - } - - @Override - public List getPcepErrorList() { - return this.errll; - } - - @Override - public Builder setPcepErrorList(List errll) { - this.errll = errll; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ErrorList", errList).toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java deleted file mode 100644 index 036f1f45f7..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorMsgVer1.java +++ /dev/null @@ -1,385 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.List; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepErrorMsg; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.ErrorObjListWithOpen; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; -import com.google.common.base.MoreObjects.ToStringHelper; - -/** - * Provides PCEP Error Message. - */ -public class PcepErrorMsgVer1 implements PcepErrorMsg { - - /* - * PCE Error message format. - Reference: draft-dhodylee-pce-pcep-ls-01, section 8.2. - - ::= - ( [] ) | - [] - - ::=[] - - ::=[ | ] - - - ::=[] - - ::=[] - - ::=[] - */ - - private static final Logger log = LoggerFactory.getLogger(PcepOpenMsgVer1.class); - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 12; - public static final PcepType MSG_TYPE = PcepType.ERROR; - - //Below either one should be present. - private ErrorObjListWithOpen errObjListWithOpen; //optional ( [] ) - private PcepErrorInfo errInfo; //optional [] - - public static final PcepErrorMsgVer1.Reader READER = new Reader(); - - /** - * Constructor to initialize variables. - */ - public PcepErrorMsgVer1() { - errObjListWithOpen = null; - errInfo = null; - } - - /** - * Constructor to initialize variables. - * - * @param errObjListWithOpen error-object-list with open object - * @param errInfo error information - */ - public PcepErrorMsgVer1(ErrorObjListWithOpen errObjListWithOpen, PcepErrorInfo errInfo) { - this.errObjListWithOpen = errObjListWithOpen; - this.errInfo = errInfo; - } - - /** - * Reader class for reading PCEP error Message from channel buffer. - */ - public static class Reader implements PcepMessageReader { - - ErrorObjListWithOpen errObjListWithOpen; - PcepErrorInfo errInfo; - PcepObjectHeader tempObjHeader; - - @Override - public PcepErrorMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - errObjListWithOpen = null; - errInfo = null; - tempObjHeader = null; - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum length."); - } - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version: Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 1 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type: Expected=PcepType.ERROR(6), got=" + type); - } - int length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException( - "Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " + length); - } - - //parse - parsePCErrMsg(cb); - - // If other than RP or LS or PCEP-ERROR present then it is error. - if (0 < cb.readableBytes()) { - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - throw new PcepParseException("Unexpected Object found. Object Class : " + tempObjHeader.getObjClass()); - } - - return new PcepErrorMsgVer1(errObjListWithOpen, errInfo); - } - - /** - * Parsing PCErr Message. - * - * @param cb channel buffer. - * @throws PcepParseException if mandatory fields are missing - * output: this.errObjListWithOpen, this.errInfo - */ - public void parsePCErrMsg(ChannelBuffer cb) throws PcepParseException { - //If PCEP-ERROR list is followed by OPEN Object then store into ErrorObjListWithOpen. - // ( [] - //If PCEP-ERROR list is followed by RP or LS Object then store into errInfo. [] - //If only PCEP-ERROR list is present then store into ErrorObjListWithOpen. - PcepObjectHeader tempObjHeader; - List llErrObjList; - - if (0 >= cb.readableBytes()) { - throw new PcepParseException("PCEP-ERROR message came with empty objects."); - } - - //parse PCEP-ERROR list - llErrObjList = new LinkedList<>(); - tempObjHeader = parseErrorObjectList(llErrObjList, cb); - - //check whether OPEN-OBJECT is present. - if ((tempObjHeader != null) - && (tempObjHeader.getObjClass() == PcepOpenObjectVer1.OPEN_OBJ_CLASS)) { - - if (llErrObjList.isEmpty()) { - throw new PcepParseException(" should be present if OPEN-OBJECT exists"); - } - - PcepOpenObject pcepOpenObj = PcepOpenObjectVer1.read(cb); - this.errObjListWithOpen = new ErrorObjListWithOpen(llErrObjList, pcepOpenObj); - - } else if ((tempObjHeader != null) //check whether RP or LS Object is present. - && ((tempObjHeader.getObjClass() == PcepRPObjectVer1.RP_OBJ_CLASS) - || (tempObjHeader.getObjClass() == PcepLSObjectVer1.LS_OBJ_CLASS))) { - - this.errInfo = new PcepErrorInfoVer1(null, null, llErrObjList); - this.errInfo.read(cb); - - } else if (!llErrObjList.isEmpty()) { - //If only PCEP-ERROR list is present then store it in errObjListWithOpen. - this.errObjListWithOpen = new ErrorObjListWithOpen(llErrObjList); - } else { - throw new PcepParseException("Empty PCEP-ERROR message."); - } - } - - /** - * Parse error-obj-list. - * - * @param llErrObjList error object list output - * @param cb channel buffer input - * @throws PcepParseException if mandatory fields are missing - * @return error object header - */ - public PcepObjectHeader parseErrorObjectList(List llErrObjList, ChannelBuffer cb) - throws PcepParseException { - PcepObjectHeader tempObjHeader = null; - - while (0 < cb.readableBytes()) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - if (tempObjHeader.getObjClass() == PcepErrorObjectVer1.ERROR_OBJ_CLASS) { - llErrObjList.add(PcepErrorObjectVer1.read(cb)); - } else { - break; - } - } - return tempObjHeader; - } - } - - /** - * Builder class for PCEP error message. - */ - public static class Builder implements PcepErrorMsg.Builder { - // Pcep error message fields - - private ErrorObjListWithOpen errObjListWithOpen = null; //optional ( [] ) - private PcepErrorInfo errInfo = null; //optional [] - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.ERROR; - } - - @Override - public PcepErrorMsg build() { - return new PcepErrorMsgVer1(this.errObjListWithOpen, this.errInfo); - } - - @Override - public ErrorObjListWithOpen getErrorObjListWithOpen() { - return this.errObjListWithOpen; - } - - @Override - public Builder setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen) { - this.errObjListWithOpen = errObjListWithOpen; - return this; - } - - @Override - public PcepErrorInfo getPcepErrorInfo() { - return this.errInfo; - } - - @Override - public Builder setPcepErrorInfo(PcepErrorInfo errInfo) { - this.errInfo = errInfo; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - public static final Writer WRITER = new Writer(); - - /** - * Writer class for writing PCEP error Message to channel buffer. - */ - static class Writer implements PcepMessageWriter { - @Override - public void write(ChannelBuffer cb, PcepErrorMsgVer1 message) throws PcepParseException { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type 0xC - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort(0); - ErrorObjListWithOpen errObjListWithOpen = message.getErrorObjListWithOpen(); - PcepErrorInfo errInfo = message.getPcepErrorInfo(); - - // write ( [] ) if exists. - // otherwise write [] - - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - errObjListWithOpen.write(cb); - } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - errInfo.write(cb); - } else { - throw new PcepParseException("Empty PCEP-ERROR message."); - } - // PcepErrorMessage message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public ErrorObjListWithOpen getErrorObjListWithOpen() { - return this.errObjListWithOpen; - } - - @Override - public void setErrorObjListWithOpen(ErrorObjListWithOpen errObjListWithOpen) { - this.errObjListWithOpen = errObjListWithOpen; - } - - @Override - public PcepErrorInfo getPcepErrorInfo() { - return this.errInfo; - } - - @Override - public void setPcepErrorInfo(PcepErrorInfo errInfo) { - this.errInfo = errInfo; - } - - /** - * Return list of Error types. - * - * @return error types list - */ - public List getErrorType() { - List llErrorType = new LinkedList<>(); - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - llErrorType = errObjListWithOpen.getErrorType(); - } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - llErrorType = errInfo.getErrorType(); - } - - return llErrorType; - } - - /** - * Return list of Error values. - * - * @return error value list - */ - public List getErrorValue() { - List llErrorValue = new LinkedList<>(); - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - llErrorValue = errObjListWithOpen.getErrorValue(); - } else if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - llErrorValue = errInfo.getErrorValue(); - } - - return llErrorValue; - } - - @Override - public String toString() { - ToStringHelper toStrHelper = MoreObjects.toStringHelper(getClass()).omitNullValues(); - - if ((errObjListWithOpen != null) - && (errObjListWithOpen.isErrorObjListWithOpenPresent())) { - toStrHelper.add("ErrorObjectListWithOpen", errObjListWithOpen); - } - if ((errInfo != null) && (errInfo.isErrorInfoPresent())) { - toStrHelper.add("ErrorInfo", errInfo); - } - - return toStrHelper.toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java deleted file mode 100644 index b6b0a426a1..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorObjectVer1.java +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Error Object. - */ -public class PcepErrorObjectVer1 implements PcepErrorObject { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Object-Class | OT |Res|P|I| Object Length (bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags | Error-Type | Error-value | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - private static final Logger log = LoggerFactory.getLogger(PcepErrorObjectVer1.class); - - public static final byte ERROR_OBJ_TYPE = 1; - public static final byte ERROR_OBJ_CLASS = 13; - public static final byte ERROR_OBJECT_VERSION = 1; - //ERROR_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ErrorObjectHeaderLen(4) - public static final short ERROR_OBJ_MINIMUM_LENGTH = 8; - public static final int OBJECT_HEADER_LENGTH = 4; - - public static final PcepObjectHeader DEFAULT_ERROR_OBJECT_HEADER = new PcepObjectHeader(ERROR_OBJ_CLASS, - ERROR_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - ERROR_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader errorObjHeader; - private byte errorType; - private byte errorValue; - private LinkedList optionalTlv; // Optional TLV - - /** - * Constructor to initialize variables. - * - * @param errorObjHeader ERROR Object header - * @param errorType Error Type - * @param errorValue Error Value - * @param optionalTlv list of optional TLV - */ - - public PcepErrorObjectVer1(PcepObjectHeader errorObjHeader, byte errorType, byte errorValue, - LinkedList optionalTlv) { - this.errorObjHeader = errorObjHeader; - this.errorType = errorType; - this.errorValue = errorValue; - this.optionalTlv = optionalTlv; - } - - /** - * sets Object Header. - * - * @param obj Error-Object header - */ - public void setLspObjHeader(PcepObjectHeader obj) { - this.errorObjHeader = obj; - } - - @Override - public void setErrorType(byte errorType) { - this.errorType = errorType; - } - - @Override - public void setErrorValue(byte errorValue) { - this.errorValue = errorValue; - } - - /** - * returns object header. - * - * @return errorObjHeader Error-Object header - */ - public PcepObjectHeader getErrorObjHeader() { - return this.errorObjHeader; - } - - @Override - public int getErrorType() { - return this.errorType; - } - - @Override - public byte getErrorValue() { - return this.errorValue; - } - - @Override - public LinkedList getOptionalTlv() { - return this.optionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList optionalTlv) { - this.optionalTlv = optionalTlv; - } - - /** - * Reads from channel buffer and returns object of PcepErrorObject. - * - * @param cb of channel buffer. - * @return object of PCEP-ERROR-OBJECT - */ - public static PcepErrorObject read(ChannelBuffer cb) { - - PcepObjectHeader errorObjHeader; - byte errorType; - byte errorValue; - LinkedList optionalTlv; - - errorObjHeader = PcepObjectHeader.read(cb); - - //take only ErrorObject buffer. - ChannelBuffer tempCb = cb.readBytes(errorObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - tempCb.readByte(); //ignore Reserved - tempCb.readByte(); //ignore Flags - errorType = tempCb.readByte(); - errorValue = tempCb.readByte(); - - optionalTlv = parseOptionalTlv(tempCb); - - return new PcepErrorObjectVer1(errorObjHeader, errorType, errorValue, optionalTlv); - } - - /** - * returns Linked list of optional tlvs. - * - * @param cb channel buffer. - * @return Linked list of optional tlvs - */ - protected static LinkedList parseOptionalTlv(ChannelBuffer cb) { - - LinkedList llOutOptionalTlv = new LinkedList<>(); - - byte[] yTemp = new byte[cb.readableBytes()]; - cb.readBytes(yTemp); - - return llOutOptionalTlv; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = errorObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("While writing Error Object Header."); - } - - //write Reserved - cb.writeByte(0); - //write Flags - cb.writeByte(0); - //write ErrorType and ErrorValue - cb.writeByte(this.errorType); - cb.writeByte(this.errorValue); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - errorObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - - cb.setShort(objLenIndex, (short) length); - return length; - } - - /** - * Pack the Optional tlvs. - * - * @param cb channel buffer. - * @return writer index. - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator listIterator = optionalTlv.listIterator(); - int startIndex = cb.writerIndex(); - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("TLV is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - } - - return cb.writerIndex() - startIndex; - } - - /** - * Builder class for PCEP error object. - */ - public static class Builder implements PcepErrorObject.Builder { - - private boolean bIsHeaderSet = false; - - private PcepObjectHeader errorObjHeader; - private byte errorType; - private byte errorValue; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - private LinkedList optionalTlv = new LinkedList<>(); - - @Override - public PcepErrorObject build() { - - PcepObjectHeader errorObjHeader = this.bIsHeaderSet ? this.errorObjHeader : DEFAULT_ERROR_OBJECT_HEADER; - - if (bIsPFlagSet) { - errorObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - errorObjHeader.setIFlag(bIFlag); - } - - return new PcepErrorObjectVer1(errorObjHeader, errorType, errorValue, optionalTlv); - } - - @Override - public PcepObjectHeader getErrorObjHeader() { - return this.errorObjHeader; - } - - @Override - public Builder setErrorObjHeader(PcepObjectHeader obj) { - this.errorObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getErrorType() { - return this.errorType; - } - - @Override - public Builder setErrorType(byte value) { - this.errorType = value; - return this; - } - - @Override - public byte getErrorValue() { - return this.errorValue; - } - - @Override - public Builder setErrorValue(byte value) { - this.errorValue = value; - return this; - } - - @Override - public Builder setOptionalTlv(LinkedList optionalTlv) { - this.optionalTlv = optionalTlv; - return this; - } - - @Override - public LinkedList getOptionalTlv() { - return this.optionalTlv; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("ObjectHeader", errorObjHeader).add("ErrorType", errorType) - .add("ErrorValue", errorValue).add("OptionalTlv", optionalTlv).toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java deleted file mode 100644 index 7eb711cce1..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepErrorVer1.java +++ /dev/null @@ -1,400 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepRPObject; -import org.onosproject.pcepio.protocol.PcepLSObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PcepError list which contains RP or LS objects. - * Reference: draft-dhodylee-pce-pcep-ls-01, section 8.2. - */ -public class PcepErrorVer1 implements PcepError { - - /* - ::=[ | ] - - - ::=[] - - ::=[] - */ - - private static final Logger log = LoggerFactory.getLogger(PcepErrorVer1.class); - - private boolean isErroInfoSet; - //PcepErrorObject list - private List errObjList; - //PcepRPObject list - private List rpObjList; - //PcepLSObject list - private List lsObjList; - private boolean isLSObjListSet; - - public static final int OBJECT_HEADER_LENGTH = 4; - - /** - * Constructor to initialize variable. - */ - public PcepErrorVer1() { - this.rpObjList = null; - this.lsObjList = null; - this.errObjList = null; - } - - /** - * Constructor to initialize variable. - * - * @param rpObjList list of PcepRPObject - * @param lsObjList list of PcepLSObject - * @param errObjListObjList list of PcepErrorObject - */ - public PcepErrorVer1(List rpObjList, List lsObjList, - List errObjListObjList) { - this.rpObjList = rpObjList; - this.lsObjList = lsObjList; - this.errObjList = errObjListObjList; - } - - /** - * Constructor to initialize PcepError. - * - * @param errObjList list of PcepErrorObject - */ - public PcepErrorVer1(List errObjList) { - this.rpObjList = null; - this.lsObjList = null; - this.errObjList = errObjList; - } - - @Override - public List getRPObjList() { - return this.rpObjList; - } - - @Override - public List getLSObjList() { - return this.lsObjList; - } - - @Override - public List getErrorObjList() { - return this.errObjList; - } - - /** - * Parse RP List from the channel buffer. - * - * @param cb of type channel buffer - * @throws PcepParseException if mandatory fields are missing - */ - public void parseRPList(ChannelBuffer cb) throws PcepParseException { - byte yObjClass; - byte yObjType; - - rpObjList = new LinkedList<>(); - - // caller should verify for RP object - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - log.debug("Unable to find RP Object"); - return; - } - - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - PcepRPObject rpObj; - while ((yObjClass == PcepRPObjectVer1.RP_OBJ_CLASS) && (yObjType == PcepRPObjectVer1.RP_OBJ_TYPE)) { - rpObj = PcepRPObjectVer1.read(cb); - rpObjList.add(rpObj); - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } else { - break; - } - } - } - - /** - * Parse LS List from the channel buffer. - * - * @param cb of type channel buffer - * @throws PcepParseException if mandatory fields are missing - */ - public void parseLSList(ChannelBuffer cb) throws PcepParseException { - byte yObjClass; - byte yObjType; - - lsObjList = new LinkedList<>(); - - // caller should verify for LS object - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - log.debug("Unable to find LS Object"); - return; - } - - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - PcepLSObject lsObj; - while ((yObjClass == PcepLSObjectVer1.LS_OBJ_CLASS) && ((yObjType == PcepLSObjectVer1.LS_OBJ_TYPE_NODE_VALUE) - || (yObjType == PcepLSObjectVer1.LS_OBJ_TYPE_LINK_VALUE))) { - lsObj = PcepLSObjectVer1.read(cb); - lsObjList.add(lsObj); - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } else { - break; - } - } - } - - /** - * parseErrObjList from the channel buffer. - * - * @param cb of type channel buffer - * @throws PcepParseException if mandatory fields are missing - */ - public void parseErrObjList(ChannelBuffer cb) throws PcepParseException { - byte yObjClass; - byte yObjType; - boolean bIsErrorObjFound = false; - - errObjList = new LinkedList<>(); - - // caller should verify for RP object - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - throw new PcepParseException("Unable to find PCEP-ERROR Object"); - } - - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - PcepErrorObject errorObject; - while ((yObjClass == PcepErrorObjectVer1.ERROR_OBJ_CLASS) && (yObjType == PcepErrorObjectVer1.ERROR_OBJ_TYPE)) { - errorObject = PcepErrorObjectVer1.read(cb); - errObjList.add(errorObject); - bIsErrorObjFound = true; - - if (cb.readableBytes() > OBJECT_HEADER_LENGTH) { - cb.markReaderIndex(); - tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - yObjClass = tempObjHeader.getObjClass(); - yObjType = tempObjHeader.getObjType(); - } else { - break; - } - } - - if (!bIsErrorObjFound) { - throw new PcepParseException("At least one PCEP-ERROR Object should be present."); - } - } - - /** - * Reads the byte stream of PcepError from channel buffer. - * - * @param cb of type channel buffer - * @return PcepError error part of PCEP-ERROR - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepErrorVer1 read(ChannelBuffer cb) throws PcepParseException { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - throw new PcepParseException("Unknown Object"); - } - - PcepErrorVer1 pcepError = new PcepErrorVer1(); - // check whether any PCEP Error Info is present - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - byte yObjClass = tempObjHeader.getObjClass(); - - //If RPlist present then store it.RPList and LSList are optional - if (yObjClass == PcepRPObjectVer1.RP_OBJ_CLASS) { - log.debug("RP_LIST"); - pcepError.parseRPList(cb); - yObjClass = checkNextObject(cb); - } else if (yObjClass == PcepLSObjectVer1.LS_OBJ_CLASS) { - log.debug("LS_LIST"); - pcepError.parseLSList(cb); - yObjClass = checkNextObject(cb); - } - - if (yObjClass == PcepErrorObjectVer1.ERROR_OBJ_CLASS) { - log.debug("PCEP-ERROR obj list"); - pcepError.parseErrObjList(cb); - yObjClass = checkNextObject(cb); - } - - return pcepError; - } - - /** - * Checks Next Object. - * - * @param cb of type channel buffer. - * @return object type class. - */ - private static byte checkNextObject(ChannelBuffer cb) { - if (cb.readableBytes() < OBJECT_HEADER_LENGTH) { - return 0; - } - cb.markReaderIndex(); - PcepObjectHeader tempObjHeader = PcepObjectHeader.read(cb); - cb.resetReaderIndex(); - return tempObjHeader.getObjClass(); - } - - /** - * Writes the byte stream of PCEP error to the channel buffer. - * - * @param cb of type channel buffer - * @return object length index - * @throws PcepParseException if mandatory fields are missing - */ - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - int iLenStartIndex = cb.writerIndex(); - - // RPlist is optional - if (this.isErroInfoSet) { - ListIterator rpObjlistIterator = this.rpObjList.listIterator(); - while (rpObjlistIterator.hasNext()) { - rpObjlistIterator.next().write(cb); - } - } - - // LSlist is optional - if (this.isLSObjListSet) { - ListIterator teObjlistIterator = this.lsObjList.listIterator(); - while (teObjlistIterator.hasNext()) { - teObjlistIterator.next().write(cb); - } - } - //ErrList is mandatory - ListIterator errlistIterator = this.errObjList.listIterator(); - while (errlistIterator.hasNext()) { - errlistIterator.next().write(cb); - } - - return cb.writerIndex() - iLenStartIndex; - } - - /** - * Builder for error part of PCEP-ERROR. - */ - public static class Builder implements PcepError.Builder { - - private List rpObjList; - private List lsObjList; - private List errObjList; - - @Override - public PcepError build() { - return new PcepErrorVer1(rpObjList, lsObjList, errObjList); - } - - @Override - public List getRPObjList() { - return this.rpObjList; - } - - @Override - public Builder setRPObjList(List rpObjList) { - this.rpObjList = rpObjList; - return this; - } - - @Override - public List getLSObjList() { - return this.lsObjList; - } - - @Override - public Builder setLSObjList(List lsObjList) { - this.lsObjList = lsObjList; - return this; - } - - @Override - public List getErrorObjList() { - return this.errObjList; - } - - @Override - public Builder setErrorObjList(List errObjList) { - this.errObjList = errObjList; - return this; - } - - } - - @Override - public void setRPObjList(List rpObjList) { - this.rpObjList = rpObjList; - } - - @Override - public void setLSObjList(List lsObjList) { - this.lsObjList = lsObjList; - } - - @Override - public void setErrorObjList(List errObjList) { - this.errObjList = errObjList; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .omitNullValues() - .add("RpObjectList", rpObjList) - .add("LsObjectList", lsObjList) - .add("ErrorObjectList", errObjList) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java deleted file mode 100644 index ff3d1f33ae..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFactoryVer1.java +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.onosproject.pcepio.protocol.PcInitiatedLspRequest; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepBandwidthObject; -import org.onosproject.pcepio.protocol.PcepCloseMsg; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepErrorInfo; -import org.onosproject.pcepio.protocol.PcepError; -import org.onosproject.pcepio.protocol.PcepErrorMsg; -import org.onosproject.pcepio.protocol.PcepErrorObject; -import org.onosproject.pcepio.protocol.PcepFactory; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4.Builder; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4Adjacency; -import org.onosproject.pcepio.protocol.PcepInitiateMsg; -import org.onosproject.pcepio.protocol.PcepIroObject; -import org.onosproject.pcepio.protocol.PcepKeepaliveMsg; -import org.onosproject.pcepio.protocol.PcepLabelObject; -import org.onosproject.pcepio.protocol.PcepLabelRangeObject; -import org.onosproject.pcepio.protocol.PcepLabelRangeResvMsg; -import org.onosproject.pcepio.protocol.PcepLabelUpdate; -import org.onosproject.pcepio.protocol.PcepLabelUpdateMsg; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepLspaObject; -import org.onosproject.pcepio.protocol.PcepMessage; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMetricObject; -import org.onosproject.pcepio.protocol.PcepMsgPath; -import org.onosproject.pcepio.protocol.PcepOpenMsg; -import org.onosproject.pcepio.protocol.PcepOpenObject; -import org.onosproject.pcepio.protocol.PcepReportMsg; -import org.onosproject.pcepio.protocol.PcepRroObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepStateReport; -import org.onosproject.pcepio.protocol.PcepUpdateMsg; -import org.onosproject.pcepio.protocol.PcepUpdateRequest; -import org.onosproject.pcepio.protocol.PcepVersion; - -/** - * Provides PCEP Factory and returns builder classes for all objects and messages. - */ -public class PcepFactoryVer1 implements PcepFactory { - - public static final PcepFactoryVer1 INSTANCE = new PcepFactoryVer1(); - - @Override - public PcepOpenMsg.Builder buildOpenMsg() { - return new PcepOpenMsgVer1.Builder(); - } - - @Override - public PcepOpenObject.Builder buildOpenObject() { - return new PcepOpenObjectVer1.Builder(); - } - - @Override - public PcepKeepaliveMsg.Builder buildKeepaliveMsg() { - return new PcepKeepaliveMsgVer1.Builder(); - } - - @Override - public PcepCloseMsg.Builder buildCloseMsg() { - return new PcepCloseMsgVer1.Builder(); - } - - @Override - public PcepUpdateMsg.Builder buildUpdateMsg() { - return new PcepUpdateMsgVer1.Builder(); - } - - @Override - public PcepReportMsg.Builder buildReportMsg() { - return new PcepReportMsgVer1.Builder(); - } - - @Override - public PcepInitiateMsg.Builder buildPcepInitiateMsg() { - return new PcepInitiateMsgVer1.Builder(); - } - - @Override - public PcepLspObject.Builder buildLspObject() { - return new PcepLspObjectVer1.Builder(); - } - - @Override - public PcepMessageReader getReader() { - return PcepMessageVer1.READER; - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepSrpObject.Builder buildSrpObject() { - return new PcepSrpObjectVer1.Builder(); - } - - @Override - public PcepEndPointsObject.Builder buildEndPointsObject() { - return new PcepEndPointsObjectVer1.Builder(); - } - - @Override - public PcepEroObject.Builder buildEroObject() { - return new PcepEroObjectVer1.Builder(); - } - - @Override - public PcepRroObject.Builder buildRroObject() { - return new PcepRroObjectVer1.Builder(); - } - - @Override - public PcepLspaObject.Builder buildLspaObject() { - return new PcepLspaObjectVer1.Builder(); - } - - @Override - public PcepIroObject.Builder buildIroObject() { - return new PcepIroObjectVer1.Builder(); - } - - @Override - public PcepMetricObject.Builder buildMetricObject() { - return new PcepMetricObjectVer1.Builder(); - } - - @Override - public PcepBandwidthObject.Builder buildBandwidthObject() { - return new PcepBandwidthObjectVer1.Builder(); - } - - @Override - public PcepMsgPath.Builder buildPcepMsgPath() { - return new PcepMsgPathVer1.Builder(); - } - - @Override - public PcepStateReport.Builder buildPcepStateReport() { - return new PcepStateReportVer1.Builder(); - } - - @Override - public PcepUpdateRequest.Builder buildPcepUpdateRequest() { - return new PcepUpdateRequestVer1.Builder(); - } - - @Override - public PcInitiatedLspRequest.Builder buildPcInitiatedLspRequest() { - return new PcInitiatedLspRequestVer1.Builder(); - } - - @Override - public PcepAttribute.Builder buildPcepAttribute() { - return new PcepAttributeVer1.Builder(); - } - - @Override - public PcepLabelUpdateMsg.Builder buildPcepLabelUpdateMsg() { - return new PcepLabelUpdateMsgVer1.Builder(); - } - - @Override - public PcepLabelUpdate.Builder buildPcepLabelUpdateObject() { - return new PcepLabelUpdateVer1.Builder(); - } - - @Override - public PcepLabelObject.Builder buildLabelObject() { - return new PcepLabelObjectVer1.Builder(); - } - - @Override - public PcepErrorMsg.Builder buildPcepErrorMsg() { - return new PcepErrorMsgVer1.Builder(); - } - - @Override - public PcepErrorObject.Builder buildPcepErrorObject() { - return new PcepErrorObjectVer1.Builder(); - } - - @Override - public PcepFecObjectIPv4Adjacency.Builder buildFecIpv4Adjacency() { - return new PcepFecObjectIPv4AdjacencyVer1.Builder(); - } - - @Override - public PcepErrorInfo.Builder buildPcepErrorInfo() { - return new PcepErrorInfoVer1.Builder(); - } - - @Override - public PcepError.Builder buildPcepError() { - return new PcepErrorVer1.Builder(); - } - - @Override - public PcepLabelRangeObject.Builder buildPcepLabelRangeObject() { - return new PcepLabelRangeObjectVer1.Builder(); - } - - @Override - public PcepLabelRangeResvMsg.Builder buildPcepLabelRangeResvMsg() { - return new PcepLabelRangeResvMsgVer1.Builder(); - } - - @Override - public Builder buildFecObjectIpv4() { - return new PcepFecObjectIPv4Ver1.Builder(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java deleted file mode 100644 index bde6596d8c..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4AdjacencyVer1.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4Adjacency; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP fec Object IPv4 Adjacency object. - */ -public class PcepFecObjectIPv4AdjacencyVer1 implements PcepFecObjectIPv4Adjacency { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote IPv4 address | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 3 IPv4 Adjacency - */ - private static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4AdjacencyVer1.class); - - public static final byte FEC_OBJ_TYPE = 3; - public static final byte FEC_OBJ_CLASS = (byte) 226; - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 12; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - public static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private int localIPv4Address; - private int remoteIPv4Address; - - /** - * Constructor to initialize parameters for PCEP fec object . - * - * @param fecObjHeader FEC Object header - * @param localIPv4Address Local IPv4 Address - * @param remoteIPv4Address Remote IPv4 Address - */ - public PcepFecObjectIPv4AdjacencyVer1(PcepObjectHeader fecObjHeader, int localIPv4Address, int remoteIPv4Address) { - this.fecObjHeader = fecObjHeader; - this.localIPv4Address = localIPv4Address; - this.remoteIPv4Address = remoteIPv4Address; - } - - /** - * Sets Object header. - * - * @param obj Pcep fec Object Header - */ - public void setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public int getLocalIPv4Address() { - return this.localIPv4Address; - } - - @Override - public void seLocalIPv4Address(int value) { - this.localIPv4Address = value; - } - - @Override - public int getRemoteIPv4Address() { - return this.remoteIPv4Address; - } - - @Override - public void seRemoteIPv4Address(int value) { - this.remoteIPv4Address = value; - } - - /** - * Reads from channel buffer and Returns object of PcepFecObjectIPv4Adjacency. - * - * @param cb of channel buffer. - * @return object of PcepFecObjectIPv4Adjacency - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv4Adjacency read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - int localIPv4Address; - int remoteIPv4Address; - - fecObjHeader = PcepObjectHeader.read(cb); - - //take only FEC IPv4 Adjacency Object buffer. - ChannelBuffer tempCb = cb.readBytes(fecObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - localIPv4Address = tempCb.readInt(); - remoteIPv4Address = tempCb.readInt(); - - return new PcepFecObjectIPv4AdjacencyVer1(fecObjHeader, localIPv4Address, remoteIPv4Address); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //Write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeInt(localIPv4Address); - cb.writeInt(remoteIPv4Address); - - //Now write FEC IPv4 Adjacency Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec object IPv4 Adjacency. - */ - public static class Builder implements PcepFecObjectIPv4Adjacency.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLocalIPv4Addressset = false; - private boolean bIsRemoteIPv4Addressset = false; - - private PcepObjectHeader fecObjHeader; - int localIPv4Address; - int remoteIPv4Address; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv4Adjacency build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsLocalIPv4Addressset) { - throw new PcepParseException( - "Local IPv4 Address not set while building PcepFecObjectIPv4Adjacency object."); - } - - if (!this.bIsRemoteIPv4Addressset) { - throw new PcepParseException( - " Remote IPv4 Address not set while building PcepFecObjectIPv4Adjacency object."); - } - - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv4AdjacencyVer1(fecObjHeader, this.localIPv4Address, this.remoteIPv4Address); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv4AdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv4AdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getLocalIPv4Address() { - return this.localIPv4Address; - } - - @Override - public Builder seLocalIPv4Address(int value) { - this.localIPv4Address = value; - this.bIsLocalIPv4Addressset = true; - return this; - } - - @Override - public int getRemoteIPv4Address() { - return this.remoteIPv4Address; - } - - @Override - public Builder seRemoteIPv4Address(int value) { - this.remoteIPv4Address = value; - this.bIsRemoteIPv4Addressset = true; - return this; - } - - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("fecObjHeader", fecObjHeader) - .add("localIPv4Address", localIPv4Address) - .add("remoteIPv4Address", remoteIPv4Address).toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java deleted file mode 100644 index e66b2fd787..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4UnnumberedAdjacencyVer1.java +++ /dev/null @@ -1,334 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4UnnumberedAdjacency; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv4 Unnumbered Adjacency object. - */ -public class PcepFecObjectIPv4UnnumberedAdjacencyVer1 implements PcepFecObjectIPv4UnnumberedAdjacency { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Local Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote Node-ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Remote Interface ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 5, Unnumbered Adjacency with IPv4 NodeIDs - */ - private static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4UnnumberedAdjacencyVer1.class); - - public static final byte FEC_OBJ_TYPE = 5; - public static final byte FEC_OBJ_CLASS = (byte) 226; - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 20; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private int localNodeID; - private int localInterfaceID; - private int remoteNodeID; - private int remoteInterfaceID; - - /** - * Constructor to initialize parameter for PCEP fec object. - * - * @param fecObjHeader fec object header - * @param localNodeID local node ID - * @param localInterfaceID local interface ID - * @param remoteNodeID remote node ID - * @param remoteInterfaceID remote interface ID - */ - public PcepFecObjectIPv4UnnumberedAdjacencyVer1(PcepObjectHeader fecObjHeader, int localNodeID, - int localInterfaceID, int remoteNodeID, int remoteInterfaceID) { - this.fecObjHeader = fecObjHeader; - this.localNodeID = localNodeID; - this.localInterfaceID = localInterfaceID; - this.remoteNodeID = remoteNodeID; - this.remoteInterfaceID = remoteInterfaceID; - } - - /** - * Sets Object Header. - * - * @param obj object header - */ - public void setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public void setLocalNodeID(int localNodeID) { - this.localNodeID = localNodeID; - } - - /** - * Returns Object Header. - * - * @return fecObjHeader fec object header - */ - public PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public int getLocalNodeID() { - return this.localNodeID; - } - - @Override - public int getLocalInterfaceID() { - return this.localInterfaceID; - } - - @Override - public void setLocalInterfaceID(int localInterfaceID) { - this.localInterfaceID = localInterfaceID; - } - - @Override - public int getRemoteNodeID() { - return this.remoteNodeID; - } - - @Override - public void setRemoteNodeID(int remoteNodeID) { - this.remoteNodeID = remoteNodeID; - } - - @Override - public int getRemoteInterfaceID() { - return this.remoteInterfaceID; - } - - @Override - public void setRemoteInterfaceID(int remoteInterfaceID) { - this.remoteInterfaceID = remoteInterfaceID; - } - - /** - * Reads from channel buffer and returns object of PcepFecObjectIPv4UnnumberedAdjacency. - * - * @param cb of channel buffer - * @return object of PcepFecObjectIPv4UnnumberedAdjacency - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv4UnnumberedAdjacency read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - int localNodeID; - int localInterfaceID; - int remoteNodeID; - int remoteInterfaceID; - - fecObjHeader = PcepObjectHeader.read(cb); - - //take only FEC IPv4 Unnumbered Adjacency Object buffer. - ChannelBuffer tempCb = cb.readBytes(fecObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - localNodeID = tempCb.readInt(); - localInterfaceID = tempCb.readInt(); - remoteNodeID = tempCb.readInt(); - remoteInterfaceID = tempCb.readInt(); - - return new PcepFecObjectIPv4UnnumberedAdjacencyVer1(fecObjHeader, localNodeID, localInterfaceID, remoteNodeID, - remoteInterfaceID); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //Write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeInt(localNodeID); - cb.writeInt(localInterfaceID); - cb.writeInt(remoteNodeID); - cb.writeInt(remoteInterfaceID); - - //Now write FEC IPv4 Unnumbered Adjacency Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - - return cb.writerIndex(); - } - - /** - * Builder class for PCEP Fec object IPv4 unnumbered Adjacency. - */ - public static class Builder implements PcepFecObjectIPv4UnnumberedAdjacency.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLocalNodeIDset = false; - private boolean bIsLocalInterfaceIDset = false; - private boolean bIsRemoteNodeIDset = false; - private boolean bIsRemoteInterfaceIDset = false; - - private PcepObjectHeader fecObjHeader; - private int localNodeID; - private int localInterfaceID; - private int remoteNodeID; - private int remoteInterfaceID; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv4UnnumberedAdjacency build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsLocalNodeIDset) { - throw new PcepParseException( - " Local Node ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (!this.bIsLocalInterfaceIDset) { - throw new PcepParseException( - " Local Interface ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (!this.bIsRemoteNodeIDset) { - throw new PcepParseException( - " Remote Node ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (!this.bIsRemoteInterfaceIDset) { - throw new PcepParseException( - " Remote Interface ID not set while building PcepFecObjectIPv4UnnumberedAdjacency object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv4UnnumberedAdjacencyVer1(fecObjHeader, this.localNodeID, this.localInterfaceID, - this.remoteNodeID, this.remoteInterfaceID); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv4UnnumberedAdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv4UnnumberedAdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getLocalNodeID() { - return this.localNodeID; - } - - @Override - public Builder setLocalNodeID(int value) { - this.localNodeID = value; - this.bIsLocalNodeIDset = true; - return this; - } - - @Override - public int getLocalInterfaceID() { - return this.localInterfaceID; - } - - @Override - public Builder setLocalInterfaceID(int value) { - this.localInterfaceID = value; - this.bIsLocalInterfaceIDset = true; - return this; - } - - @Override - public int getRemoteNodeID() { - return this.remoteNodeID; - } - - @Override - public Builder setRemoteNodeID(int value) { - this.remoteNodeID = value; - this.bIsRemoteNodeIDset = true; - return this; - } - - @Override - public int getRemoteInterfaceID() { - return this.remoteInterfaceID; - } - - @Override - public Builder setRemoteInterfaceID(int value) { - this.remoteInterfaceID = value; - this.bIsRemoteInterfaceIDset = true; - return this; - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("LocalNodeID: ", localNodeID) - .add("LocalInterfaceID: ", localInterfaceID).add("RemoteNodeID: ", remoteNodeID) - .add("RemoteInterfaceID: ", remoteInterfaceID).toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java deleted file mode 100644 index 63265f66cf..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv4Ver1.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv4; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv4 object. - */ -public class PcepFecObjectIPv4Ver1 implements PcepFecObjectIPv4 { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 Node ID | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 1 IPv4 Node ID - */ - private static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv4Ver1.class); - - public static final byte FEC_OBJ_TYPE = 1; - public static final byte FEC_OBJ_CLASS = (byte) 226; - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 8; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private int nodeID; - - /** - * Constructor to initialize parameters for PCEP fec object. - * - * @param fecObjHeader fec object header - * @param nodeID node id - */ - public PcepFecObjectIPv4Ver1(PcepObjectHeader fecObjHeader, int nodeID) { - this.fecObjHeader = fecObjHeader; - this.nodeID = nodeID; - } - - /** - * Sets the Object Header. - * - * @param obj object header - */ - public void setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public void setNodeID(int nodeID) { - this.nodeID = nodeID; - } - - /** - * Returns Object Header. - * - * @return fecObjHeader fec object header - */ - public PcepObjectHeader getFecIpv4ObjHeader() { - return this.fecObjHeader; - } - - @Override - public int getNodeID() { - return this.nodeID; - } - - /** - * Reads from channel buffer and returns object of PcepFecObjectIPv4. - * - * @param cb of channel buffer - * @return object of PcepFecObjectIPv4 - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv4 read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - int nodeID; - fecObjHeader = PcepObjectHeader.read(cb); - nodeID = cb.readInt(); - return new PcepFecObjectIPv4Ver1(fecObjHeader, nodeID); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeInt(nodeID); - - //now write FEC IPv4 Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec pobject IPv4. - */ - public static class Builder implements PcepFecObjectIPv4.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsNodeIdset = false; - - private PcepObjectHeader fecObjHeader; - private int nodeID; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv4 build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsNodeIdset) { - throw new PcepParseException("NodeID not set while building PcepFecObjectIPv4 object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv4Ver1(fecObjHeader, this.nodeID); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv4ObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public int getNodeID() { - return this.nodeID; - } - - @Override - public Builder setNodeID(int value) { - this.nodeID = value; - this.bIsNodeIdset = true; - return this; - } - - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("fecObjHeader", fecObjHeader) - .add("nodeID: ", nodeID) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java deleted file mode 100644 index cd60d922a6..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6AdjacencyVer1.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv6Adjacency; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv6 Adjacency object. - */ -public class PcepFecObjectIPv6AdjacencyVer1 implements PcepFecObjectIPv6Adjacency { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Local IPv6 address (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Remote IPv6 address (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 4 IPv6 Adjacency - */ - private static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv6AdjacencyVer1.class); - - public static final byte FEC_OBJ_TYPE = 4; - public static final byte FEC_OBJ_CLASS = (byte) 226; - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 36; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final int IPV6_ADDRESS_LENGTH = 16; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - private byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - - /** - * Constructor to initialize parameters for PCEP fec object. - * - * @param fecObjHeader fec object header - * @param localIPv6Address local IPv6 address - * @param remoteIPv6Address remote IPv6 address - */ - public PcepFecObjectIPv6AdjacencyVer1(PcepObjectHeader fecObjHeader, byte[] localIPv6Address, - byte[] remoteIPv6Address) { - this.fecObjHeader = fecObjHeader; - this.localIPv6Address = localIPv6Address; - this.remoteIPv6Address = remoteIPv6Address; - } - - /** - * Sets Object Header. - * - * @param obj object header - */ - public void setFecIpv4ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public byte[] getLocalIPv6Address() { - return this.localIPv6Address; - } - - @Override - public void seLocalIPv6Address(byte[] value) { - this.localIPv6Address = value; - } - - @Override - public byte[] getRemoteIPv6Address() { - return this.remoteIPv6Address; - } - - @Override - public void seRemoteIPv6Address(byte[] value) { - this.remoteIPv6Address = value; - } - - /** - * Reads channel buffer and Returns object of PcepFecObjectIPv6Adjacency. - * - * @param cb of channel buffer - * @return object of PcepFecObjectIPv6Adjacency - * @throws PcepParseException when fails tp read from channel buffer - */ - public static PcepFecObjectIPv6Adjacency read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - fecObjHeader = PcepObjectHeader.read(cb); - cb.readBytes(localIPv6Address, 0, IPV6_ADDRESS_LENGTH); - cb.readBytes(remoteIPv6Address, 0, IPV6_ADDRESS_LENGTH); - return new PcepFecObjectIPv6AdjacencyVer1(fecObjHeader, localIPv6Address, remoteIPv6Address); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeBytes(localIPv6Address); - cb.writeBytes(remoteIPv6Address); - //now write FEC IPv6 Adjacency Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec object IPv6 Adjacency. - */ - public static class Builder implements PcepFecObjectIPv6Adjacency.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLocalIPv6Addressset = false; - private boolean bIsRemoteIPv6Addressset = false; - - private PcepObjectHeader fecObjHeader; - byte[] localIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - byte[] remoteIPv6Address = new byte[IPV6_ADDRESS_LENGTH]; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv6Adjacency build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsLocalIPv6Addressset) { - throw new PcepParseException( - "Local IPv6 Address not set while building PcepFecObjectIPv6Adjacency object."); - } - if (!this.bIsRemoteIPv6Addressset) { - throw new PcepParseException( - "Remote IPv6 Address not set while building PcepFecObjectIPv6Adjacency object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv6AdjacencyVer1(fecObjHeader, this.localIPv6Address, this.remoteIPv6Address); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv6AdjacencyObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv6AdjacencyObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte[] getLocalIPv6Address() { - return this.localIPv6Address; - } - - @Override - public Builder setLocalIPv6Address(byte[] value) { - this.localIPv6Address = value; - this.bIsLocalIPv6Addressset = true; - return this; - } - - @Override - public byte[] getRemoteIPv6Address() { - return this.remoteIPv6Address; - } - - @Override - public Builder setRemoteIPv6Address(byte[] value) { - this.remoteIPv6Address = value; - this.bIsRemoteIPv6Addressset = true; - return this; - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("localIPv6Address", localIPv6Address) - .add("remoteIPv6Address: ", remoteIPv6Address) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java deleted file mode 100644 index 1975b04ecc..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepFecObjectIPv6Ver1.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepFecObjectIPv6; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides Pcep Fec Object IPv6 object. - */ -public class PcepFecObjectIPv6Ver1 implements PcepFecObjectIPv6 { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01 , section : 7.5 - * - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // IPv6 Node ID (16 bytes) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - FEC Object-Type is 2 IPv6 Node ID - */ - private static final Logger log = LoggerFactory.getLogger(PcepFecObjectIPv6Ver1.class); - - public static final byte FEC_OBJ_TYPE = 2; - public static final byte FEC_OBJ_CLASS = (byte) 226; - public static final byte FEC_OBJECT_VERSION = 1; - public static final short FEC_OBJ_MINIMUM_LENGTH = 20; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final int IPV6_ADDRESS_LENGTH = 16; - - static final PcepObjectHeader DEFAULT_FEC_OBJECT_HEADER = new PcepObjectHeader(FEC_OBJ_CLASS, FEC_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, FEC_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader fecObjHeader; - private byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH]; - - /** - * Constructor to initialize parameters for PCEP fec object. - * - * @param fecObjHeader Fec object header - * @param nodeID node ID - */ - public PcepFecObjectIPv6Ver1(PcepObjectHeader fecObjHeader, byte[] nodeID) { - this.fecObjHeader = fecObjHeader; - this.nodeID = nodeID; - } - - /** - * Sets the Object header. - * - * @param obj object header - */ - public void setFecIpv6ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - } - - @Override - public void setNodeID(byte[] nodeID) { - this.nodeID = nodeID; - } - - /** - * Returns object header. - * - * @return fec Object Header - */ - public PcepObjectHeader getFecIpv6ObjHeader() { - return this.fecObjHeader; - } - - @Override - public byte[] getNodeID() { - return this.nodeID; - } - - /** - * reads the channel buffer and returns object of PcepFecObjectIPv6. - * - * @param cb of channel buffer. - * @return object of PcepFecObjectIPv6 - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepFecObjectIPv6 read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader fecObjHeader; - byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH]; - fecObjHeader = PcepObjectHeader.read(cb); - cb.readBytes(nodeID, 0, IPV6_ADDRESS_LENGTH); - return new PcepFecObjectIPv6Ver1(fecObjHeader, nodeID); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = fecObjHeader.write(cb); - cb.writeBytes(nodeID); - - //now write FEC IPv4 Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex(); - } - - /** - * Builder class for PCEP fec object IPv6. - */ - public static class Builder implements PcepFecObjectIPv6.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsNodeIdset = false; - - private PcepObjectHeader fecObjHeader; - private byte[] nodeID = new byte[IPV6_ADDRESS_LENGTH]; - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepFecObjectIPv6 build() throws PcepParseException { - PcepObjectHeader fecObjHeader = this.bIsHeaderSet ? this.fecObjHeader : DEFAULT_FEC_OBJECT_HEADER; - - if (!this.bIsNodeIdset) { - throw new PcepParseException(" NodeID not set while building PcepFecObjectIPv6 object."); - } - if (bIsPFlagSet) { - fecObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - fecObjHeader.setIFlag(bIFlag); - } - return new PcepFecObjectIPv6Ver1(fecObjHeader, this.nodeID); - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - - @Override - public PcepObjectHeader getFecIpv6ObjHeader() { - return this.fecObjHeader; - } - - @Override - public Builder setFecIpv6ObjHeader(PcepObjectHeader obj) { - this.fecObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte[] getNodeID() { - return this.nodeID; - } - - @Override - public Builder setNodeID(byte[] value) { - this.nodeID = value; - this.bIsNodeIdset = true; - return this; - } - - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public int getType() { - return FEC_OBJ_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("fecObjHeader", fecObjHeader) - .add("NodeID: ", nodeID) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java deleted file mode 100644 index f50a8d4f96..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInitiateMsgVer1.java +++ /dev/null @@ -1,332 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcInitiatedLspRequest; -import org.onosproject.pcepio.protocol.PcepAttribute; -import org.onosproject.pcepio.protocol.PcepEndPointsObject; -import org.onosproject.pcepio.protocol.PcepEroObject; -import org.onosproject.pcepio.protocol.PcepInitiateMsg; -import org.onosproject.pcepio.protocol.PcepLspObject; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP initiate message. - */ -class PcepInitiateMsgVer1 implements PcepInitiateMsg { - - private static final Logger log = LoggerFactory.getLogger(PcepInitiateMsgVer1.class); - - // Ref : PCE initiated tunnel setup draft-ietf-pce-pce-initiated-lsp-03, section 5.1 - /* ::= - * - * Where: - * ::= [] - * ::= (|) - * ::= - * - * - * - * [] - * ::= - * - */ - - static final byte PACKET_VERSION = 1; - /* considering LspDelete Request PcInitiate msg will contain - * common header - * srp object - * lsp object - * so min length for this can be - * PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+SrpObjectMinLen(12)+LspObjectMinLen(8) - */ - public static final short PACKET_MINIMUM_LENGTH = 24; - public static final short MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final PcepType MSG_TYPE = PcepType.INITIATE; - private LinkedList llPcInitiatedLspRequestList; - public static final PcepInitiateMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading of Pcep initiate message from channel buffer. - */ - static class Reader implements PcepMessageReader { - - LinkedList llPcInitiatedLspRequestList; - - @Override - public PcepInitiateMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - return null; - } - - llPcInitiatedLspRequestList = new LinkedList<>(); - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), received=" + version); - } - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.INITIATE(12), recived=" + type); - } - short length = cb.readShort(); - - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length. Initiate message length expected to be >= " - + PACKET_MINIMUM_LENGTH + ", but received=" + length); - } - - log.debug("reading PcInitiate message of length " + length); - - // parse Start initiate/deletion list - if (!parsePcInitiatedLspRequestList(cb)) { - throw new PcepParseException("Parsing PCE-initiated-lsp-Request-list failed"); - } - - return new PcepInitiateMsgVer1(llPcInitiatedLspRequestList); - } - - /** - * To parse PcInitiatedLspRequestList from PcInitiate Message. - * - * @param cb of type channel buffer - * @return true if parsing PcInitiatedLspRequestList is success, false otherwise - * @throws PcepParseException while parsing from channel buffer - */ - public boolean parsePcInitiatedLspRequestList(ChannelBuffer cb) throws PcepParseException { - - boolean isDelLspRequest = false; - - if (cb == null) { - throw new PcepParseException("Channel buffer is empty"); - } - - while (0 < cb.readableBytes()) { - PcInitiatedLspRequest pceInitLspReq = new PcInitiatedLspRequestVer1(); - - //store SRP object - PcepSrpObject srpObj; - srpObj = PcepSrpObjectVer1.read(cb); - pceInitLspReq.setSrpObject(srpObj); - isDelLspRequest = srpObj.getRFlag(); - - //store LSP object - PcepLspObject lspObj; - lspObj = PcepLspObjectVer1.read(cb); - pceInitLspReq.setLspObject(lspObj); - - /* if R bit will be set then pcInitiate msg will contain only LSp and SRP objects - * so if R bit is not set then we should read for Ero and EndPoint objects also. - */ - if (!isDelLspRequest) { - - //store EndPoint object - PcepEndPointsObject endPointObj; - endPointObj = PcepEndPointsObjectVer1.read(cb); - pceInitLspReq.setEndPointsObject(endPointObj); - - //store ERO object - PcepEroObject eroObj; - eroObj = PcepEroObjectVer1.read(cb); - pceInitLspReq.setEroObject(eroObj); - - if (cb.readableBytes() > MINIMUM_COMMON_HEADER_LENGTH) { - pceInitLspReq.setPcepAttribute(PcepAttributeVer1.read(cb)); - } - } - llPcInitiatedLspRequestList.add(pceInitLspReq); - } - return true; - } - } - - /** - * Constructor to initialize PcInitiatedLspRequest. - * - * @param llPcInitiatedLspRequestList list of PcInitiatedLspRequest - */ - PcepInitiateMsgVer1(LinkedList llPcInitiatedLspRequestList) { - - if (llPcInitiatedLspRequestList == null) { - throw new NullPointerException("PcInitiatedLspRequestList cannot be null."); - } - this.llPcInitiatedLspRequestList = llPcInitiatedLspRequestList; - } - - /** - * Builder class for PCEP initiate message. - */ - static class Builder implements PcepInitiateMsg.Builder { - - // Pcep initiate message fields - LinkedList llPcInitiatedLspRequestList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.INITIATE; - } - - @Override - public PcepInitiateMsg build() { - return new PcepInitiateMsgVer1(this.llPcInitiatedLspRequestList); - } - - @Override - public LinkedList getPcInitiatedLspRequestList() { - return this.llPcInitiatedLspRequestList; - } - - @Override - public Builder setPcInitiatedLspRequestList(LinkedList ll) { - this.llPcInitiatedLspRequestList = ll; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing pcep initiate message to channel buffer. - */ - static class Writer implements PcepMessageWriter { - - @Override - public void write(ChannelBuffer cb, PcepInitiateMsgVer1 message) throws PcepParseException { - - boolean isDelLspRequest = false; - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type 0xC - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort(0); - - ListIterator listIterator = message.llPcInitiatedLspRequestList.listIterator(); - - while (listIterator.hasNext()) { - - PcInitiatedLspRequest listReq = listIterator.next(); - - //Srp Object is mandatory - PcepSrpObject srpObj = listReq.getSrpObject(); - if (srpObj != null) { - isDelLspRequest = srpObj.getRFlag(); - srpObj.write(cb); - } else { - throw new PcepParseException("SRP Object is mandatory for PcInitiate message."); - } - - //LSP Object is mandatory - PcepLspObject lspObj = listReq.getLspObject(); - if (lspObj != null) { - lspObj.write(cb); - } else { - throw new PcepParseException("LSP Object is mandatory for PcInitiate message."); - } - - /* if R bit will be set then pcInitiate msg will contain only LSp and SRP objects - * so if R bit is not set then we should read for Ero and EndPoint objects also. - */ - - if (!isDelLspRequest) { - - //EndPoints object is mandatory - PcepEndPointsObject endPointObj = listReq.getEndPointsObject(); - if (endPointObj != null) { - endPointObj.write(cb); - } else { - throw new PcepParseException("End points Object is mandatory for PcInitiate message."); - } - - //Ero object is mandatory - PcepEroObject eroObj = listReq.getEroObject(); - if (eroObj != null) { - eroObj.write(cb); - } else { - throw new PcepParseException("ERO Object is mandatory for PcInitiate message."); - } - - //PcepAttribute is optional - PcepAttribute pcepAttribute = listReq.getPcepAttribute(); - if (pcepAttribute != null) { - pcepAttribute.write(cb); - } - } - } - - // PCInitiate message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public LinkedList getPcInitiatedLspRequestList() { - return this.llPcInitiatedLspRequestList; - } - - @Override - public void setPcInitiatedLspRequestList(LinkedList ll) { - this.llPcInitiatedLspRequestList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("PcInitiaitedLspRequestList", llPcInitiatedLspRequestList) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java deleted file mode 100644 index f88fa14883..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepInterLayerObjectVer1.java +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepInterLayerObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP inter layer object. - */ -public class PcepInterLayerObjectVer1 implements PcepInterLayerObject { - - /* - * 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved |N|I| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - private static final Logger log = LoggerFactory.getLogger(PcepInterLayerObjectVer1.class); - - public static final byte INTER_LAYER_OBJ_TYPE = 1; - public static final byte INTER_LAYER_OBJ_CLASS = 18; - public static final byte INTER_LAYER_OBJECT_VERSION = 1; - public static final short INTER_LAYER_OBJ_MINIMUM_LENGTH = 8; - public static final boolean DEFAULT_IFLAG = false; - public static final boolean DEFAULT_NFLAG = false; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int NFLAG_SHIFT_VALUE = 0x02; - public static final int IFLAG_SHIFT_VALUE = 0x01; - - static final PcepObjectHeader DEFAULT_INTER_LAYER_OBJECT_HEADER = new PcepObjectHeader(INTER_LAYER_OBJ_CLASS, - INTER_LAYER_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - INTER_LAYER_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader interLayerObjHeader; - private boolean bNFlag; - private boolean bIFlag; - - /** - * Constructor to initialize all parameters for Pcep Inter Layer Object. - * - * @param interLayerObjHeader inter layer object header - * @param bNFlag N flag - * @param bIFlag I flag - */ - public PcepInterLayerObjectVer1(PcepObjectHeader interLayerObjHeader, boolean bNFlag, boolean bIFlag) { - - this.interLayerObjHeader = interLayerObjHeader; - this.bNFlag = bNFlag; - this.bIFlag = bIFlag; - } - - /** - * Sets Object Header. - * - * @param obj object header - */ - public void setInterLayerObjHeader(PcepObjectHeader obj) { - this.interLayerObjHeader = obj; - } - - @Override - public void setbNFlag(boolean bNFlag) { - this.bNFlag = bNFlag; - } - - @Override - public void setbIFlag(boolean bIFlag) { - this.bIFlag = bIFlag; - } - - /** - * Returns object header. - * - * @return inter Layer Object Header - */ - public PcepObjectHeader getInterLayerObjHeader() { - return this.interLayerObjHeader; - } - - @Override - public boolean getbNFlag() { - return this.bNFlag; - } - - @Override - public boolean getbIFlag() { - return this.bIFlag; - } - - /** - * Reads channel buffer and returns object of PcepInterLayerObject. - * - * @param cb of type channel buffer - * @return object of PcepInterLayerObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepInterLayerObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader interLayerObjHeader; - boolean bNFlag; - boolean bIFlag; - - interLayerObjHeader = PcepObjectHeader.read(cb); - - //take only InterLayerObject buffer. - ChannelBuffer tempCb = cb.readBytes(interLayerObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - int iTemp = tempCb.readInt(); - bIFlag = ((iTemp & (byte) IFLAG_SHIFT_VALUE) == IFLAG_SHIFT_VALUE); - bNFlag = ((iTemp & (byte) NFLAG_SHIFT_VALUE) == NFLAG_SHIFT_VALUE); - - return new PcepInterLayerObjectVer1(interLayerObjHeader, bNFlag, bIFlag); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = interLayerObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" ObjectLength Index is " + objLenIndex); - } - - int iTemp = 0; - - if (bIFlag) { - iTemp = iTemp | (byte) IFLAG_SHIFT_VALUE; - } - if (bNFlag) { - iTemp = iTemp | (byte) NFLAG_SHIFT_VALUE; - } - - cb.writeInt(iTemp); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - interLayerObjHeader.setObjLen((short) length); - cb.setShort(objLenIndex, (short) length); - - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP inter layer object. - */ - public static class Builder implements PcepInterLayerObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsNFlagset = false; - private boolean bIsIFlagset = false; - - private PcepObjectHeader interLayerObjHeader; - private boolean bNFlag; - private boolean bIFlag; - - private boolean bIsPFlagSet = false; - private boolean bPFalg; - - private boolean bIsIFlagSet = false; - private boolean iFlag; - - @Override - public PcepInterLayerObject build() { - PcepObjectHeader interLayerObjHeader = this.bIsHeaderSet ? this.interLayerObjHeader - : DEFAULT_INTER_LAYER_OBJECT_HEADER; - - boolean bNFlag = this.bIsNFlagset ? this.bNFlag : DEFAULT_NFLAG; - boolean bIFlag = this.bIsIFlagset ? this.bIFlag : DEFAULT_IFLAG; - - if (bIsPFlagSet) { - interLayerObjHeader.setPFlag(bPFalg); - } - - if (bIsIFlagSet) { - interLayerObjHeader.setIFlag(iFlag); - } - return new PcepInterLayerObjectVer1(interLayerObjHeader, bNFlag, bIFlag); - } - - @Override - public PcepObjectHeader getInterLayerObjHeader() { - return this.interLayerObjHeader; - } - - @Override - public Builder setInterLayerObjHeader(PcepObjectHeader obj) { - this.interLayerObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public boolean getbNFlag() { - return this.bNFlag; - } - - @Override - public Builder setbNFlag(boolean value) { - this.bNFlag = value; - this.bIsNFlagset = true; - return this; - } - - @Override - public boolean getbIFlag() { - return this.bIFlag; - } - - @Override - public Builder setbIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagset = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFalg = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.iFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IFlag", bIFlag) - .add("NFlag", bNFlag).toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java deleted file mode 100644 index 78df1a93d3..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepIroObjectVer1.java +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepIroObject; -import org.onosproject.pcepio.types.IPv4SubObject; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP iro object. - */ -public class PcepIroObjectVer1 implements PcepIroObject { - - /* - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // (Sub-objects) // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - The IRO Object format - - Each IPV4 suboject - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |L| Type | Length | IPv4 address (4 bytes) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | IPv4 address (continued) | Prefix Length | Resvd | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - private static final Logger log = LoggerFactory.getLogger(PcepIroObjectVer1.class); - - public static final byte IRO_OBJ_TYPE = 1; - public static final byte IRO_OBJ_CLASS = 10; - public static final byte IRO_OBJECT_VERSION = 1; - public static final short IRO_OBJ_MINIMUM_LENGTH = 12; - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int YTYPE_SHIFT_VALUE = 0x7F; - - public static final PcepObjectHeader DEFAULT_IRO_OBJECT_HEADER = new PcepObjectHeader(IRO_OBJ_CLASS, IRO_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, IRO_OBJ_MINIMUM_LENGTH); - - private short iroObjType = 0; - private byte yLength; - private byte yPrefixLength; - private byte yResvd; - private PcepObjectHeader iroObjHeader; - private LinkedList llSubObjects = new LinkedList<>(); - - /** - * Default constructor. - */ - public PcepIroObjectVer1() { - this.iroObjHeader = null; - this.iroObjType = 0; - this.yLength = 0; - } - - /** - * Constructor to initialize member variables. - * - * @param iroObjHeader IRO object header - * @param llSubObjects list of sub-objects - */ - public PcepIroObjectVer1(PcepObjectHeader iroObjHeader, LinkedList llSubObjects) { - this.iroObjHeader = iroObjHeader; - this.llSubObjects = llSubObjects; - } - - /** - * Returns object header. - * - * @return iroObjHeader IRO object header - */ - public PcepObjectHeader getIroObjHeader() { - return this.iroObjHeader; - } - - /** - * Sets IRO Object Header. - * - * @param obj IRO object header - */ - public void setIroObjHeader(PcepObjectHeader obj) { - this.iroObjHeader = obj; - } - - @Override - public LinkedList getSubObjects() { - return this.llSubObjects; - } - - @Override - public void setSubObjects(LinkedList llSubObjects) { - this.llSubObjects = llSubObjects; - } - - /** - * Reads from channel buffer and return object of PcepIroObject. - * - * @param cb of type channel buffer - * @return object of PcepIroObject - * @throws PcepParseException while parsing from channel buffer - */ - public static PcepIroObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader iroObjHeader; - LinkedList llSubObjects; - - iroObjHeader = PcepObjectHeader.read(cb); - - //take only IroObject buffer. - ChannelBuffer tempCb = cb.readBytes(iroObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - llSubObjects = parseSubObjects(tempCb); - return new PcepIroObjectVer1(iroObjHeader, llSubObjects); - } - - /** - * Returns linked list of sub objects. - * - * @param cb of type channel buffer - * @return linked list of sub objects - * @throws PcepParseException while parsing subobjects from channel buffer - */ - protected static LinkedList parseSubObjects(ChannelBuffer cb) throws PcepParseException { - - LinkedList llSubObjects = new LinkedList<>(); - - while (0 < cb.readableBytes()) { - - //check the Type of the Subobjects. - byte yType = cb.readByte(); - yType = (byte) (yType & (YTYPE_SHIFT_VALUE)); - byte hLength = cb.readByte(); - - PcepValueType subObj; - switch (yType) { - - case IPv4SubObject.TYPE: - subObj = IPv4SubObject.read(cb); - break; - - default: - throw new PcepParseException("Invalid sub object. Type: " + (int) yType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - llSubObjects.add(subObj); - } - return llSubObjects; - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - //write Object header - int objStartIndex = cb.writerIndex(); - - int objLenIndex = iroObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" ObjectLength is " + objLenIndex); - } - - ListIterator listIterator = llSubObjects.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - //will be helpful during print(). - iroObjHeader.setObjLen((short) length); - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - cb.setShort(objLenIndex, (short) length); - objLenIndex = cb.writerIndex(); - return objLenIndex; - } - - /** - * Builder class for PCEP iro object. - */ - public static class Builder implements PcepIroObject.Builder { - - private boolean bIsHeaderSet = false; - - private PcepObjectHeader iroObjHeader; - LinkedList llSubObjects = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepIroObject build() { - - PcepObjectHeader iroObjHeader = this.bIsHeaderSet ? this.iroObjHeader : DEFAULT_IRO_OBJECT_HEADER; - - if (bIsPFlagSet) { - iroObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - iroObjHeader.setIFlag(bIFlag); - } - - return new PcepIroObjectVer1(iroObjHeader, this.llSubObjects); - } - - @Override - public PcepObjectHeader getIroObjHeader() { - return this.iroObjHeader; - } - - @Override - public Builder setIroObjHeader(PcepObjectHeader obj) { - this.iroObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public LinkedList getSubObjects() { - return this.llSubObjects; - } - - @Override - public Builder setSubObjects(LinkedList llSubObjects) { - this.llSubObjects = llSubObjects; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("IroObjectHeader", iroObjHeader) - .add("SubObjects", llSubObjects).toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java deleted file mode 100644 index ff930a43c3..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepKeepaliveMsgVer1.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepKeepaliveMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP keep alive message. - */ -class PcepKeepaliveMsgVer1 implements PcepKeepaliveMsg { - - /* - ::= - - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Ver | Flags | Message-Type | Message-Length | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - private static final Logger log = LoggerFactory.getLogger(PcepKeepaliveMsgVer1.class); - // Pcep version: 1 - public static final byte PACKET_VERSION = 1; - public static final int PACKET_MINIMUM_LENGTH = 4; - public static final PcepType MSG_TYPE = PcepType.KEEP_ALIVE; - - public static final PcepKeepaliveMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading PCEP keepalive message from channel buffer. - */ - static class Reader implements PcepMessageReader { - - @Override - public PcepKeepaliveMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Packet size is less than the minimum required length."); - } - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version: Expected=PcepVersion.KEEP_ALIVE_1(2), got=" + version); - } - // fixed value property type == 2 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type: Expected=PcepType.KEEP_ALIVE_1(2), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length: Expected to be >= " + PACKET_MINIMUM_LENGTH + ", was: " - + length); - } - return new PcepKeepaliveMsgVer1(); - } - } - - /** - * Default constructor. - */ - PcepKeepaliveMsgVer1() { - } - - /** - * Builder class for PCEP keepalive message. - */ - static class Builder implements PcepKeepaliveMsg.Builder { - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.KEEP_ALIVE; - } - - @Override - public PcepKeepaliveMsg build() { - return new PcepKeepaliveMsgVer1(); - } - } - - @Override - public void writeTo(ChannelBuffer cb) { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing the PCEP keepalive message to channel buffer. - */ - static class Writer implements PcepMessageWriter { - - @Override - public void write(ChannelBuffer cb, PcepKeepaliveMsgVer1 message) { - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // length is length of variable message, will be updated at the end - // Store the position of message - // length in buffer - int msgLenIndex = cb.writerIndex(); - cb.writeShort((short) 0); - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSObjectVer1.java deleted file mode 100644 index f902cc65a9..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSObjectVer1.java +++ /dev/null @@ -1,510 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.List; -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLSObject; -import org.onosproject.pcepio.types.LocalNodeDescriptorsTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.onosproject.pcepio.types.RemoteNodeDescriptorsTlv; -import org.onosproject.pcepio.types.RoutingUniverseTlv; -import org.onosproject.pcepio.types.LinkAttributesTlv; -import org.onosproject.pcepio.types.LinkDescriptorsTlv; -import org.onosproject.pcepio.types.NodeAttributesTlv; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP LS (link-state) object. - */ -public class PcepLSObjectVer1 implements PcepLSObject { - /* - * - reference: draft-dhodylee-pce-pcep-ls-01, section 9.2. - - Two Object-Type values are defined for the LS object: - - o LS Node: LS Object-Type is 1. - - o LS Link: LS Object-Type is 2. - - o LS IPv4 Topology Prefix: LS Object-Type is 3. - - o LS IPv6 Topology Prefix: LS Object-Type is 4. - - The format of the LS object body is as follows: - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Protocol-ID | Flag |R|S| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | LS-ID | - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - // TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - - private static final Logger log = LoggerFactory.getLogger(PcepLSObjectVer1.class); - - public static final byte LS_OBJ_TYPE_NODE_VALUE = 1; - public static final byte LS_OBJ_TYPE_LINK_VALUE = 2; - - public static final byte LS_OBJ_CLASS = (byte) 224; - public static final byte LS_OBJECT_VERSION = 1; - - // LS_OBJ_MINIMUM_LENGTH = LSObjectHeaderLen(4) + LSObjectLen(8) - public static final short LS_OBJ_MINIMUM_LENGTH = 12; - - // Signaled, all default values to be checked. - public static final byte DEFAULT_PROTOCOL_ID = 1; //IS-IS Level 1 - public static final boolean DEFAULT_R_FLAG = false; - public static final boolean DEFAULT_S_FLAG = false; - public static final int DEFAULT_LS_ID = 0; - - public static final int OBJECT_HEADER_LENGTH = 4; - public static final int RIGHT_SHIFT_ONE = 1; - public static final int RIGHT_FIRST_FLAG = 0x1; - public static final int FLAG_SET_R_FLAG = 0x2; - public static final int FLAG_SET_S_FLAG = 0x1; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - public static final int MINIMUM_TLV_HEADER_LENGTH = 4; - - public static final PcepObjectHeader DEFAULT_LS_OBJECT_HEADER = new PcepObjectHeader(LS_OBJ_CLASS, - LS_OBJ_TYPE_NODE_VALUE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - LS_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader lsObjHeader; - private byte protocolId; - // 2-flags - private boolean removeFlag; - private boolean syncFlag; - private long lsId; //link-state identifier - // Optional TLV - private List optionalTlvList; - - /** - * Constructor to initialize variables. - * - * @param lsObjHeader LS Object header - * @param protocolId Protocol-ID - * @param removeFlag R-flag - * @param syncFlag S-flag - * @param lsId LS-ID - * @param optionalTlvList linked list of Optional TLV - */ - public PcepLSObjectVer1(PcepObjectHeader lsObjHeader, byte protocolId, boolean removeFlag, - boolean syncFlag, long lsId, List optionalTlvList) { - - this.lsObjHeader = lsObjHeader; - this.protocolId = protocolId; - this.removeFlag = removeFlag; - this.syncFlag = syncFlag; - this.lsId = lsId; - this.optionalTlvList = optionalTlvList; - } - - @Override - public PcepObjectHeader getLSObjHeader() { - return this.lsObjHeader; - } - - @Override - public void setLSObjHeader(PcepObjectHeader obj) { - this.lsObjHeader = obj; - } - - @Override - public byte getProtocolId() { - return this.protocolId; - } - - @Override - public void setProtocolId(byte protId) { - this.protocolId = protId; - } - - @Override - public boolean getRemoveFlag() { - return this.removeFlag; - } - - @Override - public void setRemoveFlag(boolean removeFlag) { - this.removeFlag = removeFlag; - } - - @Override - public boolean getSyncFlag() { - return this.syncFlag; - } - - @Override - public void setSyncFlag(boolean syncFlag) { - this.syncFlag = syncFlag; - } - - @Override - public long getLSId() { - return this.lsId; - } - - @Override - public void setLSId(long lsId) { - this.lsId = lsId; - } - - @Override - public List getOptionalTlv() { - return this.optionalTlvList; - } - - @Override - public void setOptionalTlv(List optionalTlvList) { - this.optionalTlvList = optionalTlvList; - } - - /** - * Reads from the channel buffer and returns Object of PcepLSObject. - * - * @param cb of type channel buffer - * @return Object of PcepLSObject - * @throws PcepParseException if mandatory fields are missing - */ - public static PcepLSObject read(ChannelBuffer cb) throws PcepParseException { - log.debug("read"); - - PcepObjectHeader lsObjHeader; - byte protocolId; - // 2-flags - boolean removeFlag; - boolean syncFlag; - long lsId; - List optionalTlvList; - - lsObjHeader = PcepObjectHeader.read(cb); - - //take only LSObject buffer. - ChannelBuffer tempCb = cb.readBytes(lsObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - protocolId = tempCb.readByte(); - //ignore first two bytes of Flags - tempCb.readShort(); - - Integer iTemp = (int) tempCb.readByte(); //read 3rd byte Flag - syncFlag = (iTemp & FLAG_SET_S_FLAG) == FLAG_SET_S_FLAG; - removeFlag = (iTemp & FLAG_SET_R_FLAG) == FLAG_SET_R_FLAG; - - lsId = tempCb.readLong(); - - // parse optional TLV - optionalTlvList = parseOptionalTlv(tempCb); - - return new PcepLSObjectVer1(lsObjHeader, protocolId, removeFlag, syncFlag, lsId, optionalTlvList); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - int objLenIndex = lsObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("ObjectLength Index is " + objLenIndex); - } - - //write Protocol ID - cb.writeByte(this.protocolId); - - //write Flag - cb.writeShort(0); - - byte bTemp = 0; - if (syncFlag) { - bTemp = FLAG_SET_S_FLAG; - } - - if (removeFlag) { - bTemp = (byte) (bTemp | FLAG_SET_R_FLAG); - } - cb.writeByte(bTemp); - - //write LSId - cb.writeLong(lsId); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - - //will be helpful during print(). - lsObjHeader.setObjLen((short) length); - - cb.setShort(objLenIndex, (short) length); - - return cb.writerIndex(); - } - - /** - * Returns Linked list of PCEP Value Type. - * - * @param cb of channel buffer - * @return Linked list of PCEP Value Type - * @throws PcepParseException if mandatory fields are missing - */ - protected static List parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - List llOutOptionalTlv; - - llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_TLV_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - long lValue = 0; - - switch (hType) { - - case RoutingUniverseTlv.TYPE: - lValue = cb.readLong(); - tlv = new RoutingUniverseTlv(lValue); - break; - case LocalNodeDescriptorsTlv.TYPE: - tlv = LocalNodeDescriptorsTlv.read(cb, hLength); - break; - case RemoteNodeDescriptorsTlv.TYPE: - tlv = RemoteNodeDescriptorsTlv.read(cb, hLength); - break; - case LinkDescriptorsTlv.TYPE: - tlv = LinkDescriptorsTlv.read(cb, hLength); - break; - case NodeAttributesTlv.TYPE: - tlv = NodeAttributesTlv.read(cb, hLength); - break; - case LinkAttributesTlv.TYPE: - tlv = LinkAttributesTlv.read(cb, hLength); - break; - default: - throw new PcepParseException("Unsupported TLV type :" + hType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - llOutOptionalTlv.add(tlv); - } - - if (0 < cb.readableBytes()) { - - throw new PcepParseException("Optional Tlv parsing error. Extra bytes received."); - } - return llOutOptionalTlv; - } - - /** - * Returns the writer index. - * - * @param cb of type channel buffer - * @return the writer index. - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator listIterator = optionalTlvList.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("TLV is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - return cb.writerIndex(); - } - - /** - * Builder class for PCEP LS (link-state) object. - */ - public static class Builder implements PcepLSObject.Builder { - private boolean isHeaderSet = false; - private boolean isProtocolIdSet = false; - private boolean isRemoveFlagSet = false; - private boolean isSyncFlagSet = false; - private boolean isLSIdSet = false; - - private PcepObjectHeader lsObjHeader; - private byte protocolId; - private boolean removeFlag; - private boolean syncFlag; - private long lsId; - private List optionalTlvList = new LinkedList<>(); - - private boolean isProcRuleFlagSet = false; - private boolean procRuleFlag; //Processing rule flag - - private boolean isIgnoreFlagSet = false; - private boolean ignoreFlag; - - @Override - public PcepLSObject build() { - PcepObjectHeader lsObjHeader = this.isHeaderSet ? this.lsObjHeader : DEFAULT_LS_OBJECT_HEADER; - - byte protocolId = this.isProtocolIdSet ? this.protocolId : DEFAULT_PROTOCOL_ID; - boolean removeFlag = this.isRemoveFlagSet ? this.removeFlag : DEFAULT_R_FLAG; - boolean syncFlag = this.isSyncFlagSet ? this.syncFlag : DEFAULT_S_FLAG; - long lsId = this.isLSIdSet ? this.lsId : DEFAULT_LS_ID; - - if (isProcRuleFlagSet) { - lsObjHeader.setPFlag(procRuleFlag); - } - - if (isIgnoreFlagSet) { - lsObjHeader.setIFlag(ignoreFlag); - } - - return new PcepLSObjectVer1(lsObjHeader, protocolId, removeFlag, syncFlag, lsId, optionalTlvList); - - } - - @Override - public PcepObjectHeader getLSObjHeader() { - return this.lsObjHeader; - } - - @Override - public Builder setLSObjHeader(PcepObjectHeader obj) { - this.lsObjHeader = obj; - this.isHeaderSet = true; - return this; - } - - @Override - public byte getProtocolId() { - return this.protocolId; - } - - @Override - public Builder setProtocolId(byte protId) { - this.protocolId = protId; - this.isProtocolIdSet = true; - return this; - } - - @Override - public boolean getRemoveFlag() { - return this.removeFlag; - } - - @Override - public Builder setRemoveFlag(boolean removeFlag) { - this.removeFlag = removeFlag; - this.isRemoveFlagSet = true; - return this; - } - - @Override - public boolean getSyncFlag() { - return this.syncFlag; - } - - @Override - public Builder setSyncFlag(boolean syncFlag) { - this.syncFlag = syncFlag; - this.isSyncFlagSet = true; - return this; - } - - @Override - public long getLSId() { - return this.lsId; - } - - @Override - public Builder setLSId(long lsId) { - this.lsId = lsId; - this.isLSIdSet = true; - return this; - } - - @Override - public List getOptionalTlv() { - return this.optionalTlvList; - } - - @Override - public Builder setOptionalTlv(List optionalTlvList) { - this.optionalTlvList = optionalTlvList; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.procRuleFlag = value; - this.isProcRuleFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.ignoreFlag = value; - this.isIgnoreFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()).omitNullValues() - .add("ObjectHeader", lsObjHeader) - .add("ProtocolId", protocolId) - .add("RFlag", (removeFlag) ? 1 : 0) - .add("SFlag", (syncFlag) ? 1 : 0) - .add("LsId", lsId) - .add("OptionalTlv", optionalTlvList).toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSReportMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSReportMsgVer1.java deleted file mode 100644 index c466e5905c..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLSReportMsgVer1.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright 2016-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.List; -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepLSObject; -import org.onosproject.pcepio.protocol.PcepLSReportMsg; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP LS (link-state) Report Message. - */ -class PcepLSReportMsgVer1 implements PcepLSReportMsg { - - /* - * Ref : draft-dhodylee-pce-pcep-ls-01, section 8.1 - - ::= - - Where: - ::= [] - */ - - private static final Logger log = LoggerFactory.getLogger(PcepLSReportMsgVer1.class); - //PACKET_MINIMUM_LENGTH = CommonHeaderLen(4)+LSObjMinLen(12) - public static final int PACKET_MINIMUM_LENGTH = 16; - public static final PcepType MSG_TYPE = PcepType.LS_REPORT; - // - private List lsReportList; - - public static final PcepLSReportMsgVer1.Reader READER = new Reader(); - - /** - * Reader class for reading PCEP LS-Report message form channel buffer. - */ - static class Reader implements PcepMessageReader { - - List lsReportList; - - @Override - public PcepLSReportMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - return null; - } - - lsReportList = new LinkedList<>(); - - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PcepMessageVer1.PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.LS_REPORT(224), got=" + type); - } - - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException( - "Wrong length. Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: " + length); - } - - // Parse - parseLSReportList(cb); - - return new PcepLSReportMsgVer1(lsReportList); - } - - /** - * Parse ls-report-list. - * - * @param cb input Channel Buffer - * @throws PcepParseException when fails to parse LS-Report list. - */ - public void parseLSReportList(ChannelBuffer cb) throws PcepParseException { - // ::= [] - - while (0 < cb.readableBytes()) { - //store LS objects - if (!lsReportList.add(PcepLSObjectVer1.read(cb))) { - throw new PcepParseException("Failed to add LS object to LS-Report list"); - } - } - } - } - - /** - * Constructor to initialize LS-Report list. - * - * @param lsReportList list of PCEP LS Object - */ - PcepLSReportMsgVer1(List lsReportList) { - this.lsReportList = lsReportList; - } - - /** - * Builder class for PCEP LS-Report message. - */ - static class Builder implements PcepLSReportMsg.Builder { - // PCEP LS Report message fields - List lsReportList; - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.LS_REPORT; - } - - @Override - public PcepLSReportMsg build() { - return new PcepLSReportMsgVer1(this.lsReportList); - } - - @Override - public List getLSReportList() { - return this.lsReportList; - } - - @Override - public Builder setLSReportList(List ll) { - this.lsReportList = ll; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer bb) throws PcepParseException { - WRITER.write(bb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer class for writing PCEP LS-Report message to channel buffer. - */ - static class Writer implements PcepMessageWriter { - - @Override - public void write(ChannelBuffer bb, PcepLSReportMsgVer1 message) throws PcepParseException { - - int startIndex = bb.writerIndex(); - - // first 3 bits set to version - bb.writeByte((byte) (PcepMessageVer1.PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - - // message type - bb.writeByte(MSG_TYPE.getType()); - - // Length of the message will be updated at the end - // First write with 0s - int msgLenIndex = bb.writerIndex(); - bb.writeShort((short) 0); - - ListIterator listIterator = message.lsReportList.listIterator(); - - while (listIterator.hasNext()) { - PcepLSObject lsObj = listIterator.next(); - lsObj.write(bb); - } - - // update message length field - int length = bb.writerIndex() - startIndex; - bb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public List getLSReportList() { - return this.lsReportList; - } - - @Override - public void setLSReportList(List ll) { - this.lsReportList = ll; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("LSReportList", lsReportList) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java deleted file mode 100644 index 7e3e554d88..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelObjectVer1.java +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelObject; -import org.onosproject.pcepio.types.NexthopIPv4addressTlv; -import org.onosproject.pcepio.types.NexthopIPv6addressTlv; -import org.onosproject.pcepio.types.NexthopUnnumberedIPv4IDTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label object. - */ -public class PcepLabelObjectVer1 implements PcepLabelObject { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-03, section : 7.3. - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Reserved | Flags |O| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Label | Reserved | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLV // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - The LABEL Object format - */ - private static final Logger log = LoggerFactory.getLogger(PcepLspObjectVer1.class); - - public static final byte LABEL_OBJ_TYPE = 1; - public static final byte LABEL_OBJ_CLASS = (byte) 225; - public static final byte LABEL_OBJECT_VERSION = 1; - public static final byte OBJECT_HEADER_LENGTH = 4; - public static final boolean DEFAULT_OFLAG = false; - - // LSP_OBJ_MINIMUM_LENGTH = CommonHeaderLen(4)+ LspObjectHeaderLen(8) - public static final short LABEL_OBJ_MINIMUM_LENGTH = 12; - - public static final int OFLAG_SET = 1; - public static final int SHIFT_LABEL = 12; - public static final int OFLAG_RESET = 0; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - - static final PcepObjectHeader DEFAULT_LABEL_OBJECT_HEADER = new PcepObjectHeader(LABEL_OBJ_CLASS, LABEL_OBJ_TYPE, - PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, LABEL_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader labelObjHeader; - private boolean oBit; - private int label; - // Optional TLV - private LinkedList optionalTlv; - - /** - * Constructor to initialize parameters for PCEP label object. - * - * @param labelObjHeader label object header - * @param oBit O flag - * @param label label - * @param optionalTlv list of optional tlvs - */ - public PcepLabelObjectVer1(PcepObjectHeader labelObjHeader, boolean oBit, int label, - LinkedList optionalTlv) { - this.labelObjHeader = labelObjHeader; - this.oBit = oBit; - this.label = label; - this.optionalTlv = optionalTlv; - } - - @Override - public LinkedList getOptionalTlv() { - return this.optionalTlv; - } - - @Override - public void setOptionalTlv(LinkedList optionalTlv) { - this.optionalTlv = optionalTlv; - } - - @Override - public boolean getOFlag() { - return this.oBit; - } - - @Override - public void setOFlag(boolean value) { - this.oBit = value; - } - - @Override - public int getLabel() { - return this.label; - } - - @Override - public void setLabel(int value) { - this.label = value; - } - - /** - * Reads form channel buffer and returns objects of PcepLabelObject. - * - * @param cb of type channel buffer - * @return objects of PcepLabelObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader labelObjHeader; - - boolean oBit; - int label; - - // Optional TLV - LinkedList optionalTlv = new LinkedList<>(); - labelObjHeader = PcepObjectHeader.read(cb); - - //take only LspObject buffer. - ChannelBuffer tempCb = cb.readBytes(labelObjHeader.getObjLen() - OBJECT_HEADER_LENGTH); - - int iTemp = tempCb.readInt(); - oBit = (iTemp & (byte) OFLAG_SET) == OFLAG_SET; - iTemp = tempCb.readInt(); - label = (int) iTemp >> SHIFT_LABEL; - - // parse optional TLV - optionalTlv = parseOptionalTlv(tempCb); - return new PcepLabelObjectVer1(labelObjHeader, oBit, label, optionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - //write Object header - int objStartIndex = cb.writerIndex(); - int objLenIndex = labelObjHeader.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException(" ObjectLength Index is " + objLenIndex); - } - - byte oFlag; - - oFlag = (byte) ((oBit) ? OFLAG_SET : OFLAG_RESET); - cb.writeInt(oFlag); - int temp = label; - temp = (int) label << SHIFT_LABEL; - cb.writeInt(temp); - - // Add optional TLV - packOptionalTlv(cb); - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - - //will be helpful during print(). - labelObjHeader.setObjLen((short) length); - cb.setShort(objLenIndex, (short) length); - return cb.writerIndex(); - } - - /** - * Returns list of optional tlvs. - * - * @param cb of type channel buffer - * @return list of optional tlvs. - * @throws PcepParseException when fails to parse list of optional tlvs - */ - protected static LinkedList parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - short hType = cb.readShort(); - short hLength = cb.readShort(); - int iValue = 0; - - switch (hType) { - - case NexthopIPv4addressTlv.TYPE: - iValue = cb.readInt(); - tlv = new NexthopIPv4addressTlv(iValue); - break; - case NexthopIPv6addressTlv.TYPE: - byte[] ipv6Value = new byte[NexthopIPv6addressTlv.VALUE_LENGTH]; - cb.readBytes(ipv6Value, 0, NexthopIPv6addressTlv.VALUE_LENGTH); - tlv = new NexthopIPv6addressTlv(ipv6Value); - break; - case NexthopUnnumberedIPv4IDTlv.TYPE: - tlv = NexthopUnnumberedIPv4IDTlv.read(cb); - break; - default: - throw new PcepParseException("Unsupported TLV type :" + hType); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - - llOutOptionalTlv.add(tlv); - } - - if (0 < cb.readableBytes()) { - - throw new PcepParseException("Optional Tlv parsing error. Extra bytes received."); - } - return llOutOptionalTlv; - } - - /** - * Returns the writer index. - * - * @param cb of channel buffer. - * @return writer index - */ - protected int packOptionalTlv(ChannelBuffer cb) { - - ListIterator listIterator = optionalTlv.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("tlv is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - } - return cb.writerIndex(); - } - - /** - * Builder class for PCEP label object. - */ - public static class Builder implements PcepLabelObject.Builder { - - private boolean bIsHeaderSet = false; - private boolean bIsOFlagSet = false; - private boolean bIsLabelSet = false; - - private PcepObjectHeader labelObjHeader; - private boolean oBit; - private int label; - - LinkedList optionalTlv = new LinkedList<>(); - - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - - @Override - public PcepLabelObject build() throws PcepParseException { - PcepObjectHeader labelObjHeader = this.bIsHeaderSet ? this.labelObjHeader : DEFAULT_LABEL_OBJECT_HEADER; - boolean oBit = this.bIsOFlagSet ? this.oBit : DEFAULT_OFLAG; - - if (!this.bIsLabelSet) { - throw new PcepParseException(" Label NOT Set while building PcepLabelObject."); - } - if (bIsPFlagSet) { - labelObjHeader.setPFlag(bPFlag); - } - if (bIsIFlagSet) { - labelObjHeader.setIFlag(bIFlag); - } - return new PcepLabelObjectVer1(labelObjHeader, oBit, this.label, this.optionalTlv); - } - - @Override - public PcepObjectHeader getLabelObjHeader() { - return this.labelObjHeader; - } - - @Override - public Builder setLabelObjHeader(PcepObjectHeader obj) { - this.labelObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public boolean getOFlag() { - return this.oBit; - } - - @Override - public Builder setOFlag(boolean value) { - this.oBit = value; - this.bIsOFlagSet = true; - return this; - } - - @Override - public int getLabel() { - return this.label; - } - - @Override - public Builder setLabel(int value) { - this.label = value; - this.bIsLabelSet = true; - return this; - } - - @Override - public LinkedList getOptionalTlv() { - return this.optionalTlv; - } - - @Override - public Builder setOptionalTlv(LinkedList optionalTlv) { - this.optionalTlv = optionalTlv; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("oBit", oBit) - .add("label", label) - .add("optionalTlv", optionalTlv) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java deleted file mode 100644 index ea62367037..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeObjectVer1.java +++ /dev/null @@ -1,377 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelRangeObject; -import org.onosproject.pcepio.types.PathSetupTypeTlv; -import org.onosproject.pcepio.types.PcepObjectHeader; -import org.onosproject.pcepio.types.PcepValueType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label range object. - */ -public class PcepLabelRangeObjectVer1 implements PcepLabelRangeObject { - - /* - * ref : draft-zhao-pce-pcep-extension-for-pce-controller-01, section : 7.2 - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | label type | range size | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | label base | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - // Optional TLVs // - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - LABEL-RANGE Object - */ - private static final Logger log = LoggerFactory.getLogger(PcepLabelRangeObjectVer1.class); - - public static final byte LABEL_RANGE_OBJ_TYPE = 1; - public static final byte LABEL_RANGE_OBJ_CLASS = 60; //to be defined - public static final byte LABEL_RANGE_OBJECT_VERSION = 1; - public static final short LABEL_RANGE_OBJ_MINIMUM_LENGTH = 12; - public static final int MINIMUM_COMMON_HEADER_LENGTH = 4; - //P flag and I flag must be set to 0 - static final PcepObjectHeader DEFAULT_LABELRANGE_OBJECT_HEADER = new PcepObjectHeader(LABEL_RANGE_OBJ_CLASS, - LABEL_RANGE_OBJ_TYPE, PcepObjectHeader.REQ_OBJ_OPTIONAL_PROCESS, PcepObjectHeader.RSP_OBJ_PROCESSED, - LABEL_RANGE_OBJ_MINIMUM_LENGTH); - - private PcepObjectHeader labelRangeObjHeader; - private byte labelType; - private int rangeSize; - private int labelBase; - //Optional TLV - private LinkedList llOptionalTlv; - - /** - * Constructor to initialize parameters for PCEP label range object. - * - * @param labelRangeObjHeader label range object header - * @param labelType label type - * @param rangeSize range size - * @param labelBase label base - * @param llOptionalTlv list of optional tlvs - */ - public PcepLabelRangeObjectVer1(PcepObjectHeader labelRangeObjHeader, byte labelType, int rangeSize, int labelBase, - LinkedList llOptionalTlv) { - this.labelRangeObjHeader = labelRangeObjHeader; - this.labelType = labelType; - this.rangeSize = rangeSize; - this.llOptionalTlv = llOptionalTlv; - this.labelBase = labelBase; - } - - @Override - public void setLabelRangeObjHeader(PcepObjectHeader obj) { - this.labelRangeObjHeader = obj; - } - - @Override - public void setLabelType(byte labelType) { - this.labelType = labelType; - } - - @Override - public void setRangeSize(int rangeSize) { - this.rangeSize = rangeSize; - } - - @Override - public void setLabelBase(int labelBase) { - this.labelBase = labelBase; - } - - @Override - public PcepObjectHeader getLabelRangeObjHeader() { - return this.labelRangeObjHeader; - } - - @Override - public byte getLabelType() { - return this.labelType; - } - - @Override - public int getRangeSize() { - return this.rangeSize; - } - - @Override - public int getLabelBase() { - return this.labelBase; - } - - /** - * Reads from the channel buffer and returns object of PcepLabelRangeObject. - * - * @param cb of type channel buffer - * @return object of PcepLabelRangeObject - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelRangeObject read(ChannelBuffer cb) throws PcepParseException { - - PcepObjectHeader labelRangeObjHeader; - byte labelType; - int rangeSize; - int labelBase; - - LinkedList llOptionalTlv = new LinkedList<>(); - - labelRangeObjHeader = PcepObjectHeader.read(cb); - - //take only LabelRangeObject buffer. - ChannelBuffer tempCb = cb.readBytes(labelRangeObjHeader.getObjLen() - MINIMUM_COMMON_HEADER_LENGTH); - int temp = 0; - temp = tempCb.readInt(); - rangeSize = temp & 0x00FFFFFF; - labelType = (byte) (temp >> 24); - labelBase = tempCb.readInt(); - llOptionalTlv = parseOptionalTlv(tempCb); - return new PcepLabelRangeObjectVer1(labelRangeObjHeader, labelType, rangeSize, labelBase, llOptionalTlv); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - - int objStartIndex = cb.writerIndex(); - - //write common header - int objLenIndex = labelRangeObjHeader.write(cb); - int temp = 0; - temp = labelType; - temp = temp << 24; - temp = temp | rangeSize; - cb.writeInt(temp); - - // Add optional TLV - if (!packOptionalTlv(cb)) { - throw new PcepParseException("Error while writing Optional tlv."); - } - - //now write LabelRange Object Length - cb.setShort(objLenIndex, (short) (cb.writerIndex() - objStartIndex)); - return cb.writerIndex() - objStartIndex; - } - - /** - * Returns list of optional tlvs. - * - * @param cb of type channle buffer - * @return list of optional tlvs - * @throws PcepParseException whne fails to parse list of optional tlvs - */ - public static LinkedList parseOptionalTlv(ChannelBuffer cb) throws PcepParseException { - - LinkedList llOutOptionalTlv = new LinkedList<>(); - - while (MINIMUM_COMMON_HEADER_LENGTH <= cb.readableBytes()) { - - PcepValueType tlv; - int iValue; - short hType = cb.readShort(); - short hLength = cb.readShort(); - - switch (hType) { - - case PathSetupTypeTlv.TYPE: - iValue = cb.readInt(); - tlv = new PathSetupTypeTlv(iValue); - break; - - default: - throw new PcepParseException("Unsupported TLV in LabelRange Object."); - } - - // Check for the padding - int pad = hLength % 4; - if (0 < pad) { - pad = 4 - pad; - if (pad <= cb.readableBytes()) { - cb.skipBytes(pad); - } - } - llOutOptionalTlv.add(tlv); - } - return llOutOptionalTlv; - } - - /** - * Pack optional tlvs. - * - * @param cb of channel buffer - * @return true - */ - protected boolean packOptionalTlv(ChannelBuffer cb) { - - ListIterator listIterator = llOptionalTlv.listIterator(); - - while (listIterator.hasNext()) { - PcepValueType tlv = listIterator.next(); - - if (tlv == null) { - log.debug("tlv is null from OptionalTlv list"); - continue; - } - tlv.write(cb); - - // need to take care of padding - int pad = tlv.getLength() % 4; - if (0 != pad) { - pad = 4 - pad; - for (int i = 0; i < pad; ++i) { - cb.writeByte((byte) 0); - } - } - } - return true; - } - - /** - * Builder class for PCEP label range object. - */ - public static class Builder implements PcepLabelRangeObject.Builder { - private boolean bIsHeaderSet = false; - private boolean bIsLabelType = false; - private boolean bIsRangeSize = false; - private boolean bIsLabelBase = false; - - byte labelType; - int rangeSize; - int labelBase; - private boolean bIsPFlagSet = false; - private boolean bPFlag; - - private boolean bIsIFlagSet = false; - private boolean bIFlag; - private PcepObjectHeader labelRangeObjHeader; - - LinkedList llOptionalTlv = new LinkedList<>(); - - @Override - public PcepLabelRangeObject build() throws PcepParseException { - PcepObjectHeader labelRangeObjHeader = this.bIsHeaderSet ? this.labelRangeObjHeader - : DEFAULT_LABELRANGE_OBJECT_HEADER; - - if (!this.bIsLabelType) { - throw new PcepParseException("LabelType NOT Set while building label range object."); - } - - if (!this.bIsRangeSize) { - throw new PcepParseException("RangeSize NOT Set while building label range object."); - } - - if (!this.bIsLabelBase) { - throw new PcepParseException("LabelBase NOT Set while building label range object."); - } - - if (bIsPFlagSet) { - labelRangeObjHeader.setPFlag(bPFlag); - } - - if (bIsIFlagSet) { - labelRangeObjHeader.setIFlag(bIFlag); - } - return new PcepLabelRangeObjectVer1(labelRangeObjHeader, this.labelType, this.rangeSize, this.labelBase, - this.llOptionalTlv); - } - - @Override - public PcepObjectHeader getLabelRangeObjHeader() { - return this.labelRangeObjHeader; - } - - @Override - public Builder setLabelRangeObjHeader(PcepObjectHeader obj) { - this.labelRangeObjHeader = obj; - this.bIsHeaderSet = true; - return this; - } - - @Override - public byte getLabelType() { - return this.labelType; - } - - @Override - public Builder setLabelType(byte labelType) { - this.labelType = labelType; - this.bIsLabelType = true; - return this; - } - - @Override - public int getRangeSize() { - return this.rangeSize; - } - - @Override - public Builder setRangeSize(int rangeSize) { - this.rangeSize = rangeSize; - this.bIsRangeSize = true; - return this; - } - - @Override - public int getLabelBase() { - return this.labelBase; - } - - @Override - public Builder setLabelBase(int labelBase) { - this.labelBase = labelBase; - this.bIsLabelBase = true; - return this; - } - - @Override - public Builder setPFlag(boolean value) { - this.bPFlag = value; - this.bIsPFlagSet = true; - return this; - } - - @Override - public Builder setIFlag(boolean value) { - this.bIFlag = value; - this.bIsIFlagSet = true; - return this; - } - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("LabelType", labelType) - .add("rangeSize", rangeSize) - .add("labelBase", labelBase) - .add("optionalTlvList", llOptionalTlv) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java deleted file mode 100644 index b5789bed3c..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeResvMsgVer1.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelRange; -import org.onosproject.pcepio.protocol.PcepLabelRangeResvMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP label range reserve message. - */ -class PcepLabelRangeResvMsgVer1 implements PcepLabelRangeResvMsg { - - // Pcep version: 1 - - /* - The format of a PCLRResv message is as follows: - - PCLRResv Message>::= - - Where: - - ::= - - - Where - ::=[] - */ - private static final Logger log = LoggerFactory.getLogger(PcepLabelRangeResvMsgVer1.class); - - public static final byte PACKET_VERSION = 1; - // LabelRangeResvMsgMinLength = COMMON-HEADER(4)+SrpObjMinLentgh(12)+LABEL-RANGE-MIN-LENGTH(12) - public static final int PACKET_MINIMUM_LENGTH = 28; - public static final PcepType MSG_TYPE = PcepType.LABEL_RANGE_RESERV; - // - PcepLabelRange labelRange; - - public static final PcepLabelRangeResvMsgVer1.Reader READER = new Reader(); - - /** - * Reader reads LabelRangeResv Message from the channel. - */ - static class Reader implements PcepMessageReader { - - @Override - public PcepLabelRangeResvMsg readFrom(ChannelBuffer cb) throws PcepParseException { - - if (cb.readableBytes() < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Channel buffer has less readable bytes than Packet minimum length."); - } - // fixed value property version == 1 - byte version = cb.readByte(); - version = (byte) (version >> PcepMessageVer1.SHIFT_FLAG); - if (version != PACKET_VERSION) { - throw new PcepParseException("Wrong version. Expected=PcepVersion.PCEP_1(1), got=" + version); - } - // fixed value property type == 15 - byte type = cb.readByte(); - if (type != MSG_TYPE.getType()) { - throw new PcepParseException("Wrong type. Expected=PcepType.LABEL_RANGE_RESERV(15), got=" + type); - } - short length = cb.readShort(); - if (length < PACKET_MINIMUM_LENGTH) { - throw new PcepParseException("Wrong length.Expected to be >= " + PACKET_MINIMUM_LENGTH + ", is: " - + length); - } - // parse - PcepLabelRange labelRange = PcepLabelRangeVer1.read(cb); - return new PcepLabelRangeResvMsgVer1(labelRange); - } - } - - /** - * Constructor to initialize PCEP label range. - * - * @param labelRange PCEP label range - */ - PcepLabelRangeResvMsgVer1(PcepLabelRange labelRange) { - this.labelRange = labelRange; - } - - /** - * Builder class for PCEP label range reserve message. - */ - static class Builder implements PcepLabelRangeResvMsg.Builder { - - PcepLabelRange labelRange = new PcepLabelRangeVer1(); - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return PcepType.LABEL_RANGE_RESERV; - } - - @Override - public PcepLabelRangeResvMsg build() { - return new PcepLabelRangeResvMsgVer1(this.labelRange); - } - - @Override - public PcepLabelRange getLabelRange() { - return this.labelRange; - } - - @Override - public Builder setLabelRange(PcepLabelRange labelRange) { - this.labelRange = labelRange; - return this; - } - } - - @Override - public void writeTo(ChannelBuffer cb) throws PcepParseException { - WRITER.write(cb, this); - } - - static final Writer WRITER = new Writer(); - - /** - * Writer writes LabelRangeResv Message to the channel. - */ - static class Writer implements PcepMessageWriter { - - @Override - public void write(ChannelBuffer cb, PcepLabelRangeResvMsgVer1 message) throws PcepParseException { - - int startIndex = cb.writerIndex(); - // first 3 bits set to version - cb.writeByte((byte) (PACKET_VERSION << PcepMessageVer1.SHIFT_FLAG)); - // message type - cb.writeByte(MSG_TYPE.getType()); - // Length will be set after calculating length, but currently set it as 0. - int msgLenIndex = cb.writerIndex(); - - cb.writeShort((short) 0); - //write Label Range - message.labelRange.write(cb); - - // update message length field - int length = cb.writerIndex() - startIndex; - cb.setShort(msgLenIndex, (short) length); - } - } - - @Override - public PcepVersion getVersion() { - return PcepVersion.PCEP_1; - } - - @Override - public PcepType getType() { - return MSG_TYPE; - } - - @Override - public PcepLabelRange getLabelRange() { - return this.labelRange; - } - - @Override - public void setLabelRange(PcepLabelRange lr) { - this.labelRange = lr; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("labelRange", labelRange) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java deleted file mode 100644 index 83ec8aae40..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelRangeVer1.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelRange; -import org.onosproject.pcepio.protocol.PcepLabelRangeObject; -import org.onosproject.pcepio.protocol.PcepSrpObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP Label Range. - */ -public class PcepLabelRangeVer1 implements PcepLabelRange { - - private static final Logger log = LoggerFactory.getLogger(PcepLabelRangeVer1.class); - - /* - ::= - - Where - ::=[] - */ - - // PCEP SRP Object - private PcepSrpObject srpObject; - // of type PcepLabelRangeObject. - private LinkedList llLabelRangeList; - - /** - * Default Constructor. - */ - public PcepLabelRangeVer1() { - srpObject = null; - llLabelRangeList = null; - } - - /** - * Constructor to initialize objects. - * - * @param srpObj PCEP Srp object. - * @param llLabelRangeList list of PcepLabelRangeObject. - */ - PcepLabelRangeVer1(PcepSrpObject srpObj, LinkedList llLabelRangeList) { - this.srpObject = srpObj; - this.llLabelRangeList = llLabelRangeList; - } - - @Override - public PcepSrpObject getSrpObject() { - return srpObject; - } - - @Override - public void setSrpObject(PcepSrpObject srpObject) { - this.srpObject = srpObject; - - } - - @Override - public LinkedList getLabelRangeList() { - return llLabelRangeList; - } - - @Override - public void setLabelRangeList(LinkedList ll) { - this.llLabelRangeList = ll; - } - - /** - * Reads channel buffer and returns object of PcepLabelRange. - * - * @param cb of type channel buffer. - * @return object of PcepLabelRange - * @throws PcepParseException when fails to read from channel buffer - */ - public static PcepLabelRange read(ChannelBuffer cb) throws PcepParseException { - - //parse and store SRP mandatory object - PcepSrpObject srpObj = null; - srpObj = PcepSrpObjectVer1.read(cb); - if (srpObj == null) { - throw new PcepParseException("Exception while parsing srp object"); - } - - LinkedList llLabelRangeList = new LinkedList<>(); - boolean bFoundLabelRangeObj = false; - while (0 < cb.readableBytes()) { - //parse and store - PcepLabelRangeObject lrObj; - lrObj = PcepLabelRangeObjectVer1.read(cb); - if (lrObj == null) { - throw new PcepParseException("Exception while parsing label range object"); - } else { - llLabelRangeList.add(lrObj); - bFoundLabelRangeObj = true; - } - } - - if (!bFoundLabelRangeObj) { - throw new PcepParseException("At least one LABEL-RANGE MUST be present."); - } - return new PcepLabelRangeVer1(srpObj, llLabelRangeList); - } - - @Override - public int write(ChannelBuffer cb) throws PcepParseException { - //write Object header - int objStartIndex = cb.writerIndex(); - - //write - int objLenIndex = srpObject.write(cb); - - if (objLenIndex <= 0) { - throw new PcepParseException("bjectLength is " + objLenIndex); - } - - //write - ListIterator listIterator = llLabelRangeList.listIterator(); - while (listIterator.hasNext()) { - listIterator.next().write(cb); - } - - //Update object length now - int length = cb.writerIndex() - objStartIndex; - // As per RFC the length of object should be - // multiples of 4 - int pad = length % 4; - if (pad != 0) { - pad = 4 - pad; - for (int i = 0; i < pad; i++) { - cb.writeByte((byte) 0); - } - length = length + pad; - } - cb.setShort(objLenIndex, (short) length); - return length; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(getClass()) - .add("srpObject", srpObject) - .add("LabelRangeList", llLabelRangeList) - .toString(); - } -} diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java deleted file mode 100644 index 0651c0be74..0000000000 --- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/ver1/PcepLabelUpdateMsgVer1.java +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright 2015-present Open Networking Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onosproject.pcepio.protocol.ver1; - -import java.util.LinkedList; -import java.util.ListIterator; - -import org.jboss.netty.buffer.ChannelBuffer; -import org.onosproject.pcepio.exceptions.PcepParseException; -import org.onosproject.pcepio.protocol.PcepLabelUpdate; -import org.onosproject.pcepio.protocol.PcepLabelUpdateMsg; -import org.onosproject.pcepio.protocol.PcepMessageReader; -import org.onosproject.pcepio.protocol.PcepMessageWriter; -import org.onosproject.pcepio.protocol.PcepType; -import org.onosproject.pcepio.protocol.PcepVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.MoreObjects; - -/** - * Provides PCEP lable update message. - */ -class PcepLabelUpdateMsgVer1 implements PcepLabelUpdateMsg { - - // Pcep version: 1 - - /* - The format of the PCLabelUpd message: - - ::= - - Where: - - ::= - [] - ::= (|) - - Where: - ::= - - - - ::= -