Uploaded image for project: 'yangtools'
  1. yangtools
  2. YANGTOOLS-1435

Module name space collision with YANG modules with submodules and groupings from the submodules

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Low Low
    • None
    • 8.0.5, 7.0.17
    • parser
    • None

      When building EffectiveSchemaContext for YANG modules, one with submodules and the other with groupings imported from the submodules, the process may fail with module name space collision.

      Following is such an example. There are 2 modules (foo & bar): foo has two submodules (foo-a & foo-b) and bar uses groupings from foo defined in its submodules.

      module foo {
          namespace "urn:foo";
          prefix "foo";
      
          include foo-a;
          include foo-b;
      
          container foo {
              uses foo-a;
              uses foo-b;
          }
      }
      
      submodule foo-a {
          belongs-to foo {
              prefix "foo";
          }
      
          grouping foo-a {
              leaf a {
                  type string;
              }
          }
      }
      
      submodule foo-b {
          belongs-to foo {
              prefix "foo";
          }
      
          grouping foo-b {
              leaf b {
                  type string;
              }
          }
      }
      
      module bar {
          namespace "urn:bar";
          prefix "bar";
      
          import foo { prefix "foo"; }
      
          container bar {
              uses foo:foo-a;
              uses foo:foo-b;
          }
      }
      

      Error message while compiling foo and bar:

      Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Module namespace collision: urn:foo. At /home/jenkins/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1435/foo.yang:1:1 [at /home/jenkins/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1435/foo.yang:1:1]
      	at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.module.ModuleStatementSupport.onLinkageDeclared(ModuleStatementSupport.java:173)
      	at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext.onDeclarationFinished(StatementDefinitionContext.java:76)
      	at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx.finishDeclaration(OriginalStmtCtx.java:161)
      	at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.exitStatement(AbstractResumedStatement.java:227)
      	at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextWriter.endStatement(StatementContextWriter.java:79)
      	at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.doProcessStatement(StatementContextVisitor.java:125)
      	at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processNewStatement(StatementContextVisitor.java:111)
      	at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processStatement(StatementContextVisitor.java:96)
      	at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.visit(StatementContextVisitor.java:46)
      	at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource.writeLinkage(YangStatementStreamSource.java:104)
      	at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.loadStatements(SourceSpecificContext.java:414)
      	at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:300)
      	... 46 more
      

            Unassigned Unassigned
            sangwookha Sangwook Ha
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: