From d6811710c66ef9a01a9fc2d75f7eba9ab602b0a6 Mon Sep 17 00:00:00 2001 From: Thomas Vachuska Date: Wed, 29 Apr 2015 21:37:04 -0700 Subject: [PATCH] Turned netconf providers into an app and made NetconfDeviceProvider register its configs with ComponentConfigService. More cleanup needs to be done to avoid log messages with "+" and some other stylistic issues. Change-Id: Ic1be1ce6d3340f5a6284ba5514d0052e01bdaaed --- features/features.xml | 6 - providers/netconf/app/app.xml | 24 ++ providers/netconf/app/features.xml | 27 ++ providers/netconf/app/pom.xml | 43 +++ providers/netconf/device/pom.xml | 256 +++++++++--------- .../device/impl/NetconfDeviceProvider.java | 27 +- providers/netconf/pom.xml | 1 + 7 files changed, 238 insertions(+), 146 deletions(-) create mode 100644 providers/netconf/app/app.xml create mode 100644 providers/netconf/app/features.xml create mode 100644 providers/netconf/app/pom.xml diff --git a/features/features.xml b/features/features.xml index 7d23fb5b59..594dc6968b 100644 --- a/features/features.xml +++ b/features/features.xml @@ -130,10 +130,4 @@ mvn:org.onosproject/onos-core-trivial/@ONOS-VERSION - - onos-api - mvn:org.onosproject/onos-netconf-provider-device/@ONOS-VERSION - - diff --git a/providers/netconf/app/app.xml b/providers/netconf/app/app.xml new file mode 100644 index 0000000000..f2d4762765 --- /dev/null +++ b/providers/netconf/app/app.xml @@ -0,0 +1,24 @@ + + + + ${project.description} + + mvn:${project.groupId}/onos-netconf-provider-device/${project.version} + + diff --git a/providers/netconf/app/features.xml b/providers/netconf/app/features.xml new file mode 100644 index 0000000000..6a3d1a2c5a --- /dev/null +++ b/providers/netconf/app/features.xml @@ -0,0 +1,27 @@ + + + + mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features + + onos-api + mvn:io.netty/netty/3.9.2.Final + mvn:${project.groupId}/onos-netconf-provider-device/${project.version} + + + + diff --git a/providers/netconf/app/pom.xml b/providers/netconf/app/pom.xml new file mode 100644 index 0000000000..cd307b23f6 --- /dev/null +++ b/providers/netconf/app/pom.xml @@ -0,0 +1,43 @@ + + + + 4.0.0 + + + org.onosproject + onos-netconf-providers + 1.2.0-SNAPSHOT + ../pom.xml + + + onos-netconf + pom + + NetConf protocol southbound providers + + + + org.onosproject + onos-netconf-provider-device + ${project.version} + + + + + diff --git a/providers/netconf/device/pom.xml b/providers/netconf/device/pom.xml index 192d8e3780..0ebe079a7f 100644 --- a/providers/netconf/device/pom.xml +++ b/providers/netconf/device/pom.xml @@ -14,134 +14,138 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - 4.0.0 + + 4.0.0 - + + org.onosproject + onos-netconf-providers + 1.2.0-SNAPSHOT + ../pom.xml + + + onos-netconf-provider-device + bundle + + ONOS Netconf protocol device provider + + + + org.osgi + org.osgi.compendium + + + ch.ethz.ganymed + ganymed-ssh2 + 262 + + + org.onosproject - onos-netconf-providers - 1.2.0-SNAPSHOT - ../pom.xml - + jnc + 1.0 + + + org.jdom + jdom2 + 2.0.5 + + + jaxen + jaxen + 1.1.4 + true + + - onos-netconf-provider-device - bundle - - ONOS Netconf protocol device provider - - - - org.apache.maven.plugins - maven-shade-plugin - 2.3 - - - - com.tailf:JNC - - com/tailf/jnc/** - - - - ch.ethz.ganymed:ganymed-ssh2 - - ch/ethz/ssh2/** - - - - org.jdom:jdom2 - - org/jdom2/** - - - - - - - package - - shade - - - - - - org.apache.felix - maven-scr-plugin - - - org.apache.felix - maven-bundle-plugin - - - - com.tailf.jnc, - ch.ethz.ssh2, - ch.ethz.ssh2.auth, - ch.ethz.ssh2.channel, - ch.ethz.ssh2.crypto, - ch.ethz.ssh2.crypto.cipher, - ch.ethz.ssh2.crypto.dh, - ch.ethz.ssh2.crypto.digest, - ch.ethz.ssh2.log, - ch.ethz.ssh2.packets, - ch.ethz.ssh2.server, - ch.ethz.ssh2.sftp, - ch.ethz.ssh2.signature, - ch.ethz.ssh2.transport, - ch.ethz.ssh2.util, - org.jdom2, - org.jdom2.input, - org.jdom2.output, - org.jdom2.adapters, - org.jdom2.filter, - org.jdom2.internal, - org.jdom2.located, - org.jdom2.transform, - org.jdom2.util, - org.jdom2.xpath, - org.jdom2.input.sax, - org.jdom2.input.stax, - org.jdom2.output.support, - org.jdom2.xpath.jaxen, - org.jdom2.xpath.util - - - - - - org.onosproject - onos-maven-plugin - - - - - - org.osgi - org.osgi.compendium - - - ch.ethz.ganymed - ganymed-ssh2 - 262 - - - + + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + + + com.tailf:JNC + + com/tailf/jnc/** + + + + ch.ethz.ganymed:ganymed-ssh2 + + ch/ethz/ssh2/** + + + + org.jdom:jdom2 + + org/jdom2/** + + + + + + + package + + shade + + + + + + org.apache.felix + maven-scr-plugin + + + org.apache.felix + maven-bundle-plugin + + + + com.tailf.jnc, + ch.ethz.ssh2, + ch.ethz.ssh2.auth, + ch.ethz.ssh2.channel, + ch.ethz.ssh2.crypto, + ch.ethz.ssh2.crypto.cipher, + ch.ethz.ssh2.crypto.dh, + ch.ethz.ssh2.crypto.digest, + ch.ethz.ssh2.log, + ch.ethz.ssh2.packets, + ch.ethz.ssh2.server, + ch.ethz.ssh2.sftp, + ch.ethz.ssh2.signature, + ch.ethz.ssh2.transport, + ch.ethz.ssh2.util, + org.jdom2, + org.jdom2.input, + org.jdom2.output, + org.jdom2.adapters, + org.jdom2.filter, + org.jdom2.internal, + org.jdom2.located, + org.jdom2.transform, + org.jdom2.util, + org.jdom2.xpath, + org.jdom2.input.sax, + org.jdom2.input.stax, + org.jdom2.output.support, + org.jdom2.xpath.jaxen, + org.jdom2.xpath.util + + + + + org.onosproject - jnc - 1.0 - - - org.jdom - jdom2 - 2.0.5 - - - jaxen - jaxen - 1.1.4 - true - - + onos-maven-plugin + + + + diff --git a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java index 9336adb9d4..5fb6ead6e8 100644 --- a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java +++ b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java @@ -39,6 +39,7 @@ import org.apache.felix.scr.annotations.Property; import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.ReferenceCardinality; import org.onlab.packet.ChassisId; +import org.onosproject.cfg.ComponentConfigService; import org.onosproject.cluster.ClusterService; import org.onosproject.net.Device; import org.onosproject.net.DeviceId; @@ -78,9 +79,11 @@ public class NetconfDeviceProvider extends AbstractProvider @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected ClusterService clusterService; + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected ComponentConfigService cfgService; + private ExecutorService deviceBuilder = Executors - .newFixedThreadPool(1, - groupedThreads("onos/netconf", "device-creator")); + .newFixedThreadPool(1, groupedThreads("onos/netconf", "device-creator")); // Delay between events in ms. private static final int EVENTINTERVAL = 5; @@ -90,7 +93,7 @@ public class NetconfDeviceProvider extends AbstractProvider @Property(name = "devConfigs", value = "", label = "Instance-specific configurations") private String devConfigs = null; - @Property(name = "devPasswords", value = "", label = "Instace-specific password") + @Property(name = "devPasswords", value = "", label = "Instance-specific password") private String devPasswords = null; /** @@ -102,13 +105,15 @@ public class NetconfDeviceProvider extends AbstractProvider @Activate public void activate(ComponentContext context) { - log.info("Netconf Device Provider Started"); + cfgService.registerProperties(getClass()); providerService = providerRegistry.register(this); modified(context); + log.info("Started"); } @Deactivate public void deactivate(ComponentContext context) { + cfgService.unregisterProperties(getClass(), false); try { for (Entry deviceEntry : netconfDeviceMap .entrySet()) { @@ -134,13 +139,9 @@ public class NetconfDeviceProvider extends AbstractProvider } Dictionary properties = context.getProperties(); String deviceCfgValue = get(properties, "devConfigs"); - log.info("Getting Device configuration from cfg file: " - + deviceCfgValue); + log.info("Settings: devConfigs={}", deviceCfgValue); if (!isNullOrEmpty(deviceCfgValue)) { addOrRemoveDevicesConfig(deviceCfgValue); - } else { - log.info("Device Configuration value receiviced from the property 'devConfigs': " - + deviceCfgValue + ", is not valid"); } } @@ -148,11 +149,9 @@ public class NetconfDeviceProvider extends AbstractProvider for (String deviceEntry : deviceConfig.split(",")) { NetconfDevice device = processDeviceEntry(deviceEntry); if (device != null) { - log.info("Device Detail: " + "username: " - + device.getUsername() + ", host: " - + device.getSshHost() + ", port: " - + device.getSshPort() + " device state: " - + device.getDeviceState().name()); + log.info("Device Detail: username: {}, host={}, port={}, state={}", + device.getUsername(), device.getSshHost(), + device.getSshPort(), device.getDeviceState().name()); if (device.isActive()) { deviceBuilder.submit(new DeviceCreator(device, true)); } else { diff --git a/providers/netconf/pom.xml b/providers/netconf/pom.xml index b351d46658..511fe0460a 100644 --- a/providers/netconf/pom.xml +++ b/providers/netconf/pom.xml @@ -33,6 +33,7 @@ device + app