esnet/enos

MP-VPN: vpn load needs to create live objects

Opened this issue · 4 comments

When restoring the state of the VPN service, we're supposed to recreate the VPN objects. We do restore the properties corresponding to a number of members of VPN objects (for example entryfanoutflows, vpnsitevlans, mat, exitfanoutflows, hostsites, vpnsites, pops). These properties however don't appear to be converted back to live objects that are members of the VPN objects.

One symptom of this is that after a netshell restart, all of the VPNs exist but they have no pops, sites, or hosts configured for them.

The problem was that the VPN is implementing a vpn cache for optimizing DB access which conflicts with the Container cache which was introduced later.

Fresh netshell load, but after a VPN instance was configured with the previous netshell code:

admin@NetShell> vpn load  

admin@NetShell> vpn listvpns 
                 VPN
                vpn1

admin@NetShell> vpn vpn1 listsites
  Site     POP                Switch      Port  VLAN

admin@NetShell> vpn vpn1 listpops 
   POP           Core Router       Hardware Switch       Software Switch

admin@NetShell> vpn vpn1 listhosts
              MAC     Translated MAC  Site

Am I doing something wrong?

Verified that properties are now properly in the database, but they seem to be stored as object and not json.

Current status: most of the objects are created when mpvpn service starts but the various flow entries are not properly stored / reloaded.