Uploaded image for project: 'controller'
  1. controller
  2. CONTROLLER-1304

Unable to configure BGP peer via RESTCONF even without peer-role

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • None
    • Post-Helium
    • netconf
    • None
    • Operating System: All
      Platform: All

    • 3182

      This bug is very similar to CONTROLLER-1283 (point 6.) and the two bugs mean there is no workaround to configure BGP peer via RESTCONF (with XML data).

      To replicate:
      0. install and start ODL
      1. feature:install odl-restconf odl-bgpcep-bgp-all
      2. curl to add bgp-peer configuration (XML, without peer-role element)
      3. HTTP status code 500 and exception in karaf log.

      The exception contains this:
      No enum constant org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.PeerRole.ibgp
      which suggests this bug is also the one that will get fixed with CONTROLLER-1050.

      The curl command:
      curl -v -X PUT -H "Content-Type:application/xml" -u 'admin:admin' -d '<module xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
      <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-peer</type>
      <name>example-bgp-peer</name>
      <host xmlns="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">127.0.0.100</host>
      <port xmlns="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">17900</port>
      <holdtimer xmlns="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">180</holdtimer>
      <initiate-connection xmlns="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">false</initiate-connection>
      <rib xmlns="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">
      <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:cfg">prefix:rib</type>
      <name>example-bgp-rib</name>
      </rib>
      <peer-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">
      <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-peer-registry</type>
      <name>global-bgp-peer-registry</name>
      </peer-registry>
      <advertized-table xmlns="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">
      <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-table-type</type>
      <name>ipv4-unicast</name>
      </advertized-table>
      <advertized-table xmlns="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">
      <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-table-type</type>
      <name>ipv6-unicast</name>
      </advertized-table>
      <advertized-table xmlns="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">
      <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:bgp:rib:impl">prefix:bgp-table-type</type>
      <name>linkstate</name>
      </advertized-table>
      </module>' http://127.0.0.1:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/controller-config/yang-ext:mount/config:modules/module/odl-bgp-rib-impl-cfg:bgp-peer/example-bgp-peer

      The full (first) exception:
      2015-05-12 10:36:29,340 | ERROR | entLoopGroup-2-2 | NetconfOperationRouterImpl | 124 - org.opendaylight.controller.netconf-impl - 0.3.0.SNAPSHOT | Unexpected exception during netconf operation execution
      java.lang.IllegalStateException: Unable to set attributes for org.opendaylight.controller:instanceName=example-bgp-peer,TransactionName=ConfigTransaction-105-109,type=Module,moduleFactoryName=bgp-peer, Error with attribute peer-role:AttributeConfigElement [defaultValue=ibgp, value=null]
      at org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.ReplaceEditConfigStrategy.executeStrategy(ReplaceEditConfigStrategy.java:57)[107:org.opendaylight.controller.config-netconf-connector:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.AbstractEditConfigStrategy.executeConfiguration(AbstractEditConfigStrategy.java:32)[107:org.opendaylight.controller.config-netconf-connector:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditConfig.setOnTransaction(EditConfig.java:188)[107:org.opendaylight.controller.config-netconf-connector:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditConfig.test(EditConfig.java:119)[107:org.opendaylight.controller.config-netconf-connector:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditConfig.executeTests(EditConfig.java:95)[107:org.opendaylight.controller.config-netconf-connector:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditConfig.getResponseInternal(EditConfig.java:74)[107:org.opendaylight.controller.config-netconf-connector:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditConfig.handleWithNoSubsequentOperations(EditConfig.java:302)[107:org.opendaylight.controller.config-netconf-connector:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.util.mapping.AbstractLastNetconfOperation.handle(AbstractLastNetconfOperation.java:33)[105:org.opendaylight.controller.netconf-util:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.util.mapping.AbstractNetconfOperation.handle(AbstractNetconfOperation.java:100)[105:org.opendaylight.controller.netconf-util:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.impl.osgi.NetconfOperationRouterImpl$NetconfOperationExecution.execute(NetconfOperationRouterImpl.java:185)[124:org.opendaylight.controller.netconf-impl:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.impl.osgi.NetconfOperationRouterImpl.executeOperationWithHighestPriority(NetconfOperationRouterImpl.java:114)[124:org.opendaylight.controller.netconf-impl:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.impl.osgi.NetconfOperationRouterImpl.onNetconfMessage(NetconfOperationRouterImpl.java:87)[124:org.opendaylight.controller.netconf-impl:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.impl.NetconfServerSessionListener.processDocument(NetconfServerSessionListener.java:113)[124:org.opendaylight.controller.netconf-impl:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.impl.NetconfServerSessionListener.onMessage(NetconfServerSessionListener.java:86)[124:org.opendaylight.controller.netconf-impl:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.impl.NetconfServerSessionListener.onMessage(NetconfServerSessionListener.java:29)[124:org.opendaylight.controller.netconf-impl:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.nettyutil.AbstractNetconfSession.handleMessage(AbstractNetconfSession.java:61)[115:org.opendaylight.controller.netconf-netty-util:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.nettyutil.AbstractNetconfSession.handleMessage(AbstractNetconfSession.java:32)[115:org.opendaylight.controller.netconf-netty-util:0.3.0.SNAPSHOT]
      at org.opendaylight.protocol.framework.AbstractProtocolSession.channelRead0(AbstractProtocolSession.java:53)[71:org.opendaylight.controller.protocol-framework:0.6.0.SNAPSHOT]
      at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)[68:io.netty.transport:4.0.26.Final]
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)[68:io.netty.transport:4.0.26.Final]
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)[68:io.netty.transport:4.0.26.Final]
      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242)[120:io.netty.codec:4.0.26.Final]
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)[68:io.netty.transport:4.0.26.Final]
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)[68:io.netty.transport:4.0.26.Final]
      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242)[120:io.netty.codec:4.0.26.Final]
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)[68:io.netty.transport:4.0.26.Final]
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)[68:io.netty.transport:4.0.26.Final]
      at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:847)[68:io.netty.transport:4.0.26.Final]
      at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:326)[68:io.netty.transport:4.0.26.Final]
      at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:45)[68:io.netty.transport:4.0.26.Final]
      at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:312)[68:io.netty.transport:4.0.26.Final]
      at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:357)[61:io.netty.common:4.0.26.Final]
      at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)[68:io.netty.transport:4.0.26.Final]
      at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)[61:io.netty.common:4.0.26.Final]
      at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)[61:io.netty.common:4.0.26.Final]
      at java.lang.Thread.run(Thread.java:745)[:1.7.0_75]
      Caused by: java.lang.IllegalStateException: Unable to set attribute PeerRole for org.opendaylight.controller:instanceName=example-bgp-peer,TransactionName=ConfigTransaction-105-109,type=Module,moduleFactoryName=bgp-peer
      at org.opendaylight.controller.config.util.ConfigTransactionJMXClient.setAttribute(ConfigTransactionJMXClient.java:290)[92:org.opendaylight.controller.config-util:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.ReplaceEditConfigStrategy.executeStrategy(ReplaceEditConfigStrategy.java:47)[107:org.opendaylight.controller.config-netconf-connector:0.3.0.SNAPSHOT]
      ... 35 more
      Caused by: javax.management.MBeanException: interface org.opendaylight.controller.config.yang.bgp.rib.impl.BGPPeerModuleMXBean.setPeerRole: cannot convert parameters from open values: java.io.InvalidObjectException: Cannot convert to enum: ibgp
      at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:191)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:175)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:117)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:54)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeSetter(MBeanIntrospector.java:267)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.PerInterface.setAttribute(PerInterface.java:102)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.MBeanSupport.setAttribute(MBeanSupport.java:230)[:1.7.0_75]
      at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.setAttribute(DefaultMBeanServerInterceptor.java:746)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.JmxMBeanServer.setAttribute(JmxMBeanServer.java:739)[:1.7.0_75]
      at org.opendaylight.controller.config.manager.impl.dynamicmbean.DynamicWritableWrapper.setAttribute(DynamicWritableWrapper.java:96)[97:org.opendaylight.controller.config-manager:0.3.0.SNAPSHOT]
      at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.setAttribute(DefaultMBeanServerInterceptor.java:746)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.JmxMBeanServer.setAttribute(JmxMBeanServer.java:739)[:1.7.0_75]
      at org.opendaylight.controller.config.util.ConfigTransactionJMXClient.setAttribute(ConfigTransactionJMXClient.java:288)[92:org.opendaylight.controller.config-util:0.3.0.SNAPSHOT]
      ... 36 more
      Caused by: java.io.InvalidObjectException: Cannot convert to enum: ibgp
      at com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory.invalidObjectException(DefaultMXBeanMappingFactory.java:1415)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory$EnumMapping.fromNonNullOpenValue(DefaultMXBeanMappingFactory.java:535)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory$EnumMapping.fromNonNullOpenValue(DefaultMXBeanMappingFactory.java:516)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory$NonNullMXBeanMapping.fromOpenValue(DefaultMXBeanMappingFactory.java:132)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.ConvertingMethod.fromOpenParameters(ConvertingMethod.java:150)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:186)[:1.7.0_75]
      ... 48 more
      Caused by: java.lang.IllegalArgumentException: No enum constant org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.PeerRole.ibgp
      at java.lang.Enum.valueOf(Enum.java:236)[:1.7.0_75]
      at com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory$EnumMapping.fromNonNullOpenValue(DefaultMXBeanMappingFactory.java:533)[:1.7.0_75]
      ... 52 more

            mmarsale@cisco.com Maros Marsalek
            vrpolak Vratko Polak
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: