OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
config_manager.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #include <boost/uuid/uuid_io.hpp>
6 #include <boost/scoped_ptr.hpp>
7 #include <vnc_cfg_types.h>
8 #include <base/util.h>
9 #include <db/db_partition.h>
10 
11 #include <ifmap/ifmap_node.h>
12 #include <ifmap/ifmap_link.h>
14 #include <cmn/agent_cmn.h>
15 #include <oper/operdb_init.h>
17 #include <oper/config_manager.h>
18 
19 #include <oper/interface_common.h>
20 #include <oper/health_check.h>
21 #include <oper/physical_device.h>
23 #include <oper/vn.h>
24 #include <oper/vrf.h>
25 #include <oper/sg.h>
26 #include <oper/tag.h>
27 #include <oper/vm.h>
28 #include <oper/interface_common.h>
29 #include <oper/global_qos_config.h>
31 #include <oper/qos_config.h>
32 #include <oper/vrouter.h>
33 #include <oper/global_vrouter.h>
34 #include <oper/bgp_router.h>
35 #include <oper/forwarding_class.h>
36 #include<oper/qos_queue.h>
37 #include <oper/bridge_domain.h>
39 #include <oper/multicast_policy.h>
40 #include <filter/policy_set.h>
41 #include <vector>
42 #include <string>
43 
44 using std::string;
45 
47  const Agent *agent) :
48  mgr_(mgr), link_table_(NULL), agent_(agent) {
49 }
50 
52  IFMapNode *node) {
53  if (link->left() == node) return link->right();
54  if (link->right() == node) return link->left();
55  return NULL;
56 }
57 
58 //Note: FindLink here checks for many-to-one node.
60  IFMapNode *node) {
61  IFMapLink *link = NULL;
62  if (!link_table_) {
63  link_table_ = static_cast<IFMapAgentLinkTable *>(agent_->db()->
64  FindTable(IFMAP_AGENT_LINK_DB_NAME));
65  }
66 
67  std::ostringstream key_with_node_in_right;
68  key_with_node_in_right << type << ",," << node->ToString();
69  link = link_table_->FindNextLink(key_with_node_in_right.str());
70  if (link && (strcmp(link->metadata().c_str(), type) == 0))
71  return GetOtherAdjacentNode(link, node);
72 
73  std::ostringstream key_with_node_in_left;
74  key_with_node_in_left << type << "," << node->ToString() << ",";
75  link = link_table_->FindNextLink(key_with_node_in_left.str());
76  if (link && (strcmp(link->metadata().c_str(), type) == 0))
77  return GetOtherAdjacentNode(link, node);
78 
79  return NULL;
80 }
81 
83 public:
84  struct Node {
86  ~Node() { }
87 
89  };
90 
91  struct NodeCmp {
92  bool operator() (const Node &lhs, const Node &rhs) const {
93  return lhs.state_.get() < rhs.state_.get();
94  }
95  };
96  typedef std::set<Node, NodeCmp> NodeList;
97  typedef NodeList::iterator NodeListIterator;
98 
100  table_(table), oper_ifmap_table_(NULL), enqueue_count_(0),
101  process_count_(0) {
102  }
103 
105  table_(NULL), oper_ifmap_table_(table), enqueue_count_(0),
106  process_count_(0) {
107  }
108 
110  assert(list_.size() == 0);
111  }
112 
113  bool Add(Agent *agent, ConfigManager *mgr, IFMapNode *node) {
115  Node n(dep->SetState(node));
116  list_.insert(n);
117  enqueue_count_++;
118  mgr->Start();
119  return true;
120  }
121 
122  bool Delete(Agent *agent, ConfigManager *mgr, IFMapNode *node) {
124  IFMapNodeState *state = dep->IFMapNodeGet(node);
125  if (state == NULL)
126  return false;
127  Node n(state);
128  list_.erase(n);
129  return true;
130  }
131 
132  uint32_t Process(uint32_t weight) {
133  uint32_t count = 0;
134  NodeListIterator it = list_.begin();
135  while (weight && (it != list_.end())) {
136  NodeListIterator prev = it++;
137  IFMapNodeState *state = prev->state_.get();
138  IFMapNode *node = state->node();
139 
140  DBRequest req;
141  boost::uuids::uuid id = state->uuid();
142  if (table_) {
143  if (table_->ProcessConfig(node, req, id)) {
144  table_->Enqueue(&req);
145  }
146  }
147 
148  if (oper_ifmap_table_) {
150  }
151 
152  list_.erase(prev);
153  weight--;
154  count++;
155  process_count_++;
156  }
157 
158  return count;
159  }
160 
161  uint32_t Size() const { return list_.size(); }
162  uint32_t enqueue_count() const { return enqueue_count_; }
163  uint32_t process_count() const { return process_count_; }
164 
165 private:
169  uint32_t enqueue_count_;
170  uint32_t process_count_;
172 };
173 
175 public:
176  struct DeviceVnEntry {
178  const boost::uuids::uuid &vn) : dev_(dev), vn_(vn) {
179  }
180 
182 
185  };
186 
188  bool operator() (const DeviceVnEntry &lhs, const DeviceVnEntry &rhs) const {
189  if (lhs.dev_ != rhs.dev_)
190  return lhs.dev_ < rhs.dev_;
191 
192  return lhs.vn_ < rhs.vn_;
193  }
194  };
195 
196  typedef std::set<DeviceVnEntry, DeviceVnEntryCmp> DeviceVnList;
197  typedef DeviceVnList::iterator DeviceVnIterator;
198 
200  table_(table), enqueue_count_(0), process_count_(0) {
201  }
202 
204  assert(list_.size() == 0);
205  }
206 
207  bool Add(Agent *agent, ConfigManager *mgr, const boost::uuids::uuid &dev,
208  const boost::uuids::uuid &vn) {
209  list_.insert(DeviceVnEntry(dev, vn));
210  enqueue_count_++;
211  mgr->Start();
212  return true;
213  }
214 
215  bool Delete(Agent *agent, ConfigManager *mgr, const boost::uuids::uuid &dev,
216  const boost::uuids::uuid &vn) {
217  list_.erase(DeviceVnEntry(dev, vn));
218  return true;
219  }
220 
221  uint32_t Process(uint32_t weight) {
222  uint32_t count = 0;
223  DeviceVnIterator it = list_.begin();
224  while (weight && (it != list_.end())) {
225  DeviceVnIterator prev = it++;
226  DBRequest req;
227  table_->ProcessConfig(prev->dev_, prev->vn_);
228  list_.erase(prev);
229  weight--;
230  count++;
231  }
232  return count;
233  }
234 
235  uint32_t Size() const { return list_.size(); }
236  uint32_t enqueue_count() const { return enqueue_count_; }
237  uint32_t process_count() const { return process_count_; }
238 
239 private:
242  uint32_t enqueue_count_;
243  uint32_t process_count_;
245 };
246 
248  agent_(agent), trigger_(), timer_(NULL), timeout_(kMinTimeout) {
249 
250  int task_id = TaskScheduler::GetInstance()->GetTaskId("db::DBTable");
251  trigger_.reset
252  (new TaskTrigger(boost::bind(&ConfigManager::TriggerRun, this),
253  task_id, 0));
255  "Config Manager", task_id, 0);
256  for (uint32_t i = 0; i < kMaxTimeout; i++) {
257  process_config_count_[i] = 0;
258  }
259  helper_.reset(new ConfigHelper(this, agent_));
260 }
261 
263  timer_->Cancel();
265 }
266 
268  AgentDBTable *intf_table = agent_->interface_table();
269  vmi_list_.reset(new ConfigManagerNodeList(intf_table));
270  physical_interface_list_.reset(new ConfigManagerNodeList(intf_table));
271  logical_interface_list_.reset(new ConfigManagerNodeList(intf_table));
272 
290  forwarding_class_list_.reset(new
292  slo_list_.reset(new
295 
296  OperDB *oper_db = agent()->oper_db();
298  (new ConfigManagerNodeList(oper_db->global_vrouter()));
300  (new ConfigManagerNodeList(oper_db->bgp_router_config()));
302  (new ConfigManagerNodeList(oper_db->vrouter()));
304  (new ConfigManagerNodeList(oper_db->global_qos_config()));
307  network_ipam_list_.reset
308  (new ConfigManagerNodeList(oper_db->network_ipam()));
309  virtual_dns_list_.reset(new ConfigManagerNodeList(oper_db->virtual_dns()));
310 }
311 
312 uint32_t ConfigManager::Size() const {
313  return
314  global_vrouter_list_->Size() +
315  bgp_router_config_list_->Size() +
316  virtual_router_list_->Size() +
317  global_qos_config_list_->Size() +
319  network_ipam_list_->Size() + + +
320  virtual_dns_list_->Size() +
321  vmi_list_->Size() +
322  physical_interface_list_->Size() +
323  logical_interface_list_->Size() +
324  device_list_->Size() +
325  sg_list_->Size() +
326  tag_list_->Size() +
327  vn_list_->Size() +
328  vrf_list_->Size() +
329  vm_list_->Size() +
330  hc_list_->Size() +
331  device_vn_list_->Size() +
332  qos_config_list_->Size() +
333  bridge_domain_list_->Size() +
334  policy_set_list_->Size() +
335  mp_list_->Size();
336 }
337 
338 uint32_t ConfigManager::ProcessCount() const {
339  return
340  global_vrouter_list_->process_count() +
341  bgp_router_config_list_->process_count() +
342  virtual_router_list_->process_count() +
343  global_qos_config_list_->process_count() +
344  global_system_config_list_->process_count() +
345  network_ipam_list_->process_count() +
346  virtual_dns_list_->process_count() +
347  vmi_list_->process_count() +
348  physical_interface_list_->process_count() +
349  logical_interface_list_->process_count() +
350  device_list_->process_count() +
351  sg_list_->process_count() +
352  tag_list_->process_count() +
353  vn_list_->process_count() +
354  vrf_list_->process_count() +
355  vm_list_->process_count() +
356  hc_list_->process_count() +
357  device_vn_list_->process_count() +
358  qos_config_list_->process_count() +
359  policy_set_list_->process_count() +
360  mp_list_->process_count();
361 }
362 
364  if (agent_->ResourceManagerReady() == false) {
365  return;
366  }
367 
368  if (agent_->test_mode()) {
369  trigger_->Set();
370  } else {
371  timeout_++;
372  if (timeout_ > kMaxTimeout)
374  if (timer_->Idle())
376  this));
377  }
378 }
379 
381  int count = Run();
383 
384  if (Size() == 0) {
386  return false;
387  }
388 
389  timeout_--;
390  if (timeout_ <= kMinTimeout)
393  return true;
394 }
395 
397  Run();
398  return (Size() == 0);
399 }
400 
401 // Run the change-list
403  uint32_t max_count = kIterationCount;
404  uint32_t count = 0;
405 
406  count += global_vrouter_list_->Process(max_count - count);
407  count += bgp_router_config_list_->Process(max_count - count);
408  count += virtual_router_list_->Process(max_count - count);
409  count += global_qos_config_list_->Process(max_count - count);
410  count += global_system_config_list_->Process(max_count - count);
411  count += network_ipam_list_->Process(max_count - count);
412  count += virtual_dns_list_->Process(max_count - count);
413  count += sg_list_->Process(max_count - count);
414  count += tag_list_->Process(max_count - count);
415  count += physical_interface_list_->Process(max_count - count);
416  count += qos_queue_list_->Process(max_count - count);
417  count += forwarding_class_list_->Process(max_count - count);
418  count += qos_config_list_->Process(max_count - count);
419  count += vn_list_->Process(max_count - count);
420  count += vm_list_->Process(max_count - count);
421  count += vrf_list_->Process(max_count - count);
422  count += bridge_domain_list_->Process(max_count - count);
423  count += policy_set_list_->Process(max_count - count);
424  count += logical_interface_list_->Process(max_count - count);
425  count += hc_list_->Process(max_count - count);
426  count += vmi_list_->Process(max_count - count);
427  count += device_list_->Process(max_count - count);
428  count += device_vn_list_->Process(max_count - count);
429  count += slo_list_->Process(max_count - count);
430  count += mp_list_->Process(max_count - count);
431  return count;
432 }
433 
435  vmi_list_->Add(agent_, this, node);
436 }
437 
438 uint32_t ConfigManager::VmiNodeCount() const {
439  return vmi_list_->Size();
440 }
441 
443  logical_interface_list_->Add(agent_, this, node);
444 }
445 
447  return logical_interface_list_->Size();
448 }
449 
451  device_list_->Add(agent_, this, node);
452 }
453 
455  hc_list_->Add(agent_, this, node);
456 }
457 
459  bridge_domain_list_->Add(agent_, this, node);
460 }
461 
463  policy_set_list_->Add(agent_, this, node);
464 }
465 
467  sg_list_->Add(agent_, this, node);
468 }
469 
471  tag_list_->Add(agent_, this, node);
472 }
473 
475  vn_list_->Add(agent_, this, node);
476 }
477 
479  vrf_list_->Add(agent_, this, node);
480 }
481 
483  vm_list_->Add(agent_, this, node);
484 }
485 
487  physical_interface_list_->Add(agent_, this, node);
488 }
489 
491  qos_config_list_->Add(agent_, this, node);
492 }
493 
495  forwarding_class_list_->Add(agent_, this, node);
496 }
497 
499  slo_list_->Add(agent_, this, node);
500 }
501 
503  mp_list_->Add(agent_, this, node);
504 }
505 
507  qos_queue_list_->Add(agent_, this, node);
508 }
509 
511  const boost::uuids::uuid &vn) {
512  device_vn_list_->Add(agent_, this, dev, vn);
513 }
514 
516  const boost::uuids::uuid &vn) {
517  device_vn_list_->Delete(agent_, this, dev, vn);
518 }
520  return device_vn_list_->Size();
521 }
522 
524  global_qos_config_list_->Add(agent_, this, node);
525 }
526 
528  global_system_config_list_->Add(agent_, this, node);
529 }
530 
532  network_ipam_list_->Add(agent_, this, node);
533 }
534 
536  virtual_dns_list_->Add(agent_, this, node);
537 }
538 
540  global_vrouter_list_->Add(agent_, this, node);
541 }
542 
544  bgp_router_config_list_->Add(agent_, this, node);
545 }
546 
548  virtual_router_list_->Add(agent_, this, node);
549 }
550 
552  using std::setw;
553  using std::endl;
554 
555  std::stringstream str;
556  str << setw(16) << "CfgMgr"
557  << " Queue" << setw(8) << Size()
558  << " Timeout " << setw(8) << timeout()
559  << " Process" << setw(8) << ProcessCount() << endl;
560  str << setw(22)
561  << " VMI-Q " << setw(8) << vmi_list_->Size()
562  << " Enqueue " << setw(8) << vmi_list_->enqueue_count()
563  << " Process" << setw(8) << vmi_list_->process_count() << endl;
564  str << setw(22)
565  << " LI-Q " << setw(8) << logical_interface_list_->Size()
566  << " Enqueue " << setw(8) << logical_interface_list_->enqueue_count()
567  << " Process" << setw(8) << logical_interface_list_->process_count() << endl;
568  return str.str();
569 }
570 
571 // When traversing graph, check if an IFMapNode can be used. Conditions are,
572 // - The node is not in deleted state
573 // - The node was notified earlier
575  if (node->IsDeleted()) {
576  return false;
577  }
578 
581 
582  // Table not managed by dependency manager. Node can be used
583  if (dep->IsRegistered(node) == false)
584  return true;
585 
586  IFMapNodeState *state = dep->IFMapNodeGet(node);
587  if (state == NULL) {
588  // State not set. Means, IFMapDependency manager manages the node
589  // and has not seen the node yet. Node cannot be used.
590  return false;
591  }
592 
593  if (state->notify() == false ||
594  state->oper_db_request_enqueued() == false) {
595  return false;
596  }
597 
598  return true;
599 }
600 
601 // When traversing graph, check if an IFMapNode can be used. Conditions are,
602 // - The node is not in deleted state
603 // - The node was notified earlier
604 // - The node is an entry in IFMapAgentTable specified
606  if (table != static_cast<IFMapAgentTable *>(node->table())) {
607  return false;
608  }
609 
610  return CanUseNode(node);
611 }
612 
614  return !CanUseNode(node);
615 }
616 
618  return !CanUseNode(node, table);
619 }
620 
621 
623  const char *type) {
624  IFMapAgentTable *table = static_cast<IFMapAgentTable *>(node->table());
625  DBGraph *graph = table->GetGraph();
626  assert(node->IsVertexValid());
627  for (DBGraphVertex::adjacency_iterator iter = node->begin(graph);
628  iter != node->end(graph); ++iter) {
629  IFMapNode *adj_node = static_cast<IFMapNode *>(iter.operator->());
630  if (SkipNode(adj_node)) {
631  continue;
632  }
633  if (strcmp(adj_node->table()->Typename(), type) == 0) {
634  return adj_node;
635  }
636  }
637 
638  return NULL;
639 }
640 
643  dep->PropogateNodeAndLinkChange(node);
644 }
virtual ~ConfigManager()
boost::scoped_ptr< ConfigHelper > helper_
boost::uuids::uuid uuid()
Node(IFMapDependencyManager::IFMapNodePtr state)
bool IsRegistered(const IFMapNode *node)
IFMapAgentLinkTable * link_table_
void AddBgpRouterConfigNode(IFMapNode *node)
void AddNetworkIpamNode(IFMapNode *node)
void ProcessConfig(const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
OperIFMapTable * oper_ifmap_table_
std::unique_ptr< TaskTrigger > trigger_
ConfigManager(Agent *agent)
bool test_mode() const
Definition: agent.h:1191
std::unique_ptr< ConfigManagerNodeList > network_ipam_list_
void AddVirtualDnsNode(IFMapNode *node)
void AddHealthCheckServiceNode(IFMapNode *node)
uint32_t timeout_
IFMapNodeState * IFMapNodeGet(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > tag_list_
std::set< DeviceVnEntry, DeviceVnEntryCmp > DeviceVnList
virtual std::string ToString() const
Definition: ifmap_node.cc:31
std::unique_ptr< ConfigManagerNodeList > qos_config_list_
DB * db() const
Definition: agent.h:1118
PhysicalDeviceTable * physical_device_table() const
Definition: agent.h:628
uint32_t LogicalInterfaceNodeCount() const
bool IsDeleted() const
Definition: db_entry.h:49
void AddVrfNode(IFMapNode *node)
bool oper_db_request_enqueued() const
bool operator()(const DeviceVnEntry &lhs, const DeviceVnEntry &rhs) const
void AddPhysicalInterfaceNode(IFMapNode *node)
uint32_t PhysicalDeviceVnCount() const
GlobalQosConfig * global_qos_config() const
Definition: operdb_init.h:81
DISALLOW_COPY_AND_ASSIGN(ConfigManagerNodeList)
static const uint32_t kMaxTimeout
std::unique_ptr< ConfigManagerNodeList > global_qos_config_list_
virtual const char * Typename() const =0
boost::asio::io_context * io_service()
Definition: event_manager.h:42
IFMapDependencyManager::IFMapNodePtr state_
void AddGlobalQosConfigNode(IFMapNode *node)
InterfaceTable * interface_table() const
Definition: agent.h:465
bool Enqueue(DBRequest *req)
Definition: db_table.cc:194
void AddBridgeDomainNode(IFMapNode *node)
boost::uuids::uuid uuid
bool CanUseNode(IFMapNode *node)
VnTable * vn_table() const
Definition: agent.h:495
ConfigManagerNodeList(OperIFMapTable *table)
uint32_t enqueue_count() const
void AddPhysicalDeviceVn(const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
adjacency_iterator end(DBGraph *graph)
void AddLogicalInterfaceNode(IFMapNode *node)
IFMapTable * table()
Definition: ifmap_node.h:29
static const uint32_t kIterationCount
std::unique_ptr< ConfigManagerNodeList > vmi_list_
DeviceVnList::iterator DeviceVnIterator
std::string ProfileInfo() const
void AddVirtualRouterNode(IFMapNode *node)
bool Delete(Agent *agent, ConfigManager *mgr, const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
TagTable * tag_table() const
Definition: agent.h:505
QosQueueTable * qos_queue_table() const
Definition: agent.h:562
static const uint32_t kMinTimeout
PhysicalDeviceVnTable * table_
OperDB * oper_db() const
Definition: agent.cc:1013
uint32_t timeout() const
int GetTaskId(const std::string &name)
Definition: task.cc:856
ConfigHelper(const ConfigManager *mgr, const Agent *agent)
Agent * agent()
IFMapNode * FindLink(const char *type, IFMapNode *node)
IFMapDependencyManager * dependency_manager()
Definition: operdb_init.h:61
const DBGraph * GetGraph() const
void AddForwardingClassNode(IFMapNode *node)
BgpRouterConfig * bgp_router_config() const
Definition: operdb_init.h:55
void AddGlobalVrouterNode(IFMapNode *node)
IFMapNode * FindAdjacentIFMapNode(IFMapNode *node, const char *type)
GlobalVrouter * global_vrouter() const
Definition: operdb_init.h:54
void AddQosQueueNode(IFMapNode *node)
VRouter * vrouter() const
Definition: operdb_init.h:76
PolicySetTable * policy_set_table() const
Definition: agent.h:520
void AddPhysicalDeviceNode(IFMapNode *node)
uint8_t type
Definition: load_balance.h:109
std::unique_ptr< ConfigManagerNodeList > vrf_list_
void AddSecurityLoggingObjectNode(IFMapNode *node)
Definition: agent.h:358
std::unique_ptr< ConfigManagerNodeList > forwarding_class_list_
void AddMulticastPolicyNode(IFMapNode *node)
OperNetworkIpam * network_ipam() const
Definition: operdb_init.h:89
std::unique_ptr< ConfigManagerNodeList > global_system_config_list_
static TaskScheduler * GetInstance()
Definition: task.cc:547
uint32_t VmiNodeCount() const
bool Add(Agent *agent, ConfigManager *mgr, const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
uint32_t process_count() const
BridgeDomainTable * bridge_domain_table() const
Definition: agent.cc:941
uint32_t ProcessCount() const
void AddVmNode(IFMapNode *node)
bool operator()(const Node &lhs, const Node &rhs) const
IFMapNode * GetOtherAdjacentNode(IFMapLink *link, IFMapNode *node)
ConfigManagerDeviceVnList(PhysicalDeviceVnTable *table)
EventManager * event_manager() const
Definition: agent.h:1103
void AddVmiNode(IFMapNode *node)
void ProcessConfig(IFMapNode *node)
Definition: oper_db.h:262
PhysicalDeviceVnTable * physical_device_vn_table() const
Definition: agent.h:635
DeviceVnEntry(const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
void AddGlobalSystemConfigNode(IFMapNode *node)
bool Idle() const
Definition: timer.h:105
std::unique_ptr< ConfigManagerNodeList > bridge_domain_list_
uint32_t enqueue_count() const
std::unique_ptr< ConfigManagerNodeList > vm_list_
uint32_t Size() const
std::unique_ptr< ConfigManagerNodeList > virtual_router_list_
std::unique_ptr< ConfigManagerNodeList > global_vrouter_list_
std::unique_ptr< ConfigManagerNodeList > qos_queue_list_
std::unique_ptr< ConfigManagerNodeList > device_list_
static Timer * CreateTimer(boost::asio::io_context &service, const std::string &name, int task_id=Timer::GetTimerTaskId(), int task_instance=Timer::GetTimerInstanceId(), bool delete_on_completion=false)
Definition: timer.cc:201
std::unique_ptr< ConfigManagerNodeList > policy_set_list_
const Agent * agent_
std::unique_ptr< ConfigManagerDeviceVnList > device_vn_list_
IFMapNodePtr SetState(IFMapNode *node)
bool Cancel()
Definition: timer.cc:150
VrfTable * vrf_table() const
Definition: agent.h:485
std::unique_ptr< ConfigManagerNodeList > sg_list_
std::unique_ptr< ConfigManagerNodeList > virtual_dns_list_
std::unique_ptr< ConfigManagerNodeList > hc_list_
OperVirtualDns * virtual_dns() const
Definition: operdb_init.h:90
HealthCheckTable * health_check_table() const
Definition: agent.cc:933
uint64_t process_config_count_[kMaxTimeout+1]
void AddQosConfigNode(IFMapNode *node)
AgentQosConfigTable * qos_config_table() const
Definition: agent.h:554
boost::intrusive_ptr< IFMapNodeState > IFMapNodePtr
SecurityLoggingObjectTable * slo_table() const
Definition: agent.h:547
uint32_t Process(uint32_t weight)
#define IFMAP_AGENT_LINK_DB_NAME
bool Start(int time, Handler handler, ErrorHandler error_handler=NULL)
Definition: timer.cc:108
std::unique_ptr< ConfigManagerNodeList > bgp_router_config_list_
NodeList::iterator NodeListIterator
void AddTagNode(IFMapNode *node)
SgTable * sg_table() const
Definition: agent.h:500
void PropogateNodeAndLinkChange(IFMapNode *node)
ConfigManagerNodeList(AgentDBTable *table)
std::unique_ptr< ConfigManagerNodeList > slo_list_
std::unique_ptr< ConfigManagerNodeList > vn_list_
virtual bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
Definition: agent_db.h:206
bool ResourceManagerReady() const
Definition: agent.h:1233
uint32_t process_count() const
std::unique_ptr< ConfigManagerNodeList > physical_interface_list_
void DelPhysicalDeviceVn(const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
ForwardingClassTable * forwarding_class_table() const
Definition: agent.h:540
bool Reschedule(int time)
Definition: timer.cc:137
bool Delete(Agent *agent, ConfigManager *mgr, IFMapNode *node)
MulticastPolicyTable * mp_table() const
Definition: agent.h:642
void AddSgNode(IFMapNode *node)
std::unique_ptr< ConfigManagerNodeList > logical_interface_list_
uint32_t Size() const
void AddVnNode(IFMapNode *node)
bool SkipNode(IFMapNode *node)
bool Add(Agent *agent, ConfigManager *mgr, IFMapNode *node)
void NodeResync(IFMapNode *node)
IFMapLink * FindNextLink(const std::string &name)
adjacency_iterator begin(DBGraph *graph)
void AddPolicySetNode(IFMapNode *node)
GlobalSystemConfig * global_system_config() const
Definition: operdb_init.h:85
std::set< Node, NodeCmp > NodeList
VmTable * vm_table() const
Definition: agent.h:490
std::unique_ptr< ConfigManagerNodeList > mp_list_
DISALLOW_COPY_AND_ASSIGN(ConfigManagerDeviceVnList)
static bool DeleteTimer(Timer *Timer)
Definition: timer.cc:222
uint32_t Process(uint32_t weight)