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

Choice/Case children conflict does not seem to be detected

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Medium Medium
    • None
    • 3.0.4
    • parser
    • None

      In bgpcep project, trying to write data to application-rib results in data incorrectly getting rejected. Steps are as below:

      1. Bring up controller and feature:install odl-bgpcep-bgp
      2. PUT below payload to http://controller-ip:restconf-port/restconf/config/bgp-rib:application-rib/127.0.0.1
      {
          "application-rib": [
              {
                  "id": "127.0.0.1",
                  "tables": [
                  {
                      "afi": "bgp-linkstate:linkstate-address-family",
                      "safi": "bgp-linkstate:linkstate-subsequent-address-family",
                      "bgp-linkstate:linkstate-routes": {
                          "linkstate-route": [
                              {
                                  "path-id": 0,
                                  "route-key": "[0, 3, 0, 48, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 26, 2, 0, 0, 4, 0, 0, 0, 100, 2, 1, 0, 4, 0, 0, 0, 0, 2, 3, 0, 6, 0, 1, 0, 0, 0, 5, 1, 9, 0, 5, 32, -64, -88, -2, 5]",
                                  "advertising-node-descriptors": {
                                      "as-number": 100,
                                      "domain-id": 0,
                                      "isis-node": {
                                          "iso-system-id": "AAEAAAAF"
                                      }
                                  },
                                  "prefix-descriptors": {
                                      "ip-reachability-information": "192.168.254.5/32"
                                  },
                                  "attributes": {
                                      "ipv4-next-hop": {
                                          "global": "192.168.122.136"
                                      },
                                      "prefix-attributes": {
                                          "prefix-metric": 10,
                                          "sr-prefix": {
                                              "local-label": 1001,
                                              "no-php": false,
                                              "readvertisement": false,
                                              "node-sid": true,
                                              "explicit-null": false,
                                              "algorithm": "shortest-path-first"
                                          }
                                      },
                                      "origin": {
                                          "value": "igp"
                                      },
                                      "as-path": {},
                                      "local-pref": {
                                          "pref": 100
                                      }
                                  },
                                  "identifier": 0,
                                  "protocol-id": "isis-level2"
                              }
                          ]
                      },
                      "attributes": {
                          "uptodate": true
                      }
                  }
              ]
              }
          ]
      } 

      3. This results in below error

       

      {    "errors": {        "error": [            {                "error-type": "application",                "error-tag": "operation-failed",                "error-message": "canCommit encountered an unexpected failure",                "error-info": "Node (urn:opendaylight:params:xml:ns:yang:bgp-linkstate?revision=2018-03-29)flags is not a valid child of (urn:opendaylight:params:xml:ns:yang:bgp-linkstate?revision=2018-03-29)sr-prefix according to the schema."            }        ]    }} 
      2019-09-08T16:37:52,148 | WARN  | opendaylight-cluster-data-akka.actor.default-dispatcher-3 | LocalThreePhaseCommitCohort      | 171 - org.opendaylight.controller.sal-distributed-datastore - 1.11.0.SNAPSHOT | Failed to prepare transaction member-1-datastore-config-fe-0-txn-15-0 on backend
      org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaValidationFailedException: Node (urn:opendaylight:params:xml:ns:yang:bgp-linkstate?revision=2018-03-29)flags is not a valid child of (urn:opendaylight:params:xml:ns:yang:bgp-linkstate?revision=2018-03-29)sr-prefix according to the schema.
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:122) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyValueChildren(AbstractNodeContainerModificationStrategy.java:120) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.fullVerifyStructure(SchemaAwareApplyOperation.java:145) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.ModifiedNode.seal(ModifiedNode.java:288) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractReadyIterator.process(AbstractReadyIterator.java:47) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeModification.ready(InMemoryDataTreeModification.java:298) ~[237:org.opendaylight.yangtools.yang-data-impl:3.0.4]
              at org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction.ready(SnapshotBackedWriteTransaction.java:151) ~[196:org.opendaylight.mdsal.dom-spi:4.0.4]
              at org.opendaylight.controller.cluster.datastore.LocalTransactionFactoryImpl.onTransactionReady(LocalTransactionFactoryImpl.java:86) ~[171:org.opendaylight.controller.sal-distributed-datastore:1.11.0.SNAPSHOT]
              at org.opendaylight.controller.cluster.datastore.LocalTransactionContext.ready(LocalTransactionContext.java:82) ~[171:org.opendaylight.controller.sal-distributed-datastore:1.11.0.SNAPSHOT] 

       

      Models in question are below and data seem valid as per those:

      https://github.com/opendaylight/bgpcep/blob/master/bgp/extensions/linkstate/src/main/yang/bgp-linkstate.yang#L730

      https://github.com/opendaylight/bgpcep/blob/master/bgp/extensions/linkstate/src/main/yang/bgp-segment-routing.yang#L153

       

            Unassigned Unassigned
            ajayslele Ajay Lele
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: