aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/providers/netconf/device
diff options
context:
space:
mode:
authorCNlucius <lukai1@huawei.com>2016-09-13 11:40:12 +0800
committerCNlucius <lukai1@huawei.com>2016-09-13 11:41:53 +0800
commitb731e2f1dd0972409b136aebc7b463dd72c9cfad (patch)
tree5107d7d80c19ad8076c2c97c2b5ef8d1cf3ab903 /framework/src/onos/providers/netconf/device
parentee93993458266114c29271a481ef9ce7ce621b2a (diff)
ONOSFW-171
O/S-SFC-ONOS scenario documentation Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365 Signed-off-by: CNlucius <lukai1@huawei.com>
Diffstat (limited to 'framework/src/onos/providers/netconf/device')
-rw-r--r--framework/src/onos/providers/netconf/device/pom.xml65
-rw-r--r--framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java222
-rw-r--r--framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfProviderConfig.java93
-rw-r--r--framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/package-info.java20
4 files changed, 0 insertions, 400 deletions
diff --git a/framework/src/onos/providers/netconf/device/pom.xml b/framework/src/onos/providers/netconf/device/pom.xml
deleted file mode 100644
index 9319a509..00000000
--- a/framework/src/onos/providers/netconf/device/pom.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Copyright 2015 Open Networking Laboratory
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-netconf-providers</artifactId>
- <version>1.4.0-rc1</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>onos-netconf-provider-device</artifactId>
- <packaging>bundle</packaging>
-
- <description>ONOS Netconf protocol device provider</description>
-
- <dependencies>
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onlab-junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-netconf-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-netconf-ctl</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-scr-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
deleted file mode 100644
index d12c6474..00000000
--- a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.provider.netconf.device.impl;
-
-import com.google.common.base.Preconditions;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.onlab.packet.ChassisId;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.incubator.net.config.basics.ConfigException;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.MastershipRole;
-import org.onosproject.net.SparseAnnotations;
-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.DefaultDeviceDescription;
-import org.onosproject.net.device.DeviceDescription;
-import org.onosproject.net.device.DeviceProvider;
-import org.onosproject.net.device.DeviceProviderRegistry;
-import org.onosproject.net.device.DeviceProviderService;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.netconf.NetconfController;
-import org.onosproject.netconf.NetconfDevice;
-import org.onosproject.netconf.NetconfDeviceInfo;
-import org.onosproject.netconf.NetconfDeviceListener;
-import org.slf4j.Logger;
-
-import java.util.Map;
-
-import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Provider which uses an NETCONF controller to detect device.
- */
-@Component(immediate = true)
-public class NetconfDeviceProvider extends AbstractProvider
- implements DeviceProvider {
- private final Logger log = getLogger(getClass());
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected DeviceProviderRegistry providerRegistry;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected DeviceService deviceService;
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected NetconfController controller; //where is initiated ?
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected NetworkConfigRegistry cfgService;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected CoreService coreService;
-
-
- private DeviceProviderService providerService;
- private NetconfDeviceListener innerNodeListener = new InnerNetconfDeviceListener();
- protected static final String ISNOTNULL = "NetconfDeviceInfo is not null";
- private static final String UNKNOWN = "unknown";
-
- private final ConfigFactory factory =
- new ConfigFactory<ApplicationId, NetconfProviderConfig>(APP_SUBJECT_FACTORY,
- NetconfProviderConfig.class,
- "devices",
- true) {
- @Override
- public NetconfProviderConfig createConfig() {
- return new NetconfProviderConfig();
- }
- };
- private final NetworkConfigListener cfgLister = new InternalNetworkConfigListener();
- private ApplicationId appId;
-
-
- @Activate
- public void activate() {
- providerService = providerRegistry.register(this);
- cfgService.registerConfigFactory(factory);
- cfgService.addListener(cfgLister);
- controller.addDeviceListener(innerNodeListener);
- connectExistingDevices();
- log.info("Started");
- }
-
-
- @Deactivate
- public void deactivate() {
- providerRegistry.unregister(this);
- providerService = null;
- cfgService.unregisterConfigFactory(factory);
- log.info("Stopped");
- }
-
- public NetconfDeviceProvider() {
- super(new ProviderId("netconf", "org.onosproject.netconf.provider.device"));
- }
-
- @Override
- public void triggerProbe(DeviceId deviceId) {
- // TODO: This will be implemented later.
- log.info("Triggering probe on device {}", deviceId);
- }
-
- @Override
- public void roleChanged(DeviceId deviceId, MastershipRole newRole) {
- // TODO: This will be implemented later.
- }
-
- @Override
- public boolean isReachable(DeviceId deviceId) {
- Map<DeviceId, NetconfDevice> devices = controller.getDevicesMap();
-
- NetconfDevice netconfDevice = null;
- for (DeviceId key : devices.keySet()) {
- if (key.equals(deviceId)) {
- netconfDevice = controller.getDevicesMap().get(key);
- }
- }
- if (netconfDevice == null) {
- log.warn("BAD REQUEST: the requested device id: "
- + deviceId.toString()
- + " is not associated to any NETCONF Device");
- return false;
- }
- return netconfDevice.isActive();
- }
-
- private class InnerNetconfDeviceListener implements NetconfDeviceListener {
-
- @Override
- public void deviceAdded(NetconfDeviceInfo nodeId) {
- Preconditions.checkNotNull(nodeId, ISNOTNULL);
- DeviceId deviceId = nodeId.getDeviceId();
- //TODO filter for not netconf devices
- //Netconf configuration object
- ChassisId cid = new ChassisId();
- String ipAddress = nodeId.ip().toString();
- SparseAnnotations annotations = DefaultAnnotations.builder()
- .set("ipaddress", ipAddress).build();
- DeviceDescription deviceDescription = new DefaultDeviceDescription(
- deviceId.uri(),
- Device.Type.SWITCH,
- UNKNOWN, UNKNOWN,
- UNKNOWN, UNKNOWN,
- cid,
- annotations);
- providerService.deviceConnected(deviceId, deviceDescription);
-
- }
-
- @Override
- public void deviceRemoved(NetconfDeviceInfo nodeId) {
- Preconditions.checkNotNull(nodeId, ISNOTNULL);
- DeviceId deviceId = nodeId.getDeviceId();
- providerService.deviceDisconnected(deviceId);
-
- }
- }
-
- private void connectExistingDevices() {
- //TODO consolidate
- appId = coreService.registerApplication("org.onosproject.netconf");
- connectDevices();
- }
-
- private void connectDevices() {
- NetconfProviderConfig cfg = cfgService.getConfig(appId, NetconfProviderConfig.class);
- if (cfg != null) {
- log.info("cfg {}", cfg);
- try {
- cfg.getDevicesAddresses().stream().forEach(addr -> controller
- .connectDevice(new NetconfDeviceInfo(addr.name(),
- addr.password(),
- addr.ip(),
- addr.port())));
- } catch (ConfigException e) {
- log.error("Cannot read config error " + e);
- }
- }
- }
-
- private class InternalNetworkConfigListener implements NetworkConfigListener {
-
-
- @Override
- public void event(NetworkConfigEvent event) {
- connectDevices();
- }
-
- @Override
- public boolean isRelevant(NetworkConfigEvent event) {
- //TODO refactor
- return event.configClass().equals(NetconfProviderConfig.class) &&
- (event.type() == NetworkConfigEvent.Type.CONFIG_ADDED ||
- event.type() == NetworkConfigEvent.Type.CONFIG_UPDATED);
- }
- }
-}
diff --git a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfProviderConfig.java b/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfProviderConfig.java
deleted file mode 100644
index 7ae116eb..00000000
--- a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfProviderConfig.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.provider.netconf.device.impl;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.common.annotations.Beta;
-import com.google.common.collect.Sets;
-import org.onlab.packet.IpAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.incubator.net.config.basics.ConfigException;
-import org.onosproject.net.config.Config;
-
-import java.util.Set;
-
-/**
- * Configuration for Netconf provider.
- */
-@Beta
-public class NetconfProviderConfig extends Config<ApplicationId> {
-
- public static final String CONFIG_VALUE_ERROR = "Error parsing config value";
- private static final String IP = "ip";
- private static final int DEFAULT_TCP_PORT = 830;
- private static final String PORT = "port";
- private static final String NAME = "name";
- private static final String PASSWORD = "password";
-
- public Set<NetconfDeviceAddress> getDevicesAddresses() throws ConfigException {
- Set<NetconfDeviceAddress> devicesAddresses = Sets.newHashSet();
-
- try {
- for (JsonNode node : array) {
- String ip = node.path(IP).asText();
- IpAddress ipAddr = ip.isEmpty() ? null : IpAddress.valueOf(ip);
- int port = node.path(PORT).asInt(DEFAULT_TCP_PORT);
- String name = node.path(NAME).asText();
- String password = node.path(PASSWORD).asText();
- devicesAddresses.add(new NetconfDeviceAddress(ipAddr, port, name, password));
-
- }
- } catch (IllegalArgumentException e) {
- throw new ConfigException(CONFIG_VALUE_ERROR, e);
- }
-
- return devicesAddresses;
- }
-
- public class NetconfDeviceAddress {
- private final IpAddress ip;
- private final int port;
- private final String name;
- private final String password;
-
- public NetconfDeviceAddress(IpAddress ip, int port, String name, String password) {
- this.ip = ip;
- this.port = port;
- this.name = name;
- this.password = password;
- }
-
- public IpAddress ip() {
- return ip;
- }
-
- public int port() {
- return port;
- }
-
- public String name() {
- return name;
- }
-
- public String password() {
- return password;
- }
- }
-
-
-}
diff --git a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/package-info.java b/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/package-info.java
deleted file mode 100644
index 583aeaa2..00000000
--- a/framework/src/onos/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Provider that uses Netconf capability request as a means of infrastructure device discovery.
- */
-package org.onosproject.provider.netconf.device.impl; \ No newline at end of file