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/tools/package/yangtools | |
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/tools/package/yangtools')
4 files changed, 0 insertions, 354 deletions
diff --git a/framework/src/onos/tools/package/yangtools/pom.xml b/framework/src/onos/tools/package/yangtools/pom.xml deleted file mode 100644 index 82422c0f..00000000 --- a/framework/src/onos/tools/package/yangtools/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<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"> - <modelVersion>4.0.0</modelVersion> - <groupId>org.onosproject</groupId> - <artifactId>yangloader</artifactId> - <version>1.0-SNAPSHOT</version> - <dependencies> - <dependency> - <groupId>commons-configuration</groupId> - <artifactId>commons-configuration</artifactId> - <version>1.10</version> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <version>2.4</version> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>18.0</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onlab-misc</artifactId> - <version>1.4.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>commons-collections</groupId> - <artifactId>commons-collections</artifactId> - <version>3.2.1</version> - <optional>true</optional> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-jdk14</artifactId> - <version>1.7.12</version> - </dependency> - </dependencies> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.3</version> - <configuration> - <source>1.8</source> - <target>1.8</target> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>2.3</version> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - <configuration> - <transformers> - <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> - <mainClass>org.onoproject.yangtool.YangLoaderMain</mainClass> - </transformer> - </transformers> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - -</project> diff --git a/framework/src/onos/tools/package/yangtools/src/main/java/org/onoproject/yangtool/YangLoader.java b/framework/src/onos/tools/package/yangtools/src/main/java/org/onoproject/yangtool/YangLoader.java deleted file mode 100644 index 37126890..00000000 --- a/framework/src/onos/tools/package/yangtools/src/main/java/org/onoproject/yangtool/YangLoader.java +++ /dev/null @@ -1,167 +0,0 @@ -package org.onoproject.yangtool; - -import com.google.common.io.Files; -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.XMLConfiguration; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.onlab.util.Tools; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Class that takes in input two paths, one to the yang file and one where - * to generate the interface, and a yang container name, generates the sources - * through OpenDaylight code generator plugin from yang, and modifies - * them accordingly to the needs of the ONOS behavior system. - */ -public class YangLoader { - /** - * Public method to take a yang file from the input folder and generate classes - * to the output folder. - * @param inputFolder forlder with the yang files - * @param completeOuputFolder folder where to put the desired classes - * @throws IOException - * @throws ConfigurationException - * @throws InterruptedException - */ - public void generateBehaviourInterface(String inputFolder, - String completeOuputFolder) - throws IOException, ConfigurationException, InterruptedException { - File projectDir = createTemporaryProject(inputFolder); - List<String> containerNames = findContainerName( - new File(projectDir.getAbsolutePath() + "/src")); - System.out.println("Containers " + containerNames); - generateJava(projectDir); - //modifyClasses(containerName, projectDir, completeInterfaceOuputFolder); - copyFiles(new File(projectDir.getAbsolutePath() + "/dst"), - new File(completeOuputFolder)); - //System.out.println("Sources in " + completeOuputFolder); - - } - - private List<String> findContainerName(File scrDir) { - List<String> allContainers = new ArrayList<>(); - Arrays.asList(scrDir.listFiles()).stream().forEach(f -> { - try { - FileUtils.readLines(f).stream() - .filter(line -> line.matches("(.*)container(.*)\\{")) - .collect(Collectors.toList()).forEach(s -> { - s = s.replace("container", ""); - s = s.replace("{", ""); - allContainers.add(s.trim()); - }); - - } catch (IOException e) { - throw new RuntimeException(e); - } - }); - return allContainers; - } - - private File createTemporaryProject(String inputFolder) throws IOException, - ConfigurationException { - File tempDir = Files.createTempDir(); - File scrDir = new File(tempDir, "src"); - scrDir.mkdir(); - copyFiles(new File(inputFolder), scrDir); - createPomFile(tempDir, scrDir); - return tempDir; - - } - - private void copyFiles(File inputFolder, File scrDir) throws IOException { - Tools.copyDirectory(inputFolder, scrDir); - } - - private void createPomFile(File tempDir, File scrDir) throws ConfigurationException { - File pom = new File(tempDir, "pom.xml"); - File dstDir = new File(tempDir, "dst"); - dstDir.mkdir(); - XMLConfiguration cfg = new XMLConfiguration(); - cfg.load(getClass().getResourceAsStream("/pom-template.xml")); - cfg.setProperty("build.plugins.plugin.executions.execution." + - "configuration.yangFilesRootDir", scrDir.getPath()); - cfg.setProperty("build.plugins.plugin.executions." + - "execution.configuration.codeGenerators." + - "generator.outputBaseDir", dstDir.getPath()); - cfg.save(pom); - } - - private void generateJava(File projectDir) - throws IOException, InterruptedException { - Runtime rt = Runtime.getRuntime(); - Process pr = rt.exec("mvn generate-sources", null, projectDir); - String s = IOUtils.toString(pr.getInputStream(), "UTF-8"); - if (pr.waitFor() == 0) { - if (s.contains("[WARNING]")) { - System.out.println("Sources not generated, warning log: \n" + s); - } else { - System.out.println("Sources generated"); - } - } else { - System.out.println("Sources not generated. " + s + - " \nError " + pr.getInputStream().read()); - } - } - - //parsing classes part, for now is not used. - private void modifyClasses(String containerName, File projectDir, - String pathToNewInterface) throws IOException { - String odlInterfacepath = getPathWithFileName(containerName, projectDir.getPath()); - odlInterfacepath = odlInterfacepath + "/"; - parseClass(odlInterfacepath, pathToNewInterface, containerName); - System.out.println("ONOS behaviour interface generated " + - "correctly at " + pathToNewInterface); - } - - private String getPathWithFileName(String filename, String pathToGenerated) { - File[] directories = new File(pathToGenerated).listFiles(File::isDirectory); - while (directories.length != 0) { - pathToGenerated = pathToGenerated + "/" + directories[0].getName(); - directories = new File(pathToGenerated).listFiles(File::isDirectory); - } - File dir = new File(pathToGenerated); - File behaviour = (File) Arrays.asList(dir.listFiles()).stream() - .filter(f -> f.getName().equals(filename)).toArray()[0]; - return behaviour.getParentFile().getAbsolutePath(); - } - - private void parseClass(String filePath, String pathToNewInterface, - String filename) throws IOException { - InputStream fis = null; - String newFile = "package org.onosproject.net.behaviour;\n" + - "import org.onosproject.net.driver.HandlerBehaviour;\n"; - fis = new FileInputStream(filePath + filename); - InputStreamReader isr = new InputStreamReader(fis, Charset.forName("UTF-8")); - BufferedReader br = new BufferedReader(isr); - String line; - while ((line = br.readLine()) != null) { - if (!line.contains("org.opendaylight.")) { - if (line.contains("ChildOf")) { - newFile = newFile + "HandlerBehaviour\n"; - } else { - newFile = newFile + line + "\n"; - } - } - } - PrintWriter out = new PrintWriter(pathToNewInterface + - filename.replace(".java", "") - + "Interface.java"); - out.print(newFile); - out.flush(); - } - - -} diff --git a/framework/src/onos/tools/package/yangtools/src/main/java/org/onoproject/yangtool/YangLoaderMain.java b/framework/src/onos/tools/package/yangtools/src/main/java/org/onoproject/yangtool/YangLoaderMain.java deleted file mode 100644 index 7b137677..00000000 --- a/framework/src/onos/tools/package/yangtools/src/main/java/org/onoproject/yangtool/YangLoaderMain.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.onoproject.yangtool; - -import org.apache.commons.configuration.ConfigurationException; - -import java.io.IOException; - -/** - * Main of the uangloader tool in order to be called through command line. - */ -public class YangLoaderMain { - public static void main (String args []) throws IOException, - ConfigurationException, InterruptedException { - YangLoader yl = new YangLoader(); - yl.generateBehaviourInterface(args[0], args[1]); - } -} diff --git a/framework/src/onos/tools/package/yangtools/src/main/resources/pom-template.xml b/framework/src/onos/tools/package/yangtools/src/main/resources/pom-template.xml deleted file mode 100644 index 5280e213..00000000 --- a/framework/src/onos/tools/package/yangtools/src/main/resources/pom-template.xml +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<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"> - <modelVersion>4.0.0</modelVersion> - <groupId>groupId</groupId> - <artifactId>yangloader</artifactId> - <version>1.0-SNAPSHOT</version> - <pluginRepositories> - <pluginRepository> - <id>opendaylight-release</id> - <name>opendaylight-release</name> - <url> - http://nexus.opendaylight.org/content/repositories/opendaylight.release/ - </url> - </pluginRepository> - <pluginRepository> - <id>opendaylight-snapshot</id> - <name>opendaylight-snapshot</name> - <url> - http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ - </url> - </pluginRepository> - </pluginRepositories> - <repositories> - <repository> - <id>opendaylight-release</id> - <name>opendaylight-release</name> - <url> - http://nexus.opendaylight.org/content/repositories/opendaylight.release/ - </url> - </repository> - <repository> - <id>opendaylight-snapshot</id> - <name>opendaylight-snapshot</name> - <url> - http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ - </url> - </repository> - </repositories> - <dependencies> - <dependency> - <groupId>org.opendaylight.yangtools</groupId> - <artifactId>yang-binding</artifactId> - <version>0.7.2-Lithium-SR2</version> - </dependency> - </dependencies> - <build> - <plugins> - <plugin> - <groupId>org.opendaylight.yangtools</groupId> - <artifactId>yang-maven-plugin</artifactId> - <version>0.7.2-Lithium-SR2</version> - <executions> - <execution> - <goals> - <goal>generate-sources</goal> - </goals> - <configuration> - <!-- directory containing yang files to parse and generate code --> - <yangFilesRootDir>INPUTDIR</yangFilesRootDir> - <codeGenerators> - <generator> - <codeGeneratorClass> - org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl - </codeGeneratorClass> - <!-- directory into which generated files will be placed --> - <outputBaseDir>OUTPUTDIR</outputBaseDir> - </generator> - </codeGenerators> - <inspectDependencies>false</inspectDependencies> - </configuration> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>org.opendaylight.yangtools</groupId> - <artifactId>maven-sal-api-gen-plugin</artifactId> - <version>0.7.2-Lithium-SR2</version> - <type>jar</type> - </dependency> - </dependencies> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.3</version> - <configuration> - <source>1.8</source> - <target>1.8</target> - </configuration> - </plugin> - </plugins> - </build> -</project> |