Amartus / yang2swagger

Yang to swagger generator
Eclipse Public License 1.0
32 stars 21 forks source link

Unable to perform yang2swagger conversion from Docker installation #36

Closed arthurMll closed 5 years ago

arthurMll commented 5 years ago

After building the docker image following the steps included in the README, I am not able to execute properly any yang2swagger conversion operation.

I am trying the following command: sudo docker run -it -v $(pwd):/usr/src/yang yang2swagger "-yang-dir . module-name" , inside a folder which contains all YANG files I would like to use for the conversion.

The execution is always retrieving the following output: 2019-07-29 16:37:51,843 [main] INFO c.mrv.yangtools.common.ContextHelper - adding . 2019-07-29 16:37:52,112 [main] INFO c.mrv.yangtools.common.SchemaBuilder - Inspecting all defined yangs [./examples/build-standalone/target/classes/ietf-inet-types.yang, ./examples/build-standalone/target/classes/Tapi.yang, ./examples/build-standalone/target/classes/ietf-yang-types.yang, ./examples/build-standalone/target/classes/TapiConnectivity.yang, ./examples/build-standalone/target/classes/TapiTopology.yang, ./examples/build-standalone/src/main/resources/ietf-inet-types.yang, ./examples/build-standalone/src/main/resources/Tapi.yang, ./examples/build-standalone/src/main/resources/ietf-yang-types.yang, ./examples/build-standalone/src/main/resources/TapiConnectivity.yang, ./examples/build-standalone/src/main/resources/TapiTopology.yang, ./examples/maven-plugin-example/target/generated-sources/yang/META-INF/yang/second.yang, ./examples/maven-plugin-example/target/generated-sources/yang/META-INF/yang/example.yang, ./examples/maven-plugin-example/target/classes/META-INF/yang/second.yang, ./examples/maven-plugin-example/target/classes/META-INF/yang/example.yang, ./examples/maven-plugin-example/src/main/yang/second.yang, ./examples/maven-plugin-example/src/main/yang/example.yang, ./swagger-generator/target/test-classes/with-groupings.yang, ./swagger-generator/target/test-classes/bug_15/base.yang, ./swagger-generator/target/test-classes/bug_15/ext1.yang, ./swagger-generator/target/test-classes/bug_15/ext1-ext.yang, ./swagger-generator/target/test-classes/simpleAugmentation.yang, ./swagger-generator/target/test-classes/enum-module.yang, ./swagger-generator/target/test-classes/inheritence-with-augmentation/base.yang, ./swagger-generator/target/test-classes/inheritence-with-augmentation/base-aug.yang, ./swagger-generator/target/test-classes/duplicated-names.yang, ./swagger-generator/target/test-classes/example/base.yang, ./swagger-generator/target/test-classes/example/extension-of-extension.yang, ./swagger-generator/target/test-classes/example/extension-of-base.yang, ./swagger-generator/target/test-classes/read-only.yang, ./swagger-generator/target/test-classes/aug-group-ex/base.yang, ./swagger-generator/target/test-classes/aug-group-ex/base-aug.yang, ./swagger-generator/target/test-classes/bug_17/base.yang, ./swagger-generator/target/test-classes/bug_17/ext1.yang, ./swagger-generator/target/test-classes/simplest.yang, ./swagger-generator/target/test-classes/choice.yang, ./swagger-generator/target/test-classes/augmenting-groupings.yang, ./swagger-generator/target/test-classes/rpc-augmentations.yang, ./swagger-generator/target/test-classes/rpc-basic.yang, ./swagger-generator/src/test/resources/with-groupings.yang, ./swagger-generator/src/test/resources/bug_15/base.yang, ./swagger-generator/src/test/resources/bug_15/ext1.yang, ./swagger-generator/src/test/resources/bug_15/ext1-ext.yang, ./swagger-generator/src/test/resources/simpleAugmentation.yang, ./swagger-generator/src/test/resources/enum-module.yang, ./swagger-generator/src/test/resources/inheritence-with-augmentation/base.yang, ./swagger-generator/src/test/resources/inheritence-with-augmentation/base-aug.yang, ./swagger-generator/src/test/resources/duplicated-names.yang, ./swagger-generator/src/test/resources/example/base.yang, ./swagger-generator/src/test/resources/example/extension-of-extension.yang, ./swagger-generator/src/test/resources/example/extension-of-base.yang, ./swagger-generator/src/test/resources/read-only.yang, ./swagger-generator/src/test/resources/aug-group-ex/base.yang, ./swagger-generator/src/test/resources/aug-group-ex/base-aug.yang, ./swagger-generator/src/test/resources/bug_17/base.yang, ./swagger-generator/src/test/resources/bug_17/ext1.yang, ./swagger-generator/src/test/resources/simplest.yang, ./swagger-generator/src/test/resources/choice.yang, ./swagger-generator/src/test/resources/augmenting-groupings.yang, ./swagger-generator/src/test/resources/rpc-augmentations.yang, ./swagger-generator/src/test/resources/rpc-basic.yang] 2019-07-29 16:37:52,814 [main] ERROR com.mrv.yangtools.codegen.main.Main - Error while generating Swagger org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException: Some of SOURCE_LINKAGE modifiers for statements were not resolved. at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.propagateException(BuildGlobalContext.java:255) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:307) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatements(BuildGlobalContext.java:298) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.executePhases(BuildGlobalContext.java:217) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.buildEffective(BuildGlobalContext.java:229) at org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:280) at org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:313) at com.mrv.yangtools.common.SchemaBuilder.build(SchemaBuilder.java:86) at com.mrv.yangtools.common.ContextHelper.getCtx(ContextHelper.java:80) at com.mrv.yangtools.common.ContextHelper.getFromDir(ContextHelper.java:48) at com.mrv.yangtools.codegen.main.Main.buildSchemaContext(Main.java:158) at com.mrv.yangtools.codegen.main.Main.generate(Main.java:112) at com.mrv.yangtools.codegen.main.Main.main(Main.java:93) Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Module namespace collision: http://amartus/ns/yang/base. At null:1:0 [at null:1:0] at org.opendaylight.yangtools.yang.parser.stmt.rfc6020.ModuleStatementSupport.onLinkageDeclared(ModuleStatementSupport.java:153) at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext.onDeclarationFinished(StatementDefinitionContext.java:72) at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.endDeclared(StatementContextBase.java:528) at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextWriter.endStatement(StatementContextWriter.java:39) at org.opendaylight.yangtools.yang.parser.impl.YangStatementParserListenerImpl.exitStatement(YangStatementParserListenerImpl.java:112) at org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser$StatementContext.exitRule(YangStatementParser.java:119) at org.antlr.v4.runtime.tree.ParseTreeWalker.exitRule(ParseTreeWalker.java:47) at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:30) at org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl.writeLinkage(YangStatementSourceImpl.java:85) at org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.loadStatements(SourceSpecificContext.java:367) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:305) ... 11 common frames omitted

Is it possible that the docker is not finding the yang files included in the host server namespace because it is trying to find them within the docker image namespace? If so how can I solve this?

Thanks in advance, Arturo.

jdillard commented 5 years ago

Instead of -yang-dir . try -yang-dir /usr/src/yang. You seem to be referencing the wrong side of the mount that you made ($(pwd)).

arthurMll commented 5 years ago

Thanks @jdillard it works!