cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
4787
Views
3
Helpful
1
Replies

PUT and POST operation error on RESTCONF CONF

mananpat
Cisco Employee
Cisco Employee

Hi,

I am fairly new to ODL. I managed to set up PCEP and BGP-LS on ODL connected to CRS box, However I am facing some issues.

Currently I can GET the configuration from the box using PCEP-topology and BGP-LS topology, however PUT or POST function doesn't work. Since tunnels are delegated on the CRS box, I need the operation working in order to make any changes.

Here are my configuration details, Please take a look, any type of suggestions are appreciated. Below outputs are collected from POSTMAN

POST FUNCTION:

http://localhost:8181/restconf/config/network-topology:network-topology/topology/pcep-topology

500 server error

Header:

Access-Control-Allow-Credentials true
Access-Control-Allow-Origin file://
Access-Control-Expose-Headers location
Content-Type application/json
Server Jetty(8.1.15.v20140411)
Transfer-Encoding
chunked

Server error:

2016-04-29 14:01:33,459 | INFO | p684741745-10980 | RestconfImpl | 300 - org.opendaylight.netconf.sal-rest-connector - 1.3.1.Beryllium-SR1 | Error creating data config/network-topology:network-topology/topology/pcep-topology java.lang.NullPointerException at org.opendaylight.controller.cluster.databroker.AbstractDOMBrokerWriteTransaction.checkInstanceIdentifierReferencesData(AbstractDOMBrokerWriteTransaction.java:80) at org.opendaylight.controller.cluster.databroker.AbstractDOMBrokerWriteTransaction.put(AbstractDOMBrokerWriteTransaction.java:73) at org.opendaylight.netconf.sal.restconf.impl.BrokerFacade.postDataViaTransaction(BrokerFacade.java:330)[300:org.opendaylight.netconf.sal-rest-connector:1.3.1.Beryllium-SR1] at org.opendaylight.netconf.sal.restconf.impl.BrokerFacade.commitConfigurationDataPost(BrokerFacade.java:216)[300:org.opendaylight.netconf.sal-rest-connector:1.3.1.Beryllium-SR1] at org.opendaylight.netconf.sal.restconf.impl.RestconfImpl.createConfigurationData(RestconfImpl.java:871)[300:org.opendaylight.netconf.sal-rest-connector:1.3.1.Beryllium-SR1] at org.opendaylight.netconf.sal.restconf.impl.RestconfImpl.createConfigurationData(RestconfImpl.java:816)[300:org.opendaylight.netconf.sal-rest-connector:1.3.1.Beryllium-SR1] at org.opendaylight.netconf.sal.restconf.impl.StatisticsRestconfServiceWrapper.createConfigurationData(StatisticsRestconfServiceWrapper.java:152)[300:org.opendaylight.netconf.sal-rest-connector:1.3.1.Beryllium-SR1] at org.opendaylight.netconf.sal.rest.impl.RestconfCompositeWrapper.createConfigurationData(RestconfCompositeWrapper.java:89)[300:org.opendaylight.netconf.sal-rest-connector:1.3.1.Beryllium-SR1] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79] at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79] at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.uri.rules.ResourceObjectRule.accept(ResourceObjectRule.java:100)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)[248:com.sun.jersey.jersey-server:1.17.0] at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)[266:com.sun.jersey.servlet:1.17.0] at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)[266:com.sun.jersey.servlet:1.17.0] at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)[266:com.sun.jersey.servlet:1.17.0] at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)[230:org.apache.geronimo.specs.geronimo-servlet_3.0_spec:1.0.0] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:247)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:210)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:82)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:256)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)[293:org.apache.shiro.web:1.2.3] at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)[293:org.apache.shiro.web:1.2.3] at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)[293:org.apache.shiro.web:1.2.3] at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)[293:org.apache.shiro.web:1.2.3] at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)[293:org.apache.shiro.web:1.2.3] at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)[293:org.apache.shiro.web:1.2.3] at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)[293:org.apache.shiro.web:1.2.3] at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)[294:org.apache.shiro.core:1.2.3] at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)[294:org.apache.shiro.core:1.2.3] at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)[294:org.apache.shiro.core:1.2.3] at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)[293:org.apache.shiro.web:1.2.3] at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)[293:org.apache.shiro.web:1.2.3] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69)[245:org.ops4j.pax.web.pax-web-jetty:3.1.4] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240)[245:org.ops4j.pax.web.pax-web-jetty:3.1.4] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:75)[245:org.ops4j.pax.web.pax-web-jetty:3.1.4] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.server.Server.handle(Server.java:370)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)[236:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at java.lang.Thread.run(Thread.java:745)[:1.7.0_79]

========================

PUT FUNCTION:

http://localhost:8181/restconf/config/network-topology:network-topology/topology/pcep-topology

Received 400 BAD REQUEST

{ "errors": { "error": [ { "error-type": "protocol", "error-tag": "malformed-message", "error-message": "Input is required." } ] } } Access-Control-Allow-Credentials true Access-Control-Allow-Origin file:// Access-Control-Expose-Headers location Content-Type application/json Server Jetty(8.1.15.v20140411) Transfer-Encoding chunked

No error on the server

=================

Working Get output

Content-Encoding gzip
Content-Type application/yang.data+json
Server Jetty(8.1.15.v20140411)
Transfer-Encoding chunked
Vary Accept-Encoding, User-Agent




{
 
"topology": [
  
{
  
"topology-id": "pcep-topology",
  
"topology-types": {
  
"network-topology-pcep:topology-pcep": {}
  
},
  
"node": [
  
{
  
"node-id": "pcc://192.168.1.2",
  
"network-topology-pcep:path-computation-client": {
  
"reported-lsp": [
  
{
  
"name": "blue3_t16",
  
"path": [
  
{
  
"lsp-id": 3,
  
"lspa": {
  
"local-protection-desired": false,
  
"hold-priority": 7,
  
"ignore": false,
  
"include-all": 0,
  
"include-any": 0,
  
"processing-rule": false,
  
"exclude-any": 0,
  
"tlvs": {},
  
"setup-priority": 7
  
},
  
"bandwidth": {
  
"ignore": false,
  
"processing-rule": false,
  
"bandwidth": "AAAAAA=="
  
},
  
"odl-pcep-ietf-stateful07:lsp": {
  
"remove": false,
  
"ignore": false,
  
"plsp-id": 17,
  
"delegate": true,
  
"administrative": true,
  
"processing-rule": false,
  
"odl-pcep-ietf-initiated00:create": false,
  
"sync": false,
  
"operational": "up",
  
"tlvs": {
  
"lsp-identifiers": {
  
"ipv4": {
  
"ipv4-tunnel-sender-address": "6.6.6.6",
  
"ipv4-extended-tunnel-id": "1.1.1.1",
  
"ipv4-tunnel-endpoint-address": "1.1.1.1"
  
},
  
"tunnel-id": 16,
  
"lsp-id": 3
  
},
  
"symbolic-path-name": {
  
"path-name": "Ymx1ZTNfdDE2"
  
},
  
"path-binding": {
  
"binding-value": "AAXc4AA=",
  
"binding-type": 0
  
}
  
}
  
},
  
"ero": {
  
"ignore": false,
  
"processing-rule": false,
  
"subobject": [
  
{
  
"ip-prefix": {
  
"ip-prefix": "192.168.2.2/32"
  
},
  
"loose": false
  
},
  
{
  
"ip-prefix": {
  
"ip-prefix": "192.168.3.2/32"
  
},
  
"loose": false
  
},
  
{
  
"ip-prefix": {
  
"ip-prefix": "1.1.1.1/32"
  
},
  
"loose": false
  
}
  
]
  
}
  
}
  
]
  
},
  
{
  
"name": "blue3_t11",
  
"path": [
  
{
  
"lsp-id": 63,
  
"lspa": {
  
"local-protection-desired": false,
  
"hold-priority": 7,
  
"ignore": false,
  
"include-all": 0,
  
"include-any": 0,
  
"processing-rule": false,
  
"exclude-any": 0,
  
"tlvs": {},
  
"setup-priority": 7
  
},
  
"bandwidth": {
  
"ignore": false,
  
"processing-rule": false,
  
"bandwidth": "AAAAAA=="
  
},
  
"odl-pcep-ietf-stateful07:lsp": {
  
"remove": false,
  
"ignore": false,
  
"plsp-id": 12,
  
"delegate": true,
  
"administrative": true,
  
"processing-rule": false,
  
"odl-pcep-ietf-initiated00:create": false,
  
"sync": false,
  
"operational": "up",
  
"tlvs": {
  
"lsp-identifiers": {
  
"ipv4": {
  
"ipv4-tunnel-sender-address": "6.6.6.6",
  
"ipv4-extended-tunnel-id": "1.1.1.1",
  
"ipv4-tunnel-endpoint-address": "1.1.1.1"
  
},
  
"tunnel-id": 11,
  
"lsp-id": 63
  
},
  
"symbolic-path-name": {
  
"path-name": "Ymx1ZTNfdDEx"
  
},
  
"path-binding": {
  
"binding-value": "AAXcQAA=",
  
"binding-type": 0
  
}
  
}
  
},
  
"ero": {
  
"ignore": false,
  
"processing-rule": false,
  
"subobject": [
  
{
  
"ip-prefix": {
  
"ip-prefix": "1.35.1.2/32"
  
},
  
"loose": false
  
},
  
{
  
"ip-prefix": {
  
"ip-prefix": "1.1.1.1/32"
  
},
  
"loose": false
  
}
  
]
  
}
  
}
  
]
  
}
  
],
  
"stateful-tlv": {
  
"odl-pcep-ietf-stateful07:stateful": {
  
"odl-pcep-ietf-initiated00:initiation": true,
  
"lsp-update-capability": true
  
}
  
},
  
"state-sync": "synchronized",
  
"ip-address": "192.168.1.2"
  
}
  
}
  
]
  
}
 
]
}

POST on stack overflow: http://stackoverflow.com/questions/36944923/postman-restconf-put-and-post-function-error

1 Reply 1

giheron
Cisco Employee
Cisco Employee

I've replied on Stack Overflow (noting that it probably isn't the right place to ask the question).

As I said there, you'd be better off asking on the ODL BGP users mailer.  You can subscribe at:

https://lists.opendaylight.org/mailman/listinfor/bgpcep-users

or you could look in the ODL Wiki at:

https://wiki.opendaylight.org/view/BGP_LS_PCEP:Beryllium_Operations_Guide#Tunnel_Management_for_draft-ietf-pce-stateful-pce-07_and_draft-ietf-pce-pce-initiated-lsp-00

At any rate the brief summary is that the PCE-P topology is only present as operational data (not as config). To add LSPs you issue an RPC call.

It looks like you want to modify an existing LSP.  In that case you need an "update-lsp" RPC.  So to do that you would do a POST to:

http://localhost:8181/restconf/operations/network-topology:network-topology/topology/pcep-topology/update-lsp


if you're using JSON the message body would look like:

{

  "input" : {

    "node" : "pcc://192.168.1.2",

    "name" : "blue3_t16",

    "network-topology-ref": "/network-topology:network-topology/network-topology:topology[network-topology:topology-id=\"pcep-topology\"]",

    "arguments": {

      "pcep-ietf-stateful:lsp": {

        "administrative": "true",

        "delegate": "true"

      },

      "ero" : {

        "subobject" :[

          {

            "ip-prefix": {

              "ip-prefix": "192.168.2.2/32"

            },

            "loose": false

          },

          {

            "ip-prefix": {

              "ip-prefix": "192.168.3.2/32"

            },

            "loose": false

          },

          {

            "ip-prefix": {

              "ip-prefix": "1.1.1.1/32"

            },

            "loose": false

          }

        ]

      }

    }

  }

}

(you'd want to change the ERO of course - I copied the one you have as already reported).