← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1494310] [NEW] Arista ML2 driver doesn't synchronize HA networks with EOS correctly

 

Public bug reported:

Running Openstack Kilo and networking-arista from master (1aa15e8).

With some HA networks already created in Neutron (created automatically
when adding HA routers), restarting the CVX and neutron-server lead to
those networks disappearing from EOS (not listed by "show openstack
networks" anymore).

The problem seems to come from _cleanup_db() in
neutron/plugins/ml2/drivers/arista/mechanism_arista.py, which is called
by initialize() in the same file:

def _cleanup_db(self):
    """Clean up any uncessary entries in our DB."""
    db_tenants = db_lib.get_tenants()
    for tenant in db_tenants:
        neutron_nets = self.ndb.get_all_networks_for_tenant(tenant)
        neutron_nets_id = []
        for net in neutron_nets:
            neutron_nets_id.append(net['id'])
        db_nets = db_lib.get_networks(tenant)
        for net_id in db_nets.keys():
            if net_id not in neutron_nets_id:
                db_lib.forget_network(tenant, net_id)

Since HA networks have no tenant_id, they won't be returned by
self.ndb.get_all_networks_for_tenant(tenant), so they will be removed
from the DB and won't be added to EOS during synchronization (checking
the arista_provisioned_nets table in the neutron database shows that the
HA networks are indeed missing, while they are listed by "neutron net-
list").

** Affects: neutron
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1494310

Title:
  Arista ML2 driver doesn't synchronize HA networks with EOS correctly

Status in neutron:
  New

Bug description:
  Running Openstack Kilo and networking-arista from master (1aa15e8).

  With some HA networks already created in Neutron (created
  automatically when adding HA routers), restarting the CVX and neutron-
  server lead to those networks disappearing from EOS (not listed by
  "show openstack networks" anymore).

  The problem seems to come from _cleanup_db() in
  neutron/plugins/ml2/drivers/arista/mechanism_arista.py, which is
  called by initialize() in the same file:

  def _cleanup_db(self):
      """Clean up any uncessary entries in our DB."""
      db_tenants = db_lib.get_tenants()
      for tenant in db_tenants:
          neutron_nets = self.ndb.get_all_networks_for_tenant(tenant)
          neutron_nets_id = []
          for net in neutron_nets:
              neutron_nets_id.append(net['id'])
          db_nets = db_lib.get_networks(tenant)
          for net_id in db_nets.keys():
              if net_id not in neutron_nets_id:
                  db_lib.forget_network(tenant, net_id)

  Since HA networks have no tenant_id, they won't be returned by
  self.ndb.get_all_networks_for_tenant(tenant), so they will be removed
  from the DB and won't be added to EOS during synchronization (checking
  the arista_provisioned_nets table in the neutron database shows that
  the HA networks are indeed missing, while they are listed by "neutron
  net-list").

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1494310/+subscriptions


Follow ups