Some issues regarding YANG Runtime/Synchronizer

54 views
Skip to first unread message

hirok...@gmail.com

unread,
Jan 16, 2018, 6:21:11 PM1/16/18
to Dynamic configuration

Hi all, 


Now I'm creating sample app that provides TAPI-based RESTCONF NBI and OpenConfig-based SBI using DCS. 

I'm in the middle of development, but I've found out that there are some problems with DCS, especially YANG Runtime/Synchronizer. I created issues at github, please check them and let me know your ideas.

https://github.com/opennetworkinglab/onos-yang-tools/issues/2

https://github.com/opennetworkinglab/onos-yang-tools/issues/3

https://github.com/opennetworkinglab/onos-yang-tools/issues/4


Thanks, 

Hiroki

Yuta Higuchi

unread,
Jan 16, 2018, 8:36:55 PM1/16/18
to hirok...@gmail.com, Dynamic configuration
We use github only as a mirror for ease of browsing, and 
use JIRA https://jira.onosproject.org for issue tracking
so next time, please post it here or use JIRA tickets.

Regarding #3, this is a known limitation right now, assuming the first rpc after the DCS write went through correctly.
It is caused by DCEvent not getting consolidated issue, where DCStore emits unnecessary events.
To fix it properly, we would need to do a bit of a overhaul in the DCStore.  
In the meantime, we might be able to come up with a hack to heuristically consolidate duplicate events, but next step is TBD at the moment.


Issue #2 seems like YangTools issue so can Gaurav take a look?

Issue #4 seems like RESTCONF NBI related issue, so can Henry take a look?




--
You received this message because you are subscribed to the Google Groups "Dynamic configuration" group.
To unsubscribe from this group and stop receiving emails from it, send an email to brigade-dynconfig+unsubscribe@onosproject.org.
To post to this group, send email to brigade-dynconfig@onosproject.org.
Visit this group at https://groups.google.com/a/onosproject.org/group/brigade-dynconfig/.
To view this discussion on the web visit https://groups.google.com/a/onosproject.org/d/msgid/brigade-dynconfig/3bf76fc9-3820-4d67-9241-a3431c274177%40onosproject.org.
For more options, visit https://groups.google.com/a/onosproject.org/d/optout.

cogito.er...@gmail.com

unread,
Jan 16, 2018, 11:31:19 PM1/16/18
to Dynamic configuration, hirok...@gmail.com
Thanks for your reply.
I'm sorry for raising issue in github. I'll use JIRA next time.

Regarding #3, thank you for your answer. I got your status.
I have a plan to do integration test of DCS southbound driver with OpenConfig emulator in the near future,
so let me share if there are other issues.

2018年1月17日水曜日 10時36分55秒 UTC+9 Yuta Higuchi:
We use github only as a mirror for ease of browsing, and 
use JIRA https://jira.onosproject.org for issue tracking
so next time, please post it here or use JIRA tickets.

Regarding #3, this is a known limitation right now, assuming the first rpc after the DCS write went through correctly.
It is caused by DCEvent not getting consolidated issue, where DCStore emits unnecessary events.
To fix it properly, we would need to do a bit of a overhaul in the DCStore.  
In the meantime, we might be able to come up with a hack to heuristically consolidate duplicate events, but next step is TBD at the moment.


Issue #2 seems like YangTools issue so can Gaurav take a look?

Issue #4 seems like RESTCONF NBI related issue, so can Henry take a look?



On Tue, Jan 16, 2018 at 3:21 PM, <hirok...@gmail.com> wrote:

Hi all, 


Now I'm creating sample app that provides TAPI-based RESTCONF NBI and OpenConfig-based SBI using DCS. 

I'm in the middle of development, but I've found out that there are some problems with DCS, especially YANG Runtime/Synchronizer. I created issues at github, please check them and let me know your ideas.

https://github.com/opennetworkinglab/onos-yang-tools/issues/2

https://github.com/opennetworkinglab/onos-yang-tools/issues/3

https://github.com/opennetworkinglab/onos-yang-tools/issues/4


Thanks, 

Hiroki

--
You received this message because you are subscribed to the Google Groups "Dynamic configuration" group.
To unsubscribe from this group and stop receiving emails from it, send an email to brigade-dyncon...@onosproject.org.
To post to this group, send email to brigade-...@onosproject.org.

Thomas Vachuska

unread,
Jan 17, 2018, 1:15:15 PM1/17/18
to cogito.er...@gmail.com, Dynamic configuration, hirok...@gmail.com
Hi Hiroki,

No worries… it’s actually great to see people working with this. You mentioned OpenConfig emulator. What do you use for this?

Thomas

hirok...@gmail.com

unread,
Jan 17, 2018, 8:56:37 PM1/17/18
to Dynamic configuration, hirok...@gmail.com
Hi Thomas,

I'm using emulator based on confd. 
I've generated it using vendor proprietary software and thus it's internal use only, so I cannot provide it other contributors...I'm sorry.


2018年1月17日水曜日 10時15分15秒 UTC-8 Thomas Vachuska:
Thomas

To unsubscribe from this group and stop receiving emails from it, send an email to brigade-dynconfig+unsub...@onosproject.org.

Gaurav agrawal

unread,
Jan 17, 2018, 11:52:36 PM1/17/18
to cogito.er...@gmail.com, Dynamic configuration, hirok...@gmail.com, Janani B

Hi Hiroki,

There is a below JSON provided at https://github.com/opennetworkinglab/onos-yang-tools/issues/2, looks like that is not a valid one, kindly check.

{

  "openconfig-interfaces:interfaces": {

    "interface": [

      {

        "name": "foo",

        "config": {

          "enabled": "true",

          "type": "ianaift:fastEther"          

         }

      }

    ]

  }

}

Value needs to be preceded by value’s namespace (In case of JSON, module’s name acts as namespace) so if you are referring to type defined in “module iana-if-type” it should be “iana-if-type”

 

Regarding the ModelConverter exception piece, Janani is helping us to figure the issue.

 

Thanks and Regards,

Gaurav

Janani Baskaran

unread,
Jan 18, 2018, 12:42:06 AM1/18/18
to hirok...@gmail.com, cogito.er...@gmail.com, Dynamic configuration, Janani B, Gaurav agrawal
Hi Hiroki,

This is transitive issue in identity inter-file linking.
The identity extend-list update has not happened in inter-file linking.

I have raised a JIRA for this issue. It will be fixed for the upcoming sprint.
You can track the issue in the below link.

https://jira.onosproject.org/browse/ONOS-7385

Regards,
Janani B



To unsubscribe from this group and stop receiving emails from it, send an email to brigade-dynconfig+unsubscribe@onosproject.org.
To post to this group, send email to brigade-dynconfig@onosproject.org.

--
You received this message because you are subscribed to the Google Groups "Dynamic configuration" group.
To unsubscribe from this group and stop receiving emails from it, send an email to brigade-dynconfig+unsubscribe@onosproject.org.
To post to this group, send email to brigade-dynconfig@onosproject.org.

hirok...@gmail.com

unread,
Jan 18, 2018, 12:10:46 PM1/18/18
to Dynamic configuration, hirok...@gmail.com, jana...@huawei.com, gaurav....@huawei.com
Hi Gaurav,

Thank you for the update.
I tried "iana-if-type" as namespace, and it worked properly!

Thanks,
Hiroki

2018年1月17日水曜日 20時52分36秒 UTC-8 Gaurav agrawal:

hir...@opennetworking.org

unread,
Feb 4, 2018, 10:15:11 PM2/4/18
to Dynamic configuration, Yuta Higuchi
Hi Henry and Yuta,

How things are going with Issue #4?

Now I'm going to start testing TAPI NBI for ODTN PJ, but because of this issue I cannot do any test.
Please help me if you have some ideas.

Thanks,
Hiroki

Janani Baskaran

unread,
Feb 5, 2018, 1:36:19 AM2/5/18
to hirok...@gmail.com, cogito.er...@gmail.com, Dynamic configuration, Janani B, Gaurav agrawal
Hi,

I have merged the issue-2 fix in the below link. Can you test this patch and say me if its working?



Thanks & Regards,

Janani B

Henry Yu

unread,
Feb 5, 2018, 9:11:03 PM2/5/18
to hir...@opennetworking.org, Dynamic configuration, Yuta Higuchi

Hi Hiroki,

 

My apologies for the late reply.  I did not see the email until now.  The JSON-to-datanode converter may not handle an empty array (see below). That’s my guess.  Have you tried an non-empty array?

 

{

  "tapi-common:context": {

         "service-interface-point": []

  }

}

 

Thanks,

Henry

Hiroki Okui

unread,
Feb 6, 2018, 2:18:08 PM2/6/18
to Henry Yu, Gaurav Agrawal, Dynamic configuration
Hi Henry and Gaurav,

I mistakenly dropped the mailing list, I'm sorry.

2018-02-06 10:18 GMT-08:00 Henry Yu <henr...@huawei.com>:

Hi Gaurav,

 

I need your help.  I am debugging the problem that Hiroki reported.  The problem is that convertJsonToDataNode() fails to convert the following JSON.  The stack trace is in Hiroki’s email below. The exception says “Method called for other then data node”.

 

You have a testing method  in yangtools that can trouble shoot JSON to dataNode conversion, correct? Could please help test the following JSON using that method, as I don’t know how to do so from RESTCONF side.   Thanks, Henry

 

 

  "tapi-common:context": {

    "service-interface-point": [

      {

        "uuid": "00000000-0000-4200-0001-110000000000",

        "name": [

          {

            "value-name": "sip11"

          }

        ]

      }

    ]

  }

}

 

 

From: Hiroki Okui [mailto:hirok...@gmail.com]
Sent: Tuesday, February 06, 2018 12:17 PM


To: Henry Yu <henr...@huawei.com>

Subject: Re: [brigade-dynconfig] Some issues regarding YANG Runtime/Synchronizer

 

Hi Henry,

 

Thank you for your reply.

 

This is the stack trace:

 

2018-02-06 17:12:16,699 | DEBUG | s/restconf/data/ | RestconfUtils                    | 175 - org.onosproject.onos-apps-restconf-utils - 1.13.0.SNAPSHOT | convertJsonToDataNode failure

java.lang.IllegalArgumentException: Method called for other then data node

        at org.onosproject.yang.runtime.SerializerHelper.addDataNode(SerializerHelper.java:373)

        at org.onosproject.yang.serializers.json.DefaultJsonWalker.addDataNode(DefaultJsonWalker.java:144)[166:org.onosproject.onos-yang-serializers-json:2.3.0]

        at org.onosproject.yang.serializers.json.DefaultJsonWalker.addNoneLeafDataNode(DefaultJsonWalker.java:150)[166:org.onosproject.onos-yang-serializers-json:2.3.0]

        at org.onosproject.yang.serializers.json.DefaultJsonWalker.addSingleInstanceNodeToDataTree(DefaultJsonWalker.java:158)[166:org.onosproject.onos-yang-serializers-json:2.3.0]

        at org.onosproject.yang.serializers.json.DefaultJsonWalker.walkJsonNode(DefaultJsonWalker.java:121)[166:org.onosproject.onos-yang-serializers-json:2.3.0]

        at org.onosproject.yang.serializers.json.DefaultJsonWalker.walkJsonNode(DefaultJsonWalker.java:130)[166:org.onosproject.onos-yang-serializers-json:2.3.0]

        at org.onosproject.yang.serializers.json.DecoderUtils.convertJsonToDataNode(DecoderUtils.java:57)

        at org.onosproject.yang.serializers.json.JsonSerializer.decode(JsonSerializer.java:92)

        at org.onosproject.yang.runtime.impl.DefaultYangRuntimeHandler.decode(DefaultYangRuntimeHandler.java:62)

        at org.onosproject.yang.impl.YangRuntimeManager.decode(YangRuntimeManager.java:148)

        at org.onosproject.restconf.utils.RestconfUtils.convertJsonToDataNode(RestconfUtils.java:143)

        at org.onosproject.restconf.restconfmanager.RestconfManager.runPostOperationOnDataResource(RestconfManager.java:132)

        at org.onosproject.protocol.restconf.server.rpp.RestconfWebResource.handlePostRequest(RestconfWebResource.java:185)[177:org.onosproject.onos-protocols-restconf-server-rpp:1.13.0.SNAPSHOT]

        at org.onosproject.protocol.restconf.server.rpp.RestconfWebResource.handlePostDatastore(RestconfWebResource.java:159)[177:org.onosproject.onos-protocols-restconf-server-rpp:1.13.0.SNAPSHOT]

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_151]

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_151]

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_151]

        at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_151]

        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)[139:org.glassfish.jersey.core.jersey-common:2.25.1]

        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)[139:org.glassfish.jersey.core.jersey-common:2.25.1]

        at org.glassfish.jersey.internal.Errors.process(Errors.java:315)[139:org.glassfish.jersey.core.jersey-common:2.25.1]

        at org.glassfish.jersey.internal.Errors.process(Errors.java:297)[139:org.glassfish.jersey.core.jersey-common:2.25.1]

        at org.glassfish.jersey.internal.Errors.process(Errors.java:267)[139:org.glassfish.jersey.core.jersey-common:2.25.1]

        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)[139:org.glassfish.jersey.core.jersey-common:2.25.1]

        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)[147:org.glassfish.jersey.core.jersey-server:2.25.1]

        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)[153:org.glassfish.jersey.containers.jersey-container-servlet-core:2.25.1]

        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)[153:org.glassfish.jersey.containers.jersey-container-servlet-core:2.25.1]

        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)[153:org.glassfish.jersey.containers.jersey-container-servlet-core:2.25.1]

        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)[153:org.glassfish.jersey.containers.jersey-container-servlet-core:2.25.1]

        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)[153:org.glassfish.jersey.containers.jersey-container-servlet-core:2.25.1]

        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69)[66:org.ops4j.pax.web.pax-web-jetty:3.2.9]

        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240)[66:org.ops4j.pax.web.pax-web-jetty:3.2.9]

        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:75)[66:org.ops4j.pax.web.pax-web-jetty:3.2.9]

        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.server.Server.handle(Server.java:366)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]

        at java.lang.Thread.run(Thread.java:748)[:1.8.0_151]

 

 

Please let me know if you need additional information.

 

Thanks,

Hiroki

 

 

2018-02-06 9:02 GMT-08:00 Henry Yu <henr...@huawei.com>:

Hi Hiroki,   thanks for the clarification.  It seems that we have a real bug supporting the TAPI model.   Do you have the exception stack trace from covnertJsonToDataNode()?  We need to set the log level to DEBUG:

 

            log.debug("convertJsonToDataNode failure", ex);

 

Thanks,

Henry

 

 

From: Hiroki Okui [mailto:hirok...@gmail.com]
Sent: Tuesday, February 06, 2018 10:55 AM


To: Henry Yu <henr...@huawei.com>


Subject: Re: [brigade-dynconfig] Some issues regarding YANG Runtime/Synchronizer

 

Hi Henry,

 

"service-interface-point" group uses "resource-spec" group, and "uses global-class" is inside of "resource-spec", so my JSON example should be valid.

 

        grouping resource-spec {

            uses global-class;

            description "none";

        }

        grouping service-spec {

            uses global-class;

            description "none";

        }

        grouping service-interface-point {

            leaf-list layer-protocol-name {

                type layer-protocol-name;

                // config false;

                min-elements 1;

                description "Usage of layerProtocolName [>1]  in the ServiceInterfacePoint should be considered experimental";

            }

            uses resource-spec;

            uses tapi-common:admin-state-pac;

            uses tapi-common:capacity-pac;

            description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers. 

                The structure of LTP supports all transport protocols including circuit and packet forms.";

        }

 

And yang-tree for tapi-common.yang shows that uuid and name are attribute of service-interface-point.

 

module: tapi-common

    +--rw context!

       +--rw service-interface-point* [uuid]

       |  +--ro layer-protocol-name*        layer-protocol-name

       |  +--rw uuid                        uuid

       |  +--rw name* [value-name]

       |  |  +--rw value-name    string

       |  |  +--rw value?        string

       ...

 

Thanks,

Hiroki

 

 

2018-02-06 6:36 GMT-08:00 Henry Yu <henr...@huawei.com>:

Hi Hiroki,

 

In the tapi-common model, should “uses global-class”  be inside service-interface-point?  Otherwise, the model does not seem to match your JSON. Am I missing something?

 

        container context {

          presence "TAPI";

            uses context;

            description "none";

        }

        grouping context {

            list service-interface-point {

                key 'uuid';

                min-elements 2;

                uses service-interface-point;

                description "none";

            }

            uses global-class;

            description "The Network Control Domain (NCD) object class represents the scope of control that a particular SDN controller has with respect to a particular network, (i.e., encompassing a designated set of interconnected (virtual) network elements).";

        }

 

 

From: Henry Yu
Sent: Monday, February 05, 2018 11:16 PM
To: 'Hiroki Okui' <hirok...@gmail.com>
Subject: RE: [brigade-dynconfig] Some issues regarding YANG Runtime/Synchronizer

 

Hi Hiroki,  Thanks for trying.  I will have to take a look at the YANG models tomorrow.  I will get back to you ASAP.

 

Henry

 

From: Hiroki Okui [mailto:hirok...@gmail.com]
Sent: Monday, February 05, 2018 11:10 PM


To: Henry Yu <henr...@huawei.com>


Subject: Re: [brigade-dynconfig] Some issues regarding YANG Runtime/Synchronizer

 

Hi Henry,

 

I tried both of them with Postman:

 

but they did not work and resulted in the same error.

 

Thanks,

Hiroki

 

2018-02-05 19:24 GMT-08:00 Henry Yu <henr...@huawei.com>:

Could you please try:

 

to http://localhost:8181/onos/restconf/data

 

i.e.,  without the “/” at the end?

 

 

 

From: Hiroki Okui [mailto:hirok...@gmail.com]
Sent: Monday, February 05, 2018 10:09 PM


To: Henry Yu <henr...@huawei.com>


Subject: Re: [brigade-dynconfig] Some issues regarding YANG Runtime/Synchronizer

 

Hi Henry,

 

 

Thanks,

Hiroki

 

2018-02-05 18:37 GMT-08:00 Henry Yu <henr...@huawei.com>:

Hi Hiroki,

 

What’s your URL for  post?

 

Thanks,

Henry

 

 

From: Hiroki Okui [mailto:hirok...@gmail.com]
Sent: Monday, February 05, 2018 9:35 PM
To: Henry Yu <henr...@huawei.com>


Subject: Re: [brigade-dynconfig] Some issues regarding YANG Runtime/Synchronizer

 

Hi Henry,

 

Thank you for your reply.

 

I've tried non-empty array config:

 

{

  "tapi-common:context": {

    "service-interface-point": [

      {

        "uuid": "00000000-0000-4200-0001-110000000000",

        "name": [

          {

            "value-name": "sip11"

          }

        ]

      }

    ]

  }

}

 

but it resulted in the same error.

 

2018-02-06 02:25:34,380 | INFO  | qtp23103869-36   | RestconfUtils                    | 175 - org.onosproject.onos-apps-restconf-utils - 1.13.0.SNAPSHOT | org.onosproject.yang.runtime.DefaultCompositeStream@66a76cf5

2018-02-06 02:25:34,382 | ERROR | qtp23103869-36   | RestconfUtils                    | 175 - org.onosproject.onos-apps-restconf-utils - 1.13.0.SNAPSHOT | convertJsonToDataNode failure: Method called for other then data node

2018-02-06 02:25:34,382 | ERROR | qtp23103869-36   | RestconfWebResource              | 177 - org.onosproject.onos-protocols-restconf-server-rpp - 1.13.0.SNAPSHOT | ERROR: handlePostRequest: ERROR: JSON cannot be converted to DataNode

 

 

I've also tried:

{

  "tapi-common:context": {}

}

and it also raised the same error.

 

 

I've tried JSON below with OpenConfig model:

{

  "openconfig-interfaces:interfaces": {}

}

 

it worked properly, so the previous JSON seems to be valid.

 

Thanks,

Hiroki

 

 

 

To unsubscribe from this group and stop receiving emails from it, send an email to brigade-dynconfig+unsubscribe@onosproject.org.
To post to this group, send email to brigade-dynconfig@onosproject.org.

--
You received this message because you are subscribed to a topic in the Google Groups "Dynamic configuration" group.
To unsubscribe from this topic, visit https://groups.google.com/a/onosproject.org/d/topic/brigade-dynconfig/Ac-q5FlA8_c/unsubscribe.
To unsubscribe from this group and all its topics, send an email to brigade-dynconfig+unsubscribe@onosproject.org.
To post to this group, send email to brigade-dynconfig@onosproject.org.

Ramon Casellas

unread,
Feb 8, 2018, 8:31:04 AM2/8/18
to Dynamic configuration, henr...@huawei.com, gauravj...@gmail.com, hirok...@gmail.com
Hi all,

For what is worth, I am also having this error. Two things that may be useful are

1/ The list service-interface-point  is
        grouping context {
            list service
-interface-point {
                key
'uuid';
                min
-elements 2;

so I tried the same having at least two elements in the array/list


2/ Compared to other models that are working, in my case, tapi-common is supporting tapi-connectivity. In short, the resource is being augmented in the connectivity model:

module tapi-connectivity {

    augment
"/tapi-common:context" {

        uses connectivity
-context;
        description
"Augments the base TAPI Context with ConnectivityService information";
   
}

It is worth noting that the app is registering both modules

/**
 * Component to register the TAPI 2.0 service model and its dependencies.
 */

@Component(immediate = true)
public class TapiServiceModelRegistrator extends AbstractYangModelRegistrator {
 // SNIP
    private static Map<YangModuleId, AppModuleInfo> getAppInfo() {
       
Map<YangModuleId, AppModuleInfo> appInfo = new HashMap<>();

       
// The main module is tapi-connectivity
       
// tapi-connectivity:context
       
// rpc create-connectivity-service
        appInfo
.put(new DefaultYangModuleId("tapi-connectivity", "2017-05-31"),
                   
new DefaultAppModuleInfo(TapiConnectivity.class, null));


       
// Additional modules and dependencies
        appInfo
.put(new DefaultYangModuleId("tapi-common", "2017-05-31"),
                   
new DefaultAppModuleInfo(TapiCommon.class, null));




But if I use tapi connectivity in the POST I get "Schema node with name context doesn't exist."

{
   
"tapi-connectivity:context":
   
{
       
"service-interface-point" : [
           
{
               
"uuid": "00000000-0000-4200-0001-110000000000",
               

Same for a get (after starting up ONOS)

curl -X GET http://localhost:8181/onos/restconf/data/tapi-common:context

{"ietf-restconf:errors":[{"error":{"error-type":"application","error-tag":"operation-failed","error-path":"/onos/restconf/data/tapi-common:context","error-message":"ERROR: JSON cannot be converted to DataNode","error-info":"Method called for other then data node"}}]}


curl -X GET http://localhost:8181/onos/restconf/data/tapi-connectivity:context

{"ietf-restconf:errors":[{"error":{"error-type":"application","error-tag":"operation-failed","error-path":"/onos/restconf/data/tapi-connectivity:context","error-message":"ERROR: JSON cannot be converted to DataNode","error-info":"Schema node with name context doesn't exist."}}]}

I was expecting something like

    "ietf-restconf:errors": [{
           
"error": {
               
"error-app-tag": "handleGetRequest",
               
"error-message": "Resource not found",
               
"error-path": "tapi-connectivity (or common):context",
               
"error-tag": "invalid-value",
               
"error-type": "protocol"
           
}}]




Thanks,
Ramon

Ramon Casellas

unread,
Feb 8, 2018, 8:48:09 AM2/8/18
to Dynamic configuration, henr...@huawei.com, gauravj...@gmail.com, hirok...@gmail.com
Replying to myself....apologies

Double checking, I think I messed up my scripts. If I am not wrong, accessing augments should be appending the augment to the augmented resource as in:

curl -X GET http://localhost:8181/onos/restconf/data/tapi-common:context/tapi-connectivity:connectivity-service



So the error "schema node context .. doesn't exist" when using /data/tapi-connectivity:foo seems right.

Ramon


On Thursday, February 8, 2018 at 2:31:04 PM UTC+1, Ramon Casellas wrote:
Hi all,


Sean Condon

unread,
Feb 8, 2018, 8:58:49 AM2/8/18
to Ramon Casellas, Dynamic configuration, henr...@huawei.com, gauravj...@gmail.com, hirok...@gmail.com

Ramon


You have a grouping "context", but I don't see what "uses" this grouping. I was expecting to see a container using this grouping.


Sean


From: Ramon Casellas <ramon.c...@gmail.com>
Sent: 08 February 2018 13:48:09
To: Dynamic configuration
Cc: henr...@huawei.com; gauravj...@gmail.com; hirok...@gmail.com

Subject: Re: [brigade-dynconfig] Some issues regarding YANG Runtime/Synchronizer
 
EXTERNAL EMAIL

--
You received this message because you are subscribed to the Google Groups "Dynamic configuration" group.
To unsubscribe from this group and stop receiving emails from it, send an email to brigade-dyncon...@onosproject.org.
To post to this group, send email to brigade-...@onosproject.org.
Visit this group at https://groups.google.com/a/onosproject.org/group/brigade-dynconfig/.

Ramon Casellas

unread,
Feb 8, 2018, 9:04:45 AM2/8/18
to brigade-...@onosproject.org
On 08/02/2018 14:58, Sean Condon wrote:

Ramon


You have a grouping "context", but I don't see what "uses" this grouping. I was expecting to see a container using this grouping.


Hi Sean,

Apologies, sometimes trying to remove unneeded part I remove too much :)

From onos/models/tapi/src/main/yang/tapi-common\@2017-05-31.yang

        container context {
            presence "TAPI";
            uses context;
            description "none";
        }
        grouping context {
            list service-interface-point {
                key 'uuid';
                min-elements 2;
                uses service-interface-point;
                description "none";
            }

From onos/models/tapi/src/main/yang/connec...@2017-05-31.yang


    augment "/tapi-common:context" {
        uses connectivity-context;
        description "Augments the base TAPI Context with ConnectivityService information";
    }


The resource is then tapi-common:context augmented by the connectivity model (similarly, eth, oam, odu, topology... they also augment context

PS: As we discussed by email, we are now checking RPC vs non RPC approaches for TAPI, and context seems like "the big entry point". A separate email will follow



Sean Condon

unread,
Feb 8, 2018, 9:35:18 AM2/8/18
to Ramon Casellas, brigade-...@onosproject.org

OK - I see now. I have to say that I always find it useful to use the "pyang" tool to generate a jstree to show how the YANG is really being interpreted.


I presume the models are loading as you expect - http://localhost:8181/onos/yang/models


My understanding of the augment is that your POST payload should be on http://localhost:8181/onos/restconf/data as

{
   
"tapi-common:context":
   
{
       
"tapi-conectivity:service-interface-point" : [
           
{
               
"uuid": "00000000-0000-4200-0001-110000000000",



From: Ramon Casellas <ramon.c...@gmail.com>
Sent: 08 February 2018 14:04:38
To: brigade-...@onosproject.org

Subject: Re: [brigade-dynconfig] Some issues regarding YANG Runtime/Synchronizer
 
EXTERNAL EMAIL

--
You received this message because you are subscribed to the Google Groups "Dynamic configuration" group.
To unsubscribe from this group and stop receiving emails from it, send an email to brigade-dyncon...@onosproject.org.
To post to this group, send email to brigade-...@onosproject.org.
Visit this group at https://groups.google.com/a/onosproject.org/group/brigade-dynconfig/.

Ramon Casellas

unread,
Feb 8, 2018, 9:44:04 AM2/8/18
to Sean Condon, brigade-...@onosproject.org
On 08/02/2018 15:35, Sean Condon wrote:

OK - I see now. I have to say that I always find it useful to use the "pyang" tool to generate a jstree to show how the YANG is really being interpreted.


I presume the models are loading as you expect - http://localhost:8181/onos/yang/models

Sure (thanks for the tip, that is useful)
{"Model_ids":["org.onosproject.models.metrohaul","org.onosproject.models.common","org.onosproject.models.openconfig","org.onosproject.models.tapi"]}


My understanding of the augment is that your POST payload should be on http://localhost:8181/onos/restconf/data as

{
   
"tapi-common:context":
   
{
       
"tapi-conectivity:service-interface-point" : [
           
{
               
"uuid": "00000000-0000-4200-0001-110000000000",


I see your point, although in this case, service-interface-point is still defined in tapi-common.

I will, indeed, add "tapi-connectivity:connectivity-service : [  ... ] when using the related augments, although at this stage we seem to not be able to allocate tapi-common:context

Thanks
R.



hir...@opennetworking.org

unread,
Feb 8, 2018, 3:47:02 PM2/8/18
to Dynamic configuration, sean....@microsemi.com
To idenfity the root cause, I tried only use tapi-common.yang for NBI and not to use "augment" statement.

I kicked POST with payload just like:

{
  "tapi-common:context": {}
}

and I got the same error.

2018-02-08 20:36:32,491 | ERROR | qtp175869087-39  | RestconfUtils                    | 188 - org.onosproject.onos-apps-restconf-utils - 1.13.0.SNAPSHOT | convertJsonToDataNode failure: Method called for other then data node
2018-02-08 20:36:32,493 | ERROR | qtp175869087-39  | RestconfWebResource              | 190 - org.onosproject.onos-protocols-restconf-server-rpp - 1.13.0.SNAPSHOT | ERROR: handlePostRequest: ERROR: JSON cannot be converted to DataNode


So I guess this error is not related to "augment" statement and the root cause is in somewhere else.


Thanks,
Hiroki
tapi-common.png

elain...@gmail.com

unread,
Sep 16, 2019, 12:07:31 AM9/16/19
to Dynamic configuration, hir...@opennetworking.org, y-hi...@opennetworking.org, henr...@huawei.com
Hi Henry,
I also have the restconf post NB error when I use postman sending json to http://10.2.49.188:8181/onos/restconf/data/demo-wx:evc.
I tried both json like :
{"evc": {"device": ""}} and {"demo-wx:evc":{"evc": {"device": ""}}}
but they both got the same error like below:

{
    "ietf-restconf:errors": [
        {
            "error": {
                "error-type": "application",
                "error-tag": "operation-failed",
                "error-path": "/onos/restconf/data/demo-wx:evc",
                "error-message": "ERROR: JSON cannot be converted to DataNode",
                "error-info": "Requested evc is not child in evc"
            }
        }
    ]
}
 And logs are like this:


2019-09-16 11:57:12,319 | ERROR | data/demo-wx:evc | RestconfUtils                    | 193 - org.onosproject.onos-apps-restconf-utils - 1.14.0 | convertJsonToDataNode failure: Requested evc is not child in evc
java.lang.IllegalArgumentException: Requested evc is not child in evc
at org.onosproject.yang.compiler.datamodel.YangContainer.getChildContext(YangContainer.java:622)
at org.onosproject.yang.runtime.SerializerHelper.getChildSchemaContext(SerializerHelper.java:585)[180:org.onosproject.onos-yang-runtime:2.5.0]
at org.onosproject.yang.runtime.SerializerHelper.addDataNode(SerializerHelper.java:337)[180:org.onosproject.onos-yang-runtime:2.5.0]
at org.onosproject.yang.serializers.json.DefaultJsonWalker.addDataNode(DefaultJsonWalker.java:146)[181:org.onosproject.onos-yang-serializers-json:2.5.0]
at org.onosproject.yang.serializers.json.DefaultJsonWalker.addNoneLeafDataNode(DefaultJsonWalker.java:153)[181:org.onosproject.onos-yang-serializers-json:2.5.0]
at org.onosproject.yang.serializers.json.DefaultJsonWalker.addSingleInstanceNodeToDataTree(DefaultJsonWalker.java:169)[181:org.onosproject.onos-yang-serializers-json:2.5.0]
at org.onosproject.yang.serializers.json.DefaultJsonWalker.walkJsonNode(DefaultJsonWalker.java:121)[181:org.onosproject.onos-yang-serializers-json:2.5.0]
at org.onosproject.yang.serializers.json.DefaultJsonWalker.walkJsonNode(DefaultJsonWalker.java:130)[181:org.onosproject.onos-yang-serializers-json:2.5.0]
at org.onosproject.yang.serializers.json.DecoderUtils.convertJsonToDataNode(DecoderUtils.java:84)
at org.onosproject.yang.serializers.json.JsonSerializer.decode(JsonSerializer.java:88)
at org.onosproject.yang.runtime.impl.DefaultYangRuntimeHandler.decode(DefaultYangRuntimeHandler.java:62)
at org.onosproject.yang.impl.YangRuntimeManager.decode(YangRuntimeManager.java:148)
at org.onosproject.restconf.utils.RestconfUtils.convertJsonToDataNode(RestconfUtils.java:144)
at org.onosproject.restconf.restconfmanager.RestconfManager.runPostOperationOnDataResource(RestconfManager.java:140)
at org.onosproject.protocol.restconf.server.rpp.RestconfWebResource.handlePostRequest(RestconfWebResource.java:205)[201:org.onosproject.onos-protocols-restconf-server-rpp:1.14.0]
at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_181]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_181]
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:200)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)[154:org.glassfish.jersey.core.jersey-common:2.26.0]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)[154:org.glassfish.jersey.core.jersey-common:2.26.0]
at org.glassfish.jersey.internal.Errors.process(Errors.java:316)[154:org.glassfish.jersey.core.jersey-common:2.26.0]
at org.glassfish.jersey.internal.Errors.process(Errors.java:298)[154:org.glassfish.jersey.core.jersey-common:2.26.0]
at org.glassfish.jersey.internal.Errors.process(Errors.java:268)[154:org.glassfish.jersey.core.jersey-common:2.26.0]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289)[154:org.glassfish.jersey.core.jersey-common:2.26.0]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703)[161:org.glassfish.jersey.core.jersey-server:2.26.0]
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416)[168:org.glassfish.jersey.containers.jersey-container-servlet-core:2.26.0]
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370)[168:org.glassfish.jersey.containers.jersey-container-servlet-core:2.26.0]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389)[168:org.glassfish.jersey.containers.jersey-container-servlet-core:2.26.0]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342)[168:org.glassfish.jersey.containers.jersey-container-servlet-core:2.26.0]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229)[168:org.glassfish.jersey.containers.jersey-container-servlet-core:2.26.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69)[66:org.ops4j.pax.web.pax-web-jetty:3.2.9]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:522)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240)[66:org.ops4j.pax.web.pax-web-jetty:3.2.9]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:75)[66:org.ops4j.pax.web.pax-web-jetty:3.2.9]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.Server.handle(Server.java:366)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)[57:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at java.lang.Thread.run(Thread.java:748)[:1.8.0_181]
2019-09-16 11:57:12,429 | INFO  | data/demo-wx:evc | RestconfUtils                    | 193 - org.onosproject.onos-apps-restconf-utils - 1.14.0 | Failed JSON: 
{"evc":{"device":"111"}}
2019-09-16 11:57:12,430 | DEBUG | data/demo-wx:evc | RestconfUtils                    | 193 - org.onosproject.onos-apps-restconf-utils - 1.14.0 | convertJsonToDataNode failure

Did I use wrong dependency?
Is my Json not correct?
Thanks a lot for helping me!
Xiao


在 2018年2月6日星期二 UTC+8上午10:11:03,Henry Yu写道:

To unsubscribe from this group and stop receiving emails from it, send an email to brigade-...@onosproject.org.

Henry Yu

unread,
Sep 17, 2019, 11:17:29 AM9/17/19
to elain...@gmail.com, Dynamic configuration, hir...@opennetworking.org, Yuta Higuchi
Hi,

Could you please try:

POST http://10.2.49.188:8181/onos/restconf/data

with payload:
{"demo-wx:evc": {"evc": {"device": "my-device" }}}

If that succeeds, you can try GET
http://10.2.49.188:8181/onos/restconf/data/demo-wx:evc to retrieve the
saved data.

NOTE:
1. The URL for POST should refer to the *parent* of the payload
object. i.e., parent of evc is "restconf/data"
2. The top level object of the payload should have module name,
demo-wx, as the prefix. (See RFC8040 for more information)
3. The YANG module, demo-wx, has to be registered/loaded in YANG
runtime. I assume you have done this step.

Thanks,
Henry
> To view this discussion on the web visit https://groups.google.com/a/onosproject.org/d/msgid/brigade-dynconfig/2628f692-a701-442f-9148-714e08d7434a%40onosproject.org.
Reply all
Reply to author
Forward
0 new messages