LCOV - code coverage report
Current view: top level - vnsw/agent/resource_manager - sandesh_map.h (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 0 32 0.0 %
Date: 2026-08-03 02:19:58 Functions: 0 22 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved.
       3             :  */
       4             : 
       5             : #ifndef vnsw_agent_resource_sandesh_map_hpp
       6             : #define vnsw_agent_resource_sandesh_map_hpp
       7             : #include "resource_manager/resource_manager_types.h"
       8             : 
       9             : class Timer;
      10             : class ResourceManager;
      11             : class ResourceBackupManager;
      12             : // Backup Resource Table maintains all the Sandesh data to
      13             : // resource index in a map. Timer is maintained per Backup Resource table.
      14             : // will be used to trigger Write to file based on idle time out logic.
      15             : // Trigger will be intiated Only when we don't see any frequent Changes
      16             : // in the Data modifications with in the idle time out period otherwise
      17             : // Write to file will happens upon fallback.
      18             : class BackUpResourceTable {
      19             : public:
      20             :     static const uint8_t  kFallBackCount = 6;
      21             :     BackUpResourceTable(ResourceBackupManager *manager,
      22             :                         const std::string &name,
      23             :                         const std::string& file_name);
      24             :     virtual ~BackUpResourceTable();
      25             : 
      26             :     virtual bool WriteToFile() = 0;
      27             :     virtual void ReadFromFile() = 0;
      28             :     virtual void RestoreResource() = 0;
      29             :     bool TimerExpiry();
      30             :     void StartTimer();
      31           0 :     ResourceBackupManager *backup_manager() {
      32           0 :         return backup_manager_;
      33             :     }
      34             :     Agent *agent() {return agent_;}
      35             :     void TriggerBackup();
      36             :     bool UpdateRequired();
      37             :     void EnqueueRestore(ResourceManager::KeyPtr key,
      38             :                         ResourceManager:: DataPtr data);
      39           0 :     const std::string & backup_dir() {return backup_dir_;}
      40             :     static const std::string FindFile(const std::string &root,
      41             :                                       const std::string & file_ext);
      42             :     static bool CalculateHashSum(const std::string &file_name,
      43             :                                  uint32_t *hashsum);
      44           0 :     const std::string& file_name_str() {return file_name_str_;}
      45           0 :     const std::string& file_name_prefix() {return file_name_prefix_;}
      46             : protected:
      47             :     template <typename T1, typename T2>
      48             :     bool WriteMapToFile(T1* sandesh_data, const T2& index_map);
      49             :     template <typename T>
      50             :     void ReadMapFromFile(T* sandesh_data, const std::string &root);
      51             :     std::string backup_dir_;
      52             : 
      53             : private:
      54             :     ResourceBackupManager *backup_manager_;
      55             :     Agent *agent_;
      56             :     std::string name_;
      57             :     Timer *timer_;
      58             :     uint32_t backup_idle_timeout_;
      59             :     uint64_t last_modified_time_;
      60             :     uint8_t fall_back_count_;
      61             :     std::string file_name_str_;
      62             :     std::string file_name_prefix_;
      63             :     DISALLOW_COPY_AND_ASSIGN(BackUpResourceTable);
      64             : };
      65             : 
      66             : // Vrf backup resource table to maintains Sandesh encoded data VrfMpls info
      67             : class VrfMplsBackUpResourceTable : public BackUpResourceTable {
      68             : public:
      69             :     typedef std::map<uint32_t, VrfMplsResource> Map;
      70             :     typedef Map::iterator MapIter;
      71             :     VrfMplsBackUpResourceTable(ResourceBackupManager *manager);
      72             :     virtual ~VrfMplsBackUpResourceTable();
      73             : 
      74             :     bool WriteToFile();
      75             :     void ReadFromFile();
      76             :     void RestoreResource();
      77           0 :     Map& map() {return map_;}
      78             : private:
      79             :     Map map_;
      80             : };
      81             : 
      82             : // Vlan backup resource table to maintains Sandesh encoded data VlanMpls info
      83             : class VlanMplsBackUpResourceTable : public BackUpResourceTable {
      84             : public:
      85             :     typedef std::map<uint32_t, VlanMplsResource> Map;
      86             :     typedef Map::iterator MapIter;
      87             :     VlanMplsBackUpResourceTable(ResourceBackupManager *manager);
      88             :     virtual ~VlanMplsBackUpResourceTable();
      89             : 
      90             :     bool WriteToFile();
      91             :     void ReadFromFile();
      92             :     void RestoreResource();
      93           0 :     Map& map() {return map_;}
      94             : private:
      95             :     Map map_;
      96             : };
      97             : 
      98             : // Interface backup resource table to maintains sandesh encode data for
      99             : // interfaceMpls info
     100             : class InterfaceMplsBackUpResourceTable : public BackUpResourceTable {
     101             : public:
     102             :     typedef std::map<uint32_t, InterfaceIndexResource> Map;
     103             :     typedef Map::iterator MapIter;
     104             :     InterfaceMplsBackUpResourceTable(ResourceBackupManager *manager);
     105             :     virtual ~InterfaceMplsBackUpResourceTable();
     106             : 
     107             :     bool WriteToFile();
     108             :     void ReadFromFile();
     109             :     void RestoreResource();
     110           0 :     Map& map() {return map_;}
     111             : private:
     112             :     Map map_;
     113             : };
     114             : 
     115             : // Route backup resource table to maintains sandesh encoded data for route info
     116             : class RouteMplsBackUpResourceTable : public BackUpResourceTable {
     117             : public:
     118             :     typedef std::map<uint32_t, RouteMplsResource> Map;
     119             :     typedef Map::iterator MapIter;
     120             :     RouteMplsBackUpResourceTable(ResourceBackupManager *manager);
     121             :     virtual ~RouteMplsBackUpResourceTable();
     122             : 
     123             :     bool WriteToFile();
     124             :     void ReadFromFile();
     125             :     void RestoreResource();
     126           0 :     Map& map() {return map_;}
     127             : private:
     128             :     Map map_;
     129             : };
     130             : 
     131             : // interface backup resource table to maintains sandesh encoded data for route info
     132             : class VmInterfaceBackUpResourceTable : public BackUpResourceTable {
     133             : public:
     134             :     typedef std::map<uint32_t, VmInterfaceIndexResource> Map;
     135             :     typedef Map::iterator MapIter;
     136             :     VmInterfaceBackUpResourceTable(ResourceBackupManager *manager);
     137             :     virtual ~VmInterfaceBackUpResourceTable();
     138             : 
     139             :     bool WriteToFile();
     140             :     void ReadFromFile();
     141             :     void RestoreResource();
     142           0 :     Map& map() {return map_;}
     143             : private:
     144             :     Map map_;
     145             : };
     146             : 
     147             : // vrf backup resource table to maintains sandesh encoded data for vrf info
     148             : class VrfBackUpResourceTable : public BackUpResourceTable {
     149             : public:
     150             :     typedef std::map<uint32_t, VrfIndexResource> Map;
     151             :     typedef Map::iterator MapIter;
     152             :     VrfBackUpResourceTable(ResourceBackupManager *manager);
     153             :     virtual ~VrfBackUpResourceTable();
     154             : 
     155             :     bool WriteToFile();
     156             :     void ReadFromFile();
     157             :     void RestoreResource();
     158           0 :     Map& map() {return map_;}
     159             : private:
     160             :     Map map_;
     161             : };
     162             : 
     163             : // Qos backup resource table to maintains sandesh encoded data for qos info
     164             : class QosBackUpResourceTable : public BackUpResourceTable {
     165             : public:
     166             :     typedef std::map<uint32_t, QosIndexResource> Map;
     167             :     typedef Map::iterator MapIter;
     168             :     QosBackUpResourceTable(ResourceBackupManager *manager);
     169             :     virtual ~QosBackUpResourceTable();
     170             : 
     171             :     bool WriteToFile();
     172             :     void ReadFromFile();
     173             :     void RestoreResource();
     174           0 :     Map& map() {return map_;}
     175             : private:
     176             :     Map map_;
     177             : };
     178             : 
     179             : // bgp as a service backup resource table to maintains
     180             : // sandesh encoded data for bgp info
     181             : class BgpAsServiceBackUpResourceTable : public BackUpResourceTable {
     182             : public:
     183             :     typedef std::map<uint32_t, BgpAsServiceIndexResource> Map;
     184             :     typedef Map::iterator MapIter;
     185             :     BgpAsServiceBackUpResourceTable(ResourceBackupManager *manager);
     186             :     virtual ~BgpAsServiceBackUpResourceTable();
     187             : 
     188             :     bool WriteToFile();
     189             :     void ReadFromFile();
     190             :     void RestoreResource();
     191           0 :     Map& map() {return map_;}
     192             : private:
     193             :     Map map_;
     194             : };
     195             : 
     196             : // mirro backup resource table to maintains sandesh encoded data for mirro info
     197             : class MirrorBackUpResourceTable : public BackUpResourceTable {
     198             : public:
     199             :     typedef std::map<uint32_t, MirrorIndexResource> Map;
     200             :     typedef Map::iterator MapIter;
     201             :     MirrorBackUpResourceTable(ResourceBackupManager *manager);
     202             :     virtual ~MirrorBackUpResourceTable();
     203             : 
     204             :     bool WriteToFile();
     205             :     void ReadFromFile();
     206             :     void RestoreResource();
     207           0 :     Map& map() {return map_;}
     208             : private:
     209             :     Map map_;
     210             : };
     211             : 
     212             : // Maintians all the Sandesh encoded structures
     213             : class ResourceSandeshMaps {
     214             : public:
     215             :     typedef pair<uint32_t, VrfMplsResource> VrfMplsResourcePair;
     216             :     typedef pair<uint32_t, VlanMplsResource> VlanMplsResourcePair;
     217             :     typedef pair<uint32_t, InterfaceIndexResource>
     218             :         InterfaceMplsResourcePair;
     219             :     typedef pair<uint32_t, RouteMplsResource> RouteMplsResourcePair;
     220             :     typedef pair<uint32_t, VmInterfaceIndexResource>
     221             :         VmInterfaceIndexResourcePair;
     222             :     typedef pair<uint32_t, VrfIndexResource> VrfIndexResourcePair;
     223             :     typedef pair<uint32_t, QosIndexResource> QosIndexResourcePair;
     224             :     typedef pair<uint32_t, BgpAsServiceIndexResource>
     225             :         BgpAsServiceIndexResourcePair;
     226             :     typedef pair<uint32_t, MirrorIndexResource> MirrorIndexResourcePair;
     227             :     ResourceSandeshMaps(ResourceBackupManager *manager);
     228             :     virtual ~ResourceSandeshMaps();
     229             :     void ReadFromFile();
     230             :     void RestoreResource();
     231             :     void EndOfBackup();
     232             :     void AddInterfaceMplsResourceEntry(uint32_t index,
     233             :                                        InterfaceIndexResource data );
     234             :     void DeleteInterfaceMplsResourceEntry(uint32_t index);
     235             :     void AddVrfMplsResourceEntry(uint32_t index,
     236             :                                  VrfMplsResource data);
     237             :     void DeleteVrfMplsResourceEntry(uint32_t index);
     238             :     void AddVlanMplsResourceEntry(uint32_t index,
     239             :                                  VlanMplsResource data);
     240             :     void DeleteVlanMplsResourceEntry(uint32_t index);
     241             :     void AddRouteMplsResourceEntry(uint32_t index,
     242             :                                    RouteMplsResource data);
     243             :     void DeleteRouteMplsResourceEntry(uint32_t index);
     244             : 
     245             :     void AddVmInterfaceResourceEntry(uint32_t index,
     246             :                                     VmInterfaceIndexResource data);
     247             :     void DeleteVmInterfaceResourceEntry(uint32_t index);
     248             : 
     249             :     void AddVrfResourceEntry(uint32_t index,
     250             :                              VrfIndexResource data);
     251             :     void DeleteVrfResourceEntry(uint32_t index);
     252             : 
     253             :     void AddQosResourceEntry(uint32_t index,
     254             :                              QosIndexResource data);
     255             :     void DeleteQosResourceEntry(uint32_t index);
     256             : 
     257             :     void AddBgpAsServiceResourceEntry(uint32_t index,
     258             :                                       BgpAsServiceIndexResource data);
     259             :     void DeleteBgpAsServiceResourceEntry(uint32_t index);
     260             : 
     261             :     void AddMirrorResourceEntry(uint32_t index,
     262             :                                 MirrorIndexResource data);
     263             :     void DeleteMirrorResourceEntry(uint32_t index);
     264             : 
     265           0 :     InterfaceMplsBackUpResourceTable& interface_mpls_index_table() {
     266           0 :        return interface_mpls_index_table_;
     267             :     }
     268             : 
     269           0 :     VrfMplsBackUpResourceTable& vrf_mpls_index_table() {
     270           0 :         return vrf_mpls_index_table_;
     271             :     }
     272             : 
     273           0 :     VlanMplsBackUpResourceTable& vlan_mpls_index_table() {
     274           0 :         return vlan_mpls_index_table_;
     275             :     }
     276             : 
     277           0 :     RouteMplsBackUpResourceTable& route_mpls_index_table() {
     278           0 :         return route_mpls_index_table_;
     279             :     }
     280             : 
     281           0 :     VmInterfaceBackUpResourceTable& vm_interface_index_table() {
     282           0 :         return vm_interface_index_table_;
     283             :     }
     284             : 
     285           0 :     VrfBackUpResourceTable& vrf_index_table() {
     286           0 :         return vrf_index_table_;
     287             :     }
     288             : 
     289           0 :     QosBackUpResourceTable& qos_index_table() {
     290           0 :         return qos_index_table_;
     291             :     }
     292             : 
     293           0 :     BgpAsServiceBackUpResourceTable& bgp_as_service_index_table() {
     294           0 :         return bgp_as_service_index_table_;
     295             :     }
     296             : 
     297           0 :     MirrorBackUpResourceTable& mirror_index_table() {
     298           0 :         return mirror_index_table_;
     299             :     }
     300             : 
     301             : private:
     302             :     ResourceBackupManager *backup_manager_;
     303             :     Agent *agent_;
     304             :     InterfaceMplsBackUpResourceTable interface_mpls_index_table_;
     305             :     VrfMplsBackUpResourceTable vrf_mpls_index_table_;
     306             :     VlanMplsBackUpResourceTable vlan_mpls_index_table_;
     307             :     RouteMplsBackUpResourceTable route_mpls_index_table_;
     308             :     VmInterfaceBackUpResourceTable vm_interface_index_table_;
     309             :     VrfBackUpResourceTable vrf_index_table_;
     310             :     QosBackUpResourceTable qos_index_table_;
     311             :     BgpAsServiceBackUpResourceTable bgp_as_service_index_table_;
     312             :     MirrorBackUpResourceTable mirror_index_table_;
     313             :     DISALLOW_COPY_AND_ASSIGN(ResourceSandeshMaps);
     314             : };
     315             : #endif

Generated by: LCOV version 1.14