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/netcfghost | |
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/netcfghost')
4 files changed, 0 insertions, 413 deletions
diff --git a/framework/src/onos/providers/netcfghost/pom.xml b/framework/src/onos/providers/netcfghost/pom.xml deleted file mode 100644 index 9d106921..00000000 --- a/framework/src/onos/providers/netcfghost/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright 2014 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/xsd/maven-4.0.0.xsd"> - <parent> - <artifactId>onos-providers</artifactId> - <groupId>org.onosproject</groupId> - <version>1.4.0-rc1</version> - </parent> - <modelVersion>4.0.0</modelVersion> - - <artifactId>onos-netcfg-host-provider</artifactId> - <packaging>bundle</packaging> - - <description> - Host provider that uses network config service to discover hosts. - </description> - <url>http://onosproject.org</url> - - <properties> - <onos.app.name>org.onosproject.netcfghostprovider</onos.app.name> - <onos.app.origin>ON.Lab</onos.app.origin> - </properties> - - <dependencies> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-api</artifactId> - </dependency> - - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-osgi</artifactId> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.11</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - -</project> diff --git a/framework/src/onos/providers/netcfghost/src/main/java/org/onosproject/provider/netcfghost/NetworkConfigHostProvider.java b/framework/src/onos/providers/netcfghost/src/main/java/org/onosproject/provider/netcfghost/NetworkConfigHostProvider.java deleted file mode 100644 index 767cfb7f..00000000 --- a/framework/src/onos/providers/netcfghost/src/main/java/org/onosproject/provider/netcfghost/NetworkConfigHostProvider.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright 2014-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.netcfghost; - -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.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.CoreService; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.Host; -import org.onosproject.net.HostId; -import org.onosproject.net.HostLocation; -import org.onosproject.net.config.NetworkConfigEvent; -import org.onosproject.net.config.NetworkConfigListener; -import org.onosproject.net.config.NetworkConfigRegistry; -import org.onosproject.net.config.basics.BasicHostConfig; -import org.onosproject.net.host.DefaultHostDescription; -import org.onosproject.net.host.HostDescription; -import org.onosproject.net.host.HostProvider; -import org.onosproject.net.host.HostProviderRegistry; -import org.onosproject.net.host.HostProviderService; -import org.onosproject.net.provider.AbstractProvider; -import org.onosproject.net.provider.ProviderId; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.util.Set; - -/** - * Host provider that uses network config service to discover hosts. - */ -@Component(immediate = true) -public class NetworkConfigHostProvider extends AbstractProvider implements HostProvider { - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CoreService coreService; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected HostProviderRegistry providerRegistry; - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected NetworkConfigRegistry networkConfigRegistry; - - private static final String APP_NAME = "org.onosproject.provider.netcfghost"; - private ApplicationId appId; - protected HostProviderService providerService; - - private final Logger log = LoggerFactory.getLogger(getClass()); - private final InternalNetworkConfigListener networkConfigListener = - new InternalNetworkConfigListener(); - - /** - * Creates an network config host location provider. - */ - public NetworkConfigHostProvider() { - super(new ProviderId("host", APP_NAME)); - } - - @Activate - protected void activate() { - appId = coreService.registerApplication(APP_NAME); - providerService = providerRegistry.register(this); - networkConfigRegistry.addListener(networkConfigListener); - readInitialConfig(); - log.info("Started"); - } - - @Deactivate - protected void deactivate() { - networkConfigRegistry.removeListener(networkConfigListener); - providerRegistry.unregister(this); - providerService = null; - log.info("Stopped"); - } - - @Override - public void triggerProbe(Host host) { - /* - * Note: In CORD deployment, we assume that all hosts are configured. - * Therefore no probe is required. - */ - } - - /** - * Adds host information. - * IP information will be appended if host exists. - * - * @param mac MAC address of the host - * @param vlan VLAN ID of the host - * @param hloc Location of the host - * @param ips Set of IP addresses of the host - */ - protected void addHost(MacAddress mac, VlanId vlan, HostLocation hloc, Set<IpAddress> ips) { - HostId hid = HostId.hostId(mac, vlan); - HostDescription desc = new DefaultHostDescription(mac, vlan, hloc, ips); - providerService.hostDetected(hid, desc, false); - } - - /** - * Updates host information. - * IP information will be replaced if host exists. - * - * @param mac MAC address of the host - * @param vlan VLAN ID of the host - * @param hloc Location of the host - * @param ips Set of IP addresses of the host - */ - protected void updateHost(MacAddress mac, VlanId vlan, HostLocation hloc, Set<IpAddress> ips) { - HostId hid = HostId.hostId(mac, vlan); - HostDescription desc = new DefaultHostDescription(mac, vlan, hloc, ips); - providerService.hostDetected(hid, desc, true); - } - - /** - * Removes host information. - * - * @param mac MAC address of the host - * @param vlan VLAN ID of the host - */ - protected void removeHost(MacAddress mac, VlanId vlan) { - HostId hid = HostId.hostId(mac, vlan); - providerService.hostVanished(hid); - } - - private void readInitialConfig() { - networkConfigRegistry.getSubjects(HostId.class).forEach(hostId -> { - MacAddress mac = hostId.mac(); - VlanId vlan = hostId.vlanId(); - BasicHostConfig hostConfig = - networkConfigRegistry.getConfig(hostId, BasicHostConfig.class); - Set<IpAddress> ipAddresses = hostConfig.ipAddresses(); - ConnectPoint location = hostConfig.location(); - HostLocation hloc = new HostLocation(location, System.currentTimeMillis()); - addHost(mac, vlan, hloc, ipAddresses); - }); - } - - private class InternalNetworkConfigListener implements NetworkConfigListener { - @Override - public void event(NetworkConfigEvent event) { - // Do not process non-host, register and unregister events - if (!event.configClass().equals(BasicHostConfig.class) || - event.type() == NetworkConfigEvent.Type.CONFIG_REGISTERED || - event.type() == NetworkConfigEvent.Type.CONFIG_UNREGISTERED) { - return; - } - - HostId hostId = (HostId) event.subject(); - MacAddress mac = hostId.mac(); - VlanId vlan = hostId.vlanId(); - BasicHostConfig hostConfig = - networkConfigRegistry.getConfig(hostId, BasicHostConfig.class); - Set<IpAddress> ipAddresses = null; - HostLocation hloc = null; - - // Note: There will be no config presented in the CONFIG_REMOVE case - if (hostConfig != null) { - ipAddresses = hostConfig.ipAddresses(); - ConnectPoint location = hostConfig.location(); - hloc = new HostLocation(location, System.currentTimeMillis()); - } - - switch (event.type()) { - case CONFIG_ADDED: - addHost(mac, vlan, hloc, ipAddresses); - break; - case CONFIG_UPDATED: - updateHost(mac, vlan, hloc, ipAddresses); - break; - case CONFIG_REMOVED: - removeHost(mac, vlan); - break; - default: - break; - } - } - } -} diff --git a/framework/src/onos/providers/netcfghost/src/main/java/org/onosproject/provider/netcfghost/package-info.java b/framework/src/onos/providers/netcfghost/src/main/java/org/onosproject/provider/netcfghost/package-info.java deleted file mode 100644 index a56b9a80..00000000 --- a/framework/src/onos/providers/netcfghost/src/main/java/org/onosproject/provider/netcfghost/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2014-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. - */ - -/** - * Host provider that uses network config service to discover hosts. - */ -package org.onosproject.provider.netcfghost; diff --git a/framework/src/onos/providers/netcfghost/src/test/java/org/onosproject/provider/netcfghost/NetworkConfigHostProviderTest.java b/framework/src/onos/providers/netcfghost/src/test/java/org/onosproject/provider/netcfghost/NetworkConfigHostProviderTest.java deleted file mode 100644 index a4f057cf..00000000 --- a/framework/src/onos/providers/netcfghost/src/test/java/org/onosproject/provider/netcfghost/NetworkConfigHostProviderTest.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2014-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.netcfghost; - -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.packet.VlanId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.HostId; -import org.onosproject.net.HostLocation; -import org.onosproject.net.PortNumber; -import org.onosproject.net.host.DefaultHostDescription; -import org.onosproject.net.host.HostDescription; -import org.onosproject.net.host.HostProvider; -import org.onosproject.net.host.HostProviderService; -import org.onosproject.net.provider.AbstractProviderService; - -import java.util.HashSet; -import java.util.Set; - -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertThat; - -/** - * Set of tests of the host location provider for CORD. - */ -public class NetworkConfigHostProviderTest { - private NetworkConfigHostProvider provider = new NetworkConfigHostProvider(); - private MockHostProviderService providerService = new MockHostProviderService(provider); - - private MacAddress mac = MacAddress.valueOf("c0:ff:ee:c0:ff:ee"); - private VlanId vlan = VlanId.vlanId(VlanId.UNTAGGED); - private DeviceId deviceId = DeviceId.deviceId("of:0000000000000001"); - private PortNumber port = PortNumber.portNumber(5); - private HostLocation hloc = new HostLocation(deviceId, port, 100); - private Set<IpAddress> ips = new HashSet<>(); - private HostId hostId = HostId.hostId(mac, vlan); - private HostDescription hostDescription; - - @Before - public void setUp() { - provider.providerService = providerService; - - // Initialize test variables - ips.add(IpAddress.valueOf("10.0.0.1")); - ips.add(IpAddress.valueOf("192.168.0.1")); - hostDescription = new DefaultHostDescription(mac, vlan, hloc, ips); - } - - @Test - public void testAddHost() throws Exception { - provider.addHost(mac, vlan, hloc, ips); - assertThat(providerService.hostId, is(hostId)); - assertThat(providerService.hostDescription, is(hostDescription)); - assertThat(providerService.event, is("hostDetected")); - providerService.clear(); - } - - @Test - public void testUpdateHost() throws Exception { - provider.updateHost(mac, vlan, hloc, ips); - assertThat(providerService.hostId, is(hostId)); - assertThat(providerService.hostDescription, is(hostDescription)); - assertThat(providerService.event, is("hostDetected")); - providerService.clear(); - } - - @Test - public void testRemoveHost() throws Exception { - provider.removeHost(mac, vlan); - assertThat(providerService.hostId, is(hostId)); - assertNull(providerService.hostDescription); - assertThat(providerService.event, is("hostVanished")); - providerService.clear(); - } - - /** - * Mock HostProviderService. - */ - private class MockHostProviderService - extends AbstractProviderService<HostProvider> - implements HostProviderService { - private HostId hostId = null; - private HostDescription hostDescription = null; - private String event = null; - - public MockHostProviderService(HostProvider provider) { - super(provider); - } - - @Override - public void hostDetected(HostId hostId, HostDescription hostDescription, boolean replaceIps) { - this.hostId = hostId; - this.hostDescription = hostDescription; - this.event = "hostDetected"; - } - - @Override - public void hostVanished(HostId hostId) { - this.hostId = hostId; - this.event = "hostVanished"; - } - - @Override - public void removeIpFromHost(HostId hostId, IpAddress ipAddress) { - // Note: This method is never used. - } - - public void clear() { - this.hostId = null; - this.hostDescription = null; - this.event = null; - } - } -} |