[OVSDB-238] ovsdb netvirt needs to handle cases when network/subnet contains no tentant id Created: 15/Dec/15  Updated: 19/Oct/17  Resolved: 15/Dec/15

Status: Resolved
Project: ovsdb
Component/s: openstack.net-virt
Affects Version/s: unspecified
Fix Version/s: None

Type: Bug
Reporter: Flavio Fernandes Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 4776

 Description   

When neutron is configures to have l3_ha, there will be networks created
which have an empty tenant id field. OVSDB (and NeutronNorthbound) need to
be able to handle it gracefully.


Add to local.conf:

enable_service q-l3
ODL_L3=False

[[post-config|$NEUTRON_CONF]]
[DEFAULT]
l3_ha = True

===

Steps to reproduce:

https://gist.github.com/bc67dd6152953001d68f

source openrc admin admin
keystone tenant-create --name=tenant1 --enabled=true 2> /dev/null

keystone user-create --name=user1 --pass=user1 \
--email=user1@example.com 2> /dev/null

keystone user-role-add --user=user1 --role=member \
--tenant=tenant1 2> /dev/null

TNT1_ID=$(keystone tenant-list 2> /dev/null | grep '\s'tenant1'' | awk '

{print $2}

')

neutron net-create ext --provider:network_type flat --router:external --provider:physical_network physnetext

neutron subnet-create \
--allocation-pool start=192.168.111.21,end=192.168.111.40 --gateway=192.168.111.254 \
--disable-dhcp --name subext ext 192.168.111.0/24

unset SERVICE_TOKEN SERVICE_ENDPOINT
export OS_AUTH_URL=http://192.168.50.20:35357/v2.0/
export OS_REGION_NAME=RegionOne

export OS_USERNAME=user1
export OS_TENANT_NAME=tenant1
export OS_PASSWORD=user1
export PS1='[\u@\h \W(keystone_user1)]\$ '

rm -f id_rsa_demo* ; ssh-keygen -t rsa -b 2048 -N '' -f id_rsa_demo > /dev/null
nova keypair-add --pub-key id_rsa_demo.pub demo_key > /dev/null

neutron router-create rtr1

====

2015-12-14 23:00:41,727 | INFO | tp1482635200-568 | eutronSecurityGroupDummyProvider | 270 - org.opendaylight.neutron.dummyprovider - 0.6.0.SNAPSHOT | NeutronSecurityGroup{securityGroupUUID='df8bdda3-7064-488f-a5da-300fe41f6bb0', securityGroupName='default', securityGroupDescription='Default security group', securityGroupTenantID='', securityRules=[NeutronSecurityRule

{securityRuleUUID='ca18d679-8340-4770-b987-5e46b7d3ff21', securityRuleDirection='ingress', securityRuleProtocol='null', securityRulePortMin=null, securityRulePortMax=null, securityRuleEthertype='IPv4', securityRuleRemoteIpPrefix='null', securityRemoteGroupID=df8bdda3-7064-488f-a5da-300fe41f6bb0, securityRuleGroupID='df8bdda3-7064-488f-a5da-300fe41f6bb0', securityRuleTenantID=''}

, NeutronSecurityRule

{securityRuleUUID='d37408fa-e7f2-4c5c-a8d8-85988d08a9af', securityRuleDirection='egress', securityRuleProtocol='null', securityRulePortMin=null, securityRulePortMax=null, securityRuleEthertype='IPv4', securityRuleRemoteIpPrefix='null', securityRemoteGroupID=null, securityRuleGroupID='df8bdda3-7064-488f-a5da-300fe41f6bb0', securityRuleTenantID=''}

, NeutronSecurityRule

{securityRuleUUID='a891150e-7939-4966-bd68-8f086e9ab687', securityRuleDirection='ingress', securityRuleProtocol='null', securityRulePortMin=null, securityRulePortMax=null, securityRuleEthertype='IPv6', securityRuleRemoteIpPrefix='null', securityRemoteGroupID=df8bdda3-7064-488f-a5da-300fe41f6bb0, securityRuleGroupID='df8bdda3-7064-488f-a5da-300fe41f6bb0', securityRuleTenantID=''}

, NeutronSecurityRule

{securityRuleUUID='0b3f961d-98fd-47c4-957b-ef34a8f71a35', securityRuleDirection='egress', securityRuleProtocol='null', securityRulePortMin=null, securityRulePortMax=null, securityRuleEthertype='IPv6', securityRuleRemoteIpPrefix='null', securityRemoteGroupID=null, securityRuleGroupID='df8bdda3-7064-488f-a5da-300fe41f6bb0', securityRuleTenantID=''}

]]
2015-12-14 23:00:41,756 | INFO | tp1482635200-567 | NeutronNetworkDummyProvider | 270 - org.opendaylight.neutron.dummyprovider - 0.6.0.SNAPSHOT | NeutronNetwork [networkUUID=3d357c2c-9390-469a-ac15-e8a48fb5029d, networkName=HA network tenant d9dd6609c22a4c1c816e9cb10c5cb247, adminStateUp=true, shared=false, tenantID=, routerExternal=false, providerNetworkType=vxlan, providerPhysicalNetwork=null, providerSegmentationID=1054, status=ACTIVE, segments = null]
2015-12-14 23:00:41,757 | ERROR | lt-dispatcher-25 | DataChangeListener | 147 - org.opendaylight.controller.sal-distributed-datastore - 1.3.0.SNAPSHOT | Error notifying listener org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronNetworkChangeListener
java.lang.NullPointerException
at org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronNetworkChangeListener.fromMd(NeutronNetworkChangeListener.java:133)[268:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
at org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronNetworkChangeListener.createNetwork(NeutronNetworkChangeListener.java:84)[268:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
at org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronNetworkChangeListener.onDataChanged(NeutronNetworkChangeListener.java:74)[268:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:143)[122:org.opendaylight.controller.sal-binding-broker-impl:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataChangeListener.dataChanged(DataChangeListener.java:66)[147:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataChangeListener.handleReceive(DataChangeListener.java:39)[147:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:34)[143:org.opendaylight.controller.sal-clustering-commons:1.3.0.SNAPSHOT]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:167)[132:com.typesafe.akka.actor:2.3.14]
at akka.actor.Actor$class.aroundReceive(Actor.scala:467)[132:com.typesafe.akka.actor:2.3.14]
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:97)[132:com.typesafe.akka.actor:2.3.14]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)[132:com.typesafe.akka.actor:2.3.14]
at akka.actor.ActorCell.invoke(ActorCell.scala:487)[132:com.typesafe.akka.actor:2.3.14]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)[132:com.typesafe.akka.actor:2.3.14]
at akka.dispatch.Mailbox.run(Mailbox.scala:220)[132:com.typesafe.akka.actor:2.3.14]
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)[132:com.typesafe.akka.actor:2.3.14]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[129:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[129:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[129:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[129:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
2015-12-14 23:00:41,807 | INFO | tp1482635200-530 | NeutronSubnetDummyProvider | 270 - org.opendaylight.neutron.dummyprovider - 0.6.0.SNAPSHOT | NeutronSubnet [subnetUUID=2f0d7992-9d80-4a12-960b-8b47705760f4, networkUUID=3d357c2c-9390-469a-ac15-e8a48fb5029d, name=HA subnet tenant d9dd6609c22a4c1c816e9cb10c5cb247, ipVersion=4, cidr=169.254.192.0/18, gatewayIP=null, dnsNameservers=[], allocationPools=[NeutronSubnetIPAllocationPool [start=169.254.192.1, end=169.254.255.254]], hostRoutes=[], enableDHCP=false, tenantID=, ipv6AddressMode=null, ipv6RaMode=null]
2015-12-14 23:00:41,807 | ERROR | lt-dispatcher-25 | DataChangeListener | 147 - org.opendaylight.controller.sal-distributed-datastore - 1.3.0.SNAPSHOT | Error notifying listener org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronSubnetChangeListener
java.lang.NullPointerException
at org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronSubnetChangeListener.fromMd(NeutronSubnetChangeListener.java:141)[268:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
at org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronSubnetChangeListener.createSubnet(NeutronSubnetChangeListener.java:97)[268:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
at org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronSubnetChangeListener.onDataChanged(NeutronSubnetChangeListener.java:87)[268:org.opendaylight.ovsdb.openstack.net-virt:1.2.1.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:143)[122:org.opendaylight.controller.sal-binding-broker-impl:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataChangeListener.dataChanged(DataChangeListener.java:66)[147:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataChangeListener.handleReceive(DataChangeListener.java:39)[147:org.opendaylight.controller.sal-distributed-datastore:1.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:34)[143:org.opendaylight.controller.sal-clustering-commons:1.3.0.SNAPSHOT]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:167)[132:com.typesafe.akka.actor:2.3.14]
at akka.actor.Actor$class.aroundReceive(Actor.scala:467)[132:com.typesafe.akka.actor:2.3.14]
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:97)[132:com.typesafe.akka.actor:2.3.14]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)[132:com.typesafe.akka.actor:2.3.14]
at akka.actor.ActorCell.invoke(ActorCell.scala:487)[132:com.typesafe.akka.actor:2.3.14]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)[132:com.typesafe.akka.actor:2.3.14]
at akka.dispatch.Mailbox.run(Mailbox.scala:220)[132:com.typesafe.akka.actor:2.3.14]
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)[132:com.typesafe.akka.actor:2.3.14]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[129:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[129:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[129:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[129:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]



 Comments   
Comment by Flavio Fernandes [ 15/Dec/15 ]

gerrit https://git.opendaylight.org/gerrit/31323

Generated at Wed Feb 07 20:35:52 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.