Uploaded image for project: 'mdsal'
  1. mdsal
  2. MDSAL-121

YANG leaf named 'class' breaks write with netconf connector

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Done
    • None
    • None
    • None
    • None
    • Operating System: Mac OS
      Platform: Macintosh

    • 4760

    Description

      When using the netconf connector with Cisco-IOS-XR-l2vpn-cfg@2015-01-07.yang and trying to write the following piece of configuration, the 'class' leaf causes the request to fail.

      <l2vpn xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-l2vpn-cfg">
      <database>
      <xconnect-groups>
      <xconnect-group>
      <name>GEN15-1000</name>
      <p2p-xconnects>
      <p2p-xconnect>
      <name>GEN15-p2p-1000</name>
      <pseudowires>
      <pseudowire>
      <pseudowire-id>2006</pseudowire-id>
      <neighbor>
      <neighbor>192.168.0.1</neighbor>
      <class>static</class>
      <mpls-static-labels>
      <local-static-label>2006</local-static-label>
      <remote-static-label>2006</remote-static-label>
      </mpls-static-labels>
      </neighbor>
      </pseudowire>
      </pseudowires>
      <attachment-circuits>
      <attachment-circuit>
      <name>GigabitEthernet0/0/0/4</name>
      <enable/>
      </attachment-circuit>
      </attachment-circuits>
      </p2p-xconnect>
      </p2p-xconnects>
      </xconnect-group>
      </xconnect-groups>
      </database>
      </l2vpn>

      The following patch fixes the problem, though you may want to refactor it to implement the fix in BindingMapping. This patch is based of mdsal 0.8.0-SNAPSHOT commit 0e377a7bdfd917662d56075fbfd2bdc504d6fcd8

      diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java
      index d9094ac..0c934c8 100644
      — a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java
      +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java
      @@ -124,8 +124,8 @@ abstract class DataNodeContainerSerializerSource extends DataObjectSerializerSou
      prefix = "is";
      }
      }
      -

      • return prefix + BindingMapping.getClassName(node.getQName().getLocalName());
        + final String potential = BindingMapping.getClassName(node.getQName().getLocalName());
        + return prefix + ("Class".equals(potential) ? "XmlClass" : potential);
        }

      private void emitBody(final StringBuilder b)

      { diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java index 6e05628..152e3f8 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java @@ -238,7 +238,8 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree }

      private String getGetterName(final QName qName, TypeDefinition<?> typeDef) {

      • final String suffix = BindingMapping.getClassName(qName);
        + final String candidate = BindingMapping.getClassName(qName);
        + final String suffix = ("Class".equals(candidate) ? "XmlClass" : candidate);

      while (typeDef.getBaseType() != null) {
      typeDef = typeDef.getBaseType();

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            filip.gregor@pantheon.tech Filip Gregor
            donaldh@cisco.com Donald Hunter
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: