From 0e6c41057abc93f76b75370b7a9a09443d7fc6ec Mon Sep 17 00:00:00 2001 From: Zhigang Ji Date: Fri, 20 Nov 2015 15:12:32 +0800 Subject: [PATCH] Add initial NEMO CLI renderer structure. Change-Id: Ie511715b77aae700241f981206f15e888e392274 Signed-off-by: Zhigang Ji --- nemo-artifacts/pom.xml | 5 + nemo-features/pom.xml | 12 ++ nemo-features/src/main/features/features.xml | 2 + nemo-renderers/cli-renderer/pom.xml | 162 ++++++++++++++++++ .../nemo/renderer/cli/CliRenderer.java | 40 +++++ .../impl/rev151119/CliRendererModule.java | 33 ++++ .../rev151119/CliRendererModuleFactory.java | 13 ++ .../etc/opendaylight/karaf/config.xml | 33 ++++ .../src/main/yang/cli-renderer-impl.yang | 62 +++++++ .../src/main/yang/cli-renderer.yang | 22 +++ nemo-renderers/pom.xml | 1 + pom.xml | 2 +- 12 files changed, 386 insertions(+), 1 deletion(-) create mode 100644 nemo-renderers/cli-renderer/pom.xml create mode 100644 nemo-renderers/cli-renderer/src/main/java/org/opendaylight/nemo/renderer/cli/CliRenderer.java create mode 100644 nemo-renderers/cli-renderer/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nemo/cli/renderer/impl/rev151119/CliRendererModule.java create mode 100644 nemo-renderers/cli-renderer/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nemo/cli/renderer/impl/rev151119/CliRendererModuleFactory.java create mode 100644 nemo-renderers/cli-renderer/src/main/resources/etc/opendaylight/karaf/config.xml create mode 100644 nemo-renderers/cli-renderer/src/main/yang/cli-renderer-impl.yang create mode 100644 nemo-renderers/cli-renderer/src/main/yang/cli-renderer.yang diff --git a/nemo-artifacts/pom.xml b/nemo-artifacts/pom.xml index a78d80d..522ac31 100644 --- a/nemo-artifacts/pom.xml +++ b/nemo-artifacts/pom.xml @@ -32,6 +32,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html openflow-renderer ${project.version} + + ${project.groupId} + cli-renderer + ${project.version} + ${project.groupId} nemo-ui diff --git a/nemo-features/pom.xml b/nemo-features/pom.xml index 8f32032..44bd72b 100644 --- a/nemo-features/pom.xml +++ b/nemo-features/pom.xml @@ -169,6 +169,18 @@ and is available at http://www.eclipse.org/legal/epl-v10.html external-resource json + + ${project.groupId} + cli-renderer + ${project.version} + + + ${project.groupId} + cli-renderer + ${project.version} + config + xml + ${project.groupId} nemo-ui diff --git a/nemo-features/src/main/features/features.xml b/nemo-features/src/main/features/features.xml index 2cfb0c4..f28721a 100644 --- a/nemo-features/src/main/features/features.xml +++ b/nemo-features/src/main/features/features.xml @@ -43,6 +43,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html odl-nemo-engine-rest + mvn:org.opendaylight.nemo/cli-renderer/${project.version} + mvn:org.opendaylight.nemo/cli-renderer/${project.version}/xml/config odl-dlux-core diff --git a/nemo-renderers/cli-renderer/pom.xml b/nemo-renderers/cli-renderer/pom.xml new file mode 100644 index 0000000..9ec4d15 --- /dev/null +++ b/nemo-renderers/cli-renderer/pom.xml @@ -0,0 +1,162 @@ + + + + 4.0.0 + + + org.opendaylight.controller + config-parent + 0.4.0-SNAPSHOT + + + + org.opendaylight.nemo + cli-renderer + 1.0.0-SNAPSHOT + bundle + ${project.artifactId} + + + 0.7.2.201409121644 + target/code-coverage/jacoco.exec + target/code-coverage/jacoco-it.exec + + + + + ${project.groupId} + nemo-api + ${project.version} + + + ${project.groupId} + nemo-impl + ${project.version} + + + junit + junit + + + org.mockito + mockito-all + test + + + org.slf4j + slf4j-simple + test + + + + + + + + org.jacoco + jacoco-maven-plugin + ${jacoco.version} + + + + + + org.opendaylight.yangtools + yang-maven-plugin + + + + generate-sources + + + src/main/yang + + + + org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl + + + ${salGeneratorPath} + + + + true + + + + + + org.opendaylight.mdsal + maven-sal-api-gen-plugin + ${yangtools.version} + jar + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + + attach-artifact + + package + + + + ${project.build.directory}/classes/etc/opendaylight/karaf/config.xml + xml + config + + + + + + + + org.jacoco + jacoco-maven-plugin + + + org.opendaylight.nemo.* + + + + + pre-unit-test + + prepare-agent + + + ${sonar.jacoco.reportPath} + + + + post-unit-test + + report + + + ${sonar.jacoco.reportPath} + + + + + + + + + scm:git:ssh://git.opendaylight.org:29418/nemo.git + scm:git:ssh://git.opendaylight.org:29418/nemo.git + https://wiki.opendaylight.org/view/NEMO:Main + HEAD + + \ No newline at end of file diff --git a/nemo-renderers/cli-renderer/src/main/java/org/opendaylight/nemo/renderer/cli/CliRenderer.java b/nemo-renderers/cli-renderer/src/main/java/org/opendaylight/nemo/renderer/cli/CliRenderer.java new file mode 100644 index 0000000..5734b83 --- /dev/null +++ b/nemo-renderers/cli-renderer/src/main/java/org/opendaylight/nemo/renderer/cli/CliRenderer.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.nemo.renderer.cli; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * NEMO renderer that uses CLI to implement an overlay network + * using traditional network devices. + * + * @author Zhigang Ji + */ +public class CliRenderer implements AutoCloseable { + private static final Logger LOG = LoggerFactory.getLogger(CliRenderer.class); + + private final DataBroker dataBroker; + + public CliRenderer(DataBroker dataBroker) { + super(); + + this.dataBroker = dataBroker; + + LOG.info("Initialized the NEMO CLI renderer."); + + return; + } + + @Override + public void close() throws Exception { + // TODO + } +} diff --git a/nemo-renderers/cli-renderer/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nemo/cli/renderer/impl/rev151119/CliRendererModule.java b/nemo-renderers/cli-renderer/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nemo/cli/renderer/impl/rev151119/CliRendererModule.java new file mode 100644 index 0000000..9ebf945 --- /dev/null +++ b/nemo-renderers/cli-renderer/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nemo/cli/renderer/impl/rev151119/CliRendererModule.java @@ -0,0 +1,33 @@ +package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.cli.renderer.impl.rev151119; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.nemo.renderer.cli.CliRenderer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CliRendererModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.cli.renderer.impl.rev151119.AbstractCliRendererModule { + private static final Logger LOG = LoggerFactory.getLogger(CliRendererModule.class); + + public CliRendererModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public CliRendererModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, CliRendererModule oldModule, AutoCloseable oldInstance) { + super(identifier, dependencyResolver, oldModule, oldInstance); + } + + @Override + public void customValidation() { + // add custom validation form module attributes here. + } + + @Override + public AutoCloseable createInstance() { + DataBroker dataBroker = getDataBrokerDependency(); + + // TODO + + return new CliRenderer(dataBroker); + } + +} diff --git a/nemo-renderers/cli-renderer/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nemo/cli/renderer/impl/rev151119/CliRendererModuleFactory.java b/nemo-renderers/cli-renderer/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nemo/cli/renderer/impl/rev151119/CliRendererModuleFactory.java new file mode 100644 index 0000000..5748d81 --- /dev/null +++ b/nemo-renderers/cli-renderer/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/nemo/cli/renderer/impl/rev151119/CliRendererModuleFactory.java @@ -0,0 +1,13 @@ +/* +* Generated file +* +* Generated from: yang module name: cli-renderer-impl yang module local name: cli-renderer-impl +* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator +* Generated at: Fri Nov 20 01:24:34 CST 2015 +* +* Do not modify this file unless it is present under src/main directory +*/ +package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.cli.renderer.impl.rev151119; +public class CliRendererModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.cli.renderer.impl.rev151119.AbstractCliRendererModuleFactory { + +} diff --git a/nemo-renderers/cli-renderer/src/main/resources/etc/opendaylight/karaf/config.xml b/nemo-renderers/cli-renderer/src/main/resources/etc/opendaylight/karaf/config.xml new file mode 100644 index 0000000..8a24c1f --- /dev/null +++ b/nemo-renderers/cli-renderer/src/main/resources/etc/opendaylight/karaf/config.xml @@ -0,0 +1,33 @@ + + + + + + + + prefix:cli-renderer-impl + cli-renderer-impl + + binding:binding-async-data-broker + binding-data-broker + + + binding:binding-rpc-registry + binding-rpc-broker + + + binding:binding-notification-service + binding-notification-broker + + + + + + + + \ No newline at end of file diff --git a/nemo-renderers/cli-renderer/src/main/yang/cli-renderer-impl.yang b/nemo-renderers/cli-renderer/src/main/yang/cli-renderer-impl.yang new file mode 100644 index 0000000..1599f97 --- /dev/null +++ b/nemo-renderers/cli-renderer/src/main/yang/cli-renderer-impl.yang @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +module cli-renderer-impl { + yang-version 1; + + namespace "urn:opendaylight:params:xml:ns:yang:nemo:cli:renderer:impl"; + prefix "cli-renderer-impl"; + + import config { prefix config; revision-date 2013-04-05; } + import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; } + + description + "This module contains the base YANG definitions for + NEMO CLI renderer implementation."; + + revision "2015-11-19" { + description + "Initial revision."; + } + + identity cli-renderer-impl { + base config:module-type; + config:java-name-prefix CliRenderer; + } + + augment "/config:modules/config:module/config:configuration" { + case cli-renderer-impl { + when "/config:modules/config:module/config:type = 'cli-renderer-impl'"; + + container data-broker { + uses config:service-ref { + refine type { + mandatory false; + config:required-identity mdsal:binding-async-data-broker; + } + } + } + container rpc-registry { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity mdsal:binding-rpc-registry; + } + } + } + container notification-service { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity mdsal:binding-notification-service; + } + } + } + } + } +} diff --git a/nemo-renderers/cli-renderer/src/main/yang/cli-renderer.yang b/nemo-renderers/cli-renderer/src/main/yang/cli-renderer.yang new file mode 100644 index 0000000..06b6918 --- /dev/null +++ b/nemo-renderers/cli-renderer/src/main/yang/cli-renderer.yang @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +module cli-renderer { + yang-version 1; + + namespace "urn:opendaylight:params:xml:ns:yang:nemo:cli:renderer"; + prefix "cli-renderer"; + + description + "This module defines the NEMO CLI renderer model."; + + revision "2015-11-19" { + description + "Initial revision."; + } +} diff --git a/nemo-renderers/pom.xml b/nemo-renderers/pom.xml index 1024502..b5fd9cb 100644 --- a/nemo-renderers/pom.xml +++ b/nemo-renderers/pom.xml @@ -23,6 +23,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html openflow-renderer + cli-renderer diff --git a/pom.xml b/pom.xml index d898151..7d36a7e 100644 --- a/pom.xml +++ b/pom.xml @@ -31,10 +31,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html nemo-artifacts nemo-api nemo-impl - nemo-renderers nemo-ui nemo-features nemo-karaf + nemo-renderers https://wiki.opendaylight.org/view/NEMO:Main -- 2.36.6