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

Entry deserialization failed in Yang model with Groupings

    XMLWordPrintable

Details

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

    • 1329

    Description

      I attach a datachangelistener to the list "sfc-service-function" in the module below. Whenever I create a new ServiceFunction I get the following error on the console before even onDataChanged() gets actually called back:

      osgi> 2014-07-08 00:57:26.309 PDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)service-function-chains/(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)service-function-chain[

      {(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)name=Chain-1}

      ]/(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)sfc-service-function[

      {(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)name=dpi-ut}

      ]
      2014-07-08 00:57:26.318 PDT [pool-14-thread-1] WARN o.o.c.m.s.b.i.AbstractForwardedDataBroker - Failed to transform (urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)service-function-chains/(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)service-function-chain/(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)service-function-chain[

      {(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)name=Chain-1}

      ]/(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)sfc-service-function/(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)sfc-service-function[

      {(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)name=dpi-ut}

      ]=ImmutableMapEntryNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)sfc-service-function[

      {(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)name=dpi-ut}

      ], value=[ImmutableLeafNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)type, value=dpi, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)name, value=dpi-ut, attributes={}}], attributes={}}, omitting it
      org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException: Entry deserialization failed
      at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:311) ~[bundlefile:na]
      at org.opendaylight.controller.config.yang.md.sal.binding.impl.RuntimeMappingModule$RuntimeGeneratedMappingServiceProxy.fromDataDom(RuntimeMappingModule.java:151) ~[bundlefile:na]
      at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBindingImpl(BindingToNormalizedNodeCodec.java:202) ~[bundlefile:na]
      at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:132) ~[bundlefile:na]
      at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:258) ~[bundlefile:na]
      at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.toBinding(AbstractForwardedDataBroker.java:103) ~[bundlefile:na]
      at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.getCreatedData(AbstractForwardedDataBroker.java:187) [bundlefile:na]
      at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.toString(AbstractForwardedDataBroker.java:244) [bundlefile:na]
      at java.lang.String.valueOf(String.java:2854) [na:1.7.0_51]
      at java.lang.StringBuilder.append(StringBuilder.java:128) [na:1.7.0_51]
      at org.opendaylight.controller.md.sal.binding.impl.LegacyDataChangeEvent$ConfigurationChangeEvent.toString(LegacyDataChangeEvent.java:201) [bundlefile:na]
      at org.opendaylight.sfc.provider.SfcProviderSfcEntryDataListener.onDataChanged(SfcProviderSfcEntryDataListener.java:30) [bundlefile:na]
      at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$BackwardsCompatibleConfigurationDataChangeInvoker.onDataChanged(ForwardedBackwardsCompatibleDataBroker.java:452) [bundlefile:na]
      at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:162) [bundlefile:na]
      at org.opendaylight.controller.md.sal.dom.store.impl.ChangeListenerNotifyTask.run(ChangeListenerNotifyTask.java:33) [bundlefile:na]
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_51]
      at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_51]
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_51]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_51]
      at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51]
      Caused by: java.lang.IllegalStateException: Failed to lookup instantiated type for path SchemaPath [path=[(urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)service-function-chains, (urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)service-function-chain, (urn:cisco:params:xml:ns:yang:sfc-sfc?revision=2014-07-01)sfc-service-function], absolute=true]
      at com.google.common.base.Preconditions.checkState(Preconditions.java:176) ~[bundlefile:na]
      at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry.getClassForPath(LazyGeneratedCodecRegistry.java:201) ~[bundlefile:na]
      at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserializeNodeIdentifierWithPrecicates(InstanceIdentifierCodecImpl.java:108) ~[bundlefile:na]
      at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserializePathArgument(InstanceIdentifierCodecImpl.java:221) ~[bundlefile:na]
      at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserialize(InstanceIdentifierCodecImpl.java:69) ~[bundlefile:na]
      at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:308) ~[bundlefile:na]

      CODE USED TO ATTACH LISTENER TO LIST

      SfcProviderSfcEntryDataListener sfcProviderSfcEntryDataListener = new SfcProviderSfcEntryDataListener();

      final ListenerRegistration<DataChangeListener> sfcEntryDataChangeListenerRegistration =
      dataBrokerService.registerDataChangeListener( OpendaylightSfc.sfcEntryIID, sfcProviderSfcEntryDataListener );

      public static final InstanceIdentifier<ServiceFunctionChain> sfcEntryIID =
      InstanceIdentifier.builder(ServiceFunctionChains.class)
      .child(ServiceFunctionChain.class).build();

      YANG MODULE

      module service-function-chain {

      namespace "urn:cisco:params:xml:ns:yang:sfc-sfc";

      prefix sfc-sfc;

      import ietf-inet-types

      { prefix inet; }

      import ietf-yang-types

      { prefix yang; }

      import service-function

      {prefix sfc-sf; }

      organization "Cisco Systems, Inc.";
      contact "Reinaldo Penno <repenno@cisco.com>";

      description
      "This module contains a collection of YANG definitions for
      managing service function chains."

      revision 2014-07-01

      { description "Revised based on Opendaylight Project feedback"; }

      grouping service-function-chain-grouping {
      list service-function-chain {
      description
      "A service chain defines the required functions and
      associated order (service-function1 --> service-function 2) that
      must be applied to packets and/or frames. A service chain does
      not specify the network location or specific instance of service
      functions (e.g. firewall1 vs. firewall2).";
      key "name";
      leaf name

      { type string; description "the name of the service function chain"; }

      list sfc-service-function {
      key "name";
      leaf name

      { type string; description "The name of the service function."; }

      leaf type

      { type string; mandatory true; description "Service Function Type from service-function-type.yang."; }

      ordered-by user;
      description
      "A list of service functions that compose the service chain";
      }
      }
      }

      // Service Function Chains

      container service-function-chains

      { uses service-function-chain-grouping; }

      }

      Attachments

        Issue Links

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

          Activity

            People

              tony.tkacik@gmail.com Tony Tkacik
              repenno Reinaldo Penno
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: