diff options
author | CNlucius <lukai1@huawei.com> | 2016-09-13 11:40:12 +0800 |
---|---|---|
committer | CNlucius <lukai1@huawei.com> | 2016-09-13 11:41:53 +0800 |
commit | b731e2f1dd0972409b136aebc7b463dd72c9cfad (patch) | |
tree | 5107d7d80c19ad8076c2c97c2b5ef8d1cf3ab903 /framework/src/onos/providers/netconf | |
parent | ee93993458266114c29271a481ef9ce7ce621b2a (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')
8 files changed, 0 insertions, 551 deletions
diff --git a/framework/src/onos/providers/netconf/app/app.xml b/framework/src/onos/providers/netconf/app/app.xml deleted file mode 100644 index d920d240..00000000 --- a/framework/src/onos/providers/netconf/app/app.xml +++ /dev/null @@ -1,31 +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. - --> -<app name="org.onosproject.netconf" origin="ON.Lab" version="${project.version}" - featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" - features="${project.artifactId}"> - <description>${project.description}</description> - - <artifact>mvn:${project.groupId}/onos-netconf-rfc/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-netconf-api/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-netconf-ctl/${project.version}</artifact> - <artifact>mvn:${project.groupId}/onos-drivers/${project.version}</artifact> - - <artifact>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</artifact> - - <!--<artifact>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</artifact>--> - <!-- Question: should there be the jnc stuff here? Or is it just for testing --> -</app> diff --git a/framework/src/onos/providers/netconf/app/features.xml b/framework/src/onos/providers/netconf/app/features.xml deleted file mode 100644 index e032f4da..00000000 --- a/framework/src/onos/providers/netconf/app/features.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<!-- - ~ 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. - --> -<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${project.version}"> - <feature name="${project.artifactId}" version="${project.version}" - description="${project.description}"> - <feature>onos-api</feature> - <bundle>mvn:io.netty/netty/3.9.2.Final</bundle> - <bundle>mvn:${project.groupId}/onos-netconf-api/${project.version}</bundle> - <bundle>mvn:${project.groupId}/onos-netconf-ctl/${project.version}</bundle> - - <bundle>mvn:${project.groupId}/onos-netconf-provider-device/${project.version}</bundle> - <!-- Question: should there be the jnc stuff here? Or is it just for testing --> - </feature> -</features> - diff --git a/framework/src/onos/providers/netconf/app/pom.xml b/framework/src/onos/providers/netconf/app/pom.xml deleted file mode 100644 index 41fbd1f5..00000000 --- a/framework/src/onos/providers/netconf/app/pom.xml +++ /dev/null @@ -1,43 +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-app</artifactId> - <packaging>pom</packaging> - - <description>NetConf protocol southbound providers</description> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-netconf-provider-device</artifactId> - <version>${project.version}</version> - </dependency> - <!-- Add other dependencies here as more bundles are added to the app --> - </dependencies> - -</project> 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 diff --git a/framework/src/onos/providers/netconf/pom.xml b/framework/src/onos/providers/netconf/pom.xml deleted file mode 100644 index ca044a2d..00000000 --- a/framework/src/onos/providers/netconf/pom.xml +++ /dev/null @@ -1,48 +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-providers</artifactId> - <version>1.4.0-rc1</version> - <relativePath>../pom.xml</relativePath> - </parent> - - <artifactId>onos-netconf-providers</artifactId> - <packaging>pom</packaging> - - <description>ONOS Netconf protocol adapters</description> - - <modules> - <module>device</module> - <module>app</module> - </modules> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-api</artifactId> - <classifier>tests</classifier> - <scope>test</scope> - </dependency> - </dependencies> - -</project> |